├── .eslintrc.js ├── .github └── workflows │ └── publish-release.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── .prettierrc.js ├── CHANGELOG.md ├── LICENSE ├── README.md ├── action.yml ├── dist └── index.js ├── package-lock.json ├── package.json ├── src └── main.ts ├── starter-workflow-fod-sast-scan.yml └── tsconfig.json /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | plugins: ['@typescript-eslint'], 5 | extends: [ 6 | 'eslint:recommended', 7 | 'plugin:@typescript-eslint/eslint-recommended', 8 | 'plugin:@typescript-eslint/recommended', 9 | 'plugin:prettier/recommended', 10 | 'prettier/@typescript-eslint', 11 | ], 12 | }; -------------------------------------------------------------------------------- /.github/workflows/publish-release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master # Legacy default branch name 5 | - main # New GitHub-favored name for default branch 6 | 7 | name: Publish release 8 | jobs: 9 | build-and-release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Check-out source code 13 | uses: actions/checkout@v2 14 | 15 | - name: Generate and process release PR 16 | id: release_please 17 | uses: GoogleCloudPlatform/release-please-action@v2 18 | with: 19 | release-type: node 20 | package-name: ${{ github.event.repository.name }} 21 | 22 | - name: Publish v{major}.{minor} tag 23 | if: steps.release_please.outputs.release_created 24 | uses: richardsimko/update-tag@v1 25 | with: 26 | tag_name: v${{steps.release_please.outputs.major}}.${{steps.release_please.outputs.minor}} 27 | env: 28 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 29 | 30 | - name: Publish v{major} tag 31 | if: steps.release_please.outputs.release_created 32 | uses: richardsimko/update-tag@v1 33 | with: 34 | tag_name: v${{steps.release_please.outputs.major}} 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | runner/ 3 | 4 | # Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # TypeScript v1 declaration files 30 | typings/ 31 | 32 | # TypeScript cache 33 | *.tsbuildinfo 34 | 35 | # Optional npm cache directory 36 | .npm 37 | 38 | # Optional eslint cache 39 | .eslintcache 40 | 41 | # Optional REPL history 42 | .node_repl_history 43 | 44 | # Output of 'npm pack' 45 | *.tgz -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm run build && git add dist/ 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | res 5 | coverage -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'always', 3 | bracketSpacing: true, 4 | endOfLine: 'auto', 5 | jsxBracketSameLine: true, 6 | jsxSingleQuote: true, 7 | printWidth: 80, 8 | quoteProps: 'consistent', 9 | semi: true, 10 | singleQuote: true, 11 | tabWidth: 2, 12 | trailingComma: 'all', 13 | useTabs: false, 14 | }; -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ### [1.1.3](https://www.github.com/fortify/gha-setup-fod-uploader/compare/v1.1.2...v1.1.3) (2022-10-21) 4 | 5 | 6 | ### Bug Fixes 7 | 8 | * Fix GitHub NodeJS 12 deprecation warning ([e3ed4c5](https://www.github.com/fortify/gha-setup-fod-uploader/commit/e3ed4c5fcad87a1e4387f1275f26a6c490d3eaa3)) 9 | 10 | ### [1.1.2](https://www.github.com/fortify/gha-setup-fod-uploader/compare/v1.1.1...v1.1.2) (2022-08-29) 11 | 12 | 13 | ### Bug Fixes 14 | 15 | * Display actual error ([0d87087](https://www.github.com/fortify/gha-setup-fod-uploader/commit/0d8708712a1046b9931226cf841e07875adbf03a)) 16 | * Update dependencies ([a03aa7b](https://www.github.com/fortify/gha-setup-fod-uploader/commit/a03aa7bbb73f02ae20094266e94eb3a4c76e661b)) 17 | 18 | ### [1.1.1](https://www.github.com/fortify/gha-setup-fod-uploader/compare/v1.1.0...v1.1.1) (2021-09-21) 19 | 20 | 21 | ### Bug Fixes 22 | 23 | * Update dependencies to fix potential vulnerabilities ([db85a99](https://www.github.com/fortify/gha-setup-fod-uploader/commit/db85a9954e017bbee02dbd440fc2082de5a668c5)) 24 | 25 | ## [1.1.0](https://www.github.com/fortify/gha-setup-fod-uploader/compare/v1.0.1...v1.1.0) (2021-03-10) 26 | 27 | 28 | ### Features 29 | 30 | * Fresh build with updated dependencies ([55b6335](https://www.github.com/fortify/gha-setup-fod-uploader/commit/55b63355bcfdea1c9d3954394114e9a817a583c7)) 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | (c) Copyright 2020 Micro Focus or one of its affiliates 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a 5 | copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, publish, distribute, 8 | sublicense, and/or sell copies of the Software, and to permit persons to 9 | whom the Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be included 13 | in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 16 | KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 17 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 18 | PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 23 | IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deprecation Notice 2 | 3 | This GitHub Action has been deprecated and will no longer be maintained as of December 31st, 2023. Similar functionality is now available through the consolidated [fortify/github-action](https://github.com/marketplace/actions/fortify-ast-scan) and its sub-actions; please update your GitHub workflows to use these actions instead. 4 | 5 | # Setup Fortify on Demand Uploader 6 | 7 | Build secure software fast with [Fortify](https://www.microfocus.com/en-us/solutions/application-security). Fortify offers end-to-end application security solutions with the flexibility of testing on-premises and on-demand to scale and cover the entire software development lifecycle. With Fortify, find security issues early and fix at the speed of DevOps. This GitHub Action sets up the Fortify on Demand (FoD) Uploader - also referred to as the FoD Universal CI Tool - to integrate Static Application Security Testing (SAST) into your GitHub workflows. This action: 8 | * Downloads and caches the specified version of the Fortify on Demand Uploader JAR file 9 | * Adds the `FOD_UPLOAD_JAR` environment variable containing the full path to the Fortify on Demand Uploader JAR file 10 | 11 | ## Usage 12 | 13 | FoD Uploader requires source code and dependencies to be packaged into a zip file. We recommend using the [Fortify ScanCentral Client](https://github.com/marketplace/actions/fortify-scancentral-scan) to perform the packaging before invoking FoD Uploader, as illustrated in the following example workflow: 14 | 15 | ```yaml 16 | name: Fortify on Demand SAST Scan 17 | 18 | on: 19 | workflow_dispatch: 20 | push: 21 | branches: [master] 22 | pull_request: 23 | # The branches below must be a subset of the branches above 24 | branches: [master] 25 | 26 | FoD-SAST-Scan: 27 | # Use the appropriate runner for building your source code. 28 | # Use Windows runner for projects that use msbuild. Additional changes to RUN commands will be required. 29 | runs-on: ubuntu-latest 30 | 31 | steps: 32 | # Check out source code 33 | - name: Check Out Source Code 34 | uses: actions/checkout@v2 35 | with: 36 | # Fetch at least the immediate parents so that if this is a pull request then we can checkout the head. 37 | fetch-depth: 2 38 | # If this run was triggered by a pull request event, then checkout the head of the pull request instead of the merge commit. 39 | - run: git checkout HEAD^2 40 | if: ${{ github.event_name == 'pull_request' }} 41 | 42 | # Java is required to run ScanCentral Client, and may be required for your build 43 | # Java version to use depends on the Java version required to run your build (if any), 44 | # and the Java version supported by the ScanCentral Client version that you are running 45 | - name: Setup Java 46 | uses: actions/setup-java@v1 47 | with: 48 | java-version: 1.8 49 | 50 | # Prepare source+dependencies for upload. 51 | # Update PACKAGE_OPTS based on the ScanCentral Client documentation and your project's included tech stack(s). 52 | # ScanCentral Client will download dependencies for maven, gradle and msbuild projects. 53 | # For other build tools, add your build commands to the workflow to download necessary dependencies and prepare according to Fortify on Demand Packaging documentation. 54 | - name: Download Fortify ScanCentral Client 55 | uses: fortify/gha-setup-scancentral-client@v1 56 | - name: Package Code + Dependencies 57 | run: scancentral package $PACKAGE_OPTS -o package.zip 58 | env: 59 | PACKAGE_OPTS: "-bt mvn" 60 | 61 | # Start Fortify on Demand SAST scan. Be sure to set secrets/variables for your desired configuration. 62 | - name: Download Fortify on Demand Universal CI Tool 63 | uses: fortify/gha-setup-fod-uploader@v1 64 | - name: Perform SAST Scan 65 | run: java -jar $FOD_UPLOAD_JAR -z package.zip -aurl $FOD_API_URL -purl $FOD_URL -rid "$FOD_RELEASE_ID" -tc "$FOD_TENANT" -uc "$FOD_USER" "$FOD_PAT" $FOD_UPLOADER_OPTS -n "$FOD_UPLOADER_NOTES" 66 | env: 67 | FOD_TENANT: ${{ secrets.FOD_TENANT }} 68 | FOD_USER: ${{ secrets.FOD_USER }} 69 | FOD_PAT: ${{ secrets.FOD_PAT }} 70 | FOD_RELEASE_ID: ${{ secrets.FOD_RELEASE_ID }} 71 | FOD_URL: "https://ams.fortify.com/" 72 | FOD_API_URL: "https://api.ams.fortify.com/" 73 | FOD_UPLOADER_OPTS: "-ep 2 -pp 0" 74 | FOD_UPLOADER_NOTES: 'Triggered by GitHub Actions (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})' 75 | ``` 76 | 77 | This example workflow demonstrates the use of the `fortify/gha-setup-scancentral-client` and `fortify/gha-setup-fod-uploader` actions to set up ScanCentral Client and FoD Uploader respectively, and then invoking these utilities similar to how you would manually run these commands from a command line. Configure the environment variables according to your needs. All potentially sensitive data should be stored in the GitHub secrets storage. 78 | 79 | Please see the following resources for more information: 80 | 81 | * [FoD Uploader documentation](https://github.com/fod-dev/fod-uploader-java) 82 | * [ScanCentral documentation¹](https://www.microfocus.com/documentation/fortify-software-security-center/2010/ScanCentral_Help_20.1.0/index.htm#CLI.htm%3FTocPath%3DFortify%2520ScanCentral%2520Command%2520Options%7C_____0) 83 | * [GitHub Action to set up ScanCentral Client](https://github.com/fortify/gha-setup-scancentral-client) 84 | * [GitHub Workflow documentation](https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow) 85 | * Sample workflows: 86 | * [EightBall](https://github.com/fortify/gha-sample-workflows-eightball/tree/master/.github/workflows) 87 | * [SSC JS SandBox](https://github.com/fortify/gha-sample-workflows-ssc-js-sandbox/tree/master/.github/workflows) 88 | 89 | 90 | ¹ Note that in combination with FoD Uploader, *only* the ScanCentral `Package` command is relevant. Other ScanCentral commands are not used in combination with FoD Uploader, and none of the other ScanCentral components like ScanCentral Controller or ScanCentral Sensor are used when submitting scans to FoD. 91 | 92 | ### Considerations 93 | 94 | * Be sure to consider the appropriate event triggers in your workflows, based on your project and branching strategy. 95 | * The command line arguments utilize job environment variables to simplify inputs that should be configured. 96 | * Use of GitHub Secrets for credential management are strongly recommended. 97 | * Personal Access Tokens require the `api-tenant` scope to invoke FoDUploader. 98 | * Client credentials can be used in place of Personal Access Tokens and require the `Start Scans` (or higher) role. 99 | * If you choose to use the polling option when invoking FoDUploader to wait for scan completion: 100 | * The FoD release should be configured for automated audit. 101 | * Consider the typical scan turnaround time for the project. Many project can be scanned in a matter of minutes once onboarded, but scan time is dependent on application size/complexity. 102 | * Recommended polling interval is 1 minute. 103 | * Use the -allowPolicyFail/apf option if you do **not** want to "break the build" when the scan results in the release failing the assigned Security Policy in FoD. 104 | * Example configuration: `FOD_UPLOADER_OPTS: "-ep 2 -pp 0 -I 1 -apf"` 105 | * .NET applications that utilize msbuild need to use a Windows runner. Windows-based runners use different syntax and different file locations. In particular: 106 | * Environment variables are referenced as `$Env:var` instead of `$var`, for example `"$Env:FOD_UPLOAD_JAR"` instead of `$FOD_UPLOAD_JAR` 107 | * ScanCentral logs are stored in a different location, so the upload-artifact step would need to be adjusted accordingly if you wish to archive ScanCentral logs 108 | * If you are not already a Fortify customer, check out our [Free Trial](https://www.microfocus.com/en-us/products/application-security-testing/free-trial) 109 | 110 | 111 | ## Inputs 112 | 113 | ### `version` 114 | **Required** The version of the Fortify Uploader to be set up. Default is `latest` if not specified in the workflow. See [FoD Uploader Releases](https://github.com/fod-dev/fod-uploader-java/releases) for a list of available versions. 115 | 116 | ## Outputs 117 | 118 | ### `FOD_UPLOAD_JAR` environment variable 119 | Specifies the location of the FoD Uploader JAR file 120 | 121 | 122 | ## Information for Developers 123 | 124 | All commits to the `main` or `master` branch should follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) convention. In particular, commits using the `feat: Some feature` and `fix: Some fix` convention are used to automatically manage version numbers and for updating the [CHANGELOG.md](https://github.com/fortify/gha-setup-fod-uploader/blob/master/CHANGELOG.md) file. 125 | 126 | Whenever changes are pushed to the `main` or `master` branch, the [`.github/workflows/publish-release.yml`](https://github.com/fortify/gha-setup-fod-uploader/blob/master/.github/workflows/publish-release.yml) workflow will be triggered. If there have been any commits with the `feat:` or `fix:` prefixes, the [`release-please-action`](https://github.com/google-github-actions/release-please-action) will generate a pull request with the appropriate changes to the CHANGELOG.md file and version number in `package.json`. If there is already an existing pull request, based on earlier feature or fix commits, the pull request will be updated. 127 | 128 | Once the pull request is accepted, the `release-please-action` will publish the new release to the GitHub Releases page and tag it with the appropriate `v{major}.{minor}.{patch}` tag. The two `richardsimko/update-tag` action instances referenced in the `publish-release.yml` workflow will create or update the appropriate `v{major}.{minor}` and `v{major}` tags, allowing users to reference the action by major, minor or patch version. 129 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'Fortify on Demand Scan' 2 | description: 'Build secure software fast with Fortify SAST scans' 3 | author: 'Fortify' 4 | inputs: 5 | version: 6 | description: 'FoDUploader version to use' 7 | required: true 8 | default: latest 9 | runs: 10 | using: 'node16' 11 | main: 'dist/index.js' 12 | branding: 13 | icon: 'shield' 14 | color: 'blue' 15 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gha-setup-fod-uploader", 3 | "version": "1.1.3", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "gha-setup-fod-uploader", 9 | "version": "1.1.3", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@actions/core": "^1.9.1", 13 | "@actions/tool-cache": "^1.7.2" 14 | }, 15 | "devDependencies": { 16 | "@types/node": "^16.11.56", 17 | "@vercel/ncc": "^0.31.1", 18 | "eslint": "^7.32.0", 19 | "husky": "^7.0.4", 20 | "prettier": "^2.7.1", 21 | "typescript": "4.4.3" 22 | } 23 | }, 24 | "node_modules/@actions/core": { 25 | "version": "1.9.1", 26 | "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", 27 | "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", 28 | "dependencies": { 29 | "@actions/http-client": "^2.0.1", 30 | "uuid": "^8.3.2" 31 | } 32 | }, 33 | "node_modules/@actions/exec": { 34 | "version": "1.1.1", 35 | "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", 36 | "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", 37 | "dependencies": { 38 | "@actions/io": "^1.0.1" 39 | } 40 | }, 41 | "node_modules/@actions/http-client": { 42 | "version": "2.0.1", 43 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", 44 | "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", 45 | "dependencies": { 46 | "tunnel": "^0.0.6" 47 | } 48 | }, 49 | "node_modules/@actions/io": { 50 | "version": "1.1.2", 51 | "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz", 52 | "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw==" 53 | }, 54 | "node_modules/@actions/tool-cache": { 55 | "version": "1.7.2", 56 | "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.7.2.tgz", 57 | "integrity": "sha512-GYlcgg/PK2RWBrGG2sFg6s7im3S94LMKuqAv8UPDq/pGTZbuEvmN4a95Fn1Z19OE+vt7UbUHeewOD5tEBT+4TQ==", 58 | "dependencies": { 59 | "@actions/core": "^1.2.6", 60 | "@actions/exec": "^1.0.0", 61 | "@actions/http-client": "^1.0.8", 62 | "@actions/io": "^1.1.1", 63 | "semver": "^6.1.0", 64 | "uuid": "^3.3.2" 65 | } 66 | }, 67 | "node_modules/@actions/tool-cache/node_modules/@actions/http-client": { 68 | "version": "1.0.11", 69 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", 70 | "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", 71 | "dependencies": { 72 | "tunnel": "0.0.6" 73 | } 74 | }, 75 | "node_modules/@actions/tool-cache/node_modules/uuid": { 76 | "version": "3.4.0", 77 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 78 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 79 | "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.", 80 | "bin": { 81 | "uuid": "bin/uuid" 82 | } 83 | }, 84 | "node_modules/@babel/code-frame": { 85 | "version": "7.12.11", 86 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 87 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 88 | "dev": true, 89 | "dependencies": { 90 | "@babel/highlight": "^7.10.4" 91 | } 92 | }, 93 | "node_modules/@babel/helper-validator-identifier": { 94 | "version": "7.18.6", 95 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 96 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 97 | "dev": true, 98 | "engines": { 99 | "node": ">=6.9.0" 100 | } 101 | }, 102 | "node_modules/@babel/highlight": { 103 | "version": "7.18.6", 104 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 105 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 106 | "dev": true, 107 | "dependencies": { 108 | "@babel/helper-validator-identifier": "^7.18.6", 109 | "chalk": "^2.0.0", 110 | "js-tokens": "^4.0.0" 111 | }, 112 | "engines": { 113 | "node": ">=6.9.0" 114 | } 115 | }, 116 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 117 | "version": "3.2.1", 118 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 119 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 120 | "dev": true, 121 | "dependencies": { 122 | "color-convert": "^1.9.0" 123 | }, 124 | "engines": { 125 | "node": ">=4" 126 | } 127 | }, 128 | "node_modules/@babel/highlight/node_modules/chalk": { 129 | "version": "2.4.2", 130 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 131 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 132 | "dev": true, 133 | "dependencies": { 134 | "ansi-styles": "^3.2.1", 135 | "escape-string-regexp": "^1.0.5", 136 | "supports-color": "^5.3.0" 137 | }, 138 | "engines": { 139 | "node": ">=4" 140 | } 141 | }, 142 | "node_modules/@babel/highlight/node_modules/color-convert": { 143 | "version": "1.9.3", 144 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 145 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 146 | "dev": true, 147 | "dependencies": { 148 | "color-name": "1.1.3" 149 | } 150 | }, 151 | "node_modules/@babel/highlight/node_modules/color-name": { 152 | "version": "1.1.3", 153 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 154 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 155 | "dev": true 156 | }, 157 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 158 | "version": "1.0.5", 159 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 160 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 161 | "dev": true, 162 | "engines": { 163 | "node": ">=0.8.0" 164 | } 165 | }, 166 | "node_modules/@babel/highlight/node_modules/has-flag": { 167 | "version": "3.0.0", 168 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 169 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 170 | "dev": true, 171 | "engines": { 172 | "node": ">=4" 173 | } 174 | }, 175 | "node_modules/@babel/highlight/node_modules/supports-color": { 176 | "version": "5.5.0", 177 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 178 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 179 | "dev": true, 180 | "dependencies": { 181 | "has-flag": "^3.0.0" 182 | }, 183 | "engines": { 184 | "node": ">=4" 185 | } 186 | }, 187 | "node_modules/@eslint/eslintrc": { 188 | "version": "0.4.3", 189 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 190 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 191 | "dev": true, 192 | "dependencies": { 193 | "ajv": "^6.12.4", 194 | "debug": "^4.1.1", 195 | "espree": "^7.3.0", 196 | "globals": "^13.9.0", 197 | "ignore": "^4.0.6", 198 | "import-fresh": "^3.2.1", 199 | "js-yaml": "^3.13.1", 200 | "minimatch": "^3.0.4", 201 | "strip-json-comments": "^3.1.1" 202 | }, 203 | "engines": { 204 | "node": "^10.12.0 || >=12.0.0" 205 | } 206 | }, 207 | "node_modules/@humanwhocodes/config-array": { 208 | "version": "0.5.0", 209 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 210 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 211 | "dev": true, 212 | "dependencies": { 213 | "@humanwhocodes/object-schema": "^1.2.0", 214 | "debug": "^4.1.1", 215 | "minimatch": "^3.0.4" 216 | }, 217 | "engines": { 218 | "node": ">=10.10.0" 219 | } 220 | }, 221 | "node_modules/@humanwhocodes/object-schema": { 222 | "version": "1.2.1", 223 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 224 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 225 | "dev": true 226 | }, 227 | "node_modules/@types/node": { 228 | "version": "16.11.56", 229 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz", 230 | "integrity": "sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==", 231 | "dev": true 232 | }, 233 | "node_modules/@vercel/ncc": { 234 | "version": "0.31.1", 235 | "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.31.1.tgz", 236 | "integrity": "sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==", 237 | "dev": true, 238 | "bin": { 239 | "ncc": "dist/ncc/cli.js" 240 | } 241 | }, 242 | "node_modules/acorn": { 243 | "version": "7.4.1", 244 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 245 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 246 | "dev": true, 247 | "bin": { 248 | "acorn": "bin/acorn" 249 | }, 250 | "engines": { 251 | "node": ">=0.4.0" 252 | } 253 | }, 254 | "node_modules/acorn-jsx": { 255 | "version": "5.3.2", 256 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 257 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 258 | "dev": true, 259 | "peerDependencies": { 260 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 261 | } 262 | }, 263 | "node_modules/ajv": { 264 | "version": "6.12.6", 265 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 266 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 267 | "dev": true, 268 | "dependencies": { 269 | "fast-deep-equal": "^3.1.1", 270 | "fast-json-stable-stringify": "^2.0.0", 271 | "json-schema-traverse": "^0.4.1", 272 | "uri-js": "^4.2.2" 273 | }, 274 | "funding": { 275 | "type": "github", 276 | "url": "https://github.com/sponsors/epoberezkin" 277 | } 278 | }, 279 | "node_modules/ansi-colors": { 280 | "version": "4.1.3", 281 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 282 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 283 | "dev": true, 284 | "engines": { 285 | "node": ">=6" 286 | } 287 | }, 288 | "node_modules/ansi-regex": { 289 | "version": "5.0.1", 290 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 291 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 292 | "dev": true, 293 | "engines": { 294 | "node": ">=8" 295 | } 296 | }, 297 | "node_modules/ansi-styles": { 298 | "version": "4.3.0", 299 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 300 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 301 | "dev": true, 302 | "dependencies": { 303 | "color-convert": "^2.0.1" 304 | }, 305 | "engines": { 306 | "node": ">=8" 307 | }, 308 | "funding": { 309 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 310 | } 311 | }, 312 | "node_modules/argparse": { 313 | "version": "1.0.10", 314 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 315 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 316 | "dev": true, 317 | "dependencies": { 318 | "sprintf-js": "~1.0.2" 319 | } 320 | }, 321 | "node_modules/astral-regex": { 322 | "version": "2.0.0", 323 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 324 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 325 | "dev": true, 326 | "engines": { 327 | "node": ">=8" 328 | } 329 | }, 330 | "node_modules/balanced-match": { 331 | "version": "1.0.2", 332 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 333 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 334 | "dev": true 335 | }, 336 | "node_modules/brace-expansion": { 337 | "version": "1.1.11", 338 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 339 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 340 | "dev": true, 341 | "dependencies": { 342 | "balanced-match": "^1.0.0", 343 | "concat-map": "0.0.1" 344 | } 345 | }, 346 | "node_modules/callsites": { 347 | "version": "3.1.0", 348 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 349 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 350 | "dev": true, 351 | "engines": { 352 | "node": ">=6" 353 | } 354 | }, 355 | "node_modules/chalk": { 356 | "version": "4.1.2", 357 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 358 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 359 | "dev": true, 360 | "dependencies": { 361 | "ansi-styles": "^4.1.0", 362 | "supports-color": "^7.1.0" 363 | }, 364 | "engines": { 365 | "node": ">=10" 366 | }, 367 | "funding": { 368 | "url": "https://github.com/chalk/chalk?sponsor=1" 369 | } 370 | }, 371 | "node_modules/color-convert": { 372 | "version": "2.0.1", 373 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 374 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 375 | "dev": true, 376 | "dependencies": { 377 | "color-name": "~1.1.4" 378 | }, 379 | "engines": { 380 | "node": ">=7.0.0" 381 | } 382 | }, 383 | "node_modules/color-name": { 384 | "version": "1.1.4", 385 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 386 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 387 | "dev": true 388 | }, 389 | "node_modules/concat-map": { 390 | "version": "0.0.1", 391 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 392 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 393 | "dev": true 394 | }, 395 | "node_modules/cross-spawn": { 396 | "version": "7.0.3", 397 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 398 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 399 | "dev": true, 400 | "dependencies": { 401 | "path-key": "^3.1.0", 402 | "shebang-command": "^2.0.0", 403 | "which": "^2.0.1" 404 | }, 405 | "engines": { 406 | "node": ">= 8" 407 | } 408 | }, 409 | "node_modules/debug": { 410 | "version": "4.3.4", 411 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 412 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 413 | "dev": true, 414 | "dependencies": { 415 | "ms": "2.1.2" 416 | }, 417 | "engines": { 418 | "node": ">=6.0" 419 | }, 420 | "peerDependenciesMeta": { 421 | "supports-color": { 422 | "optional": true 423 | } 424 | } 425 | }, 426 | "node_modules/deep-is": { 427 | "version": "0.1.4", 428 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 429 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 430 | "dev": true 431 | }, 432 | "node_modules/doctrine": { 433 | "version": "3.0.0", 434 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 435 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 436 | "dev": true, 437 | "dependencies": { 438 | "esutils": "^2.0.2" 439 | }, 440 | "engines": { 441 | "node": ">=6.0.0" 442 | } 443 | }, 444 | "node_modules/emoji-regex": { 445 | "version": "8.0.0", 446 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 447 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 448 | "dev": true 449 | }, 450 | "node_modules/enquirer": { 451 | "version": "2.3.6", 452 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 453 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 454 | "dev": true, 455 | "dependencies": { 456 | "ansi-colors": "^4.1.1" 457 | }, 458 | "engines": { 459 | "node": ">=8.6" 460 | } 461 | }, 462 | "node_modules/escape-string-regexp": { 463 | "version": "4.0.0", 464 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 465 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 466 | "dev": true, 467 | "engines": { 468 | "node": ">=10" 469 | }, 470 | "funding": { 471 | "url": "https://github.com/sponsors/sindresorhus" 472 | } 473 | }, 474 | "node_modules/eslint": { 475 | "version": "7.32.0", 476 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", 477 | "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", 478 | "dev": true, 479 | "dependencies": { 480 | "@babel/code-frame": "7.12.11", 481 | "@eslint/eslintrc": "^0.4.3", 482 | "@humanwhocodes/config-array": "^0.5.0", 483 | "ajv": "^6.10.0", 484 | "chalk": "^4.0.0", 485 | "cross-spawn": "^7.0.2", 486 | "debug": "^4.0.1", 487 | "doctrine": "^3.0.0", 488 | "enquirer": "^2.3.5", 489 | "escape-string-regexp": "^4.0.0", 490 | "eslint-scope": "^5.1.1", 491 | "eslint-utils": "^2.1.0", 492 | "eslint-visitor-keys": "^2.0.0", 493 | "espree": "^7.3.1", 494 | "esquery": "^1.4.0", 495 | "esutils": "^2.0.2", 496 | "fast-deep-equal": "^3.1.3", 497 | "file-entry-cache": "^6.0.1", 498 | "functional-red-black-tree": "^1.0.1", 499 | "glob-parent": "^5.1.2", 500 | "globals": "^13.6.0", 501 | "ignore": "^4.0.6", 502 | "import-fresh": "^3.0.0", 503 | "imurmurhash": "^0.1.4", 504 | "is-glob": "^4.0.0", 505 | "js-yaml": "^3.13.1", 506 | "json-stable-stringify-without-jsonify": "^1.0.1", 507 | "levn": "^0.4.1", 508 | "lodash.merge": "^4.6.2", 509 | "minimatch": "^3.0.4", 510 | "natural-compare": "^1.4.0", 511 | "optionator": "^0.9.1", 512 | "progress": "^2.0.0", 513 | "regexpp": "^3.1.0", 514 | "semver": "^7.2.1", 515 | "strip-ansi": "^6.0.0", 516 | "strip-json-comments": "^3.1.0", 517 | "table": "^6.0.9", 518 | "text-table": "^0.2.0", 519 | "v8-compile-cache": "^2.0.3" 520 | }, 521 | "bin": { 522 | "eslint": "bin/eslint.js" 523 | }, 524 | "engines": { 525 | "node": "^10.12.0 || >=12.0.0" 526 | }, 527 | "funding": { 528 | "url": "https://opencollective.com/eslint" 529 | } 530 | }, 531 | "node_modules/eslint-scope": { 532 | "version": "5.1.1", 533 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 534 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 535 | "dev": true, 536 | "dependencies": { 537 | "esrecurse": "^4.3.0", 538 | "estraverse": "^4.1.1" 539 | }, 540 | "engines": { 541 | "node": ">=8.0.0" 542 | } 543 | }, 544 | "node_modules/eslint-utils": { 545 | "version": "2.1.0", 546 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 547 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 548 | "dev": true, 549 | "dependencies": { 550 | "eslint-visitor-keys": "^1.1.0" 551 | }, 552 | "engines": { 553 | "node": ">=6" 554 | }, 555 | "funding": { 556 | "url": "https://github.com/sponsors/mysticatea" 557 | } 558 | }, 559 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 560 | "version": "1.3.0", 561 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 562 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 563 | "dev": true, 564 | "engines": { 565 | "node": ">=4" 566 | } 567 | }, 568 | "node_modules/eslint-visitor-keys": { 569 | "version": "2.1.0", 570 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 571 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 572 | "dev": true, 573 | "engines": { 574 | "node": ">=10" 575 | } 576 | }, 577 | "node_modules/eslint/node_modules/semver": { 578 | "version": "7.3.7", 579 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 580 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 581 | "dev": true, 582 | "dependencies": { 583 | "lru-cache": "^6.0.0" 584 | }, 585 | "bin": { 586 | "semver": "bin/semver.js" 587 | }, 588 | "engines": { 589 | "node": ">=10" 590 | } 591 | }, 592 | "node_modules/espree": { 593 | "version": "7.3.1", 594 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 595 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 596 | "dev": true, 597 | "dependencies": { 598 | "acorn": "^7.4.0", 599 | "acorn-jsx": "^5.3.1", 600 | "eslint-visitor-keys": "^1.3.0" 601 | }, 602 | "engines": { 603 | "node": "^10.12.0 || >=12.0.0" 604 | } 605 | }, 606 | "node_modules/espree/node_modules/eslint-visitor-keys": { 607 | "version": "1.3.0", 608 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 609 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 610 | "dev": true, 611 | "engines": { 612 | "node": ">=4" 613 | } 614 | }, 615 | "node_modules/esprima": { 616 | "version": "4.0.1", 617 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 618 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 619 | "dev": true, 620 | "bin": { 621 | "esparse": "bin/esparse.js", 622 | "esvalidate": "bin/esvalidate.js" 623 | }, 624 | "engines": { 625 | "node": ">=4" 626 | } 627 | }, 628 | "node_modules/esquery": { 629 | "version": "1.4.0", 630 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 631 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 632 | "dev": true, 633 | "dependencies": { 634 | "estraverse": "^5.1.0" 635 | }, 636 | "engines": { 637 | "node": ">=0.10" 638 | } 639 | }, 640 | "node_modules/esquery/node_modules/estraverse": { 641 | "version": "5.3.0", 642 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 643 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 644 | "dev": true, 645 | "engines": { 646 | "node": ">=4.0" 647 | } 648 | }, 649 | "node_modules/esrecurse": { 650 | "version": "4.3.0", 651 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 652 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 653 | "dev": true, 654 | "dependencies": { 655 | "estraverse": "^5.2.0" 656 | }, 657 | "engines": { 658 | "node": ">=4.0" 659 | } 660 | }, 661 | "node_modules/esrecurse/node_modules/estraverse": { 662 | "version": "5.3.0", 663 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 664 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 665 | "dev": true, 666 | "engines": { 667 | "node": ">=4.0" 668 | } 669 | }, 670 | "node_modules/estraverse": { 671 | "version": "4.3.0", 672 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 673 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 674 | "dev": true, 675 | "engines": { 676 | "node": ">=4.0" 677 | } 678 | }, 679 | "node_modules/esutils": { 680 | "version": "2.0.3", 681 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 682 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 683 | "dev": true, 684 | "engines": { 685 | "node": ">=0.10.0" 686 | } 687 | }, 688 | "node_modules/fast-deep-equal": { 689 | "version": "3.1.3", 690 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 691 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 692 | "dev": true 693 | }, 694 | "node_modules/fast-json-stable-stringify": { 695 | "version": "2.1.0", 696 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 697 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 698 | "dev": true 699 | }, 700 | "node_modules/fast-levenshtein": { 701 | "version": "2.0.6", 702 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 703 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 704 | "dev": true 705 | }, 706 | "node_modules/file-entry-cache": { 707 | "version": "6.0.1", 708 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 709 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 710 | "dev": true, 711 | "dependencies": { 712 | "flat-cache": "^3.0.4" 713 | }, 714 | "engines": { 715 | "node": "^10.12.0 || >=12.0.0" 716 | } 717 | }, 718 | "node_modules/flat-cache": { 719 | "version": "3.0.4", 720 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 721 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 722 | "dev": true, 723 | "dependencies": { 724 | "flatted": "^3.1.0", 725 | "rimraf": "^3.0.2" 726 | }, 727 | "engines": { 728 | "node": "^10.12.0 || >=12.0.0" 729 | } 730 | }, 731 | "node_modules/flatted": { 732 | "version": "3.2.7", 733 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 734 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 735 | "dev": true 736 | }, 737 | "node_modules/fs.realpath": { 738 | "version": "1.0.0", 739 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 740 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 741 | "dev": true 742 | }, 743 | "node_modules/functional-red-black-tree": { 744 | "version": "1.0.1", 745 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 746 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 747 | "dev": true 748 | }, 749 | "node_modules/glob": { 750 | "version": "7.2.3", 751 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 752 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 753 | "dev": true, 754 | "dependencies": { 755 | "fs.realpath": "^1.0.0", 756 | "inflight": "^1.0.4", 757 | "inherits": "2", 758 | "minimatch": "^3.1.1", 759 | "once": "^1.3.0", 760 | "path-is-absolute": "^1.0.0" 761 | }, 762 | "engines": { 763 | "node": "*" 764 | }, 765 | "funding": { 766 | "url": "https://github.com/sponsors/isaacs" 767 | } 768 | }, 769 | "node_modules/glob-parent": { 770 | "version": "5.1.2", 771 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 772 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 773 | "dev": true, 774 | "dependencies": { 775 | "is-glob": "^4.0.1" 776 | }, 777 | "engines": { 778 | "node": ">= 6" 779 | } 780 | }, 781 | "node_modules/globals": { 782 | "version": "13.17.0", 783 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 784 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 785 | "dev": true, 786 | "dependencies": { 787 | "type-fest": "^0.20.2" 788 | }, 789 | "engines": { 790 | "node": ">=8" 791 | }, 792 | "funding": { 793 | "url": "https://github.com/sponsors/sindresorhus" 794 | } 795 | }, 796 | "node_modules/has-flag": { 797 | "version": "4.0.0", 798 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 799 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 800 | "dev": true, 801 | "engines": { 802 | "node": ">=8" 803 | } 804 | }, 805 | "node_modules/husky": { 806 | "version": "7.0.4", 807 | "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", 808 | "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", 809 | "dev": true, 810 | "bin": { 811 | "husky": "lib/bin.js" 812 | }, 813 | "engines": { 814 | "node": ">=12" 815 | }, 816 | "funding": { 817 | "url": "https://github.com/sponsors/typicode" 818 | } 819 | }, 820 | "node_modules/ignore": { 821 | "version": "4.0.6", 822 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 823 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 824 | "dev": true, 825 | "engines": { 826 | "node": ">= 4" 827 | } 828 | }, 829 | "node_modules/import-fresh": { 830 | "version": "3.3.0", 831 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 832 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 833 | "dev": true, 834 | "dependencies": { 835 | "parent-module": "^1.0.0", 836 | "resolve-from": "^4.0.0" 837 | }, 838 | "engines": { 839 | "node": ">=6" 840 | }, 841 | "funding": { 842 | "url": "https://github.com/sponsors/sindresorhus" 843 | } 844 | }, 845 | "node_modules/imurmurhash": { 846 | "version": "0.1.4", 847 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 848 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 849 | "dev": true, 850 | "engines": { 851 | "node": ">=0.8.19" 852 | } 853 | }, 854 | "node_modules/inflight": { 855 | "version": "1.0.6", 856 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 857 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 858 | "dev": true, 859 | "dependencies": { 860 | "once": "^1.3.0", 861 | "wrappy": "1" 862 | } 863 | }, 864 | "node_modules/inherits": { 865 | "version": "2.0.4", 866 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 867 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 868 | "dev": true 869 | }, 870 | "node_modules/is-extglob": { 871 | "version": "2.1.1", 872 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 873 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 874 | "dev": true, 875 | "engines": { 876 | "node": ">=0.10.0" 877 | } 878 | }, 879 | "node_modules/is-fullwidth-code-point": { 880 | "version": "3.0.0", 881 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 882 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 883 | "dev": true, 884 | "engines": { 885 | "node": ">=8" 886 | } 887 | }, 888 | "node_modules/is-glob": { 889 | "version": "4.0.3", 890 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 891 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 892 | "dev": true, 893 | "dependencies": { 894 | "is-extglob": "^2.1.1" 895 | }, 896 | "engines": { 897 | "node": ">=0.10.0" 898 | } 899 | }, 900 | "node_modules/isexe": { 901 | "version": "2.0.0", 902 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 903 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 904 | "dev": true 905 | }, 906 | "node_modules/js-tokens": { 907 | "version": "4.0.0", 908 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 909 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 910 | "dev": true 911 | }, 912 | "node_modules/js-yaml": { 913 | "version": "3.14.1", 914 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 915 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 916 | "dev": true, 917 | "dependencies": { 918 | "argparse": "^1.0.7", 919 | "esprima": "^4.0.0" 920 | }, 921 | "bin": { 922 | "js-yaml": "bin/js-yaml.js" 923 | } 924 | }, 925 | "node_modules/json-schema-traverse": { 926 | "version": "0.4.1", 927 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 928 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 929 | "dev": true 930 | }, 931 | "node_modules/json-stable-stringify-without-jsonify": { 932 | "version": "1.0.1", 933 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 934 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 935 | "dev": true 936 | }, 937 | "node_modules/levn": { 938 | "version": "0.4.1", 939 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 940 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 941 | "dev": true, 942 | "dependencies": { 943 | "prelude-ls": "^1.2.1", 944 | "type-check": "~0.4.0" 945 | }, 946 | "engines": { 947 | "node": ">= 0.8.0" 948 | } 949 | }, 950 | "node_modules/lodash.merge": { 951 | "version": "4.6.2", 952 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 953 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 954 | "dev": true 955 | }, 956 | "node_modules/lodash.truncate": { 957 | "version": "4.4.2", 958 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 959 | "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", 960 | "dev": true 961 | }, 962 | "node_modules/lru-cache": { 963 | "version": "6.0.0", 964 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 965 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 966 | "dev": true, 967 | "dependencies": { 968 | "yallist": "^4.0.0" 969 | }, 970 | "engines": { 971 | "node": ">=10" 972 | } 973 | }, 974 | "node_modules/minimatch": { 975 | "version": "3.1.2", 976 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 977 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 978 | "dev": true, 979 | "dependencies": { 980 | "brace-expansion": "^1.1.7" 981 | }, 982 | "engines": { 983 | "node": "*" 984 | } 985 | }, 986 | "node_modules/ms": { 987 | "version": "2.1.2", 988 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 989 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 990 | "dev": true 991 | }, 992 | "node_modules/natural-compare": { 993 | "version": "1.4.0", 994 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 995 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 996 | "dev": true 997 | }, 998 | "node_modules/once": { 999 | "version": "1.4.0", 1000 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1001 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1002 | "dev": true, 1003 | "dependencies": { 1004 | "wrappy": "1" 1005 | } 1006 | }, 1007 | "node_modules/optionator": { 1008 | "version": "0.9.1", 1009 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1010 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "deep-is": "^0.1.3", 1014 | "fast-levenshtein": "^2.0.6", 1015 | "levn": "^0.4.1", 1016 | "prelude-ls": "^1.2.1", 1017 | "type-check": "^0.4.0", 1018 | "word-wrap": "^1.2.3" 1019 | }, 1020 | "engines": { 1021 | "node": ">= 0.8.0" 1022 | } 1023 | }, 1024 | "node_modules/parent-module": { 1025 | "version": "1.0.1", 1026 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1027 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1028 | "dev": true, 1029 | "dependencies": { 1030 | "callsites": "^3.0.0" 1031 | }, 1032 | "engines": { 1033 | "node": ">=6" 1034 | } 1035 | }, 1036 | "node_modules/path-is-absolute": { 1037 | "version": "1.0.1", 1038 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1039 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1040 | "dev": true, 1041 | "engines": { 1042 | "node": ">=0.10.0" 1043 | } 1044 | }, 1045 | "node_modules/path-key": { 1046 | "version": "3.1.1", 1047 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1048 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1049 | "dev": true, 1050 | "engines": { 1051 | "node": ">=8" 1052 | } 1053 | }, 1054 | "node_modules/prelude-ls": { 1055 | "version": "1.2.1", 1056 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1057 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1058 | "dev": true, 1059 | "engines": { 1060 | "node": ">= 0.8.0" 1061 | } 1062 | }, 1063 | "node_modules/prettier": { 1064 | "version": "2.7.1", 1065 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", 1066 | "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", 1067 | "dev": true, 1068 | "bin": { 1069 | "prettier": "bin-prettier.js" 1070 | }, 1071 | "engines": { 1072 | "node": ">=10.13.0" 1073 | }, 1074 | "funding": { 1075 | "url": "https://github.com/prettier/prettier?sponsor=1" 1076 | } 1077 | }, 1078 | "node_modules/progress": { 1079 | "version": "2.0.3", 1080 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1081 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1082 | "dev": true, 1083 | "engines": { 1084 | "node": ">=0.4.0" 1085 | } 1086 | }, 1087 | "node_modules/punycode": { 1088 | "version": "2.1.1", 1089 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1090 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1091 | "dev": true, 1092 | "engines": { 1093 | "node": ">=6" 1094 | } 1095 | }, 1096 | "node_modules/regexpp": { 1097 | "version": "3.2.0", 1098 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1099 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1100 | "dev": true, 1101 | "engines": { 1102 | "node": ">=8" 1103 | }, 1104 | "funding": { 1105 | "url": "https://github.com/sponsors/mysticatea" 1106 | } 1107 | }, 1108 | "node_modules/require-from-string": { 1109 | "version": "2.0.2", 1110 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1111 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1112 | "dev": true, 1113 | "engines": { 1114 | "node": ">=0.10.0" 1115 | } 1116 | }, 1117 | "node_modules/resolve-from": { 1118 | "version": "4.0.0", 1119 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1120 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1121 | "dev": true, 1122 | "engines": { 1123 | "node": ">=4" 1124 | } 1125 | }, 1126 | "node_modules/rimraf": { 1127 | "version": "3.0.2", 1128 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1129 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "glob": "^7.1.3" 1133 | }, 1134 | "bin": { 1135 | "rimraf": "bin.js" 1136 | }, 1137 | "funding": { 1138 | "url": "https://github.com/sponsors/isaacs" 1139 | } 1140 | }, 1141 | "node_modules/semver": { 1142 | "version": "6.3.0", 1143 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1144 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1145 | "bin": { 1146 | "semver": "bin/semver.js" 1147 | } 1148 | }, 1149 | "node_modules/shebang-command": { 1150 | "version": "2.0.0", 1151 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1152 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1153 | "dev": true, 1154 | "dependencies": { 1155 | "shebang-regex": "^3.0.0" 1156 | }, 1157 | "engines": { 1158 | "node": ">=8" 1159 | } 1160 | }, 1161 | "node_modules/shebang-regex": { 1162 | "version": "3.0.0", 1163 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1164 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1165 | "dev": true, 1166 | "engines": { 1167 | "node": ">=8" 1168 | } 1169 | }, 1170 | "node_modules/slice-ansi": { 1171 | "version": "4.0.0", 1172 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 1173 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 1174 | "dev": true, 1175 | "dependencies": { 1176 | "ansi-styles": "^4.0.0", 1177 | "astral-regex": "^2.0.0", 1178 | "is-fullwidth-code-point": "^3.0.0" 1179 | }, 1180 | "engines": { 1181 | "node": ">=10" 1182 | }, 1183 | "funding": { 1184 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1185 | } 1186 | }, 1187 | "node_modules/sprintf-js": { 1188 | "version": "1.0.3", 1189 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1190 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 1191 | "dev": true 1192 | }, 1193 | "node_modules/string-width": { 1194 | "version": "4.2.3", 1195 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1196 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1197 | "dev": true, 1198 | "dependencies": { 1199 | "emoji-regex": "^8.0.0", 1200 | "is-fullwidth-code-point": "^3.0.0", 1201 | "strip-ansi": "^6.0.1" 1202 | }, 1203 | "engines": { 1204 | "node": ">=8" 1205 | } 1206 | }, 1207 | "node_modules/strip-ansi": { 1208 | "version": "6.0.1", 1209 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1210 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1211 | "dev": true, 1212 | "dependencies": { 1213 | "ansi-regex": "^5.0.1" 1214 | }, 1215 | "engines": { 1216 | "node": ">=8" 1217 | } 1218 | }, 1219 | "node_modules/strip-json-comments": { 1220 | "version": "3.1.1", 1221 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1222 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1223 | "dev": true, 1224 | "engines": { 1225 | "node": ">=8" 1226 | }, 1227 | "funding": { 1228 | "url": "https://github.com/sponsors/sindresorhus" 1229 | } 1230 | }, 1231 | "node_modules/supports-color": { 1232 | "version": "7.2.0", 1233 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1234 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1235 | "dev": true, 1236 | "dependencies": { 1237 | "has-flag": "^4.0.0" 1238 | }, 1239 | "engines": { 1240 | "node": ">=8" 1241 | } 1242 | }, 1243 | "node_modules/table": { 1244 | "version": "6.8.0", 1245 | "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", 1246 | "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", 1247 | "dev": true, 1248 | "dependencies": { 1249 | "ajv": "^8.0.1", 1250 | "lodash.truncate": "^4.4.2", 1251 | "slice-ansi": "^4.0.0", 1252 | "string-width": "^4.2.3", 1253 | "strip-ansi": "^6.0.1" 1254 | }, 1255 | "engines": { 1256 | "node": ">=10.0.0" 1257 | } 1258 | }, 1259 | "node_modules/table/node_modules/ajv": { 1260 | "version": "8.11.0", 1261 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", 1262 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", 1263 | "dev": true, 1264 | "dependencies": { 1265 | "fast-deep-equal": "^3.1.1", 1266 | "json-schema-traverse": "^1.0.0", 1267 | "require-from-string": "^2.0.2", 1268 | "uri-js": "^4.2.2" 1269 | }, 1270 | "funding": { 1271 | "type": "github", 1272 | "url": "https://github.com/sponsors/epoberezkin" 1273 | } 1274 | }, 1275 | "node_modules/table/node_modules/json-schema-traverse": { 1276 | "version": "1.0.0", 1277 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1278 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1279 | "dev": true 1280 | }, 1281 | "node_modules/text-table": { 1282 | "version": "0.2.0", 1283 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1284 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1285 | "dev": true 1286 | }, 1287 | "node_modules/tunnel": { 1288 | "version": "0.0.6", 1289 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 1290 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 1291 | "engines": { 1292 | "node": ">=0.6.11 <=0.7.0 || >=0.7.3" 1293 | } 1294 | }, 1295 | "node_modules/type-check": { 1296 | "version": "0.4.0", 1297 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1298 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1299 | "dev": true, 1300 | "dependencies": { 1301 | "prelude-ls": "^1.2.1" 1302 | }, 1303 | "engines": { 1304 | "node": ">= 0.8.0" 1305 | } 1306 | }, 1307 | "node_modules/type-fest": { 1308 | "version": "0.20.2", 1309 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1310 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1311 | "dev": true, 1312 | "engines": { 1313 | "node": ">=10" 1314 | }, 1315 | "funding": { 1316 | "url": "https://github.com/sponsors/sindresorhus" 1317 | } 1318 | }, 1319 | "node_modules/typescript": { 1320 | "version": "4.4.3", 1321 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", 1322 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", 1323 | "dev": true, 1324 | "bin": { 1325 | "tsc": "bin/tsc", 1326 | "tsserver": "bin/tsserver" 1327 | }, 1328 | "engines": { 1329 | "node": ">=4.2.0" 1330 | } 1331 | }, 1332 | "node_modules/uri-js": { 1333 | "version": "4.4.1", 1334 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1335 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1336 | "dev": true, 1337 | "dependencies": { 1338 | "punycode": "^2.1.0" 1339 | } 1340 | }, 1341 | "node_modules/uuid": { 1342 | "version": "8.3.2", 1343 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1344 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1345 | "bin": { 1346 | "uuid": "dist/bin/uuid" 1347 | } 1348 | }, 1349 | "node_modules/v8-compile-cache": { 1350 | "version": "2.3.0", 1351 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1352 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1353 | "dev": true 1354 | }, 1355 | "node_modules/which": { 1356 | "version": "2.0.2", 1357 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1358 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1359 | "dev": true, 1360 | "dependencies": { 1361 | "isexe": "^2.0.0" 1362 | }, 1363 | "bin": { 1364 | "node-which": "bin/node-which" 1365 | }, 1366 | "engines": { 1367 | "node": ">= 8" 1368 | } 1369 | }, 1370 | "node_modules/word-wrap": { 1371 | "version": "1.2.3", 1372 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1373 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1374 | "dev": true, 1375 | "engines": { 1376 | "node": ">=0.10.0" 1377 | } 1378 | }, 1379 | "node_modules/wrappy": { 1380 | "version": "1.0.2", 1381 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1382 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1383 | "dev": true 1384 | }, 1385 | "node_modules/yallist": { 1386 | "version": "4.0.0", 1387 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1388 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1389 | "dev": true 1390 | } 1391 | }, 1392 | "dependencies": { 1393 | "@actions/core": { 1394 | "version": "1.9.1", 1395 | "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", 1396 | "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", 1397 | "requires": { 1398 | "@actions/http-client": "^2.0.1", 1399 | "uuid": "^8.3.2" 1400 | } 1401 | }, 1402 | "@actions/exec": { 1403 | "version": "1.1.1", 1404 | "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", 1405 | "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", 1406 | "requires": { 1407 | "@actions/io": "^1.0.1" 1408 | } 1409 | }, 1410 | "@actions/http-client": { 1411 | "version": "2.0.1", 1412 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", 1413 | "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", 1414 | "requires": { 1415 | "tunnel": "^0.0.6" 1416 | } 1417 | }, 1418 | "@actions/io": { 1419 | "version": "1.1.2", 1420 | "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz", 1421 | "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw==" 1422 | }, 1423 | "@actions/tool-cache": { 1424 | "version": "1.7.2", 1425 | "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.7.2.tgz", 1426 | "integrity": "sha512-GYlcgg/PK2RWBrGG2sFg6s7im3S94LMKuqAv8UPDq/pGTZbuEvmN4a95Fn1Z19OE+vt7UbUHeewOD5tEBT+4TQ==", 1427 | "requires": { 1428 | "@actions/core": "^1.2.6", 1429 | "@actions/exec": "^1.0.0", 1430 | "@actions/http-client": "^1.0.8", 1431 | "@actions/io": "^1.1.1", 1432 | "semver": "^6.1.0", 1433 | "uuid": "^3.3.2" 1434 | }, 1435 | "dependencies": { 1436 | "@actions/http-client": { 1437 | "version": "1.0.11", 1438 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", 1439 | "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", 1440 | "requires": { 1441 | "tunnel": "0.0.6" 1442 | } 1443 | }, 1444 | "uuid": { 1445 | "version": "3.4.0", 1446 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1447 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1448 | } 1449 | } 1450 | }, 1451 | "@babel/code-frame": { 1452 | "version": "7.12.11", 1453 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 1454 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 1455 | "dev": true, 1456 | "requires": { 1457 | "@babel/highlight": "^7.10.4" 1458 | } 1459 | }, 1460 | "@babel/helper-validator-identifier": { 1461 | "version": "7.18.6", 1462 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 1463 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 1464 | "dev": true 1465 | }, 1466 | "@babel/highlight": { 1467 | "version": "7.18.6", 1468 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1469 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1470 | "dev": true, 1471 | "requires": { 1472 | "@babel/helper-validator-identifier": "^7.18.6", 1473 | "chalk": "^2.0.0", 1474 | "js-tokens": "^4.0.0" 1475 | }, 1476 | "dependencies": { 1477 | "ansi-styles": { 1478 | "version": "3.2.1", 1479 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1480 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1481 | "dev": true, 1482 | "requires": { 1483 | "color-convert": "^1.9.0" 1484 | } 1485 | }, 1486 | "chalk": { 1487 | "version": "2.4.2", 1488 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1489 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1490 | "dev": true, 1491 | "requires": { 1492 | "ansi-styles": "^3.2.1", 1493 | "escape-string-regexp": "^1.0.5", 1494 | "supports-color": "^5.3.0" 1495 | } 1496 | }, 1497 | "color-convert": { 1498 | "version": "1.9.3", 1499 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1500 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1501 | "dev": true, 1502 | "requires": { 1503 | "color-name": "1.1.3" 1504 | } 1505 | }, 1506 | "color-name": { 1507 | "version": "1.1.3", 1508 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1509 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1510 | "dev": true 1511 | }, 1512 | "escape-string-regexp": { 1513 | "version": "1.0.5", 1514 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1515 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1516 | "dev": true 1517 | }, 1518 | "has-flag": { 1519 | "version": "3.0.0", 1520 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1521 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1522 | "dev": true 1523 | }, 1524 | "supports-color": { 1525 | "version": "5.5.0", 1526 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1527 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1528 | "dev": true, 1529 | "requires": { 1530 | "has-flag": "^3.0.0" 1531 | } 1532 | } 1533 | } 1534 | }, 1535 | "@eslint/eslintrc": { 1536 | "version": "0.4.3", 1537 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", 1538 | "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", 1539 | "dev": true, 1540 | "requires": { 1541 | "ajv": "^6.12.4", 1542 | "debug": "^4.1.1", 1543 | "espree": "^7.3.0", 1544 | "globals": "^13.9.0", 1545 | "ignore": "^4.0.6", 1546 | "import-fresh": "^3.2.1", 1547 | "js-yaml": "^3.13.1", 1548 | "minimatch": "^3.0.4", 1549 | "strip-json-comments": "^3.1.1" 1550 | } 1551 | }, 1552 | "@humanwhocodes/config-array": { 1553 | "version": "0.5.0", 1554 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 1555 | "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", 1556 | "dev": true, 1557 | "requires": { 1558 | "@humanwhocodes/object-schema": "^1.2.0", 1559 | "debug": "^4.1.1", 1560 | "minimatch": "^3.0.4" 1561 | } 1562 | }, 1563 | "@humanwhocodes/object-schema": { 1564 | "version": "1.2.1", 1565 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 1566 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 1567 | "dev": true 1568 | }, 1569 | "@types/node": { 1570 | "version": "16.11.56", 1571 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz", 1572 | "integrity": "sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==", 1573 | "dev": true 1574 | }, 1575 | "@vercel/ncc": { 1576 | "version": "0.31.1", 1577 | "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.31.1.tgz", 1578 | "integrity": "sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==", 1579 | "dev": true 1580 | }, 1581 | "acorn": { 1582 | "version": "7.4.1", 1583 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1584 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 1585 | "dev": true 1586 | }, 1587 | "acorn-jsx": { 1588 | "version": "5.3.2", 1589 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1590 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1591 | "dev": true, 1592 | "requires": {} 1593 | }, 1594 | "ajv": { 1595 | "version": "6.12.6", 1596 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1597 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1598 | "dev": true, 1599 | "requires": { 1600 | "fast-deep-equal": "^3.1.1", 1601 | "fast-json-stable-stringify": "^2.0.0", 1602 | "json-schema-traverse": "^0.4.1", 1603 | "uri-js": "^4.2.2" 1604 | } 1605 | }, 1606 | "ansi-colors": { 1607 | "version": "4.1.3", 1608 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 1609 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 1610 | "dev": true 1611 | }, 1612 | "ansi-regex": { 1613 | "version": "5.0.1", 1614 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1615 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1616 | "dev": true 1617 | }, 1618 | "ansi-styles": { 1619 | "version": "4.3.0", 1620 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1621 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1622 | "dev": true, 1623 | "requires": { 1624 | "color-convert": "^2.0.1" 1625 | } 1626 | }, 1627 | "argparse": { 1628 | "version": "1.0.10", 1629 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1630 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1631 | "dev": true, 1632 | "requires": { 1633 | "sprintf-js": "~1.0.2" 1634 | } 1635 | }, 1636 | "astral-regex": { 1637 | "version": "2.0.0", 1638 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 1639 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 1640 | "dev": true 1641 | }, 1642 | "balanced-match": { 1643 | "version": "1.0.2", 1644 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1645 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1646 | "dev": true 1647 | }, 1648 | "brace-expansion": { 1649 | "version": "1.1.11", 1650 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1651 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1652 | "dev": true, 1653 | "requires": { 1654 | "balanced-match": "^1.0.0", 1655 | "concat-map": "0.0.1" 1656 | } 1657 | }, 1658 | "callsites": { 1659 | "version": "3.1.0", 1660 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1661 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1662 | "dev": true 1663 | }, 1664 | "chalk": { 1665 | "version": "4.1.2", 1666 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1667 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1668 | "dev": true, 1669 | "requires": { 1670 | "ansi-styles": "^4.1.0", 1671 | "supports-color": "^7.1.0" 1672 | } 1673 | }, 1674 | "color-convert": { 1675 | "version": "2.0.1", 1676 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1677 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1678 | "dev": true, 1679 | "requires": { 1680 | "color-name": "~1.1.4" 1681 | } 1682 | }, 1683 | "color-name": { 1684 | "version": "1.1.4", 1685 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1686 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1687 | "dev": true 1688 | }, 1689 | "concat-map": { 1690 | "version": "0.0.1", 1691 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1692 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1693 | "dev": true 1694 | }, 1695 | "cross-spawn": { 1696 | "version": "7.0.3", 1697 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1698 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1699 | "dev": true, 1700 | "requires": { 1701 | "path-key": "^3.1.0", 1702 | "shebang-command": "^2.0.0", 1703 | "which": "^2.0.1" 1704 | } 1705 | }, 1706 | "debug": { 1707 | "version": "4.3.4", 1708 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1709 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1710 | "dev": true, 1711 | "requires": { 1712 | "ms": "2.1.2" 1713 | } 1714 | }, 1715 | "deep-is": { 1716 | "version": "0.1.4", 1717 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1718 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1719 | "dev": true 1720 | }, 1721 | "doctrine": { 1722 | "version": "3.0.0", 1723 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1724 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1725 | "dev": true, 1726 | "requires": { 1727 | "esutils": "^2.0.2" 1728 | } 1729 | }, 1730 | "emoji-regex": { 1731 | "version": "8.0.0", 1732 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1733 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1734 | "dev": true 1735 | }, 1736 | "enquirer": { 1737 | "version": "2.3.6", 1738 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 1739 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 1740 | "dev": true, 1741 | "requires": { 1742 | "ansi-colors": "^4.1.1" 1743 | } 1744 | }, 1745 | "escape-string-regexp": { 1746 | "version": "4.0.0", 1747 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1748 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1749 | "dev": true 1750 | }, 1751 | "eslint": { 1752 | "version": "7.32.0", 1753 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", 1754 | "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", 1755 | "dev": true, 1756 | "requires": { 1757 | "@babel/code-frame": "7.12.11", 1758 | "@eslint/eslintrc": "^0.4.3", 1759 | "@humanwhocodes/config-array": "^0.5.0", 1760 | "ajv": "^6.10.0", 1761 | "chalk": "^4.0.0", 1762 | "cross-spawn": "^7.0.2", 1763 | "debug": "^4.0.1", 1764 | "doctrine": "^3.0.0", 1765 | "enquirer": "^2.3.5", 1766 | "escape-string-regexp": "^4.0.0", 1767 | "eslint-scope": "^5.1.1", 1768 | "eslint-utils": "^2.1.0", 1769 | "eslint-visitor-keys": "^2.0.0", 1770 | "espree": "^7.3.1", 1771 | "esquery": "^1.4.0", 1772 | "esutils": "^2.0.2", 1773 | "fast-deep-equal": "^3.1.3", 1774 | "file-entry-cache": "^6.0.1", 1775 | "functional-red-black-tree": "^1.0.1", 1776 | "glob-parent": "^5.1.2", 1777 | "globals": "^13.6.0", 1778 | "ignore": "^4.0.6", 1779 | "import-fresh": "^3.0.0", 1780 | "imurmurhash": "^0.1.4", 1781 | "is-glob": "^4.0.0", 1782 | "js-yaml": "^3.13.1", 1783 | "json-stable-stringify-without-jsonify": "^1.0.1", 1784 | "levn": "^0.4.1", 1785 | "lodash.merge": "^4.6.2", 1786 | "minimatch": "^3.0.4", 1787 | "natural-compare": "^1.4.0", 1788 | "optionator": "^0.9.1", 1789 | "progress": "^2.0.0", 1790 | "regexpp": "^3.1.0", 1791 | "semver": "^7.2.1", 1792 | "strip-ansi": "^6.0.0", 1793 | "strip-json-comments": "^3.1.0", 1794 | "table": "^6.0.9", 1795 | "text-table": "^0.2.0", 1796 | "v8-compile-cache": "^2.0.3" 1797 | }, 1798 | "dependencies": { 1799 | "semver": { 1800 | "version": "7.3.7", 1801 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 1802 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 1803 | "dev": true, 1804 | "requires": { 1805 | "lru-cache": "^6.0.0" 1806 | } 1807 | } 1808 | } 1809 | }, 1810 | "eslint-scope": { 1811 | "version": "5.1.1", 1812 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1813 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1814 | "dev": true, 1815 | "requires": { 1816 | "esrecurse": "^4.3.0", 1817 | "estraverse": "^4.1.1" 1818 | } 1819 | }, 1820 | "eslint-utils": { 1821 | "version": "2.1.0", 1822 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1823 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1824 | "dev": true, 1825 | "requires": { 1826 | "eslint-visitor-keys": "^1.1.0" 1827 | }, 1828 | "dependencies": { 1829 | "eslint-visitor-keys": { 1830 | "version": "1.3.0", 1831 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1832 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1833 | "dev": true 1834 | } 1835 | } 1836 | }, 1837 | "eslint-visitor-keys": { 1838 | "version": "2.1.0", 1839 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1840 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1841 | "dev": true 1842 | }, 1843 | "espree": { 1844 | "version": "7.3.1", 1845 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 1846 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 1847 | "dev": true, 1848 | "requires": { 1849 | "acorn": "^7.4.0", 1850 | "acorn-jsx": "^5.3.1", 1851 | "eslint-visitor-keys": "^1.3.0" 1852 | }, 1853 | "dependencies": { 1854 | "eslint-visitor-keys": { 1855 | "version": "1.3.0", 1856 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1857 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1858 | "dev": true 1859 | } 1860 | } 1861 | }, 1862 | "esprima": { 1863 | "version": "4.0.1", 1864 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1865 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1866 | "dev": true 1867 | }, 1868 | "esquery": { 1869 | "version": "1.4.0", 1870 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1871 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1872 | "dev": true, 1873 | "requires": { 1874 | "estraverse": "^5.1.0" 1875 | }, 1876 | "dependencies": { 1877 | "estraverse": { 1878 | "version": "5.3.0", 1879 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1880 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1881 | "dev": true 1882 | } 1883 | } 1884 | }, 1885 | "esrecurse": { 1886 | "version": "4.3.0", 1887 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1888 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1889 | "dev": true, 1890 | "requires": { 1891 | "estraverse": "^5.2.0" 1892 | }, 1893 | "dependencies": { 1894 | "estraverse": { 1895 | "version": "5.3.0", 1896 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1897 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1898 | "dev": true 1899 | } 1900 | } 1901 | }, 1902 | "estraverse": { 1903 | "version": "4.3.0", 1904 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1905 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1906 | "dev": true 1907 | }, 1908 | "esutils": { 1909 | "version": "2.0.3", 1910 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1911 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1912 | "dev": true 1913 | }, 1914 | "fast-deep-equal": { 1915 | "version": "3.1.3", 1916 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1917 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1918 | "dev": true 1919 | }, 1920 | "fast-json-stable-stringify": { 1921 | "version": "2.1.0", 1922 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1923 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1924 | "dev": true 1925 | }, 1926 | "fast-levenshtein": { 1927 | "version": "2.0.6", 1928 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1929 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1930 | "dev": true 1931 | }, 1932 | "file-entry-cache": { 1933 | "version": "6.0.1", 1934 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1935 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1936 | "dev": true, 1937 | "requires": { 1938 | "flat-cache": "^3.0.4" 1939 | } 1940 | }, 1941 | "flat-cache": { 1942 | "version": "3.0.4", 1943 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1944 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1945 | "dev": true, 1946 | "requires": { 1947 | "flatted": "^3.1.0", 1948 | "rimraf": "^3.0.2" 1949 | } 1950 | }, 1951 | "flatted": { 1952 | "version": "3.2.7", 1953 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1954 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 1955 | "dev": true 1956 | }, 1957 | "fs.realpath": { 1958 | "version": "1.0.0", 1959 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1960 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1961 | "dev": true 1962 | }, 1963 | "functional-red-black-tree": { 1964 | "version": "1.0.1", 1965 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1966 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 1967 | "dev": true 1968 | }, 1969 | "glob": { 1970 | "version": "7.2.3", 1971 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1972 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1973 | "dev": true, 1974 | "requires": { 1975 | "fs.realpath": "^1.0.0", 1976 | "inflight": "^1.0.4", 1977 | "inherits": "2", 1978 | "minimatch": "^3.1.1", 1979 | "once": "^1.3.0", 1980 | "path-is-absolute": "^1.0.0" 1981 | } 1982 | }, 1983 | "glob-parent": { 1984 | "version": "5.1.2", 1985 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1986 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1987 | "dev": true, 1988 | "requires": { 1989 | "is-glob": "^4.0.1" 1990 | } 1991 | }, 1992 | "globals": { 1993 | "version": "13.17.0", 1994 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 1995 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 1996 | "dev": true, 1997 | "requires": { 1998 | "type-fest": "^0.20.2" 1999 | } 2000 | }, 2001 | "has-flag": { 2002 | "version": "4.0.0", 2003 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2004 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2005 | "dev": true 2006 | }, 2007 | "husky": { 2008 | "version": "7.0.4", 2009 | "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", 2010 | "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", 2011 | "dev": true 2012 | }, 2013 | "ignore": { 2014 | "version": "4.0.6", 2015 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 2016 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 2017 | "dev": true 2018 | }, 2019 | "import-fresh": { 2020 | "version": "3.3.0", 2021 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2022 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2023 | "dev": true, 2024 | "requires": { 2025 | "parent-module": "^1.0.0", 2026 | "resolve-from": "^4.0.0" 2027 | } 2028 | }, 2029 | "imurmurhash": { 2030 | "version": "0.1.4", 2031 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2032 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2033 | "dev": true 2034 | }, 2035 | "inflight": { 2036 | "version": "1.0.6", 2037 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2038 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 2039 | "dev": true, 2040 | "requires": { 2041 | "once": "^1.3.0", 2042 | "wrappy": "1" 2043 | } 2044 | }, 2045 | "inherits": { 2046 | "version": "2.0.4", 2047 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2048 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2049 | "dev": true 2050 | }, 2051 | "is-extglob": { 2052 | "version": "2.1.1", 2053 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2054 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2055 | "dev": true 2056 | }, 2057 | "is-fullwidth-code-point": { 2058 | "version": "3.0.0", 2059 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2060 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2061 | "dev": true 2062 | }, 2063 | "is-glob": { 2064 | "version": "4.0.3", 2065 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2066 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2067 | "dev": true, 2068 | "requires": { 2069 | "is-extglob": "^2.1.1" 2070 | } 2071 | }, 2072 | "isexe": { 2073 | "version": "2.0.0", 2074 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2075 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2076 | "dev": true 2077 | }, 2078 | "js-tokens": { 2079 | "version": "4.0.0", 2080 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2081 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2082 | "dev": true 2083 | }, 2084 | "js-yaml": { 2085 | "version": "3.14.1", 2086 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2087 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2088 | "dev": true, 2089 | "requires": { 2090 | "argparse": "^1.0.7", 2091 | "esprima": "^4.0.0" 2092 | } 2093 | }, 2094 | "json-schema-traverse": { 2095 | "version": "0.4.1", 2096 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2097 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2098 | "dev": true 2099 | }, 2100 | "json-stable-stringify-without-jsonify": { 2101 | "version": "1.0.1", 2102 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2103 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2104 | "dev": true 2105 | }, 2106 | "levn": { 2107 | "version": "0.4.1", 2108 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2109 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2110 | "dev": true, 2111 | "requires": { 2112 | "prelude-ls": "^1.2.1", 2113 | "type-check": "~0.4.0" 2114 | } 2115 | }, 2116 | "lodash.merge": { 2117 | "version": "4.6.2", 2118 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2119 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2120 | "dev": true 2121 | }, 2122 | "lodash.truncate": { 2123 | "version": "4.4.2", 2124 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 2125 | "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", 2126 | "dev": true 2127 | }, 2128 | "lru-cache": { 2129 | "version": "6.0.0", 2130 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2131 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2132 | "dev": true, 2133 | "requires": { 2134 | "yallist": "^4.0.0" 2135 | } 2136 | }, 2137 | "minimatch": { 2138 | "version": "3.1.2", 2139 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2140 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2141 | "dev": true, 2142 | "requires": { 2143 | "brace-expansion": "^1.1.7" 2144 | } 2145 | }, 2146 | "ms": { 2147 | "version": "2.1.2", 2148 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2149 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2150 | "dev": true 2151 | }, 2152 | "natural-compare": { 2153 | "version": "1.4.0", 2154 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2155 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2156 | "dev": true 2157 | }, 2158 | "once": { 2159 | "version": "1.4.0", 2160 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2161 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2162 | "dev": true, 2163 | "requires": { 2164 | "wrappy": "1" 2165 | } 2166 | }, 2167 | "optionator": { 2168 | "version": "0.9.1", 2169 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2170 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2171 | "dev": true, 2172 | "requires": { 2173 | "deep-is": "^0.1.3", 2174 | "fast-levenshtein": "^2.0.6", 2175 | "levn": "^0.4.1", 2176 | "prelude-ls": "^1.2.1", 2177 | "type-check": "^0.4.0", 2178 | "word-wrap": "^1.2.3" 2179 | } 2180 | }, 2181 | "parent-module": { 2182 | "version": "1.0.1", 2183 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2184 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2185 | "dev": true, 2186 | "requires": { 2187 | "callsites": "^3.0.0" 2188 | } 2189 | }, 2190 | "path-is-absolute": { 2191 | "version": "1.0.1", 2192 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2193 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2194 | "dev": true 2195 | }, 2196 | "path-key": { 2197 | "version": "3.1.1", 2198 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2199 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2200 | "dev": true 2201 | }, 2202 | "prelude-ls": { 2203 | "version": "1.2.1", 2204 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2205 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2206 | "dev": true 2207 | }, 2208 | "prettier": { 2209 | "version": "2.7.1", 2210 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", 2211 | "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", 2212 | "dev": true 2213 | }, 2214 | "progress": { 2215 | "version": "2.0.3", 2216 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2217 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2218 | "dev": true 2219 | }, 2220 | "punycode": { 2221 | "version": "2.1.1", 2222 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2223 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2224 | "dev": true 2225 | }, 2226 | "regexpp": { 2227 | "version": "3.2.0", 2228 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2229 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2230 | "dev": true 2231 | }, 2232 | "require-from-string": { 2233 | "version": "2.0.2", 2234 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2235 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2236 | "dev": true 2237 | }, 2238 | "resolve-from": { 2239 | "version": "4.0.0", 2240 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2241 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2242 | "dev": true 2243 | }, 2244 | "rimraf": { 2245 | "version": "3.0.2", 2246 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2247 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2248 | "dev": true, 2249 | "requires": { 2250 | "glob": "^7.1.3" 2251 | } 2252 | }, 2253 | "semver": { 2254 | "version": "6.3.0", 2255 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2256 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2257 | }, 2258 | "shebang-command": { 2259 | "version": "2.0.0", 2260 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2261 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2262 | "dev": true, 2263 | "requires": { 2264 | "shebang-regex": "^3.0.0" 2265 | } 2266 | }, 2267 | "shebang-regex": { 2268 | "version": "3.0.0", 2269 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2270 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2271 | "dev": true 2272 | }, 2273 | "slice-ansi": { 2274 | "version": "4.0.0", 2275 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2276 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2277 | "dev": true, 2278 | "requires": { 2279 | "ansi-styles": "^4.0.0", 2280 | "astral-regex": "^2.0.0", 2281 | "is-fullwidth-code-point": "^3.0.0" 2282 | } 2283 | }, 2284 | "sprintf-js": { 2285 | "version": "1.0.3", 2286 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2287 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 2288 | "dev": true 2289 | }, 2290 | "string-width": { 2291 | "version": "4.2.3", 2292 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2293 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2294 | "dev": true, 2295 | "requires": { 2296 | "emoji-regex": "^8.0.0", 2297 | "is-fullwidth-code-point": "^3.0.0", 2298 | "strip-ansi": "^6.0.1" 2299 | } 2300 | }, 2301 | "strip-ansi": { 2302 | "version": "6.0.1", 2303 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2304 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2305 | "dev": true, 2306 | "requires": { 2307 | "ansi-regex": "^5.0.1" 2308 | } 2309 | }, 2310 | "strip-json-comments": { 2311 | "version": "3.1.1", 2312 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2313 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2314 | "dev": true 2315 | }, 2316 | "supports-color": { 2317 | "version": "7.2.0", 2318 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2319 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2320 | "dev": true, 2321 | "requires": { 2322 | "has-flag": "^4.0.0" 2323 | } 2324 | }, 2325 | "table": { 2326 | "version": "6.8.0", 2327 | "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", 2328 | "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", 2329 | "dev": true, 2330 | "requires": { 2331 | "ajv": "^8.0.1", 2332 | "lodash.truncate": "^4.4.2", 2333 | "slice-ansi": "^4.0.0", 2334 | "string-width": "^4.2.3", 2335 | "strip-ansi": "^6.0.1" 2336 | }, 2337 | "dependencies": { 2338 | "ajv": { 2339 | "version": "8.11.0", 2340 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", 2341 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", 2342 | "dev": true, 2343 | "requires": { 2344 | "fast-deep-equal": "^3.1.1", 2345 | "json-schema-traverse": "^1.0.0", 2346 | "require-from-string": "^2.0.2", 2347 | "uri-js": "^4.2.2" 2348 | } 2349 | }, 2350 | "json-schema-traverse": { 2351 | "version": "1.0.0", 2352 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2353 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2354 | "dev": true 2355 | } 2356 | } 2357 | }, 2358 | "text-table": { 2359 | "version": "0.2.0", 2360 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2361 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2362 | "dev": true 2363 | }, 2364 | "tunnel": { 2365 | "version": "0.0.6", 2366 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 2367 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" 2368 | }, 2369 | "type-check": { 2370 | "version": "0.4.0", 2371 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2372 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2373 | "dev": true, 2374 | "requires": { 2375 | "prelude-ls": "^1.2.1" 2376 | } 2377 | }, 2378 | "type-fest": { 2379 | "version": "0.20.2", 2380 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2381 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2382 | "dev": true 2383 | }, 2384 | "typescript": { 2385 | "version": "4.4.3", 2386 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", 2387 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", 2388 | "dev": true 2389 | }, 2390 | "uri-js": { 2391 | "version": "4.4.1", 2392 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2393 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2394 | "dev": true, 2395 | "requires": { 2396 | "punycode": "^2.1.0" 2397 | } 2398 | }, 2399 | "uuid": { 2400 | "version": "8.3.2", 2401 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 2402 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 2403 | }, 2404 | "v8-compile-cache": { 2405 | "version": "2.3.0", 2406 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2407 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2408 | "dev": true 2409 | }, 2410 | "which": { 2411 | "version": "2.0.2", 2412 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2413 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2414 | "dev": true, 2415 | "requires": { 2416 | "isexe": "^2.0.0" 2417 | } 2418 | }, 2419 | "word-wrap": { 2420 | "version": "1.2.3", 2421 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2422 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2423 | "dev": true 2424 | }, 2425 | "wrappy": { 2426 | "version": "1.0.2", 2427 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2428 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2429 | "dev": true 2430 | }, 2431 | "yallist": { 2432 | "version": "4.0.0", 2433 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2434 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2435 | "dev": true 2436 | } 2437 | } 2438 | } 2439 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gha-setup-fod-uploader", 3 | "version": "1.1.3", 4 | "description": "GitHub Action for setting up FoD Upload Utility", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "build": "ncc build src/main.ts", 8 | "lint": "eslint . --ext .ts,.tsx", 9 | "format": "prettier --write **/*.ts", 10 | "prepare": "husky install" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/fortify/gha-setup-fod-uploader.git" 15 | }, 16 | "keywords": [ 17 | "Fortify", 18 | "FoD", 19 | "security" 20 | ], 21 | "author": "Ruud Senden", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/fortify/gha-setup-fod-uploader/issues" 25 | }, 26 | "homepage": "https://github.com/fortify/gha-setup-fod-uploader#readme", 27 | "dependencies": { 28 | "@actions/core": "^1.9.1", 29 | "@actions/tool-cache": "^1.7.2" 30 | }, 31 | "devDependencies": { 32 | "@types/node": "^16.11.56", 33 | "@vercel/ncc": "^0.31.1", 34 | "eslint": "^7.32.0", 35 | "husky": "^7.0.4", 36 | "prettier": "^2.7.1", 37 | "typescript": "4.4.3" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core'; 2 | import * as tc from '@actions/tool-cache'; 3 | 4 | const INPUT_VERSION = 'version'; 5 | const TOOL_NAME = 'FoDUpload'; 6 | 7 | function getDownloadUrl(version: string): string { 8 | return version === 'latest' 9 | ? 'https://github.com/fod-dev/fod-uploader-java/releases/latest/download/FodUpload.jar' 10 | : 'https://github.com/fod-dev/fod-uploader-java/releases/download/' + version + '/FodUpload.jar'; 11 | } 12 | 13 | function isSkipCache(version: string): boolean { 14 | return version === 'latest'; 15 | } 16 | 17 | async function install(version: string): Promise { 18 | const toolJar = await tc.downloadTool(getDownloadUrl(version)); 19 | core.info('Successfully installed ' + TOOL_NAME + " version " + version); 20 | return toolJar; 21 | } 22 | 23 | async function installAndCache(version: string): Promise { 24 | let toolJar = await install(version); 25 | if (!isSkipCache(version)) { 26 | toolJar = await tc.cacheFile(toolJar, TOOL_NAME + '.jar', TOOL_NAME, version); 27 | } 28 | return toolJar; 29 | } 30 | 31 | async function getToolJar(version: string): Promise { 32 | let cachedToolJar = isSkipCache(version) ? null : tc.find(TOOL_NAME, version); 33 | if (!cachedToolJar) { 34 | cachedToolJar = await installAndCache(version); 35 | } 36 | return cachedToolJar; 37 | } 38 | 39 | async function main(): Promise { 40 | try { 41 | core.startGroup('Setup FoDUploader'); 42 | const version = core.getInput(INPUT_VERSION); 43 | const toolJar = await getToolJar(version); 44 | core.exportVariable('FOD_UPLOAD_JAR', toolJar); 45 | } catch (err) { 46 | core.setFailed("Action failed with error: "+err); 47 | } finally { 48 | core.endGroup(); 49 | } 50 | } 51 | 52 | main(); 53 | -------------------------------------------------------------------------------- /starter-workflow-fod-sast-scan.yml: -------------------------------------------------------------------------------- 1 | ################################################################################################################################################ 2 | # Fortify lets you build secure software fast with an appsec platform that automates testing throughout the DevSecOps pipeline. Fortify static,# 3 | # dynamic, interactive, and runtime security testing is available on premises or as a service. To learn more about Fortify, start a free trial # 4 | # or contact our sales team, visit microfocus.com/appsecurity. # 5 | # # 6 | # Use this workflow template as a basis for integrating Fortify on Demand Static Application Security Testing(SAST) into your GitHub workflows.# 7 | # This template demonstrates the steps to prepare the code+dependencies, initiate a scan, download results once complete and import into # 8 | # GitHub Security Code Scanning Alerts. Existing customers should review inputs and environment variables below to configure scanning against # 9 | # an existing application in your Fortify on Demand tenant. Additional information is available in the comments throughout the workflow, the # 10 | # documentation for the Fortify actions used, and the Fortify on Demand / ScanCentral Client product documentation. If you need additional # 11 | # assistance with configuration, feel free to create a help ticket in the Fortify on Demand portal. # 12 | ################################################################################################################################################ 13 | 14 | name: Fortify on Demand Scan 15 | 16 | # TODO: Customize trigger events based on your DevSecOps processes and typical FoD SAST scan time 17 | on: 18 | workflow_dispatch: 19 | push: 20 | branches: [master] 21 | pull_request: 22 | # The branches below must be a subset of the branches above 23 | branches: [master] 24 | 25 | jobs: 26 | FoD-SAST-Scan: 27 | # Use the appropriate runner for building your source code. 28 | # TODO: Use a Windows runner for .NET projects that use msbuild. Additional changes to RUN commands will be required to switch to Windows syntax. 29 | runs-on: ubuntu-latest 30 | 31 | steps: 32 | # Check out source code 33 | - name: Check Out Source Code 34 | uses: actions/checkout@v2 35 | with: 36 | # Fetch at least the immediate parents so that if this is a pull request then we can checkout the head. 37 | fetch-depth: 2 38 | # If this run was triggered by a pull request event, then checkout the head of the pull request instead of the merge commit. 39 | - run: git checkout HEAD^2 40 | if: ${{ github.event_name == 'pull_request' }} 41 | # Java 8 required by ScanCentral Client and FoD Uploader(Univeral CI Tool) 42 | - name: Setup Java 43 | uses: actions/setup-java@v1 44 | with: 45 | java-version: 1.8 46 | 47 | # Prepare source+dependencies for upload. The default example is for a Maven project that uses pom.xml. 48 | # TODO: Update PACKAGE_OPTS based on the ScanCentral Client documentation for your project's included tech stack(s). Helpful hints: 49 | # ScanCentral Client will download dependencies for maven (-bt mvn) and gradle (-bt gradle). 50 | # ScanCentral Client can download dependencies for msbuild projects (-bt msbuild); however, you must convert the workflow to use a Windows runner. 51 | # ScanCentral has additional options that should be set for PHP and Python projects 52 | # For other build tools, add your build commands to download necessary dependencies and prepare according to Fortify on Demand Packaging documentation. 53 | # ScanCentral Client documentation is located at https://www.microfocus.com/documentation/fortify-software-security-center/ 54 | - name: Download Fortify ScanCentral Client 55 | uses: fortify/gha-setup-scancentral-client@v1 56 | - name: Package Code + Dependencies 57 | run: scancentral package $PACKAGE_OPTS -o package.zip 58 | env: 59 | PACKAGE_OPTS: "-bt mvn" 60 | 61 | # Start Fortify on Demand SAST scan and wait until results complete. For more information on FoDUploader commands, see https://github.com/fod-dev/fod-uploader-java 62 | # TODO: Update ENV variables for your application and create the necessary GitHub Secrets. Helpful hints: 63 | # Credentials and release ID should be obtained from your FoD tenant (either Personal Access Token or API Key can be used). 64 | # Automated Audit preference should be configured for the release's Static Scan Settings in the Fortify on Demand portal. 65 | - name: Download Fortify on Demand Universal CI Tool 66 | uses: fortify/gha-setup-fod-uploader@v1 67 | - name: Perform SAST Scan 68 | run: java -jar $FOD_UPLOAD_JAR -z package.zip -aurl $FOD_API_URL -purl $FOD_URL -rid "$FOD_RELEASE_ID" -tc "$FOD_TENANT" -uc "$FOD_USER" "$FOD_PAT" $FOD_UPLOADER_OPTS -n "$FOD_UPLOADER_NOTES" 69 | env: 70 | FOD_TENANT: ${{ secrets.FOD_TENANT }} 71 | FOD_USER: ${{ secrets.FOD_USER }} 72 | FOD_PAT: ${{ secrets.FOD_PAT }} 73 | FOD_RELEASE_ID: ${{ secrets.FOD_RELEASE_ID }} 74 | FOD_URL: "https://ams.fortify.com/" 75 | FOD_API_URL: "https://api.ams.fortify.com/" 76 | FOD_UPLOADER_OPTS: "-ep 2 -pp 0 -I 1 -apf" 77 | FOD_UPLOADER_NOTES: 'Triggered by GitHub Actions (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})' 78 | 79 | # Once scan completes, pull SAST issues from Fortify on Demand and generate SARIF output. 80 | # TODO: Review Action inputs. For most users, these will be the same as used in the Perform SAST Scan step. 81 | - name: Download Results 82 | uses: fortify/gha-fod-generate-sarif@1.1.0 83 | with: 84 | base-url: https://ams.fortify.com 85 | tenant: ${{ secrets.FOD_TENANT }} 86 | user: ${{ secrets.FOD_USER }} 87 | password: ${{ secrets.FOD_PAT }} 88 | release-id: ${{ secrets.FOD_RELEASE_ID }} 89 | output: ./sarif/output.sarif 90 | 91 | # Import Fortify on Demand results to GitHub Security Code Scanning 92 | - name: Import Results 93 | uses: github/codeql-action/upload-sarif@v1 94 | with: 95 | sarif_file: ./sarif/output.sarif 96 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, 4 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, 5 | "outDir": "./dist" /* Redirect output structure to the directory. */, 6 | "rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, 7 | "strict": true /* Enable all strict type-checking options. */, 8 | "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, 9 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 10 | }, 11 | "exclude": ["node_modules", "test"] 12 | } --------------------------------------------------------------------------------