From 89cb00455ad589b7d3ced41948f5b949265afcd6 Mon Sep 17 00:00:00 2001 From: "Paulo F. Oliveira" Date: Tue, 30 Mar 2021 17:54:20 +0100 Subject: [PATCH] Introduce rebar-version (#9) Previously (Remove redundant code) (+27 squashed commits) Squashed commits: [0b79c31] Rename as setup-beam [312b42b] Simplify platform verification [b43ca96] Prevent use of OTP- prefixed Erlang/OTP versions [103a236] Move the promise-based approach to an async-based approach (not testing for failure, so not guaranteeing readable/usable output either) [1e7f631] Remove local test files [d03e0c6] Prevent use of -otp- infixed Elixir versions [697110e] Have versions output in action, not just in tests [7360781] Ease test validations [71e6999] Reinstall tests that were there before [6602f20] Attempt at simplifying regexp matching with build listings [09247af] Provide for an Elixir to "not OTP" fallback mechanism (as explained by the comments) [dfc4083] Attempt at renaming for clarity We also get rid of return values when not reachable We also move the `-otp-` part of the Elixir version upstream so it's easy to reason about (and update the tests accordingly) [0d4eb28] Bump our dep.s (trying to figure out why core.setFailed isn't making the action fail, as it should) [ebf48ef] Have action fail (with an exception) when no expected version is found (we otherwise feel that a simple warning is not enough, as it may end up hiding potential bugs) [8478364] Adapt tests to our actual inputs [16ea63d] Add prettier again, now sync'ed with jslint (pass it on the code, already) [cfc65df] Improve error messages and tests [a017948] Test unavailable Elixir upon mix [7f2a3e9] Test failing installations Also output core.error when expected [08061ca] Attempt at making shell scripts more robust [4ee73cb] Separate test code from production code 1. inputs (for CI) are managed by code, not by .yml env. variables 2. rebar3_builds.txt added for stable repeatability 3. tests tweaked to make it easier to modify and drop dependency on production code 4. `dist` regenerated (duplicate files gone) 5. setup-elixir.js tweaked to this new reality [d17fed4] Remove prettier from the package [7d6f8f5] Actually break CI when we should [b972eaf] Remove unrequired element [0ffa28a] Ease maintenance and readability [4690169] Fix as per broken tests [a1371c6] Merge setup-erlang in --- .eslintrc.yml | 16 + .gitattributes | 1 - .github/workflows/ci.yml | 32 + .github/workflows/licensed.yml | 27 - .github/workflows/test.yml | 85 +- .gitignore | 1 + .licensed.yml | 21 - .licenses/npm/@actions/core-1.0.0.dep.yml | 24 - .licenses/npm/@actions/core-1.2.6.dep.yml | 20 - .licenses/npm/@actions/exec-1.0.0.dep.yml | 24 - .licenses/npm/@actions/exec-1.0.4.dep.yml | 30 - .licenses/npm/@actions/io-1.0.0.dep.yml | 24 - .licenses/npm/@actions/io-1.0.2.dep.yml | 30 - .licenses/npm/@actions/tool-cache.dep.yml | 25 - .licenses/npm/@babel/code-frame.dep.yml | 33 - .../helper-validator-identifier.dep.yml | 33 - .licenses/npm/@babel/highlight.dep.yml | 33 - .licenses/npm/@babel/runtime.dep.yml | 33 - .licenses/npm/@types/color-name.dep.yml | 26 - .licenses/npm/@types/parse-json.dep.yml | 26 - .licenses/npm/@zeit/ncc.dep.yml | 19 - .licenses/npm/ansi-styles-3.2.1.dep.yml | 22 - .licenses/npm/ansi-styles-4.2.1.dep.yml | 20 - .licenses/npm/callsites.dep.yml | 22 - .licenses/npm/chalk-2.4.2.dep.yml | 22 - .licenses/npm/chalk-4.0.0.dep.yml | 20 - .licenses/npm/ci-info.dep.yml | 34 - .licenses/npm/color-convert-1.9.3.dep.yml | 35 - .licenses/npm/color-convert-2.0.1.dep.yml | 35 - .licenses/npm/color-name-1.1.3.dep.yml | 24 - .licenses/npm/color-name-1.1.4.dep.yml | 24 - .licenses/npm/compare-versions.dep.yml | 32 - .licenses/npm/cosmiconfig.dep.yml | 34 - .licenses/npm/error-ex.dep.yml | 36 - .licenses/npm/escape-string-regexp.dep.yml | 34 - .licenses/npm/find-up.dep.yml | 20 - .licenses/npm/find-versions.dep.yml | 22 - .licenses/npm/has-flag-3.0.0.dep.yml | 22 - .licenses/npm/has-flag-4.0.0.dep.yml | 22 - .licenses/npm/husky.dep.yml | 27 - .licenses/npm/import-fresh.dep.yml | 20 - .licenses/npm/is-arrayish.dep.yml | 36 - .licenses/npm/js-tokens.dep.yml | 34 - .../npm/json-parse-better-errors.dep.yml | 18 - .licenses/npm/lines-and-columns.dep.yml | 34 - .licenses/npm/locate-path.dep.yml | 22 - .../npm/opencollective-postinstall.dep.yml | 32 - .licenses/npm/p-limit.dep.yml | 20 - .licenses/npm/p-locate.dep.yml | 22 - .licenses/npm/p-try.dep.yml | 22 - .licenses/npm/parent-module.dep.yml | 22 - .licenses/npm/parse-json.dep.yml | 20 - .licenses/npm/path-exists.dep.yml | 22 - .licenses/npm/path-type.dep.yml | 22 - .licenses/npm/pkg-dir.dep.yml | 22 - .licenses/npm/please-upgrade-node.dep.yml | 27 - .licenses/npm/prettier.dep.yml | 18 - .licenses/npm/regenerator-runtime.dep.yml | 32 - .licenses/npm/resolve-from.dep.yml | 22 - .licenses/npm/semver-compare.dep.yml | 31 - .licenses/npm/semver-regex.dep.yml | 22 - .licenses/npm/semver.dep.yml | 26 - .licenses/npm/slash.dep.yml | 22 - .licenses/npm/supports-color-5.5.0.dep.yml | 22 - .licenses/npm/supports-color-7.1.0.dep.yml | 20 - .licenses/npm/tunnel.dep.yml | 35 - .licenses/npm/typed-rest-client.dep.yml | 927 -- .licenses/npm/underscore.dep.yml | 34 - .licenses/npm/uuid.dep.yml | 39 - .licenses/npm/which-pm-runs.dep.yml | 34 - .licenses/npm/yaml.dep.yml | 24 - .prettierrc | 4 +- 3RD_PARTY_LICENSES | 2845 +++++++ CODE_OF_CONDUCT.md | 5 +- CONTRIBUTING.md | 3 +- LICENSE.md | 5 +- MATCHER_NOTICE.md | 2 + README.md | 68 +- __tests__/builds.txt | 313 - __tests__/setup-beam.test.js | 161 +- action.yml | 17 +- dist/.github/workflows/ci.yml | 32 + dist/.github/workflows/licensed.yml | 27 - dist/.github/workflows/test.yml | 85 +- dist/builds.txt | 313 - dist/index.js | 7476 ++++++++++------- dist/install-elixir | 20 +- dist/install-otp | 26 +- dist/install-rebar3 | 20 + dist/licenses.txt | 73 + package-lock.json | 3430 ++++++-- package.json | 32 +- src/install-elixir | 20 +- src/install-otp | 26 +- src/install-rebar3 | 20 + src/installer.js | 43 +- src/setup-beam.js | 329 +- .../mix}/.formatter.exs | 0 .../mix}/.gitignore | 0 {test-project => test-projects/mix}/README.md | 0 .../mix}/lib/test.ex | 0 {test-project => test-projects/mix}/mix.exs | 2 +- {test-project => test-projects/mix}/mix.lock | 0 .../mix}/test/test_helper.exs | 0 .../mix}/test/test_test.exs | 0 test-projects/rebar3/.gitignore | 19 + test-projects/rebar3/LICENSE | 191 + test-projects/rebar3/README.md | 9 + test-projects/rebar3/rebar.config | 22 + test-projects/rebar3/src/mylib.app.src | 16 + test-projects/rebar3/src/mylib.erl | 17 + test-projects/rebar3/test/mylib_SUITE.erl | 11 + 112 files changed, 11284 insertions(+), 7171 deletions(-) create mode 100644 .eslintrc.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/licensed.yml create mode 100644 .gitignore delete mode 100644 .licensed.yml delete mode 100644 .licenses/npm/@actions/core-1.0.0.dep.yml delete mode 100644 .licenses/npm/@actions/core-1.2.6.dep.yml delete mode 100644 .licenses/npm/@actions/exec-1.0.0.dep.yml delete mode 100644 .licenses/npm/@actions/exec-1.0.4.dep.yml delete mode 100644 .licenses/npm/@actions/io-1.0.0.dep.yml delete mode 100644 .licenses/npm/@actions/io-1.0.2.dep.yml delete mode 100644 .licenses/npm/@actions/tool-cache.dep.yml delete mode 100644 .licenses/npm/@babel/code-frame.dep.yml delete mode 100644 .licenses/npm/@babel/helper-validator-identifier.dep.yml delete mode 100644 .licenses/npm/@babel/highlight.dep.yml delete mode 100644 .licenses/npm/@babel/runtime.dep.yml delete mode 100644 .licenses/npm/@types/color-name.dep.yml delete mode 100644 .licenses/npm/@types/parse-json.dep.yml delete mode 100644 .licenses/npm/@zeit/ncc.dep.yml delete mode 100644 .licenses/npm/ansi-styles-3.2.1.dep.yml delete mode 100644 .licenses/npm/ansi-styles-4.2.1.dep.yml delete mode 100644 .licenses/npm/callsites.dep.yml delete mode 100644 .licenses/npm/chalk-2.4.2.dep.yml delete mode 100644 .licenses/npm/chalk-4.0.0.dep.yml delete mode 100644 .licenses/npm/ci-info.dep.yml delete mode 100644 .licenses/npm/color-convert-1.9.3.dep.yml delete mode 100644 .licenses/npm/color-convert-2.0.1.dep.yml delete mode 100644 .licenses/npm/color-name-1.1.3.dep.yml delete mode 100644 .licenses/npm/color-name-1.1.4.dep.yml delete mode 100644 .licenses/npm/compare-versions.dep.yml delete mode 100644 .licenses/npm/cosmiconfig.dep.yml delete mode 100644 .licenses/npm/error-ex.dep.yml delete mode 100644 .licenses/npm/escape-string-regexp.dep.yml delete mode 100644 .licenses/npm/find-up.dep.yml delete mode 100644 .licenses/npm/find-versions.dep.yml delete mode 100644 .licenses/npm/has-flag-3.0.0.dep.yml delete mode 100644 .licenses/npm/has-flag-4.0.0.dep.yml delete mode 100644 .licenses/npm/husky.dep.yml delete mode 100644 .licenses/npm/import-fresh.dep.yml delete mode 100644 .licenses/npm/is-arrayish.dep.yml delete mode 100644 .licenses/npm/js-tokens.dep.yml delete mode 100644 .licenses/npm/json-parse-better-errors.dep.yml delete mode 100644 .licenses/npm/lines-and-columns.dep.yml delete mode 100644 .licenses/npm/locate-path.dep.yml delete mode 100644 .licenses/npm/opencollective-postinstall.dep.yml delete mode 100644 .licenses/npm/p-limit.dep.yml delete mode 100644 .licenses/npm/p-locate.dep.yml delete mode 100644 .licenses/npm/p-try.dep.yml delete mode 100644 .licenses/npm/parent-module.dep.yml delete mode 100644 .licenses/npm/parse-json.dep.yml delete mode 100644 .licenses/npm/path-exists.dep.yml delete mode 100644 .licenses/npm/path-type.dep.yml delete mode 100644 .licenses/npm/pkg-dir.dep.yml delete mode 100644 .licenses/npm/please-upgrade-node.dep.yml delete mode 100644 .licenses/npm/prettier.dep.yml delete mode 100644 .licenses/npm/regenerator-runtime.dep.yml delete mode 100644 .licenses/npm/resolve-from.dep.yml delete mode 100644 .licenses/npm/semver-compare.dep.yml delete mode 100644 .licenses/npm/semver-regex.dep.yml delete mode 100644 .licenses/npm/semver.dep.yml delete mode 100644 .licenses/npm/slash.dep.yml delete mode 100644 .licenses/npm/supports-color-5.5.0.dep.yml delete mode 100644 .licenses/npm/supports-color-7.1.0.dep.yml delete mode 100644 .licenses/npm/tunnel.dep.yml delete mode 100644 .licenses/npm/typed-rest-client.dep.yml delete mode 100644 .licenses/npm/underscore.dep.yml delete mode 100644 .licenses/npm/uuid.dep.yml delete mode 100644 .licenses/npm/which-pm-runs.dep.yml delete mode 100644 .licenses/npm/yaml.dep.yml create mode 100644 3RD_PARTY_LICENSES delete mode 100644 __tests__/builds.txt create mode 100644 dist/.github/workflows/ci.yml delete mode 100644 dist/.github/workflows/licensed.yml delete mode 100644 dist/builds.txt create mode 100755 dist/install-rebar3 create mode 100644 dist/licenses.txt create mode 100755 src/install-rebar3 rename {test-project => test-projects/mix}/.formatter.exs (100%) rename {test-project => test-projects/mix}/.gitignore (100%) rename {test-project => test-projects/mix}/README.md (100%) rename {test-project => test-projects/mix}/lib/test.ex (100%) rename {test-project => test-projects/mix}/mix.exs (95%) rename {test-project => test-projects/mix}/mix.lock (100%) rename {test-project => test-projects/mix}/test/test_helper.exs (100%) rename {test-project => test-projects/mix}/test/test_test.exs (100%) create mode 100644 test-projects/rebar3/.gitignore create mode 100644 test-projects/rebar3/LICENSE create mode 100644 test-projects/rebar3/README.md create mode 100644 test-projects/rebar3/rebar.config create mode 100644 test-projects/rebar3/src/mylib.app.src create mode 100644 test-projects/rebar3/src/mylib.erl create mode 100644 test-projects/rebar3/test/mylib_SUITE.erl diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 00000000..d7de179f --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,16 @@ +--- +env: + node: true + es2021: true +extends: + - google +parserOptions: + ecmaVersion: 12 +rules: { + indent: ["warn", 2], + max-len: ["warn", 100], + no-unused-vars: ["error", {"varsIgnorePattern": "^_"}], + require-jsdoc: 0, + semi: 0, + no-undef: "error" +} diff --git a/.gitattributes b/.gitattributes index 9e176ea2..0f71952d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1 @@ node_modules/** -diff linguist-generated=true -.licenses/** -diff linguist-generated=true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..7253b212 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +--- +name: ci + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + check_integrity: + name: Make sure expected pre-release actions are performed + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: '12' + - run: npm install -g npm + - run: npm install + - run: npm run format + - run: npm install -g markdownlint-cli + - run: npm run markdownlint + - run: npm run shellcheck + - run: npm run yamllint + - run: npm run jslint + - run: npm run licenses + - run: npm run build + - name: Check if build left artifacts + run: git diff --exit-code diff --git a/.github/workflows/licensed.yml b/.github/workflows/licensed.yml deleted file mode 100644 index 90b4a98b..00000000 --- a/.github/workflows/licensed.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Licensed - -on: - push: {branches: main} - pull_request: {branches: main} - repository_dispatch: - workflow_dispatch: - -jobs: - test: - runs-on: ubuntu-latest - name: Check licenses - steps: - - uses: actions/checkout@v2 - - uses: actions/cache@v1 - with: - path: ~/.npm - key: ${{runner.os}}-npm-${{hashFiles('**/package-lock.json')}} - restore-keys: ${{runner.os}}-npm- - - run: npm ci - - name: Install licensed - run: |- - cd $RUNNER_TEMP - curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.9.2/licensed-2.9.2-linux-x64.tar.gz - sudo tar -xzf licensed.tar.gz - sudo mv licensed /usr/local/bin/licensed - - run: licensed status diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fc9e2bb7..55b40578 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,5 @@ -name: Test +--- +name: test on: push: {branches: main} @@ -8,8 +9,8 @@ on: jobs: unit_test: + name: Pre-release unit tests runs-on: ubuntu-latest - name: Unit tests steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 @@ -18,17 +19,26 @@ jobs: - run: npm test integration_test: - runs-on: ubuntu-latest - name: OTP ${{matrix.pair.otp-version}} / Elixir ${{matrix.pair.elixir-version}} + name: > + Pre-release integration tests + (Erlang/OTP ${{matrix.pair.otp-version}}, + Elixir ${{matrix.pair.elixir-version}}, + rebar3 ${{matrix.pair.rebar3-version}}) + runs-on: ubuntu-18.04 strategy: + fail-fast: false matrix: pair: # Full Versions - otp-version: '22.0' elixir-version: '1.9.1' + - otp-version: '22.3.4' + rebar3-version: '3.14.4' # Semver ranges - otp-version: '21.x' elixir-version: '<1.9.1' + - otp-version: '21.x' + rebar3-version: '3.14.4' # Branches - otp-version: '22.0' elixir-version: master @@ -37,18 +47,73 @@ jobs: # Pre-releases - otp-version: '23.0' elixir-version: '1.11.0-rc.0' + # Fallback to Elixir (with no OTP) + - otp-version: '24.0-rc1' + elixir-version: '1.9.3' + # Miscellaneous combos + - elixir-version: 'master' + otp-version: '22.3' + - elixir-version: 'master' + otp-version: '22' + - elixir-version: 'master' + otp-version: '^22' + - elixir-version: 'master' + otp-version: '22' + - elixir-version: '1.6.5' + otp-version: 'maint-21' + - elixir-version: 'v1.6.5' + otp-version: 'maint-21' + - elixir-version: 'v1.9.x' + otp-version: '21.1' + - elixir-version: '1.9.x' + otp-version: '21' + - elixir-version: 'v1.8.x' + otp-version: '22' + - elixir-version: 'v1.8.x' + otp-version: '23.1' + - elixir-version: 'v1.8' + otp-version: '^22.3' + - elixir-version: 'v1.10' + otp-version: '21.x' + - elixir-version: 'v1.x' + otp-version: 'master' + - elixir-version: 'v1.11.0-rc.0' + otp-version: '23' + - elixir-version: 'v1.11.0-rc.0' + otp-version: '23.0' + - elixir-version: 'v1.11.0-rc.0' + otp-version: 'master' steps: - uses: actions/checkout@v2 - - name: Use erlef/setup-elixir - id: setup-elixir + - name: Use erlef/setup-beam + id: setup-beam uses: ./ with: otp-version: ${{matrix.pair.otp-version}} elixir-version: ${{matrix.pair.elixir-version}} - - name: Output runtime versions - run: echo "Elixir ${{steps.setup-elixir.outputs.elixir-version}} / OTP ${{steps.setup-elixir.outputs.otp-version}}" + rebar3-version: ${{matrix.pair.rebar3-version}} + - name: Erlang/OTP version (action) + run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}" + - name: Elixir version (action) + run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}" + if: ${{matrix.pair.elixir-version}} + - name: rebar3 version (action) + run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}" + if: ${{matrix.pair.rebar3-version}} + - name: mix version and help (CLI) + run: | + mix -v + mix help local.rebar + mix help local.hex + if: ${{matrix.pair.elixir-version}} - name: Run Mix project tests - run: |- - cd test-project + run: | + cd test-projects/mix mix deps.get mix test + if: ${{matrix.pair.elixir-version}} + - name: Run rebar3 project tests + run: | + cd test-projects/rebar3 + rebar3 as test do xref,dialyzer,ct,cover + if: ${{matrix.pair.rebar3-version}} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a8603104 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/** diff --git a/.licensed.yml b/.licensed.yml deleted file mode 100644 index 2ef5a960..00000000 --- a/.licensed.yml +++ /dev/null @@ -1,21 +0,0 @@ -sources: - npm: true - -npm: - production_only: false - -allowed: - - apache-2.0 - - bsd-2-clause - - bsd-3-clause - - isc - - mit - - cc0-1.0 - - unlicense - -reviewed: - npm: - - typed-rest-client # MIT - - underscore # MIT - - color-convert # MIT - diff --git a/.licenses/npm/@actions/core-1.0.0.dep.yml b/.licenses/npm/@actions/core-1.0.0.dep.yml deleted file mode 100644 index af554d9f..00000000 --- a/.licenses/npm/@actions/core-1.0.0.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: "@actions/core" -version: 1.0.0 -type: npm -summary: Actions core lib -homepage: https://github.com/actions/toolkit/tree/master/packages/core -license: mit -licenses: -- sources: LICENSE.md - text: "Copyright 2019 GitHub\r\n\r\nPermission is hereby granted, free of charge, - to any person obtaining a copy of this software and associated documentation files - (the \"Software\"), to deal in the Software without restriction, including without - limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software - is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright - notice and this permission notice shall be included in all copies or substantial - portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE." -notices: [] diff --git a/.licenses/npm/@actions/core-1.2.6.dep.yml b/.licenses/npm/@actions/core-1.2.6.dep.yml deleted file mode 100644 index b1152f59..00000000 --- a/.licenses/npm/@actions/core-1.2.6.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "@actions/core" -version: 1.2.6 -type: npm -summary: Actions core lib -homepage: https://github.com/actions/toolkit/tree/main/packages/core -license: mit -licenses: -- sources: LICENSE.md - text: |- - The MIT License (MIT) - - Copyright 2019 GitHub - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/@actions/exec-1.0.0.dep.yml b/.licenses/npm/@actions/exec-1.0.0.dep.yml deleted file mode 100644 index 47497781..00000000 --- a/.licenses/npm/@actions/exec-1.0.0.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: "@actions/exec" -version: 1.0.0 -type: npm -summary: Actions exec lib -homepage: https://github.com/actions/toolkit/tree/master/packages/exec -license: mit -licenses: -- sources: LICENSE.md - text: "Copyright 2019 GitHub\r\n\r\nPermission is hereby granted, free of charge, - to any person obtaining a copy of this software and associated documentation files - (the \"Software\"), to deal in the Software without restriction, including without - limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software - is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright - notice and this permission notice shall be included in all copies or substantial - portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE." -notices: [] diff --git a/.licenses/npm/@actions/exec-1.0.4.dep.yml b/.licenses/npm/@actions/exec-1.0.4.dep.yml deleted file mode 100644 index b1effd3d..00000000 --- a/.licenses/npm/@actions/exec-1.0.4.dep.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: "@actions/exec" -version: 1.0.4 -type: npm -summary: Actions exec lib -homepage: https://github.com/actions/toolkit/tree/master/packages/exec -license: mit -licenses: -- sources: Auto-generated MIT license text - text: | - MIT License - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: [] diff --git a/.licenses/npm/@actions/io-1.0.0.dep.yml b/.licenses/npm/@actions/io-1.0.0.dep.yml deleted file mode 100644 index 6f99ab3e..00000000 --- a/.licenses/npm/@actions/io-1.0.0.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: "@actions/io" -version: 1.0.0 -type: npm -summary: Actions io lib -homepage: https://github.com/actions/toolkit/tree/master/packages/io -license: mit -licenses: -- sources: LICENSE.md - text: "Copyright 2019 GitHub\r\n\r\nPermission is hereby granted, free of charge, - to any person obtaining a copy of this software and associated documentation files - (the \"Software\"), to deal in the Software without restriction, including without - limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software - is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright - notice and this permission notice shall be included in all copies or substantial - portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE." -notices: [] diff --git a/.licenses/npm/@actions/io-1.0.2.dep.yml b/.licenses/npm/@actions/io-1.0.2.dep.yml deleted file mode 100644 index a23d1af4..00000000 --- a/.licenses/npm/@actions/io-1.0.2.dep.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: "@actions/io" -version: 1.0.2 -type: npm -summary: Actions io lib -homepage: https://github.com/actions/toolkit/tree/master/packages/io -license: mit -licenses: -- sources: Auto-generated MIT license text - text: | - MIT License - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: [] diff --git a/.licenses/npm/@actions/tool-cache.dep.yml b/.licenses/npm/@actions/tool-cache.dep.yml deleted file mode 100644 index 38395b03..00000000 --- a/.licenses/npm/@actions/tool-cache.dep.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: '@actions/tool-cache' -version: 1.1.0 -type: npm -summary: Actions tool-cache lib -homepage: https://github.com/actions/toolkit/tree/master/packages/exec -license: mit -licenses: - - sources: LICENSE.md - text: - "Copyright 2019 GitHub\r\n\r\nPermission is hereby granted, free of charge, - to any person obtaining a copy of this software and associated documentation files - (the \"Software\"), to deal in the Software without restriction, including without - limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software - is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright - notice and this permission notice shall be included in all copies or substantial - portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE." -notices: [] diff --git a/.licenses/npm/@babel/code-frame.dep.yml b/.licenses/npm/@babel/code-frame.dep.yml deleted file mode 100644 index 1b3046cf..00000000 --- a/.licenses/npm/@babel/code-frame.dep.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: "@babel/code-frame" -version: 7.8.3 -type: npm -summary: Generate errors that contain a code frame that point to source locations. -homepage: https://babeljs.io/ -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/@babel/helper-validator-identifier.dep.yml b/.licenses/npm/@babel/helper-validator-identifier.dep.yml deleted file mode 100644 index be7296b8..00000000 --- a/.licenses/npm/@babel/helper-validator-identifier.dep.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: "@babel/helper-validator-identifier" -version: 7.9.5 -type: npm -summary: Validate identifier/keywords name -homepage: -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/@babel/highlight.dep.yml b/.licenses/npm/@babel/highlight.dep.yml deleted file mode 100644 index b3d383aa..00000000 --- a/.licenses/npm/@babel/highlight.dep.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: "@babel/highlight" -version: 7.9.0 -type: npm -summary: Syntax highlight JavaScript strings for output in terminals. -homepage: https://babeljs.io/ -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/@babel/runtime.dep.yml b/.licenses/npm/@babel/runtime.dep.yml deleted file mode 100644 index 74b2984e..00000000 --- a/.licenses/npm/@babel/runtime.dep.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: "@babel/runtime" -version: 7.9.6 -type: npm -summary: babel's modular runtime helpers -homepage: https://babeljs.io/docs/en/next/babel-runtime -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/@types/color-name.dep.yml b/.licenses/npm/@types/color-name.dep.yml deleted file mode 100644 index 24816566..00000000 --- a/.licenses/npm/@types/color-name.dep.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: "@types/color-name" -version: 1.1.1 -type: npm -summary: TypeScript definitions for color-name -homepage: https://github.com/DefinitelyTyped/DefinitelyTyped#readme -license: mit -licenses: -- sources: LICENSE - text: " MIT License\r\n\r\n Copyright (c) Microsoft Corporation. All rights - reserved.\r\n\r\n Permission is hereby granted, free of charge, to any person - obtaining a copy\r\n of this software and associated documentation files (the - \"Software\"), to deal\r\n in the Software without restriction, including without - limitation the rights\r\n to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell\r\n copies of the Software, and to permit persons to - whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n - \ The above copyright notice and this permission notice shall be included in - all\r\n copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE - IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS - OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT - OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n - \ SOFTWARE\r\n" -notices: [] diff --git a/.licenses/npm/@types/parse-json.dep.yml b/.licenses/npm/@types/parse-json.dep.yml deleted file mode 100644 index f097b7c0..00000000 --- a/.licenses/npm/@types/parse-json.dep.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: "@types/parse-json" -version: 4.0.0 -type: npm -summary: TypeScript definitions for parse-json -homepage: https://github.com/DefinitelyTyped/DefinitelyTyped#readme -license: mit -licenses: -- sources: LICENSE - text: " MIT License\r\n\r\n Copyright (c) Microsoft Corporation. All rights - reserved.\r\n\r\n Permission is hereby granted, free of charge, to any person - obtaining a copy\r\n of this software and associated documentation files (the - \"Software\"), to deal\r\n in the Software without restriction, including without - limitation the rights\r\n to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell\r\n copies of the Software, and to permit persons to - whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n - \ The above copyright notice and this permission notice shall be included in - all\r\n copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE - IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS - OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT - OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n - \ SOFTWARE\r\n" -notices: [] diff --git a/.licenses/npm/@zeit/ncc.dep.yml b/.licenses/npm/@zeit/ncc.dep.yml deleted file mode 100644 index 90381bb3..00000000 --- a/.licenses/npm/@zeit/ncc.dep.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: "@zeit/ncc" -version: 0.22.1 -type: npm -summary: "[![CI Status](https://github.com/zeit/ncc/workflows/CI/badge.svg)](https://github.com/zeit/ncc/actions?workflow=CI) - [![codecov](https://codecov.io/gh/zeit/ncc/branch/master/graph/badge.svg)](https://codecov.io/gh/zeit/ncc)" -homepage: https://github.com/zeit/ncc#readme -license: mit -licenses: -- sources: LICENSE - text: |- - Copyright 2018 ZEIT, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/ansi-styles-3.2.1.dep.yml b/.licenses/npm/ansi-styles-3.2.1.dep.yml deleted file mode 100644 index 25b32299..00000000 --- a/.licenses/npm/ansi-styles-3.2.1.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: ansi-styles -version: 3.2.1 -type: npm -summary: ANSI escape codes for styling strings in the terminal -homepage: https://github.com/chalk/ansi-styles#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT -notices: [] diff --git a/.licenses/npm/ansi-styles-4.2.1.dep.yml b/.licenses/npm/ansi-styles-4.2.1.dep.yml deleted file mode 100644 index 88f9c926..00000000 --- a/.licenses/npm/ansi-styles-4.2.1.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: ansi-styles -version: 4.2.1 -type: npm -summary: ANSI escape codes for styling strings in the terminal -homepage: https://github.com/chalk/ansi-styles#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/callsites.dep.yml b/.licenses/npm/callsites.dep.yml deleted file mode 100644 index cf7276a6..00000000 --- a/.licenses/npm/callsites.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: callsites -version: 3.1.0 -type: npm -summary: Get callsites from the V8 stack trace API -homepage: https://github.com/sindresorhus/callsites#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/chalk-2.4.2.dep.yml b/.licenses/npm/chalk-2.4.2.dep.yml deleted file mode 100644 index 1c745379..00000000 --- a/.licenses/npm/chalk-2.4.2.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: chalk -version: 2.4.2 -type: npm -summary: Terminal string styling done right -homepage: https://github.com/chalk/chalk#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT -notices: [] diff --git a/.licenses/npm/chalk-4.0.0.dep.yml b/.licenses/npm/chalk-4.0.0.dep.yml deleted file mode 100644 index 2e4d72a3..00000000 --- a/.licenses/npm/chalk-4.0.0.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: chalk -version: 4.0.0 -type: npm -summary: Terminal string styling done right -homepage: https://github.com/chalk/chalk#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/ci-info.dep.yml b/.licenses/npm/ci-info.dep.yml deleted file mode 100644 index b209e916..00000000 --- a/.licenses/npm/ci-info.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: ci-info -version: 2.0.0 -type: npm -summary: Get details about the current Continuous Integration environment -homepage: https://github.com/watson/ci-info -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2016-2018 Thomas Watson Steen - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -- sources: README.md - text: "[MIT](LICENSE)" -notices: [] diff --git a/.licenses/npm/color-convert-1.9.3.dep.yml b/.licenses/npm/color-convert-1.9.3.dep.yml deleted file mode 100644 index 47d31aaf..00000000 --- a/.licenses/npm/color-convert-1.9.3.dep.yml +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: color-convert -version: 1.9.3 -type: npm -summary: Plain color conversion functions -homepage: https://github.com/Qix-/color-convert#readme -license: other -licenses: -- sources: LICENSE - text: |+ - Copyright (c) 2011-2016 Heather Arthur - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -- sources: README.md - text: Copyright © 2011-2016, Heather Arthur and Josh Junon. Licensed under - the [MIT License](LICENSE). -notices: [] diff --git a/.licenses/npm/color-convert-2.0.1.dep.yml b/.licenses/npm/color-convert-2.0.1.dep.yml deleted file mode 100644 index a71262b7..00000000 --- a/.licenses/npm/color-convert-2.0.1.dep.yml +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: color-convert -version: 2.0.1 -type: npm -summary: Plain color conversion functions -homepage: https://github.com/Qix-/color-convert#readme -license: other -licenses: -- sources: LICENSE - text: |+ - Copyright (c) 2011-2016 Heather Arthur - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -- sources: README.md - text: Copyright © 2011-2016, Heather Arthur and Josh Junon. Licensed under - the [MIT License](LICENSE). -notices: [] diff --git a/.licenses/npm/color-name-1.1.3.dep.yml b/.licenses/npm/color-name-1.1.3.dep.yml deleted file mode 100644 index 846ad49f..00000000 --- a/.licenses/npm/color-name-1.1.3.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: color-name -version: 1.1.3 -type: npm -summary: A list of color names and its values -homepage: https://github.com/dfcreative/color-name -license: mit -licenses: -- sources: LICENSE - text: "The MIT License (MIT)\r\nCopyright (c) 2015 Dmitry Ivanov\r\n\r\nPermission - is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the \"Software\"), to deal in the Software - without restriction, including without limitation the rights to use, copy, modify, - merge, publish, distribute, sublicense, and/or sell copies of the Software, and - to permit persons to whom the Software is furnished to do so, subject to the following - conditions:\r\n\r\nThe above copyright notice and this permission notice shall - be included in all copies or substantial portions of the Software.\r\n\r\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." -notices: [] diff --git a/.licenses/npm/color-name-1.1.4.dep.yml b/.licenses/npm/color-name-1.1.4.dep.yml deleted file mode 100644 index 0442241b..00000000 --- a/.licenses/npm/color-name-1.1.4.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: color-name -version: 1.1.4 -type: npm -summary: A list of color names and its values -homepage: https://github.com/colorjs/color-name -license: mit -licenses: -- sources: LICENSE - text: "The MIT License (MIT)\r\nCopyright (c) 2015 Dmitry Ivanov\r\n\r\nPermission - is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the \"Software\"), to deal in the Software - without restriction, including without limitation the rights to use, copy, modify, - merge, publish, distribute, sublicense, and/or sell copies of the Software, and - to permit persons to whom the Software is furnished to do so, subject to the following - conditions:\r\n\r\nThe above copyright notice and this permission notice shall - be included in all copies or substantial portions of the Software.\r\n\r\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." -notices: [] diff --git a/.licenses/npm/compare-versions.dep.yml b/.licenses/npm/compare-versions.dep.yml deleted file mode 100644 index d89c1d00..00000000 --- a/.licenses/npm/compare-versions.dep.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: compare-versions -version: 3.6.0 -type: npm -summary: Compare semver version strings to find greater, equal or lesser. -homepage: https://github.com/omichelsen/compare-versions#readme -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2015-2017 Ole Michelsen - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: [] diff --git a/.licenses/npm/cosmiconfig.dep.yml b/.licenses/npm/cosmiconfig.dep.yml deleted file mode 100644 index 518b891d..00000000 --- a/.licenses/npm/cosmiconfig.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: cosmiconfig -version: 6.0.0 -type: npm -summary: Find and load configuration from a package.json property, rc file, or CommonJS - module -homepage: https://github.com/davidtheclark/cosmiconfig#readme -license: mit -licenses: -- sources: LICENSE - text: |+ - The MIT License (MIT) - - Copyright (c) 2015 David Clark - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -notices: [] diff --git a/.licenses/npm/error-ex.dep.yml b/.licenses/npm/error-ex.dep.yml deleted file mode 100644 index 4cfd04f9..00000000 --- a/.licenses/npm/error-ex.dep.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -name: error-ex -version: 1.3.2 -type: npm -summary: Easy error subclassing and stack customization -homepage: https://github.com/qix-/node-error-ex#readme -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2015 JD Ballard - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: |- - Licensed under the [MIT License](http://opensource.org/licenses/MIT). - You can find a copy of it in [LICENSE](LICENSE). -notices: [] diff --git a/.licenses/npm/escape-string-regexp.dep.yml b/.licenses/npm/escape-string-regexp.dep.yml deleted file mode 100644 index dd844438..00000000 --- a/.licenses/npm/escape-string-regexp.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: escape-string-regexp -version: 1.0.5 -type: npm -summary: Escape RegExp special characters -homepage: https://github.com/sindresorhus/escape-string-regexp#readme -license: mit -licenses: -- sources: license - text: | - The MIT License (MIT) - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](http://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/find-up.dep.yml b/.licenses/npm/find-up.dep.yml deleted file mode 100644 index 76133e6f..00000000 --- a/.licenses/npm/find-up.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: find-up -version: 4.1.0 -type: npm -summary: Find a file or directory by walking up parent directories -homepage: https://github.com/sindresorhus/find-up#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/find-versions.dep.yml b/.licenses/npm/find-versions.dep.yml deleted file mode 100644 index afc8771b..00000000 --- a/.licenses/npm/find-versions.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: find-versions -version: 3.2.0 -type: npm -summary: 'Find semver versions in a string: `unicorn v1.2.3` → `1.2.3`' -homepage: https://github.com/sindresorhus/find-versions#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/has-flag-3.0.0.dep.yml b/.licenses/npm/has-flag-3.0.0.dep.yml deleted file mode 100644 index 8c1f418e..00000000 --- a/.licenses/npm/has-flag-3.0.0.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: has-flag -version: 3.0.0 -type: npm -summary: Check if argv has a specific flag -homepage: https://github.com/sindresorhus/has-flag#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/has-flag-4.0.0.dep.yml b/.licenses/npm/has-flag-4.0.0.dep.yml deleted file mode 100644 index 48dd8303..00000000 --- a/.licenses/npm/has-flag-4.0.0.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: has-flag -version: 4.0.0 -type: npm -summary: Check if argv has a specific flag -homepage: https://github.com/sindresorhus/has-flag#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/husky.dep.yml b/.licenses/npm/husky.dep.yml deleted file mode 100644 index 7afa134f..00000000 --- a/.licenses/npm/husky.dep.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: husky -version: 4.2.5 -type: npm -summary: Prevents bad commit or push (git hooks, pre-commit/precommit, pre-push/prepush, - post-merge/postmerge and all that stuff...) -homepage: https://github.com/typicode/husky#readme -license: mit -licenses: -- sources: LICENSE - text: "MIT License\n\nCopyright (c) 2017 \n\nPermission is hereby granted, free - of charge, to any person obtaining a copy\nof this software and associated documentation - files (the \"Software\"), to deal\nin the Software without restriction, including - without limitation the rights\nto use, copy, modify, merge, publish, distribute, - sublicense, and/or sell\ncopies of the Software, and to permit persons to whom - the Software is\nfurnished to do so, subject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all\ncopies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE\nSOFTWARE.\n" -- sources: README.md - text: MIT -notices: [] diff --git a/.licenses/npm/import-fresh.dep.yml b/.licenses/npm/import-fresh.dep.yml deleted file mode 100644 index 10499d0d..00000000 --- a/.licenses/npm/import-fresh.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: import-fresh -version: 3.2.1 -type: npm -summary: Import a module while bypassing the cache -homepage: https://github.com/sindresorhus/import-fresh#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/is-arrayish.dep.yml b/.licenses/npm/is-arrayish.dep.yml deleted file mode 100644 index 3d6bfc55..00000000 --- a/.licenses/npm/is-arrayish.dep.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -name: is-arrayish -version: 0.2.1 -type: npm -summary: Determines if an object can be used as an array -homepage: https://github.com/qix-/node-is-arrayish#readme -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2015 JD Ballard - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: |- - Licensed under the [MIT License](http://opensource.org/licenses/MIT). - You can find a copy of it in [LICENSE](LICENSE). -notices: [] diff --git a/.licenses/npm/js-tokens.dep.yml b/.licenses/npm/js-tokens.dep.yml deleted file mode 100644 index 7d5b7c7b..00000000 --- a/.licenses/npm/js-tokens.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: js-tokens -version: 4.0.0 -type: npm -summary: A regex that tokenizes JavaScript. -homepage: https://github.com/lydell/js-tokens#readme -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: "[MIT](LICENSE)." -notices: [] diff --git a/.licenses/npm/json-parse-better-errors.dep.yml b/.licenses/npm/json-parse-better-errors.dep.yml deleted file mode 100644 index dbfe3754..00000000 --- a/.licenses/npm/json-parse-better-errors.dep.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: json-parse-better-errors -version: 1.0.2 -type: npm -summary: JSON.parse with context information on error -homepage: https://github.com/zkat/json-parse-better-errors#readme -license: mit -licenses: -- sources: LICENSE.md - text: | - Copyright 2017 Kat Marchán - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/lines-and-columns.dep.yml b/.licenses/npm/lines-and-columns.dep.yml deleted file mode 100644 index 49cd86f3..00000000 --- a/.licenses/npm/lines-and-columns.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: lines-and-columns -version: 1.1.6 -type: npm -summary: Maps lines and columns to character offsets and back. -homepage: https://github.com/eventualbuddha/lines-and-columns#readme -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2015 Brian Donovan - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: MIT -notices: [] diff --git a/.licenses/npm/locate-path.dep.yml b/.licenses/npm/locate-path.dep.yml deleted file mode 100644 index 31746df5..00000000 --- a/.licenses/npm/locate-path.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: locate-path -version: 5.0.0 -type: npm -summary: Get the first path that exists on disk of multiple paths -homepage: https://github.com/sindresorhus/locate-path#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/opencollective-postinstall.dep.yml b/.licenses/npm/opencollective-postinstall.dep.yml deleted file mode 100644 index 936f6509..00000000 --- a/.licenses/npm/opencollective-postinstall.dep.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: opencollective-postinstall -version: 2.0.2 -type: npm -summary: Lightweight npm postinstall message to invite people to donate to your collective -homepage: https://github.com/opencollective/opencollective-postinstall#readme -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2018 Open Collective - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: [] diff --git a/.licenses/npm/p-limit.dep.yml b/.licenses/npm/p-limit.dep.yml deleted file mode 100644 index 53f53007..00000000 --- a/.licenses/npm/p-limit.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: p-limit -version: 2.3.0 -type: npm -summary: Run multiple promise-returning & async functions with limited concurrency -homepage: https://github.com/sindresorhus/p-limit#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/p-locate.dep.yml b/.licenses/npm/p-locate.dep.yml deleted file mode 100644 index a1116299..00000000 --- a/.licenses/npm/p-locate.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: p-locate -version: 4.1.0 -type: npm -summary: Get the first fulfilled promise that satisfies the provided testing function -homepage: https://github.com/sindresorhus/p-locate#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/p-try.dep.yml b/.licenses/npm/p-try.dep.yml deleted file mode 100644 index 8b8ec9b6..00000000 --- a/.licenses/npm/p-try.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: p-try -version: 2.2.0 -type: npm -summary: "`Start a promise chain" -homepage: https://github.com/sindresorhus/p-try#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/parent-module.dep.yml b/.licenses/npm/parent-module.dep.yml deleted file mode 100644 index 74bc0d22..00000000 --- a/.licenses/npm/parent-module.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: parent-module -version: 1.0.1 -type: npm -summary: Get the path of the parent module -homepage: https://github.com/sindresorhus/parent-module#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/parse-json.dep.yml b/.licenses/npm/parse-json.dep.yml deleted file mode 100644 index 24b69080..00000000 --- a/.licenses/npm/parse-json.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: parse-json -version: 5.0.0 -type: npm -summary: Parse JSON with more helpful errors -homepage: https://github.com/sindresorhus/parse-json#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/path-exists.dep.yml b/.licenses/npm/path-exists.dep.yml deleted file mode 100644 index 14dd5825..00000000 --- a/.licenses/npm/path-exists.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: path-exists -version: 4.0.0 -type: npm -summary: Check if a path exists -homepage: https://github.com/sindresorhus/path-exists#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/path-type.dep.yml b/.licenses/npm/path-type.dep.yml deleted file mode 100644 index a4c0866a..00000000 --- a/.licenses/npm/path-type.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: path-type -version: 4.0.0 -type: npm -summary: Check if a path is a file, directory, or symlink -homepage: https://github.com/sindresorhus/path-type#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/pkg-dir.dep.yml b/.licenses/npm/pkg-dir.dep.yml deleted file mode 100644 index dc181c60..00000000 --- a/.licenses/npm/pkg-dir.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: pkg-dir -version: 4.2.0 -type: npm -summary: Find the root directory of a Node.js project or npm package -homepage: https://github.com/sindresorhus/pkg-dir#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/please-upgrade-node.dep.yml b/.licenses/npm/please-upgrade-node.dep.yml deleted file mode 100644 index b98c9f5b..00000000 --- a/.licenses/npm/please-upgrade-node.dep.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: please-upgrade-node -version: 3.2.0 -type: npm -summary: Displays a beginner-friendly message telling your user to upgrade their version - of Node -homepage: https://github.com/typicode/please-upgrade-node#readme -license: mit -licenses: -- sources: LICENSE - text: "MIT License\n\nCopyright (c) 2017 \n\nPermission is hereby granted, free - of charge, to any person obtaining a copy\nof this software and associated documentation - files (the \"Software\"), to deal\nin the Software without restriction, including - without limitation the rights\nto use, copy, modify, merge, publish, distribute, - sublicense, and/or sell\ncopies of the Software, and to permit persons to whom - the Software is\nfurnished to do so, subject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all\ncopies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE\nSOFTWARE.\n" -- sources: README.md - text: MIT - [Typicode :cactus:](https://github.com/typicode) - [Patreon](https://patreon.com/typicode) -notices: [] diff --git a/.licenses/npm/prettier.dep.yml b/.licenses/npm/prettier.dep.yml deleted file mode 100644 index 3b99b9a1..00000000 --- a/.licenses/npm/prettier.dep.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: prettier -version: 2.0.5 -type: npm -summary: Prettier is an opinionated code formatter -homepage: https://prettier.io -license: mit -licenses: -- sources: LICENSE - text: | - Copyright © James Long and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/regenerator-runtime.dep.yml b/.licenses/npm/regenerator-runtime.dep.yml deleted file mode 100644 index b759176d..00000000 --- a/.licenses/npm/regenerator-runtime.dep.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: regenerator-runtime -version: 0.13.5 -type: npm -summary: Runtime for Regenerator-compiled generator and async functions. -homepage: -license: mit -licenses: -- sources: LICENSE - text: | - MIT License - - Copyright (c) 2014-present, Facebook, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: [] diff --git a/.licenses/npm/resolve-from.dep.yml b/.licenses/npm/resolve-from.dep.yml deleted file mode 100644 index ed7ed1a4..00000000 --- a/.licenses/npm/resolve-from.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: resolve-from -version: 4.0.0 -type: npm -summary: Resolve the path of a module like `require.resolve()` but from a given path -homepage: https://github.com/sindresorhus/resolve-from#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/semver-compare.dep.yml b/.licenses/npm/semver-compare.dep.yml deleted file mode 100644 index f459f178..00000000 --- a/.licenses/npm/semver-compare.dep.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: semver-compare -version: 1.0.0 -type: npm -summary: compare two semver version strings, returning -1, 0, or 1 -homepage: https://github.com/substack/semver-compare -license: other -licenses: -- sources: LICENSE - text: | - This software is released under the MIT license: - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.markdown - text: MIT -notices: [] diff --git a/.licenses/npm/semver-regex.dep.yml b/.licenses/npm/semver-regex.dep.yml deleted file mode 100644 index 54155ffb..00000000 --- a/.licenses/npm/semver-regex.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: semver-regex -version: 2.0.0 -type: npm -summary: Regular expression for matching semver versions -homepage: https://github.com/sindresorhus/semver-regex#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/semver.dep.yml b/.licenses/npm/semver.dep.yml deleted file mode 100644 index 8c62b4ff..00000000 --- a/.licenses/npm/semver.dep.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: semver -version: 6.3.0 -type: npm -summary: The semantic version parser used by npm. -homepage: https://github.com/npm/node-semver#readme -license: isc -licenses: -- sources: LICENSE - text: | - The ISC License - - Copyright (c) Isaac Z. Schlueter and Contributors - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -notices: [] diff --git a/.licenses/npm/slash.dep.yml b/.licenses/npm/slash.dep.yml deleted file mode 100644 index 0fb05389..00000000 --- a/.licenses/npm/slash.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: slash -version: 3.0.0 -type: npm -summary: Convert Windows backslash paths to slash paths -homepage: https://github.com/sindresorhus/slash#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT © [Sindre Sorhus](https://sindresorhus.com) -notices: [] diff --git a/.licenses/npm/supports-color-5.5.0.dep.yml b/.licenses/npm/supports-color-5.5.0.dep.yml deleted file mode 100644 index eb967156..00000000 --- a/.licenses/npm/supports-color-5.5.0.dep.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: supports-color -version: 5.5.0 -type: npm -summary: Detect whether a terminal supports color -homepage: https://github.com/chalk/supports-color#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: readme.md - text: MIT -notices: [] diff --git a/.licenses/npm/supports-color-7.1.0.dep.yml b/.licenses/npm/supports-color-7.1.0.dep.yml deleted file mode 100644 index 5e7b7cf7..00000000 --- a/.licenses/npm/supports-color-7.1.0.dep.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: supports-color -version: 7.1.0 -type: npm -summary: Detect whether a terminal supports color -homepage: https://github.com/chalk/supports-color#readme -license: mit -licenses: -- sources: license - text: | - MIT License - - Copyright (c) Sindre Sorhus (sindresorhus.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/tunnel.dep.yml b/.licenses/npm/tunnel.dep.yml deleted file mode 100644 index ec46939d..00000000 --- a/.licenses/npm/tunnel.dep.yml +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: tunnel -version: 0.0.4 -type: npm -summary: Node HTTP/HTTPS Agents for tunneling proxies -homepage: https://github.com/koichik/node-tunnel/ -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2012 Koichi Kobayashi - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) - license. -notices: [] diff --git a/.licenses/npm/typed-rest-client.dep.yml b/.licenses/npm/typed-rest-client.dep.yml deleted file mode 100644 index 42115f79..00000000 --- a/.licenses/npm/typed-rest-client.dep.yml +++ /dev/null @@ -1,927 +0,0 @@ ---- -name: typed-rest-client -version: 1.5.0 -type: npm -summary: Node Rest and Http Clients for use with TypeScript -homepage: https://github.com/Microsoft/typed-rest-client#readme -license: other -licenses: -- sources: LICENSE - text: | - Typed Rest Client for Node.js - - Copyright (c) Microsoft Corporation - - All rights reserved. - - MIT License - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and - associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT - LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -notices: -- sources: ThirdPartyNotice.txt - text: "\nTHIRD-PARTY SOFTWARE NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis - Visual Studio Team Services extension (vsts-task-lib) is based on or incorporates - material from the projects listed below (Third Party IP). The original copyright - notice and the license under which Microsoft received such Third Party IP, are - set forth below. Such licenses and notices are provided for informational purposes - only. Microsoft licenses the Third Party IP to you under the licensing terms for - the Visual Studio Team Services extension. Microsoft reserves all other rights - not expressly granted under this agreement, whether by implication, estoppel or - otherwise.\n\n1.\t@types/glob (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n2.\t@types/minimatch - (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n3.\t@types/mocha - (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n4.\t@types/node - (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n5.\t@types/shelljs - (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n6.\tbalanced-match - (git://github.com/juliangruber/balanced-match.git)\n7.\tbrace-expansion (git://github.com/juliangruber/brace-expansion.git)\n8.\tbrowser-stdout - (git+ssh://git@github.com/kumavis/browser-stdout.git)\n9.\tcommander (git+https://github.com/tj/commander.js.git)\n10.\tconcat-map - (git://github.com/substack/node-concat-map.git)\n11.\tdebug (git://github.com/visionmedia/debug.git)\n12.\tdiff - (git://github.com/kpdecker/jsdiff.git)\n13.\tescape-string-regexp (git+https://github.com/sindresorhus/escape-string-regexp.git)\n14.\tfs.realpath - (git+https://github.com/isaacs/fs.realpath.git)\n15.\tglob (git://github.com/isaacs/node-glob.git)\n16.\tgraceful-readlink - (git://github.com/zhiyelee/graceful-readlink.git)\n17.\tgrowl (git://github.com/tj/node-growl.git)\n18.\thas-flag - (git+https://github.com/sindresorhus/has-flag.git)\n19.\the (git+https://github.com/mathiasbynens/he.git)\n20.\tinflight - (git+https://github.com/npm/inflight.git)\n21.\tinherits (git://github.com/isaacs/inherits.git)\n22.\tinterpret - (git://github.com/tkellen/node-interpret.git)\n23.\tjson3 (git://github.com/bestiejs/json3.git)\n24.\tlodash.create - (git+https://github.com/lodash/lodash.git)\n25.\tlodash.isarguments (git+https://github.com/lodash/lodash.git)\n26.\tlodash.isarray - (git+https://github.com/lodash/lodash.git)\n27.\tlodash.keys (git+https://github.com/lodash/lodash.git)\n28.\tlodash._baseassign - (git+https://github.com/lodash/lodash.git)\n29.\tlodash._basecopy (git+https://github.com/lodash/lodash.git)\n30.\tlodash._basecreate - (git+https://github.com/lodash/lodash.git)\n31.\tlodash._getnative (git+https://github.com/lodash/lodash.git)\n32.\tlodash._isiterateecall - (git+https://github.com/lodash/lodash.git)\n33.\tminimatch (git://github.com/isaacs/minimatch.git)\n34.\tminimist - (git://github.com/substack/minimist.git)\n35.\tmkdirp (git+https://github.com/substack/node-mkdirp.git)\n36.\tmocha - (git+https://github.com/mochajs/mocha.git)\n37.\tms (git+https://github.com/zeit/ms.git)\n38.\tonce - (git://github.com/isaacs/once.git)\n39.\tpath-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git)\n40.\tpath-parse - (git+https://github.com/jbgutierrez/path-parse.git)\n41.\trechoir (git://github.com/tkellen/node-rechoir.git)\n42.\tresolve - (git://github.com/substack/node-resolve.git)\n43.\tsemver (git://github.com/npm/node-semver.git)\n44.\tshelljs - (git://github.com/shelljs/shelljs.git)\n45.\tsupports-color (git+https://github.com/chalk/supports-color.git)\n46.\ttunnel - (git+https://github.com/koichik/node-tunnel.git)\n47.\ttypescript (git+https://github.com/Microsoft/TypeScript.git)\n48.\tunderscore - (git://github.com/jashkenas/underscore.git)\n49.\twrappy (git+https://github.com/npm/wrappy.git)\n\n\n%% - @types/glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT - License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission - is hereby granted, free of charge, to any person obtaining a copy\n of this - software and associated documentation files (the \"Software\"), to deal\n in - the Software without restriction, including without limitation the rights\n to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies - of the Software, and to permit persons to whom the Software is\n furnished - to do so, subject to the following conditions:\n\n The above copyright notice - and this permission notice shall be included in all\n copies or substantial - portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE\n SOFTWARE\n=========================================\nEND - OF @types/glob NOTICES, INFORMATION, AND LICENSE\n\n%% @types/minimatch NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT - License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission - is hereby granted, free of charge, to any person obtaining a copy\n of this - software and associated documentation files (the \"Software\"), to deal\n in - the Software without restriction, including without limitation the rights\n to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies - of the Software, and to permit persons to whom the Software is\n furnished - to do so, subject to the following conditions:\n\n The above copyright notice - and this permission notice shall be included in all\n copies or substantial - portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE\n SOFTWARE\n=========================================\nEND - OF @types/minimatch NOTICES, INFORMATION, AND LICENSE\n\n%% @types/mocha NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT - License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission - is hereby granted, free of charge, to any person obtaining a copy\n of this - software and associated documentation files (the \"Software\"), to deal\n in - the Software without restriction, including without limitation the rights\n to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies - of the Software, and to permit persons to whom the Software is\n furnished - to do so, subject to the following conditions:\n\n The above copyright notice - and this permission notice shall be included in all\n copies or substantial - portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE\n SOFTWARE\n=========================================\nEND - OF @types/mocha NOTICES, INFORMATION, AND LICENSE\n\n%% @types/node NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nMIT License\n\n - \ Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission - is hereby granted, free of charge, to any person obtaining a copy\n of this - software and associated documentation files (the \"Software\"), to deal\n in - the Software without restriction, including without limitation the rights\n to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies - of the Software, and to permit persons to whom the Software is\n furnished - to do so, subject to the following conditions:\n\n The above copyright notice - and this permission notice shall be included in all\n copies or substantial - portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE\n SOFTWARE\n=========================================\nEND - OF @types/node NOTICES, INFORMATION, AND LICENSE\n\n%% @types/shelljs NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT - License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission - is hereby granted, free of charge, to any person obtaining a copy\n of this - software and associated documentation files (the \"Software\"), to deal\n in - the Software without restriction, including without limitation the rights\n to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies - of the Software, and to permit persons to whom the Software is\n furnished - to do so, subject to the following conditions:\n\n The above copyright notice - and this permission notice shall be included in all\n copies or substantial - portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE\n SOFTWARE\n=========================================\nEND - OF @types/shelljs NOTICES, INFORMATION, AND LICENSE\n\n%% balanced-match NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\n(MIT)\n\nCopyright - (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby - granted, free of charge, to any person obtaining a copy of\nthis software and - associated documentation files (the \"Software\"), to deal in\nthe Software without - restriction, including without limitation the rights to\nuse, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit - persons to whom the Software is furnished to do\nso, subject to the following - conditions:\n\nThe above copyright notice and this permission notice shall be - included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE - IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR - PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE - OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND - OF balanced-match NOTICES, INFORMATION, AND LICENSE\n\n%% brace-expansion NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo - license text available.\n=========================================\nEND OF brace-expansion - NOTICES, INFORMATION, AND LICENSE\n\n%% browser-stdout NOTICES, INFORMATION, AND - LICENSE BEGIN HERE\n=========================================\nNo license text - available.\n=========================================\nEND OF browser-stdout NOTICES, - INFORMATION, AND LICENSE\n\n%% commander NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\n(The MIT License)\n\nCopyright - (c) 2011 TJ Holowaychuk \n\nPermission is hereby granted, - free of charge, to any person obtaining\na copy of this software and associated - documentation files (the\n'Software'), to deal in the Software without restriction, - including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, - sublicense, and/or sell copies of the Software, and to\npermit persons to whom - the Software is furnished to do so, subject to\nthe following conditions:\n\nThe - above copyright notice and this permission notice shall be\nincluded in all copies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', - WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF commander - NOTICES, INFORMATION, AND LICENSE\n\n%% concat-map NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nThis software is released - under the MIT license:\n\nPermission is hereby granted, free of charge, to any - person obtaining a copy of\nthis software and associated documentation files (the - \"Software\"), to deal in\nthe Software without restriction, including without - limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of\nthe Software, and to permit persons to whom the Software - is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright - notice and this permission notice shall be included in all\ncopies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF concat-map - NOTICES, INFORMATION, AND LICENSE\n\n%% debug NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright - (c) 2014 TJ Holowaychuk \n\nPermission is hereby granted, - free of charge, to any person obtaining a copy of this software \nand associated - documentation files (the 'Software'), to deal in the Software without restriction, - \nincluding without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, \nand/or sell copies of the Software, and to permit persons - to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all copies - or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \nLIMITED - TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - \nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, \nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE \nSOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE.\n=========================================\nEND OF debug - NOTICES, INFORMATION, AND LICENSE\n\n%% diff NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nSoftware License Agreement - (BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker \n\nAll - rights reserved.\n\nRedistribution and use of this software in source and binary - forms, with or without modification,\nare permitted provided that the following - conditions are met:\n\n* Redistributions of source code must retain the above\n - \ copyright notice, this list of conditions and the\n following disclaimer.\n\n* - Redistributions in binary form must reproduce the above\n copyright notice, this - list of conditions and the\n following disclaimer in the documentation and/or - other\n materials provided with the distribution.\n\n* Neither the name of Kevin - Decker nor the names of its\n contributors may be used to endorse or promote - products\n derived from this software without specific prior\n written permission.\n\nTHIS - SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY - EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - OF SUCH DAMAGE.\n=========================================\nEND OF diff NOTICES, - INFORMATION, AND LICENSE\n\n%% escape-string-regexp NOTICES, INFORMATION, AND - LICENSE BEGIN HERE\n=========================================\nThe MIT License - (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission - is hereby granted, free of charge, to any person obtaining a copy\nof this software - and associated documentation files (the \"Software\"), to deal\nin the Software - without restriction, including without limitation the rights\nto use, copy, modify, - merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and - to permit persons to whom the Software is\nfurnished to do so, subject to the - following conditions:\n\nThe above copyright notice and this permission notice - shall be included in\nall copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND - OF escape-string-regexp NOTICES, INFORMATION, AND LICENSE\n\n%% fs.realpath NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe - ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission - to use, copy, modify, and/or distribute this software for any\npurpose with or - without fee is hereby granted, provided that the above\ncopyright notice and this - permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" - AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING - ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES - OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n----\n\nThis - library bundles a version of the `fs.realpath` and `fs.realpathSync`\nmethods - from Node.js v0.10 under the terms of the Node.js MIT license.\n\nNode's license - follows, also included at the header of `old.js` which contains\nthe licensed - code:\n\n Copyright Joyent, Inc. and other Node contributors.\n\n Permission - is hereby granted, free of charge, to any person obtaining a\n copy of this software - and associated documentation files (the \"Software\"),\n to deal in the Software - without restriction, including without limitation\n the rights to use, copy, - modify, merge, publish, distribute, sublicense,\n and/or sell copies of the Software, - and to permit persons to whom the\n Software is furnished to do so, subject to - the following conditions:\n\n The above copyright notice and this permission - notice shall be included in\n all copies or substantial portions of the Software.\n\n - \ THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n - \ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS - OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER\n DEALINGS IN THE SOFTWARE.\n=========================================\nEND - OF fs.realpath NOTICES, INFORMATION, AND LICENSE\n\n%% glob NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright - (c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or - distribute this software for any\npurpose with or without fee is hereby granted, - provided that the above\ncopyright notice and this permission notice appear in - all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS - OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE.\n=========================================\nEND OF glob NOTICES, - INFORMATION, AND LICENSE\n\n%% graceful-readlink NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright - (c) 2015 Zhiye Li\n\nPermission is hereby granted, free of charge, to any person - obtaining a copy\nof this software and associated documentation files (the \"Software\"), - to deal\nin the Software without restriction, including without limitation the - rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies - of the Software, and to permit persons to whom the Software is\nfurnished to do - so, subject to the following conditions:\n\nThe above copyright notice and this - permission notice shall be included in all\ncopies or substantial portions of - the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND - OF graceful-readlink NOTICES, INFORMATION, AND LICENSE\n\n%% growl NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nNo license - text available.\n=========================================\nEND OF growl NOTICES, - INFORMATION, AND LICENSE\n\n%% has-flag NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright - (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is - hereby granted, free of charge, to any person obtaining a copy\nof this software - and associated documentation files (the \"Software\"), to deal\nin the Software - without restriction, including without limitation the rights\nto use, copy, modify, - merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and - to permit persons to whom the Software is\nfurnished to do so, subject to the - following conditions:\n\nThe above copyright notice and this permission notice - shall be included in\nall copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND - OF has-flag NOTICES, INFORMATION, AND LICENSE\n\n%% he NOTICES, INFORMATION, AND - LICENSE BEGIN HERE\n=========================================\nCopyright Mathias - Bynens \n\nPermission is hereby granted, free of charge, - to any person obtaining\na copy of this software and associated documentation - files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF he NOTICES, - INFORMATION, AND LICENSE\n\n%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\nThe ISC License\n\nCopyright - (c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this - software for any\npurpose with or without fee is hereby granted, provided that - the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD - TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR - CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA - OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND - OF inflight NOTICES, INFORMATION, AND LICENSE\n\n%% inherits NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright - (c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this - software for any\npurpose with or without fee is hereby granted, provided that - the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD - TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR - CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA - OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, - ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND - OF inherits NOTICES, INFORMATION, AND LICENSE\n\n%% interpret NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright (c) - 2014 Tyler Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining - a copy of this software and associated documentation\nfiles (the \"Software\"), - to deal in the Software without\nrestriction, including without limitation the - rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies - of the Software, and to permit persons to whom the\nSoftware is furnished to do - so, subject to the following\nconditions:\n\nThe above copyright notice and this - permission notice shall be\nincluded in all copies or substantial portions of - the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND - OF interpret NOTICES, INFORMATION, AND LICENSE\n\n%% json3 NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright (c) - 2012-2014 Kit Cambridge.\nhttp://kitcambridge.be/\n\nPermission is hereby granted, - free of charge, to any person obtaining a copy of\nthis software and associated - documentation files (the \"Software\"), to deal in\nthe Software without restriction, - including without limitation the rights to\nuse, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies\nof the Software, and to permit persons - to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all\ncopies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE\nSOFTWARE.\n=========================================\nEND OF json3 NOTICES, - INFORMATION, AND LICENSE\n\n%% lodash.create NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nCopyright 2012-2015 The - Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash.create - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarguments NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright jQuery - Foundation and other contributors \n\nBased on Underscore.js, - copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nThis software consists of voluntary contributions - made by many\nindividuals. For exact contribution history, see the revision history\navailable - at https://github.com/lodash/lodash\n\nThe following license applies to all parts - of this software except as\ndocumented below:\n\n====\n\nPermission is hereby - granted, free of charge, to any person obtaining\na copy of this software and - associated documentation files (the\n\"Software\"), to deal in the Software without - restriction, including\nwithout limitation the rights to use, copy, modify, merge, - publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit - persons to whom the Software is furnished to do so, subject to\nthe following - conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded - in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED - \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT - LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE - FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR - THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights - for sample code are waived via CC0. Sample\ncode is defined as all source code - displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles - located in the node_modules and vendor directories are externally\nmaintained - libraries used by this software which have their own\nlicenses; we recommend you - read them, as their terms may differ from the\nterms above.\n=========================================\nEND - OF lodash.isarguments NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarray NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nCopyright - 2012-2015 The Dojo Foundation \nBased on Underscore.js, - copyright 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters - & Editors \n\nPermission is hereby granted, free of - charge, to any person obtaining\na copy of this software and associated documentation - files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash.isarray - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.keys NOTICES, INFORMATION, AND - LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash.keys - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._baseassign NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash._baseassign - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecopy NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecopy - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecreate NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecreate - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._getnative NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash._getnative - NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._isiterateecall NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015 - The Dojo Foundation \nBased on Underscore.js, copyright - 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors - \n\nPermission is hereby granted, free of charge, to - any person obtaining\na copy of this software and associated documentation files - (the\n\"Software\"), to deal in the Software without restriction, including\nwithout - limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, - and/or sell copies of the Software, and to\npermit persons to whom the Software - is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright - notice and this permission notice shall be\nincluded in all copies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF lodash._isiterateecall - NOTICES, INFORMATION, AND LICENSE\n\n%% minimatch NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright - (c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or - distribute this software for any\npurpose with or without fee is hereby granted, - provided that the above\ncopyright notice and this permission notice appear in - all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS - OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE.\n=========================================\nEND OF minimatch - NOTICES, INFORMATION, AND LICENSE\n\n%% minimist NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nThis software is released - under the MIT license:\n\nPermission is hereby granted, free of charge, to any - person obtaining a copy of\nthis software and associated documentation files (the - \"Software\"), to deal in\nthe Software without restriction, including without - limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of\nthe Software, and to permit persons to whom the Software - is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright - notice and this permission notice shall be included in all\ncopies or substantial - portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY - OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF minimist NOTICES, - INFORMATION, AND LICENSE\n\n%% mkdirp NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\nCopyright 2010 James Halliday - (mail@substack.net)\n\nThis project is free software released under the MIT/X11 - license:\n\nPermission is hereby granted, free of charge, to any person obtaining - a copy\nof this software and associated documentation files (the \"Software\"), - to deal\nin the Software without restriction, including without limitation the - rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies - of the Software, and to permit persons to whom the Software is\nfurnished to do - so, subject to the following conditions:\n\nThe above copyright notice and this - permission notice shall be included in\nall copies or substantial portions of - the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND - OF mkdirp NOTICES, INFORMATION, AND LICENSE\n\n%% mocha NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright - (c) 2011-2017 JS Foundation and contributors, https://js.foundation\n\nPermission - is hereby granted, free of charge, to any person obtaining\na copy of this software - and associated documentation files (the\n'Software'), to deal in the Software - without restriction, including\nwithout limitation the rights to use, copy, modify, - merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and - to\npermit persons to whom the Software is furnished to do so, subject to\nthe - following conditions:\n\nThe above copyright notice and this permission notice - shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE - OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND - OF mocha NOTICES, INFORMATION, AND LICENSE\n\n%% ms NOTICES, INFORMATION, AND - LICENSE BEGIN HERE\n=========================================\nThe MIT License - (MIT)\n\nCopyright (c) 2016 Zeit, Inc.\n\nPermission is hereby granted, free of - charge, to any person obtaining a copy\nof this software and associated documentation - files (the \"Software\"), to deal\nin the Software without restriction, including - without limitation the rights\nto use, copy, modify, merge, publish, distribute, - sublicense, and/or sell\ncopies of the Software, and to permit persons to whom - the Software is\nfurnished to do so, subject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all\ncopies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE\nSOFTWARE.\n=========================================\nEND OF ms NOTICES, - INFORMATION, AND LICENSE\n\n%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe - ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission - to use, copy, modify, and/or distribute this software for any\npurpose with or - without fee is hereby granted, provided that the above\ncopyright notice and this - permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" - AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING - ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES - OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND - OF once NOTICES, INFORMATION, AND LICENSE\n\n%% path-is-absolute NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThe MIT License - (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission - is hereby granted, free of charge, to any person obtaining a copy\nof this software - and associated documentation files (the \"Software\"), to deal\nin the Software - without restriction, including without limitation the rights\nto use, copy, modify, - merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and - to permit persons to whom the Software is\nfurnished to do so, subject to the - following conditions:\n\nThe above copyright notice and this permission notice - shall be included in\nall copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND - OF path-is-absolute NOTICES, INFORMATION, AND LICENSE\n\n%% path-parse NOTICES, - INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo - license text available.\n=========================================\nEND OF path-parse - NOTICES, INFORMATION, AND LICENSE\n\n%% rechoir NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nCopyright (c) 2015 Tyler - Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining - a copy of this software and associated documentation\nfiles (the \"Software\"), - to deal in the Software without\nrestriction, including without limitation the - rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies - of the Software, and to permit persons to whom the\nSoftware is furnished to do - so, subject to the following\nconditions:\n\nThe above copyright notice and this - permission notice shall be\nincluded in all copies or substantial portions of - the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND - OF rechoir NOTICES, INFORMATION, AND LICENSE\n\n%% resolve NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThis software - is released under the MIT license:\n\nPermission is hereby granted, free of charge, - to any person obtaining a copy of\nthis software and associated documentation - files (the \"Software\"), to deal in\nthe Software without restriction, including - without limitation the rights to\nuse, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of\nthe Software, and to permit persons to whom - the Software is furnished to do so,\nsubject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in all\ncopies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE.\n=========================================\nEND OF resolve NOTICES, - INFORMATION, AND LICENSE\n\n%% semver NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\nCopyright (c) Isaac Z. Schlueter - (\"Author\")\nAll rights reserved.\n\nThe BSD License\n\nRedistribution and use - in source and binary forms, with or without\nmodification, are permitted provided - that the following conditions\nare met:\n\n1. Redistributions of source code must - retain the above copyright\n notice, this list of conditions and the following - disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n - \ notice, this list of conditions and the following disclaimer in the\n documentation - and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED - BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR - OR CONTRIBUTORS\nBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY,\nWHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN\nIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n=========================================\nEND - OF semver NOTICES, INFORMATION, AND LICENSE\n\n%% shelljs NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nCopyright (c) - 2012, Artur Adib \nAll rights reserved.\n\nYou may use this - project under the terms of the New BSD license as follows:\n\nRedistribution and - use in source and binary forms, with or without\nmodification, are permitted provided - that the following conditions are met:\n * Redistributions of source code must - retain the above copyright\n notice, this list of conditions and the following - disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n - \ notice, this list of conditions and the following disclaimer in the\n documentation - and/or other materials provided with the distribution.\n * Neither the name - of Artur Adib nor the\n names of the contributors may be used to endorse - or promote products\n derived from this software without specific prior written - permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - \"AS IS\" \nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE \nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - \nARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY\nDIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF \nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - OF SUCH DAMAGE.\n=========================================\nEND OF shelljs NOTICES, - INFORMATION, AND LICENSE\n\n%% supports-color NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright - (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is - hereby granted, free of charge, to any person obtaining a copy\nof this software - and associated documentation files (the \"Software\"), to deal\nin the Software - without restriction, including without limitation the rights\nto use, copy, modify, - merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and - to permit persons to whom the Software is\nfurnished to do so, subject to the - following conditions:\n\nThe above copyright notice and this permission notice - shall be included in\nall copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND - OF supports-color NOTICES, INFORMATION, AND LICENSE\n\n%% tunnel NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThe MIT License - (MIT)\n\nCopyright (c) 2012 Koichi Kobayashi\n\nPermission is hereby granted, - free of charge, to any person obtaining a copy\nof this software and associated - documentation files (the \"Software\"), to deal\nin the Software without restriction, - including without limitation the rights\nto use, copy, modify, merge, publish, - distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons - to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe - above copyright notice and this permission notice shall be included in\nall copies - or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", - WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO - THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES - OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN\nTHE SOFTWARE.\n=========================================\nEND OF tunnel NOTICES, - INFORMATION, AND LICENSE\n\n%% typescript NOTICES, INFORMATION, AND LICENSE BEGIN - HERE\n=========================================\nApache License\n\nVersion 2.0, - January 2004\n\nhttp://www.apache.org/licenses/ \n\nTERMS AND CONDITIONS FOR USE, - REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the - terms and conditions for use, reproduction, and distribution as defined by Sections - 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or - entity authorized by the copyright owner that is granting the License.\n\n\"Legal - Entity\" shall mean the union of the acting entity and all other entities that - control, are controlled by, or are under common control with that entity. For - the purposes of this definition, \"control\" means (i) the power, direct or indirect, - to cause the direction or management of such entity, whether by contract or otherwise, - or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or - (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean - an individual or Legal Entity exercising permissions granted by this License.\n\n\"Source\" - form shall mean the preferred form for making modifications, including but not - limited to software source code, documentation source, and configuration files.\n\n\"Object\" - form shall mean any form resulting from mechanical transformation or translation - of a Source form, including but not limited to compiled object code, generated - documentation, and conversions to other media types.\n\n\"Work\" shall mean the - work of authorship, whether in Source or Object form, made available under the - License, as indicated by a copyright notice that is included in or attached to - the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" - shall mean any work, whether in Source or Object form, that is based on (or derived - from) the Work and for which the editorial revisions, annotations, elaborations, - or other modifications represent, as a whole, an original work of authorship. - For the purposes of this License, Derivative Works shall not include works that - remain separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work - of authorship, including the original version of the Work and any modifications - or additions to that Work or Derivative Works thereof, that is intentionally submitted - to Licensor for inclusion in the Work by the copyright owner or by an individual - or Legal Entity authorized to submit on behalf of the copyright owner. For the - purposes of this definition, \"submitted\" means any form of electronic, verbal, - or written communication sent to the Licensor or its representatives, including - but not limited to communication on electronic mailing lists, source code control - systems, and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but excluding communication - that is conspicuously marked or otherwise designated in writing by the copyright - owner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any - individual or Legal Entity on behalf of whom a Contribution has been received - by Licensor and subsequently incorporated within the Work.\n\n2. Grant of Copyright - License. Subject to the terms and conditions of this License, each Contributor - hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, - irrevocable copyright license to reproduce, prepare Derivative Works of, publicly - display, publicly perform, sublicense, and distribute the Work and such Derivative - Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the - terms and conditions of this License, each Contributor hereby grants to You a - perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except - as stated in this section) patent license to make, have made, use, offer to sell, - sell, import, and otherwise transfer the Work, where such license applies only - to those patent claims licensable by such Contributor that are necessarily infringed - by their Contribution(s) alone or by combination of their Contribution(s) with - the Work to which such Contribution(s) was submitted. If You institute patent - litigation against any entity (including a cross-claim or counterclaim in a lawsuit) - alleging that the Work or a Contribution incorporated within the Work constitutes - direct or contributory patent infringement, then any patent licenses granted to - You under this License for that Work shall terminate as of the date such litigation - is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without modifications, - and in Source or Object form, provided that You meet the following conditions:\n\nYou - must give any other recipients of the Work or Derivative Works a copy of this - License; and\n\nYou must cause any modified files to carry prominent notices stating - that You changed the files; and\n\nYou must retain, in the Source form of any - Derivative Works that You distribute, all copyright, patent, trademark, and attribution - notices from the Source form of the Work, excluding those notices that do not - pertain to any part of the Derivative Works; and\n\nIf the Work includes a \"NOTICE\" - text file as part of its distribution, then any Derivative Works that You distribute - must include a readable copy of the attribution notices contained within such - NOTICE file, excluding those notices that do not pertain to any part of the Derivative - Works, in at least one of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or documentation, if provided - along with the Derivative Works; or, within a display generated by the Derivative - Works, if and wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and do not modify the License. - You may add Your own attribution notices within Derivative Works that You distribute, - alongside or as an addendum to the NOTICE text from the Work, provided that such - additional attribution notices cannot be construed as modifying the License. You - may add Your own copyright statement to Your modifications and may provide additional - or different license terms and conditions for use, reproduction, or distribution - of Your modifications, or for any such Derivative Works as a whole, provided Your - use, reproduction, and distribution of the Work otherwise complies with the conditions - stated in this License.\n\n5. Submission of Contributions. Unless You explicitly - state otherwise, any Contribution intentionally submitted for inclusion in the - Work by You to the Licensor shall be under the terms and conditions of this License, - without any additional terms or conditions. Notwithstanding the above, nothing - herein shall supersede or modify the terms of any separate license agreement you - may have executed with Licensor regarding such Contributions.\n\n6. Trademarks. - This License does not grant permission to use the trade names, trademarks, service - marks, or product names of the Licensor, except as required for reasonable and - customary use in describing the origin of the Work and reproducing the content - of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable - law or agreed to in writing, Licensor provides the Work (and each Contributor - provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS - OF ANY KIND, either express or implied, including, without limitation, any warranties - or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR - PURPOSE. You are solely responsible for determining the appropriateness of using - or redistributing the Work and assume any risks associated with Your exercise - of permissions under this License.\n\n8. Limitation of Liability. In no event - and under no legal theory, whether in tort (including negligence), contract, or - otherwise, unless required by applicable law (such as deliberate and grossly negligent - acts) or agreed to in writing, shall any Contributor be liable to You for damages, - including any direct, indirect, special, incidental, or consequential damages - of any character arising as a result of this License or out of the use or inability - to use the Work (including but not limited to damages for loss of goodwill, work - stoppage, computer failure or malfunction, or any and all other commercial damages - or losses), even if such Contributor has been advised of the possibility of such - damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, and charge a fee - for, acceptance of support, warranty, indemnity, or other liability obligations - and/or rights consistent with this License. However, in accepting such obligations, - You may act only on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, defend, and hold - each Contributor harmless for any liability incurred by, or claims asserted against, - such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND - OF TERMS AND CONDITIONS\n=========================================\nEND OF typescript - NOTICES, INFORMATION, AND LICENSE\n\n%% underscore NOTICES, INFORMATION, AND LICENSE - BEGIN HERE\n=========================================\nCopyright (c) 2009-2015 - Jeremy Ashkenas, DocumentCloud and Investigative\nReporters & Editors\n\nPermission - is hereby granted, free of charge, to any person\nobtaining a copy of this software - and associated documentation\nfiles (the \"Software\"), to deal in the Software - without\nrestriction, including without limitation the rights to use,\ncopy, modify, - merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and - to permit persons to whom the\nSoftware is furnished to do so, subject to the - following\nconditions:\n\nThe above copyright notice and this permission notice - shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE - SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND - OF underscore NOTICES, INFORMATION, AND LICENSE\n\n%% wrappy NOTICES, INFORMATION, - AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright - (c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or - distribute this software for any\npurpose with or without fee is hereby granted, - provided that the above\ncopyright notice and this permission notice appear in - all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS - OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE.\n=========================================\nEND OF wrappy NOTICES, - INFORMATION, AND LICENSE" diff --git a/.licenses/npm/underscore.dep.yml b/.licenses/npm/underscore.dep.yml deleted file mode 100644 index d09557fe..00000000 --- a/.licenses/npm/underscore.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: underscore -version: 1.8.3 -type: npm -summary: JavaScript's functional programming helper library. -homepage: http://underscorejs.org -license: other -licenses: -- sources: LICENSE - text: | - Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative - Reporters & Editors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. -notices: [] diff --git a/.licenses/npm/uuid.dep.yml b/.licenses/npm/uuid.dep.yml deleted file mode 100644 index 47a842a5..00000000 --- a/.licenses/npm/uuid.dep.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -name: uuid -version: 3.3.3 -type: npm -summary: RFC4122 (v1, v4, and v5) UUIDs -homepage: https://github.com/kelektiv/node-uuid#readme -license: mit -licenses: -- sources: LICENSE.md - text: | - The MIT License (MIT) - - Copyright (c) 2010-2016 Robert Kieffer and other contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -notices: -- sources: AUTHORS - text: |- - Robert Kieffer - Christoph Tavan - AJ ONeal - Vincent Voyer - Roman Shtylman diff --git a/.licenses/npm/which-pm-runs.dep.yml b/.licenses/npm/which-pm-runs.dep.yml deleted file mode 100644 index 8437fb95..00000000 --- a/.licenses/npm/which-pm-runs.dep.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: which-pm-runs -version: 1.0.0 -type: npm -summary: Detects what package manager executes the process -homepage: https://github.com/zkochan/which-pm-runs#readme -license: mit -licenses: -- sources: LICENSE - text: |- - The MIT License (MIT) - - Copyright (c) 2017 Zoltan Kochan - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -- sources: README.md - text: "[MIT](LICENSE) © [Zoltan Kochan](http://kochan.io)" -notices: [] diff --git a/.licenses/npm/yaml.dep.yml b/.licenses/npm/yaml.dep.yml deleted file mode 100644 index 68f29e56..00000000 --- a/.licenses/npm/yaml.dep.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: yaml -version: 1.9.2 -type: npm -summary: JavaScript parser and stringifier for YAML -homepage: https://eemeli.org/yaml/ -license: isc -licenses: -- sources: LICENSE - text: | - Copyright 2018 Eemeli Aro - - Permission to use, copy, modify, and/or distribute this software for any purpose - with or without fee is hereby granted, provided that the above copyright notice - and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - THIS SOFTWARE. -notices: [] diff --git a/.prettierrc b/.prettierrc index a6136e6c..80a6bdfb 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,7 @@ { - "arrowParens": "avoid", + "arrowParens": "always", "bracketSpacing": false, "semi": false, "singleQuote": true, - "trailingComma": "es5" + "trailingComma": "all" } diff --git a/3RD_PARTY_LICENSES b/3RD_PARTY_LICENSES new file mode 100644 index 00000000..b79905c2 --- /dev/null +++ b/3RD_PARTY_LICENSES @@ -0,0 +1,2845 @@ +THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN PORTIONS OF THE SETUP BEAM PRODUCT. + +----- + +The following software may be included in this product: @actions/core. A copy of the source code may be downloaded from git+https://github.com/actions/toolkit.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: @babel/code-frame, @babel/helper-validator-identifier, @babel/highlight. A copy of the source code may be downloaded from https://github.com/babel/babel.git (@babel/code-frame), https://github.com/babel/babel.git (@babel/helper-validator-identifier), https://github.com/babel/babel.git (@babel/highlight). This software contains the following license and notice below: + +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: @eslint/eslintrc. A copy of the source code may be downloaded from https://github.com/eslint/eslintrc.git. This software contains the following license and notice below: + +MIT License + +Copyright (c) 2020 ESLint + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: @vercel/ncc. A copy of the source code may be downloaded from https://github.com/vercel/ncc.git. This software contains the following license and notice below: + +Copyright 2018 ZEIT, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: acorn. A copy of the source code may be downloaded from https://github.com/acornjs/acorn.git. This software contains the following license and notice below: + +MIT License + +Copyright (C) 2012-2018 by various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: acorn-jsx. A copy of the source code may be downloaded from https://github.com/acornjs/acorn-jsx. This software contains the following license and notice below: + +Copyright (C) 2012-2017 by Ingvar Stepanyan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: ajv. A copy of the source code may be downloaded from https://github.com/ajv-validator/ajv.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015-2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: ajv. A copy of the source code may be downloaded from https://github.com/ajv-validator/ajv.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015-2021 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: ansi-colors. A copy of the source code may be downloaded from https://github.com/doowb/ansi-colors.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015-present, Brian Woodward. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: ansi-regex, ansi-styles, callsites, chalk, has-flag, is-fullwidth-code-point, parent-module, path-key, resolve-from, shebang-regex, string-width, strip-ansi, supports-color, type-fest. A copy of the source code may be downloaded from https://github.com/chalk/ansi-regex.git (ansi-regex), https://github.com/chalk/ansi-styles.git (ansi-styles), https://github.com/sindresorhus/callsites.git (callsites), https://github.com/chalk/chalk.git (chalk), https://github.com/sindresorhus/has-flag.git (has-flag), https://github.com/sindresorhus/is-fullwidth-code-point.git (is-fullwidth-code-point), https://github.com/sindresorhus/parent-module.git (parent-module), https://github.com/sindresorhus/path-key.git (path-key), https://github.com/sindresorhus/resolve-from.git (resolve-from), https://github.com/sindresorhus/shebang-regex.git (shebang-regex), https://github.com/sindresorhus/string-width.git (string-width), https://github.com/chalk/strip-ansi.git (strip-ansi), https://github.com/chalk/supports-color.git (supports-color), https://github.com/sindresorhus/type-fest.git (type-fest). This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: ansi-regex, ansi-styles, camelcase, chalk, code-point-at, decamelize, escape-string-regexp, has-ansi, is-fullwidth-code-point, lcid, log-symbols, number-is-nan, os-locale, path-is-absolute, string-width, strip-ansi, supports-color, wrap-ansi. A copy of the source code may be downloaded from https://github.com/chalk/ansi-regex.git (ansi-regex), https://github.com/chalk/ansi-styles.git (ansi-styles), https://github.com/sindresorhus/camelcase.git (camelcase), https://github.com/chalk/chalk.git (chalk), https://github.com/sindresorhus/code-point-at.git (code-point-at), https://github.com/sindresorhus/decamelize.git (decamelize), https://github.com/sindresorhus/escape-string-regexp.git (escape-string-regexp), https://github.com/sindresorhus/has-ansi.git (has-ansi), https://github.com/sindresorhus/is-fullwidth-code-point.git (is-fullwidth-code-point), https://github.com/sindresorhus/lcid.git (lcid), https://github.com/sindresorhus/log-symbols.git (log-symbols), https://github.com/sindresorhus/number-is-nan.git (number-is-nan), https://github.com/sindresorhus/os-locale.git (os-locale), https://github.com/sindresorhus/path-is-absolute.git (path-is-absolute), https://github.com/sindresorhus/string-width.git (string-width), https://github.com/chalk/strip-ansi.git (strip-ansi), https://github.com/chalk/supports-color.git (supports-color), https://github.com/chalk/wrap-ansi.git (wrap-ansi). This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: argparse. A copy of the source code may be downloaded from https://github.com/nodeca/argparse.git. This software contains the following license and notice below: + +(The MIT License) + +Copyright (C) 2012 by Vitaly Puzrin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: argparse. A copy of the source code may be downloaded from https://github.com/nodeca/argparse.git. This software contains the following license and notice below: + +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: astral-regex, shebang-command. A copy of the source code may be downloaded from https://github.com/kevva/astral-regex.git (astral-regex), https://github.com/kevva/shebang-command.git (shebang-command). This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: async. A copy of the source code may be downloaded from https://github.com/caolan/async.git. This software contains the following license and notice below: + +Copyright (c) 2010-2014 Caolan McMahon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: balanced-match. A copy of the source code may be downloaded from git://github.com/juliangruber/balanced-match.git. This software contains the following license and notice below: + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: brace-expansion. A copy of the source code may be downloaded from git://github.com/juliangruber/brace-expansion.git. This software contains the following license and notice below: + +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: call-bind, get-intrinsic. A copy of the source code may be downloaded from git+https://github.com/ljharb/call-bind.git (call-bind), git+https://github.com/ljharb/get-intrinsic.git (get-intrinsic). This software contains the following license and notice below: + +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: cliui. A copy of the source code may be downloaded from http://github.com/yargs/cliui.git. This software contains the following license and notice below: + +Copyright (c) 2015, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: color-convert. A copy of the source code may be downloaded from https://github.com/Qix-/color-convert.git. This software contains the following license and notice below: + +Copyright (c) 2011-2016 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: color-name. A copy of the source code may be downloaded from git@github.com:dfcreative/color-name.git. This software contains the following license and notice below: + +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: concat-map, json-stable-stringify-without-jsonify, text-table. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git (concat-map), git://github.com/samn/json-stable-stringify.git (json-stable-stringify-without-jsonify), git://github.com/substack/text-table.git (text-table). This software contains the following license and notice below: + +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: cross-spawn. A copy of the source code may be downloaded from git@github.com:moxystudio/node-cross-spawn.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2018 Made With MOXY Lda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: debug. A copy of the source code may be downloaded from git://github.com/visionmedia/debug.git. This software contains the following license and notice below: + +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: deep-is. A copy of the source code may be downloaded from http://github.com/thlorenz/deep-is.git. This software contains the following license and notice below: + +Copyright (c) 2012, 2013 Thorsten Lorenz +Copyright (c) 2012 James Halliday +Copyright (c) 2009 Thomas Robinson <280north.com> + +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: doctrine. A copy of the source code may be downloaded from https://github.com/eslint/doctrine.git. This software contains the following license and notice below: + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +----- + +The following software may be included in this product: enquirer. A copy of the source code may be downloaded from https://github.com/enquirer/enquirer.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2016-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: entities. A copy of the source code may be downloaded from git://github.com/fb55/entities.git. This software contains the following license and notice below: + +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: eslint. A copy of the source code may be downloaded from https://github.com/eslint/eslint.git. This software contains the following license and notice below: + +Copyright JS Foundation and other contributors, https://js.foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: eslint-config-google. A copy of the source code may be downloaded from https://github.com/google/eslint-config-google.git. This software contains the following license and notice below: + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2015 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----- + +The following software may be included in this product: eslint-scope. A copy of the source code may be downloaded from https://github.com/eslint/eslint-scope.git. This software contains the following license and notice below: + +Copyright JS Foundation and other contributors, https://js.foundation +Copyright (C) 2012-2013 Yusuke Suzuki (twitter: @Constellation) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: eslint-utils, regexpp. A copy of the source code may be downloaded from git+https://github.com/mysticatea/eslint-utils.git (eslint-utils), git+https://github.com/mysticatea/regexpp.git (regexpp). This software contains the following license and notice below: + +MIT License + +Copyright (c) 2018 Toru Nagashima + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: eslint-visitor-keys. A copy of the source code may be downloaded from https://github.com/eslint/eslint-visitor-keys.git. This software contains the following license and notice below: + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +----- + +The following software may be included in this product: espree. A copy of the source code may be downloaded from https://github.com/eslint/espree.git. This software contains the following license and notice below: + +BSD 2-Clause License + +Copyright (c) Open JS Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: esprima. A copy of the source code may be downloaded from https://github.com/jquery/esprima.git. This software contains the following license and notice below: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: esquery. A copy of the source code may be downloaded from https://github.com/estools/esquery.git. This software contains the following license and notice below: + +Copyright (c) 2013, Joel Feenstra +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the ESQuery nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL JOEL FEENSTRA BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: estraverse, esutils. A copy of the source code may be downloaded from http://github.com/estools/estraverse.git (estraverse), http://github.com/estools/esutils.git (esutils). This software contains the following license and notice below: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: fast-deep-equal, json-schema-traverse. A copy of the source code may be downloaded from git+https://github.com/epoberezkin/fast-deep-equal.git (fast-deep-equal), git+https://github.com/epoberezkin/json-schema-traverse.git (json-schema-traverse). This software contains the following license and notice below: + +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: fast-json-stable-stringify. A copy of the source code may be downloaded from git://github.com/epoberezkin/fast-json-stable-stringify.git. This software contains the following license and notice below: + +This software is released under the MIT license: + +Copyright (c) 2017 Evgeny Poberezkin +Copyright (c) 2013 James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: fast-levenshtein. A copy of the source code may be downloaded from https://github.com/hiddentao/fast-levenshtein.git. This software contains the following license and notice below: + +(MIT License) + +Copyright (c) 2013 [Ramesh Nair](http://www.hiddentao.com/) + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: file-entry-cache, flat-cache. A copy of the source code may be downloaded from https://github.com/royriojas/file-entry-cache.git (file-entry-cache), https://github.com/royriojas/flat-cache.git (flat-cache). This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015 Roy Riojas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: flatted. A copy of the source code may be downloaded from git+https://github.com/WebReflection/flatted.git. This software contains the following license and notice below: + +ISC License + +Copyright (c) 2018-2020, Andrea Giammarchi, @WebReflection + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: fs.realpath. A copy of the source code may be downloaded from git+https://github.com/isaacs/fs.realpath.git. This software contains the following license and notice below: + +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---- + +This library bundles a version of the `fs.realpath` and `fs.realpathSync` +methods from Node.js v0.10 under the terms of the Node.js MIT license. + +Node's license follows, also included at the header of `old.js` which contains +the licensed code: + + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: function-bind. A copy of the source code may be downloaded from git://github.com/Raynos/function-bind.git. This software contains the following license and notice below: + +Copyright (c) 2013 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: functional-red-black-tree. A copy of the source code may be downloaded from git://github.com/mikolalysenko/functional-red-black-tree.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2013 Mikola Lysenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: glob. A copy of the source code may be downloaded from git://github.com/isaacs/node-glob.git. This software contains the following license and notice below: + +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +## Glob Logo + +Glob's logo created by Tanya Brassie , licensed +under a Creative Commons Attribution-ShareAlike 4.0 International License +https://creativecommons.org/licenses/by-sa/4.0/ + +----- + +The following software may be included in this product: glob-parent. A copy of the source code may be downloaded from https://github.com/gulpjs/glob-parent.git. This software contains the following license and notice below: + +The ISC License + +Copyright (c) 2015, 2019 Elan Shanker + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: globals, import-fresh, strip-json-comments. A copy of the source code may be downloaded from https://github.com/sindresorhus/globals.git (globals), https://github.com/sindresorhus/import-fresh.git (import-fresh), https://github.com/sindresorhus/strip-json-comments.git (strip-json-comments). This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: has-symbols. A copy of the source code may be downloaded from git://github.com/inspect-js/has-symbols.git. This software contains the following license and notice below: + +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: husky. A copy of the source code may be downloaded from git+https://github.com/typicode/husky.git. This software contains the following license and notice below: + +License Zero Parity 7.0.0 (see LICENSE-PARITY file) and MIT (contributions, see LICENSE-MIT file) with exception License Zero Patron 1.0.0 (see LICENSE-PATRON file) + +----- + +The following software may be included in this product: inflight. A copy of the source code may be downloaded from https://github.com/npm/inflight.git. This software contains the following license and notice below: + +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: inherits. A copy of the source code may be downloaded from git://github.com/isaacs/inherits. This software contains the following license and notice below: + +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: ini, isexe, lru-cache, minimatch, once, rimraf, semver, which, wrappy, yallist. A copy of the source code may be downloaded from git://github.com/isaacs/ini.git (ini), git+https://github.com/isaacs/isexe.git (isexe), git://github.com/isaacs/node-lru-cache.git (lru-cache), git://github.com/isaacs/minimatch.git (minimatch), git://github.com/isaacs/once (once), git://github.com/isaacs/rimraf.git (rimraf), https://github.com/npm/node-semver (semver), git://github.com/isaacs/node-which.git (which), https://github.com/npm/wrappy (wrappy), git+https://github.com/isaacs/yallist.git (yallist). This software contains the following license and notice below: + +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +----- + +The following software may be included in this product: is-boolean-object, is-number-object, is-string. A copy of the source code may be downloaded from git://github.com/ljharb/is-boolean-object.git (is-boolean-object), git://github.com/inspect-js/is-number-object.git (is-number-object), git://github.com/ljharb/is-string.git (is-string). This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: is-extglob. A copy of the source code may be downloaded from https://github.com/jonschlinkert/is-extglob.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014-2016, Jon Schlinkert + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: is-glob. A copy of the source code may be downloaded from https://github.com/micromatch/is-glob.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: js-tokens. A copy of the source code may be downloaded from https://github.com/lydell/js-tokens.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: js-yaml. A copy of the source code may be downloaded from https://github.com/nodeca/js-yaml.git. This software contains the following license and notice below: + +(The MIT License) + +Copyright (C) 2011-2015 by Vitaly Puzrin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: leprechaun. A copy of the source code may be downloaded from git@github.com:websperts/leprechaun.git. This software contains the following license and notice below: + +Copyright (c) 2016 websperts + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: levn, optionator, prelude-ls, type-check. A copy of the source code may be downloaded from git://github.com/gkz/levn.git (levn), git://github.com/gkz/optionator.git (optionator), git://github.com/gkz/prelude-ls.git (prelude-ls), git://github.com/gkz/type-check.git (type-check). This software contains the following license and notice below: + +Copyright (c) George Zahariev + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: linkify-it. A copy of the source code may be downloaded from https://github.com/markdown-it/linkify-it.git. This software contains the following license and notice below: + +Copyright (c) 2015 Vitaly Puzrin. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: lodash, lodash.merge. A copy of the source code may be downloaded from https://github.com/lodash/lodash.git (lodash), https://github.com/lodash/lodash.git (lodash.merge). This software contains the following license and notice below: + +Copyright OpenJS Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + +----- + +The following software may be included in this product: lodash.clonedeep, lodash.flatten, lodash.snakecase, lodash.truncate. A copy of the source code may be downloaded from https://github.com/lodash/lodash.git (lodash.clonedeep), https://github.com/lodash/lodash.git (lodash.flatten), https://github.com/lodash/lodash.git (lodash.snakecase), https://github.com/lodash/lodash.git (lodash.truncate). This software contains the following license and notice below: + +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + +----- + +The following software may be included in this product: markdown-it. A copy of the source code may be downloaded from https://github.com/markdown-it/markdown-it.git. This software contains the following license and notice below: + +Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: markdownlint. A copy of the source code may be downloaded from https://github.com/DavidAnson/markdownlint.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015-2021 David Anson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: mdurl. A copy of the source code may be downloaded from https://github.com/markdown-it/mdurl.git. This software contains the following license and notice below: + +Copyright (c) 2015 Vitaly Puzrin, Alex Kocharin. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- + +.parse() is based on Joyent's node.js `url` code: + +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +----- + +The following software may be included in this product: ms. A copy of the source code may be downloaded from https://github.com/zeit/ms.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: nconf. A copy of the source code may be downloaded from http://github.com/flatiron/nconf.git. This software contains the following license and notice below: + +Copyright (C) 2011 Charlie Robbins and the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: prettier. A copy of the source code may be downloaded from https://github.com/prettier/prettier.git. This software contains the following license and notice below: + +Copyright © James Long and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: progress. A copy of the source code may be downloaded from git://github.com/visionmedia/node-progress. This software contains the following license and notice below: + +(The MIT License) + +Copyright (c) 2017 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: require-from-string. A copy of the source code may be downloaded from https://github.com/floatdrop/require-from-string.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: slice-ansi. A copy of the source code may be downloaded from https://github.com/chalk/slice-ansi.git. This software contains the following license and notice below: + +MIT License + +Copyright (c) DC +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: sprintf-js. A copy of the source code may be downloaded from https://github.com/alexei/sprintf.js.git. This software contains the following license and notice below: + +Copyright (c) 2007-2014, Alexandru Marasteanu +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of this software nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: table. A copy of the source code may be downloaded from https://github.com/gajus/table. This software contains the following license and notice below: + +Copyright (c) 2018, Gajus Kuizinas (http://gajus.com/) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Gajus Kuizinas (http://gajus.com/) nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL ANUARY BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +The following software may be included in this product: type-fest. A copy of the source code may be downloaded from https://github.com/sindresorhus/type-fest.git. This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https:/sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: uc.micro. A copy of the source code may be downloaded from https://github.com/markdown-it/uc.micro.git. This software contains the following license and notice below: + +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: uri-js. A copy of the source code may be downloaded from http://github.com/garycourt/uri-js. This software contains the following license and notice below: + +Copyright 2011 Gary Court. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court. + +----- + +The following software may be included in this product: v8-compile-cache. A copy of the source code may be downloaded from https://github.com/zertosh/v8-compile-cache.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2019 Andres Suarez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +----- + +The following software may be included in this product: window-size. A copy of the source code may be downloaded from https://github.com/jonschlinkert/window-size.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2015, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: word-wrap. A copy of the source code may be downloaded from https://github.com/jonschlinkert/word-wrap.git. This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: y18n. A copy of the source code may be downloaded from git@github.com:yargs/y18n.git. This software contains the following license and notice below: + +Copyright (c) 2015, Contributors + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +----- + +The following software may be included in this product: yaml-lint. A copy of the source code may be downloaded from git://github.com/rasshofer/yaml-lint.git. This software contains the following license and notice below: + +Copyright (c) 2018 Thomas Rasshofer + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +----- + +The following software may be included in this product: yargs. A copy of the source code may be downloaded from http://github.com/bcoe/yargs.git. This software contains the following license and notice below: + +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +----- + +The following software may be included in this product: yarn. A copy of the source code may be downloaded from https://github.com/yarnpkg/yarn.git. This software contains the following license and notice below: + +BSD 2-Clause License + +For Yarn software + +Copyright (c) 2016-present, Yarn Contributors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 52e80f2b..4ecf8228 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,4 @@ + # Contributor Covenant Code of Conduct ## Our Pledge @@ -69,9 +70,9 @@ members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +available at [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee44c105..fccf6a37 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,5 @@ -## Contributing + +# Contributing [fork]: https://github.com/erlef/setup-beam/fork [pr]: https://github.com/erlef/setup-beam/compare diff --git a/LICENSE.md b/LICENSE.md index 5cff7b9e..8f601513 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,5 @@ -The MIT License (MIT) + +# The MIT License (MIT) Copyright (c) 2019 GitHub, Inc. and contributors @@ -18,4 +19,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/MATCHER_NOTICE.md b/MATCHER_NOTICE.md index 16567b1e..08466c92 100644 --- a/MATCHER_NOTICE.md +++ b/MATCHER_NOTICE.md @@ -1,3 +1,5 @@ +# Matchers + Problem matchers in [elixir.json](.github/elixir.json) are adapted from [here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118), available under the [MIT license](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/LICENSE.md): diff --git a/README.md b/README.md index 6c0b119b..79c870fa 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,32 @@ -# setup-beam + +# setup-beam [![GitHub Actions Test][test-img]][test] [![GitHub Actions CI][ci-img]][ci] -[![](https://github.com/erlef/setup-beam/workflows/Test/badge.svg)](https://github.com/erlef/setup-beam/actions) -[![](https://github.com/erlef/setup-beam/workflows/Licensed/badge.svg)](https://github.com/erlef/setup-beam/actions) +[test]: https://github.com/erlef/setup-beam +[test-img]: https://github.com/erlef/setup-beam/workflows/test/badge.svg +[ci]: https://github.com/erlef/setup-beam +[ci-img]: https://github.com/erlef/setup-beam/workflows/ci/badge.svg -This action sets up an Elixir environment for use in a GitHub Actions +This action sets up an Erlang/OTP environment for use in a GitHub Actions workflow by: -- Installing OTP -- Installing Elixir +- installing Erlang/OTP +- optionally, installing Elixir +- optionally, installing `rebar3` -**Note** Currently, this action currently only supports Actions' `ubuntu-` runtimes. +**Note** Currently, this action only supports Actions' `ubuntu-` runtimes. ## Usage See [action.yml](action.yml). -**Note** The OTP release version specification is [relatively +**Note** The Erlang/OTP release version specification is [relatively complex](http://erlang.org/doc/system_principles/versions.html#version-scheme). -For best results, we recommend specifying exact OTP and Elixir versions. +For best results, we recommend specifying exact Erlang/OTP, Elixir versions, and +`rebar3` versions. However, values like `22.x` are also accepted, and we attempt to resolve them according to semantic versioning rules. -Additionally, it is recommended that one specifies OTP and Elixir versions +Additionally, it is recommended that one specifies Erlang/OTP, Elixir and `rebar3` versions using YAML strings, as these examples do, so that numbers like `23.0` don't end up being parsed as `23`, which is not equivalent. @@ -29,7 +34,7 @@ For pre-release Elixir versions, such as `1.11.0-rc.0`, use the full version specifier (`1.11.0-rc.0`). Pre-release versions are opt-in, so `1.11.x` will not match a pre-release. -### Basic example +### Basic example (Elixir) ```yaml on: push @@ -47,7 +52,24 @@ jobs: - run: mix test ``` -### Matrix example +### Basic example (`rebar3`) + +```yaml +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: erlef/setup-beam@v1 + with: + otp-version: '22.2' + rebar3-version: '3.14.2' + - run: rebar3 ct +``` + +### Matrix example (Elixir) ```yaml on: push @@ -70,6 +92,28 @@ jobs: - run: mix test ``` +### Matrix example (`rebar3`) + +```yaml +on: push + +jobs: + test: + runs-on: ubuntu-latest + name: Erlang/OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}} + strategy: + matrix: + otp: ['20.3', '21.3', '22.2'] + rebar3: ['3.14.1', '3.14.3'] + steps: + - uses: actions/checkout@v2 + - uses: erlef/setup-beam@v1 + with: + otp-version: ${{matrix.otp}} + rebar3-version: ${{matrix.rebar3}} + - run: rebar3 ct +``` + ### Phoenix example ```yaml diff --git a/__tests__/builds.txt b/__tests__/builds.txt deleted file mode 100644 index 3c118d0d..00000000 --- a/__tests__/builds.txt +++ /dev/null @@ -1,313 +0,0 @@ -master d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:12:57Z a8ca8155a9b4b6ec1d60454f9032a29d4b95afa782984e3ed783c5f242541090 -master-otp-21 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:12:48Z a8ca8155a9b4b6ec1d60454f9032a29d4b95afa782984e3ed783c5f242541090 -master-otp-22 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:11:25Z 917d5856e50670c8670e60fcbaddd74aa207e7cb60a91fe5f7d62959db1161de -master-otp-23 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:09:48Z 80af5358209cdc3c8321c3852e962957fd3e63a22b1da13f56a3f1571ecb1e7e -v0.12.4 543dfdeac80cfaf3483927c189cf9974f1e361eb 2016-06-02T12:43:53Z -v0.12.5 b07fbcf8b73e9353cc336107050a8aac5fdabd11 2016-06-02T12:42:56Z -v0.13.0 ada53524caa6ea27ffaa1a373f5c86bd6cadb0d5 2016-06-02T12:42:00Z -v0.13.1 c03d42b0ccf38b31dcaef0cb7e9ea8851cb39907 2016-06-02T12:41:00Z -v0.13.2 7a24767137c596a84014a0ed1a8dde64e45f9666 2016-06-02T12:40:00Z -v0.13.3 3c48099718cd718d25527875a407cc842cf72565 2016-06-02T12:39:01Z -v0.14.0 9cff61493e9e3626e8d243dfe8aec07230a7fe73 2016-06-02T12:38:04Z -v0.14.1 22f3a50ebabfefd36be1a8472c8b78257df6affa 2016-03-07T22:22:53Z -v0.14.2 44b04120425c83984c867ee6b06974b7c139ba52 2016-03-07T22:22:53Z -v0.14.3 82535feb90ba1a27ad12b9389d86b11b8311a618 2016-06-02T12:36:35Z -v0.15.0 2f2a52a64874a0a5b6d5c1fab812a80e94d982bc 2016-06-02T12:35:36Z -v0.15.1 a54d9212b89da61ec0dd4227ed24e59f37738fe5 2016-06-02T12:34:37Z -v1.0 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:13:41Z 0fccc644156e18ff02c8fe0fa6d3b5ee085b05ecc956ae93151ea938d2d0297b -v1.0-otp-17 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:13:35Z 0fccc644156e18ff02c8fe0fa6d3b5ee085b05ecc956ae93151ea938d2d0297b -v1.0-otp-18 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:12:48Z a3d53f5001261eca9c976b911f3ece7b0d32ec45029975781c1b67f0511eb216 -v1.0.0 52ff7e96867c027745d29f5d3feb77f546f22c4f 2017-06-26T04:08:29Z -v1.0.0-otp-17 52ff7e96867c027745d29f5d3feb77f546f22c4f 2017-06-26T04:08:31Z -v1.0.0-rc1 5b4497fa6b2da7831418cf1307248dc73b4ee34b 2017-06-26T04:12:30Z -v1.0.0-rc1-otp-17 5b4497fa6b2da7831418cf1307248dc73b4ee34b 2017-06-26T04:12:32Z -v1.0.0-rc2 8931f345826b71056ab3df0fba7dbb1b9c3bce25 2017-06-26T04:10:30Z -v1.0.0-rc2-otp-17 8931f345826b71056ab3df0fba7dbb1b9c3bce25 2017-06-26T04:10:32Z -v1.0.1 89460154bb1ab3faa9a7aad4a1edc621cc35d1de 2017-06-26T04:06:28Z -v1.0.1-otp-17 89460154bb1ab3faa9a7aad4a1edc621cc35d1de 2017-06-26T04:06:30Z -v1.0.2 34df8176385200d483ab483a973c498ffa62e580 2017-06-26T04:04:26Z -v1.0.2-otp-17 34df8176385200d483ab483a973c498ffa62e580 2017-06-26T04:04:28Z -v1.0.3 307675284cfde2e2e3ff4b868ff5c2253dac3936 2017-06-26T04:02:25Z -v1.0.3-otp-17 307675284cfde2e2e3ff4b868ff5c2253dac3936 2017-06-26T04:02:27Z -v1.0.4 e02d7bf913f3e5ea8c9e49648e69324ec5c65919 2020-03-25T22:13:16Z 64aa83a5f82a36f451e692f2abb080756056b141e45a088546610182916aab1e -v1.0.4-otp-17 e02d7bf913f3e5ea8c9e49648e69324ec5c65919 2020-03-25T22:13:10Z 64aa83a5f82a36f451e692f2abb080756056b141e45a088546610182916aab1e -v1.0.5 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2020-03-25T22:13:18Z 7fab3ebec908087824c94e9a9d2606aa83793d98737a5389e737aad71d1b6d5b -v1.0.5-otp-17 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2020-03-25T21:25:52Z fb980bd05a63a3d419fc56235c52dbef96bcd91b559da523a12f92e352d49719 -v1.0.5-otp-18 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2018-11-25T23:13:38Z -v1.1 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T22:14:09Z 085c6bfbce870870741cbdbf4917e3785b54bd804749955052d8875857847652 -v1.1-otp-17 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T22:14:03Z 085c6bfbce870870741cbdbf4917e3785b54bd804749955052d8875857847652 -v1.1-otp-18 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T21:25:40Z 3989ccea818ce8da9d355f9b3080780cd1c0fc03b51a2d0bb47673250bae4504 -v1.1.0 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T21:27:07Z de44f8b3b3969d2fd280a50f4f96a8f2b7249037a696d6c2214d50b4e3b9adb9 -v1.1.0-otp-17 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T22:14:20Z a0b5ff7c507881f6557c86686574c046b5bd67cddf2fedfc82cd5d9c8176ed0b -v1.1.0-otp-18 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T22:13:27Z e767678a166e0799792321073f53ac9655d120e8fa0a5a789af6832356c53755 -v1.1.0-rc.0 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T21:27:09Z 205c018fd2b0a4ebd4fa00a43b68cf2222aba43ab06fc07eeda98c0058a3d6d6 -v1.1.0-rc.0-otp-17 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T22:14:30Z 9a5674bfc64bc7236436c097d99aafce02c83ec926d58854a1f175284f271648 -v1.1.0-rc.0-otp-18 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T22:13:38Z 81a3be6e2711a66c90676ad0029ee305430e7c9384901857a1ec9047aea30235 -v1.1.1 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:14:44Z 61c3ebc971aecfe8624ff819ab7b2e7a7802a867f2ec5407c9827d879521b866 -v1.1.1-otp-17 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:14:38Z 61c3ebc971aecfe8624ff819ab7b2e7a7802a867f2ec5407c9827d879521b866 -v1.1.1-otp-18 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:13:44Z bdfa8f86fc0ca296c045b67d6c7d9a7b25f3dddcb2388c066dddfe03e231a0aa -v1.10 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:41:39Z 4de78cc0d7ae93146912a6866070a19caddb18ed5766babf50432de05f1f670c -v1.10-otp-21 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:41:34Z 4de78cc0d7ae93146912a6866070a19caddb18ed5766babf50432de05f1f670c -v1.10-otp-22 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:40:30Z 53bae3f6816383278ec2b85324f5c55df0d3e9c9ac260e9d8f7fc18e184e6e23 -v1.10-otp-23 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:39:13Z 17785f8d823baca46daec4a1c61dc846eee86fc89497b50777d819dd54ff5ac5 -v1.10.0 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:15:30Z 15e0f608cde3757a7a2e44f3683dd3ec5f184cd76cfa43366467f9d3556870ce -v1.10.0-otp-21 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:15:23Z 15e0f608cde3757a7a2e44f3683dd3ec5f184cd76cfa43366467f9d3556870ce -v1.10.0-otp-22 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:14:28Z b0c1f9bcddba50dc39e63b16e2df38a0fef74995d29bc47084ffb6ad5bd7b533 -v1.10.0-rc.0 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:16:49Z 8e6aec5f0c2bcf8c08451af20cfc0e61e0e484561e68a0e5f42eb8d6c99727d1 -v1.10.0-rc.0-otp-21 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:16:31Z 8e6aec5f0c2bcf8c08451af20cfc0e61e0e484561e68a0e5f42eb8d6c99727d1 -v1.10.0-rc.0-otp-22 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:15:26Z 3e6d407075290902b220c18726da4a785623e57dee620f414a8cefead34e1c01 -v1.10.1 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T22:16:45Z 70adaff3b66377251aa8687087fa589981336371dd80d134e57abc39b6788a7c -v1.10.1-otp-21 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T21:29:16Z ee33314dad3ab8be426bcc2c77eaff7713fe03306b2d92b53dc0618d29a82ee7 -v1.10.1-otp-22 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T22:15:35Z 8aba1324a382eded4dc614fad5d21f9af63d46a0f60b0834369868fa10b3402f -v1.10.2 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:17:19Z dd23b5b2f78860de341b7fbeae0f4e8b681dca971036e1546ba86d04852b9097 -v1.10.2-otp-21 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:17:06Z dd23b5b2f78860de341b7fbeae0f4e8b681dca971036e1546ba86d04852b9097 -v1.10.2-otp-22 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:16:15Z 58616d0a492f9375d6e892200bf3d7618e5021a7a639620595b570a52973eac1 -v1.10.3 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:54Z c9b6ebc81bed67be4eeac420b3d4c8d727f69caf23103ce65d9d0795eab50aec -v1.10.3-otp-21 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:48Z c9b6ebc81bed67be4eeac420b3d4c8d727f69caf23103ce65d9d0795eab50aec -v1.10.3-otp-22 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:03Z db294219b295b1b24e7f7b5f8a133851f84f3eb175f73a7f43dbfa55e05af3fb -v1.10.3-otp-23 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:08:09Z ef567be0c939211a21843a39dfdec3f870328e3ef9fb2695c0aa8a2d37b50d96 -v1.10.4 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:01:41Z e780a224631e029b3eee675ef251d01fc0f29bf550027cd0e93c2dbeeb8f4da8 -v1.10.4-otp-21 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:01:36Z e780a224631e029b3eee675ef251d01fc0f29bf550027cd0e93c2dbeeb8f4da8 -v1.10.4-otp-22 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:00:35Z ab49b0e07cac98cf8e73168be359b6ec3e6e7f6357be1407e31d7d823ca9e97c -v1.10.4-otp-23 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T11:59:26Z ebe895088bdfdf6d156f090f3ec4c939265ce2ebe3868886832ddeb7f8f3aba1 -v1.11 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:27:05Z 20bc4ecf1fb7256f16081abc8c05a25b7fdebc89e7c6769e9fb80bee2f39a621 -v1.11-otp-21 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:26:58Z 20bc4ecf1fb7256f16081abc8c05a25b7fdebc89e7c6769e9fb80bee2f39a621 -v1.11-otp-22 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:25:35Z 4b5d7096f3a83ce9ee267c8f68f9d706da903958a5bf75a2c23f640caa05fe31 -v1.11-otp-23 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:24:03Z 7e2480c562ea3d7a15b82985b114668cdd8dbb8e00e819070a41c45ac79cd4a7 -v1.11.0-rc.0 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:57:02Z ff64bb368e07ba6b6c4434c36b8de89a4fbfac70e01a1e087c48a4e8eddf8b3a -v1.11.0-rc.0-otp-21 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:56:53Z ff64bb368e07ba6b6c4434c36b8de89a4fbfac70e01a1e087c48a4e8eddf8b3a -v1.11.0-rc.0-otp-22 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:55:50Z 6874ed67a30ec4e4ba8d9332d3833a0f0d68ebcd4fe3cd6e5992741384c888a4 -v1.11.0-rc.0-otp-23 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:54:36Z 171229bade46586771d05a18e489002d57cbe7b9a41640c3802ca07f5bff87d6 -v1.2 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T22:16:42Z 9bc461faad6f92f10f09e5d3b61b216dc4b28122cdae3a28b3bbfac8a693160f -v1.2-otp-18 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T22:16:36Z 9bc461faad6f92f10f09e5d3b61b216dc4b28122cdae3a28b3bbfac8a693160f -v1.2-otp-19 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T21:28:02Z b2d2fb4fa365d848ee6c8fabe11b72376a57bfeb9d2fc3c0067ce3e7c0a94c88 -v1.2.0 b1344724b695a9a474d73d4633c5a151f1a7d61d 2020-03-25T22:16:11Z 44f2a639ed3ffbae7489c4e229370b205014c9495a674d2bda23463a802de49d -v1.2.0-otp-18 b1344724b695a9a474d73d4633c5a151f1a7d61d 2020-03-25T22:16:04Z 44f2a639ed3ffbae7489c4e229370b205014c9495a674d2bda23463a802de49d -v1.2.0-rc.0 a2860b32a3cc8f543406b582fc583185c8c31e5c 2017-06-26T03:35:19Z -v1.2.0-rc.0-otp-18 a2860b32a3cc8f543406b582fc583185c8c31e5c 2017-06-26T03:36:45Z -v1.2.0-rc.1 211a1299cc033debf9a00fc5ac5f4d4e1eb4d6a7 2017-06-26T03:32:52Z -v1.2.0-rc.1-otp-18 211a1299cc033debf9a00fc5ac5f4d4e1eb4d6a7 2017-06-26T03:34:19Z -v1.2.1 a3d88dc406ca9642bcabf375db7f74f2cc6a751d 2020-03-25T22:16:38Z fc9d9c833d5cbcb49dba0a5d567c40c27bd9c39478f3712c0a5e738b96e4b53a -v1.2.1-otp-18 a3d88dc406ca9642bcabf375db7f74f2cc6a751d 2018-11-25T23:39:21Z -v1.2.2 9decf4c78a911bc1375891bb65fbf2e50fcedeb8 2020-03-25T22:17:12Z 8f0010f5924d5e8d1e42e907c85e662a7d0c41d33d92cf2c0c7c40b5d5190e44 -v1.2.2-otp-18 9decf4c78a911bc1375891bb65fbf2e50fcedeb8 2020-03-25T21:29:41Z 6699e120159a17c7e06e2ad4b5ce3fb6741d68cf43c9153c51e3ef00b3b1cb58 -v1.2.3 737ac62926db7a692e2fe67c27b696cfd0866674 2020-03-25T22:17:23Z 7513357020d13813ac09f1b4abaf825df62936f95e8ea33224a9719b88423bb7 -v1.2.3-otp-18 737ac62926db7a692e2fe67c27b696cfd0866674 2020-03-25T22:17:17Z 7513357020d13813ac09f1b4abaf825df62936f95e8ea33224a9719b88423bb7 -v1.2.4 17e8dbbf16c08dff0ded22c37ae80a37f99ff99a 2020-03-25T22:17:34Z 485cf049c609a33dd3f7f49842ea1d23b6ee41170e7e148a65feded33e4ec3c6 -v1.2.4-otp-18 17e8dbbf16c08dff0ded22c37ae80a37f99ff99a 2020-03-25T22:17:27Z 485cf049c609a33dd3f7f49842ea1d23b6ee41170e7e148a65feded33e4ec3c6 -v1.2.5 e5374cf5d3beb510a0fdeddd0f8b89e8e26445ef 2020-03-25T22:17:43Z 1e583f13c332082e58b1b9c4d183c161c95623924606d1673dd260d9d52ecef0 -v1.2.5-otp-18 e5374cf5d3beb510a0fdeddd0f8b89e8e26445ef 2020-03-25T22:17:37Z 1e583f13c332082e58b1b9c4d183c161c95623924606d1673dd260d9d52ecef0 -v1.2.6 3dbfb92860fb24f83c92e1f1b67f48554fb211d6 2020-03-25T22:18:06Z a9a29ba0b872be92aee79f221bd5cfcccbe242edf298df04940004b211b75332 -v1.2.6-otp-18 3dbfb92860fb24f83c92e1f1b67f48554fb211d6 2020-03-25T22:17:59Z a9a29ba0b872be92aee79f221bd5cfcccbe242edf298df04940004b211b75332 -v1.3 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:19:45Z 971b9b3ec0fe6aba8811f675bfb44f13b1be97439e2b959dba3941dbf6b04ba4 -v1.3-otp-18 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:19:38Z 971b9b3ec0fe6aba8811f675bfb44f13b1be97439e2b959dba3941dbf6b04ba4 -v1.3-otp-19 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:18:42Z 3b1eb45ad96b573db97759931e120f78e1ac35983da14bc1ace8e9e4821e6a7b -v1.3.0 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T22:20:09Z 10f3755e1575b85e364db5120d53ac72d1e7af66cc86d46874a035d142ff14b5 -v1.3.0-otp-18 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T22:20:02Z 10f3755e1575b85e364db5120d53ac72d1e7af66cc86d46874a035d142ff14b5 -v1.3.0-otp-19 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T21:41:57Z 0dde36e034c35af1b3d51db86616800619f6e455d3c5410dd7daa36ec23f0972 -v1.3.0-rc.0 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T22:20:16Z 4f8a004a6e6f97d8a27044ff45f0a149728fbb6d6c839e6af4122bb3b2bf866e -v1.3.0-rc.0-otp-18 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T21:32:26Z beacc2e95f1d4a5af290bbeef031f328fb0df4dabd95215fe1df9aebcd16a47b -v1.3.0-rc.0-otp-19 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T22:18:50Z b5b32c2c920038f50a8037d51722f83364026cdfb4a14e6c6c0f7add18e55878 -v1.3.0-rc.1 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:19:57Z 583b9f1bbfc650784fcd9f9a2930a5ea077a05262112aad2c983ef25d390c428 -v1.3.0-rc.1-otp-18 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:19:50Z 583b9f1bbfc650784fcd9f9a2930a5ea077a05262112aad2c983ef25d390c428 -v1.3.0-rc.1-otp-19 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:18:52Z 3d9a9441319c1cbe749833fce2ff5d057676ecebb98d371c1c4a1bf9cad4ad46 -v1.3.1 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:20:24Z 75b8c766c25873ab49e217bfa74b680c0f1630b28ad59b6cddca29fe549b87da -v1.3.1-otp-18 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:20:18Z 75b8c766c25873ab49e217bfa74b680c0f1630b28ad59b6cddca29fe549b87da -v1.3.1-otp-19 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:19:17Z e40938de58f10ad2b436eaae5725239ae06bd0d8416aa05d58b3970603488fd3 -v1.3.2 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:20:27Z 32b7542ab3fffd51422bc44721f878e82a23ec6d11ae798805e1c52717f8566a -v1.3.2-otp-18 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:20:20Z 32b7542ab3fffd51422bc44721f878e82a23ec6d11ae798805e1c52717f8566a -v1.3.2-otp-19 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:19:21Z 3a0095634b1ba86156c0cec4d07eacebad9185eb57507a6ecf3e4a94769cf685 -v1.3.3 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T22:20:43Z a68a1fdec897290d816cb265fe66588e8345f23f53254d954be266edad4e0c59 -v1.3.3-otp-18 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T21:33:07Z 535fc67015404e21326f9aa55f8866a416ae6a5cfe65dc9ddd2885d8abdde3d2 -v1.3.3-otp-19 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T22:19:29Z 3ae582c46d95c22c724df9a4f617684c277737d8ac82f154ce718baed20726bd -v1.3.4 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:20:46Z 1c3048f9de5f645c4f393201a15c403924886dc18690c36abbeb48aa342cc952 -v1.3.4-otp-18 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:20:37Z 1c3048f9de5f645c4f393201a15c403924886dc18690c36abbeb48aa342cc952 -v1.3.4-otp-19 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:19:40Z fc55e25dae9eb99db14bcf73952274db99467cbde17d7084232e4cc444e9e57d -v1.4 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:22:08Z 73b9d87a2d83a447ee13f78469fa0cb477691b5a7c580b6b1e8543ded0d74740 -v1.4-otp-18 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:22:02Z 73b9d87a2d83a447ee13f78469fa0cb477691b5a7c580b6b1e8543ded0d74740 -v1.4-otp-19 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:21:01Z 30da8426d030698c54ce18ab7388224eee9873ea05d84314ca07b8e9a20ce98c -v1.4-otp-20 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:19:59Z 3aa8e74da72590a059a106dbbc0ecfa8cdcaae0de947296a2758d29d6898334c -v1.4.0 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T22:21:20Z 3b215e4caa0346086e05bd687b8e6d24429cee2f33738be5acbce34eb42ee961 -v1.4.0-otp-18 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T22:21:14Z 3b215e4caa0346086e05bd687b8e6d24429cee2f33738be5acbce34eb42ee961 -v1.4.0-otp-19 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T21:33:02Z c6a69b98a6a337a778888a2ca525cbc68e1323e2eee9a66126d3703df7a3cb69 -v1.4.0-rc.0 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T21:35:09Z 73e665879a38ebe9ac2f9e01151d824fabb346c972153c55c6a51a15d77dfd0a -v1.4.0-rc.0-otp-18 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2018-11-26T00:18:02Z -v1.4.0-rc.0-otp-19 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T22:22:35Z 6465652089273611d4b30956cf805368dc7f98251ff97f2f4260aa92f5559040 -v1.4.0-rc.0-otp-20 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T22:21:44Z d19b14c98892750c03274862e4ae9bacc4e5541762acecb069e1e2b3998bec61 -v1.4.0-rc.1 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:24:04Z c7f8f78eb2e61fc664b3827c112b0019a26415147bf46942b048647b37f164e1 -v1.4.0-rc.1-otp-18 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:23:57Z c7f8f78eb2e61fc664b3827c112b0019a26415147bf46942b048647b37f164e1 -v1.4.0-rc.1-otp-19 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:22:58Z 709696973ae7f81a3cdc4fd6438981f67988ef26fe1481dc63fda29985d6a66f -v1.4.0-rc.1-otp-20 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:21:58Z d847e27bdbbd6ecff6f6e94d9087b31a57eaf2822a38b6af87e81beea3e9b1de -v1.4.1 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:23:21Z 9398a8fbd4c64bbde76cbc179f2837ba6815a9d60fdca49fe43cd86c70ed0fcb -v1.4.1-otp-18 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:23:14Z 9398a8fbd4c64bbde76cbc179f2837ba6815a9d60fdca49fe43cd86c70ed0fcb -v1.4.1-otp-19 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:22:15Z fc54fa404028f712a135db14d9cf8d6bcec505cae020dc1c60db92f22b43a93f -v1.4.2 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:24:08Z bb6b153387177a6e440b385420ce20e6017d05170fff681f0d23c7fba82fca1b -v1.4.2-otp-18 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:24:02Z bb6b153387177a6e440b385420ce20e6017d05170fff681f0d23c7fba82fca1b -v1.4.2-otp-19 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:22:42Z 88a6afd1d9c7d0a2c60e2c24be439942568f6ab2a4bc507fd3831865188efe8d -v1.4.3 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:23:39Z b2313b3e4efb2841d2c3c7cd34fc03cae85366ca9e7a2f56e4eca836811f2177 -v1.4.3-otp-18 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:23:33Z b2313b3e4efb2841d2c3c7cd34fc03cae85366ca9e7a2f56e4eca836811f2177 -v1.4.3-otp-19 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:22:31Z da40d1f7aaa389b6366ad3fbd0fc622caa70081f30b0dcbc5820eb57fd3e13ea -v1.4.4 867da6f876c48279823a41a33030c95ef37379b2 2020-03-25T22:23:43Z c1f13c7b6f46bb82928a1545a2980c93f4f32c5065d172b18d978913e39aec57 -v1.4.4-otp-18 867da6f876c48279823a41a33030c95ef37379b2 2020-03-25T22:23:36Z c1f13c7b6f46bb82928a1545a2980c93f4f32c5065d172b18d978913e39aec57 -v1.4.4-otp-19 867da6f876c48279823a41a33030c95ef37379b2 2019-01-11T13:10:55Z -v1.4.5 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:24:53Z a52e8962a2856887e8401ea3868c35f9811d2584bebe0e1e2243242f5bf208ee -v1.4.5-otp-18 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:24:46Z a52e8962a2856887e8401ea3868c35f9811d2584bebe0e1e2243242f5bf208ee -v1.4.5-otp-19 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:23:46Z 16351a7334cfb840b5be0be854c95c3092425463da7bd97509dfc0d964d3ece8 -v1.4.5-otp-20 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:22:45Z 8b3c151e66b2ba79786aad6dd83a2b6f846cf6451e361847f0604bbb31a11db3 -v1.5 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:24:25Z 6a1e40830b90883395c84abc7f98a41da33d70e89da841256fdf568c3afcaf42 -v1.5-otp-18 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T21:36:44Z f706fbb55eb5d2dde87d71a69f82176f8d6876e0a3b7471f2c28839169b98cf9 -v1.5-otp-19 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:23:30Z 12c498b581f6cec636d8994195548ac9730aefde3ef9b1d7febc06ffe24a2430 -v1.5-otp-20 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T21:35:04Z f7347176a029cae438d87c87117af3862ce9175514eb69a468ade4bbe37c6e92 -v1.5.0 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:25:26Z 9e1b22e464e70f7d614b91d002d37dbabec2bd1a0ff7ced0578435d69f5b695f -v1.5.0-otp-18 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T21:38:02Z ad69e965bef4d98282a17551cd33350ca0d189c0c35b7ea3f78c9dd36fb221aa -v1.5.0-otp-19 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:24:16Z 5829820f88b2af596c2ed810dbe12cbe02fd5445052ac8338cf2855085eeaa15 -v1.5.0-otp-20 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:23:18Z ca38567d4468fc5463105c87e79886a458404596fad06cf60d9b41ab63b8ae10 -v1.5.0-rc.0 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:26:37Z 3cc7f60e1e1514de2a39b91af1605fc15017a170a1f56649a77cba08792e0693 -v1.5.0-rc.0-otp-18 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T21:38:42Z 8fded176eed47bd6787280f68fe66c57ab34f441cf9d05b1015f605026af133e -v1.5.0-rc.0-otp-19 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:25:25Z ca09faf48cf590bc128fd2a3cb1ea40a53cad9d8f242be7f3ba684b536de86ef -v1.5.0-rc.0-otp-20 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:24:19Z 94dc670c3989970976c951b554d78b235c8d16d434faf398147788c661c3481d -v1.5.0-rc.1 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T21:13:57Z a93294558d96225d89adad8140195e2d037671bbba268f7232cbf9a0c262a75a -v1.5.0-rc.1-otp-18 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T21:13:51Z a93294558d96225d89adad8140195e2d037671bbba268f7232cbf9a0c262a75a -v1.5.0-rc.1-otp-19 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T22:26:30Z 3a77c443c52bad797b527a5042a11800f95204efe6f84ec3d580ea15836db06d -v1.5.0-rc.1-otp-20 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T22:25:17Z 634c5939d546639e1e7535555b40eea9181fed035bc3276f6eb8b7978e7776bb -v1.5.0-rc.2 e5208421b32f197379b26c55bfde22651bea5e1c 2018-11-26T02:09:46Z -v1.5.0-rc.2-otp-18 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T22:27:49Z 4a8f1ac1160d9b0b7d664e23d5beeb1a8fc763ec23b4c50b8ae26bea7ecf053f -v1.5.0-rc.2-otp-19 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T21:12:20Z e813dd6ec6cb5fdd8047e4c663903e32cc36eda50d6f7259596477f41390df41 -v1.5.0-rc.2-otp-20 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T22:25:44Z 5cbab05adcf1953bbd6b56f56c1ba0ca81a4697bcc93d488c8e6b2d6e638cdf9 -v1.5.1 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:27:58Z cae0fcae269ac84e5e67e522dc0bdd857a660fa3e46733a198d9ded465e4fba8 -v1.5.1-otp-18 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:27:51Z cae0fcae269ac84e5e67e522dc0bdd857a660fa3e46733a198d9ded465e4fba8 -v1.5.1-otp-19 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:26:47Z 8109aae79aa6fc175ecf45283309b54697b3d050c38d14250f939b4dcae08696 -v1.5.1-otp-20 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T21:10:55Z b2af6a669a7d62d9e29ca5057393de5531597286812335684c6a826b9b628563 -v1.5.2 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:27:19Z 6376a037205f9de43a520335be42c2475d3576f3da944b998a24082eea359054 -v1.5.2-otp-18 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:27:12Z 6376a037205f9de43a520335be42c2475d3576f3da944b998a24082eea359054 -v1.5.2-otp-19 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:26:22Z 1f72b8efad0e23ed3da34313cc87724b09bd8eb312d544827c07acf5cd9c6a63 -v1.5.2-otp-20 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:25:33Z 972f37c2372d0237eab5efc295f4c79bef958a79ead0c08784bf42e821fc53ba -v1.5.3 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:27:45Z 34e7571a455e5983ca34c846edb323954d89e16ca037bbb68fd8a51d580338b5 -v1.5.3-otp-18 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:27:37Z 34e7571a455e5983ca34c846edb323954d89e16ca037bbb68fd8a51d580338b5 -v1.5.3-otp-19 7340ca2d925297e98dd71528a09bf0fb8634b47f 2018-11-26T02:26:23Z -v1.5.3-otp-20 7340ca2d925297e98dd71528a09bf0fb8634b47f 2018-11-26T02:24:29Z -v1.6 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:27:39Z 81cae25bef08452ceaf734c382c56f710c55ad5c45e1357a39b1dabf47b65d4b -v1.6-otp-19 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:27:31Z 81cae25bef08452ceaf734c382c56f710c55ad5c45e1357a39b1dabf47b65d4b -v1.6-otp-20 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:26:41Z 1b6fe7864287f959d4e1b401679389e44ea8ba97fb91cbc2fda5232630f2cde7 -v1.6-otp-21 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:25:53Z ee2763087170a639d9f5c3b044de81bafdbd717aba11e69db9fe7d94007a8c8e -v1.6.0 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:27:06Z 610e548f35d0a90e0a8d291449d17bbba9d5d1e80509792f5e44aea7bb76ac4c -v1.6.0-otp-19 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:26:58Z 610e548f35d0a90e0a8d291449d17bbba9d5d1e80509792f5e44aea7bb76ac4c -v1.6.0-otp-20 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:26:09Z c09a0a90143abf9a37fce19a1959308fc52d52c461f1a703eae3ee18b616c683 -v1.6.0-rc.0 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:37:44Z -v1.6.0-rc.0-otp-19 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:38:46Z -v1.6.0-rc.0-otp-20 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:39:45Z -v1.6.0-rc.1 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:39:01Z -v1.6.0-rc.1-otp-19 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:40:00Z -v1.6.0-rc.1-otp-20 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:40:58Z -v1.6.1 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:28:09Z f9102f0a90aec8ad2a372a782aedc9ed4c3bd0d6ae391a7cc84cb3fc6c5f133c -v1.6.1-otp-19 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:28:03Z f9102f0a90aec8ad2a372a782aedc9ed4c3bd0d6ae391a7cc84cb3fc6c5f133c -v1.6.1-otp-20 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:27:15Z 679c6d51e6955225b6fd553282f09d003ecdc1b2bcebf3fd3d855034a60419f3 -v1.6.2 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T22:28:44Z c9e1e85acfd362fd1dfe6abb89019b57bf44fc032c982a37fca60ec2ccf0cefa -v1.6.2-otp-19 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T22:28:38Z c9e1e85acfd362fd1dfe6abb89019b57bf44fc032c982a37fca60ec2ccf0cefa -v1.6.2-otp-20 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T21:11:05Z e555433aa78c4c50dc4adcd14f7713f03c8d17ad3bc0db4e8ebbd6cfeca50e85 -v1.6.3 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:29:23Z c33d6c4440838fe1c09e514ff0a907937a5bae5336b424129d8a4375e308bb01 -v1.6.3-otp-19 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:29:16Z c33d6c4440838fe1c09e514ff0a907937a5bae5336b424129d8a4375e308bb01 -v1.6.3-otp-20 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:28:23Z e9b49410f9c2b49464c23e813d1f43303f9199926323d047631c82019423517f -v1.6.4 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T21:15:15Z f4945bf238bb96675c8462c781f520a23025a58311608b4760f0ca71a98dd0e9 -v1.6.4-otp-19 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T22:29:37Z 57f5902d73f55e502fa9f785c7fa76505e649a494bd507fe55ee98356a5d89b7 -v1.6.4-otp-20 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T22:28:47Z 7b09df2473d0b4073fd7612ba3317b578e1a9646955e18cd15807107a0a11dac -v1.6.5 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:56Z d6bf2716030666d4939211d867fad73eabb9fbacd330861a6e325eded452f84d -v1.6.5-otp-19 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:49Z d6bf2716030666d4939211d867fad73eabb9fbacd330861a6e325eded452f84d -v1.6.5-otp-20 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:01Z 1606a442acf49326d6805d9aa0a323fabfb150a27c5cb5de36489d5d759447a5 -v1.6.5-otp-21 a9f1be07ca1a939739bd013f100686c8cf81432a 2018-11-26T02:52:18Z -v1.6.6 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T22:30:57Z 025cb325e1cd9b6823bbd869f1b30f7f0529bef38e52335af5063a292b210a29 -v1.6.6-otp-19 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T22:30:50Z 025cb325e1cd9b6823bbd869f1b30f7f0529bef38e52335af5063a292b210a29 -v1.6.6-otp-20 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T21:14:55Z 25e55384303eaf867722fdfd9ff6ecdd300633a8e35146fa4c90a2f873f1d916 -v1.6.6-otp-21 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2018-11-26T02:57:59Z -v1.7 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:32:27Z 1ecb432fe2fe82a5f4b1287eda09799de1f4544a5cfd451c89544f93b3856b68 -v1.7-otp-19 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:32:19Z 1ecb432fe2fe82a5f4b1287eda09799de1f4544a5cfd451c89544f93b3856b68 -v1.7-otp-20 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:31:26Z feace86783358fe1ccbe5a8b55bfcdaddd64e6a0aef3656ff36c9200b7e8dacb -v1.7-otp-21 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:30:37Z 8535ea645e53e5b1d740fcee364a98e309247a623f28b7b0d281c8cdf518086f -v1.7-otp-22 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:29:45Z 6cdd6a9714a1fc7209e2498936986418c3a145b14e158df5e9e8d762a52fb281 -v1.7.0 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:17:57Z 16f6a0c235c8766fcb3a97ced61c9e3f08df579f7234464827824a9097b59123 -v1.7.0-otp-19 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T22:32:30Z 3f0ce20986311d9d21121d7e6314fb25ffebe520fd9f4b974074caf74dca33e0 -v1.7.0-otp-20 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:16:57Z c9bbf4d7d9a4088644797bae699f10be011ef0a144faa8c48a14aa40e6d2bd05 -v1.7.0-otp-21 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T22:30:45Z ca180626cc6fcd7a6b4c591410d42e68ad3e0007e07ad645a39fb3c2ed66f6ff -v1.7.0-otp-22 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:14:57Z c3fee34257d49ba18fce12dc165bea9f65828969ff2e6acc596c0d8a594237d1 -v1.7.0-rc.0 1164784b8ef25967471c068600301db850de58b3 2020-03-25T21:18:18Z f5d16a2382408acddb1a6d18ee73d0e92ae2eaa0d4adfebf8097723743eea85c -v1.7.0-rc.0-otp-19 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:32:36Z 08dbb2970f9ce6a9c4b246dbc8dd8dcace40d7ce0027772da09fdc8891b112e2 -v1.7.0-rc.0-otp-20 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:31:39Z ea293ca82f093a75ef10a377b3fe75ef5244c60388853bfcfcfebd313f21ced1 -v1.7.0-rc.0-otp-21 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:30:48Z 069a6875b80837e39b879ebc7a614cdc6e3a57d903c1c9c113fbf37a0a001805 -v1.7.0-rc.0-otp-22 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:29:59Z 236dbcc06de39c4c6afb8d72fe8f45e8a260da96aff214e0dfe442108f5bdaac -v1.7.0-rc.1 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:32:49Z 82001fa454804c467dc5d3128273e2f4c51d1529e05ab0dd976c5fbfc810c1c1 -v1.7.0-rc.1-otp-19 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:32:42Z 82001fa454804c467dc5d3128273e2f4c51d1529e05ab0dd976c5fbfc810c1c1 -v1.7.0-rc.1-otp-20 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T21:17:38Z e89ede91c4a824e7b930ad02a0b9c231a0b77cf01f74e122dd72ad29e31f9b99 -v1.7.0-rc.1-otp-21 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:30:59Z 6aa0013c238185014b300016c88f7211a00c5b1b04d3146d4788a7f0e4f2207f -v1.7.0-rc.1-otp-22 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:30:13Z a481cff84a405be9da89721b1ed022f422a45b855d2159266302b3f6f2fa234b -v1.7.1 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2019-05-14T23:45:16Z -v1.7.1-otp-19 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T22:32:44Z b775acc22b7486ee5b0e2a3bb7101206889b4e33d9bb7e5dc734094e949cbfe3 -v1.7.1-otp-20 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T21:17:33Z aa2c20a4e3ac4d2a7767379fa3e185774e7052a969f6595dac4e4d4040e41dd1 -v1.7.1-otp-21 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T21:16:45Z b79f34570ab6ba52b4f0ce6067f6552225f9cc063ffd8d843310d833d7cffeff -v1.7.1-otp-22 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T22:30:09Z 23bb48b55a98a7b47cd58433f6a3c17b6bd18c748ebcb2b32d2f6a90b4057557 -v1.7.2 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:33:25Z bd93d69afaa0ffcb456f158bf785f9b211803e472d5624030877771ba47af2f3 -v1.7.2-otp-19 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:33:18Z bd93d69afaa0ffcb456f158bf785f9b211803e472d5624030877771ba47af2f3 -v1.7.2-otp-20 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T21:17:42Z 1e36d839e8d075e68219944c34b3c90622e0a5698e954c0a22384d412f958509 -v1.7.2-otp-21 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:31:36Z f11f023abdf43cbade64b7f0fef316d361e716bf5274aff3398a1ba97411cb41 -v1.7.2-otp-22 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T21:16:06Z 83d4c728d4526e7a72e423b2cca650d20ef8cf4cd8ceb1da022c900490de964e -v1.7.3 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:33:58Z 358170a282e52728be7402eadd52fdc66419c322548f2c6f0fd717741c86d029 -v1.7.3-otp-19 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:33:51Z 358170a282e52728be7402eadd52fdc66419c322548f2c6f0fd717741c86d029 -v1.7.3-otp-20 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:32:57Z 7df5ddd0b565c6bfe02b743a7338dd095b74228ea44bf71d912d1875a861c442 -v1.7.3-otp-21 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:32:08Z a20a939d8046184ab45b37efba70705cee4c66f73d227578b7e717a4e65bb26a -v1.7.3-otp-22 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:31:22Z c3c8b2cff0bef4c91636cd8335988e808ae2978ed90cc0ea2acd238bf60f22d8 -v1.7.4 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:34:34Z c82b6f34a17fc6f9fba9327e9080d2c44c97e11bf00398db2a5c120ac289671b -v1.7.4-otp-19 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:34:21Z c82b6f34a17fc6f9fba9327e9080d2c44c97e11bf00398db2a5c120ac289671b -v1.7.4-otp-20 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:33:29Z 620b4f6097aaa22421a41bde19c838983b2854aebc429b883342b7f71f8542df -v1.7.4-otp-21 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:32:39Z 2b372cbe7d905f3403bc42b9284ae9b84d2c1f9ee3b847ca6bc416c4d941e44d -v1.7.4-otp-22 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:31:50Z 802ef1addcdfb16408b6b90f9a22c415ae23f5d725e5f5e3101cd196ef3a7b56 -v1.8 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:33:48Z 90a26e9cc5b1cc7e2279dc633ef52e471f8eaaa4ce3263a6e87506427ad3fedc -v1.8-otp-20 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:33:41Z 90a26e9cc5b1cc7e2279dc633ef52e471f8eaaa4ce3263a6e87506427ad3fedc -v1.8-otp-21 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:32:52Z 69def395dc582c762c43267935e07732cddcc7a71a830bb09ce863b49b3d20cc -v1.8-otp-22 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:32:06Z d7532382e69ba14b947a1405fa88cb05de11713673ab106b589958d456d726e3 -v1.8.0 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:34:52Z c08ff8e7affa636b2b0b0769d63c42289691d70cae832bdf97aeff5c931f8f95 -v1.8.0-otp-20 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:34:38Z c08ff8e7affa636b2b0b0769d63c42289691d70cae832bdf97aeff5c931f8f95 -v1.8.0-otp-21 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2019-05-15T02:00:31Z -v1.8.0-otp-22 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:33:03Z 40a1ca4092f367b2200612cfa16f0e1bd0c9ae7a1088a51665681acb6031c94a -v1.8.0-rc.0 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:22:37Z -v1.8.0-rc.0-otp-20 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:22:34Z -v1.8.0-rc.0-otp-21 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:16:16Z -v1.8.0-rc.0-otp-22 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:08:38Z -v1.8.0-rc.1 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T21:21:56Z 794460fe3531805f0a9d1a3ccbecf07fc13df0702002651d308e1ebb3f1a525c -v1.8.0-rc.1-otp-20 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:36:20Z 4743096ed9861d76537c36721c9e198e0efb63536ea05d11cb3c2d50abbacbc6 -v1.8.0-rc.1-otp-21 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:35:32Z f5defae82816a9dfef9f77be83e8d3d9f1b82b750b44825a1bbd58b1f4224c91 -v1.8.0-rc.1-otp-22 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:34:43Z 225ed2da0b5d0d6f8a6ac908d06f1e5c7000bdd32cc7e896fa44bd0fdf9939c8 -v1.8.1 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:36:31Z 36ab446e5db70a7d26bffc065054b4c70f3640c4b8b0387b170543c2cd769cd1 -v1.8.1-otp-20 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T21:22:02Z d9f62778b673791aa2bfeb50821eac0f949243bdc26287b3bbe2227771d78a0a -v1.8.1-otp-21 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:35:35Z 1e145564990957496145884aaed03228c7dc4105473f8bf023f567aedd2191cc -v1.8.1-otp-22 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:34:51Z 3a4aaa68928a5768441577eb9c90ccfc217ecee9be9da2456dde074d93fb2eda -v1.8.2 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:36:35Z c77e0ac5ab0ba5cff5f573cdf711ed9106db788317ab16cacdcf41a93a795d48 -v1.8.2-otp-20 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:36:28Z c77e0ac5ab0ba5cff5f573cdf711ed9106db788317ab16cacdcf41a93a795d48 -v1.8.2-otp-21 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:35:41Z b406265ae842fe8355244150d06c92e01ab1fdc3e985feb59e9bf13452ac9754 -v1.8.2-otp-22 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:34:56Z 570c7b1ab710b9a44326d7badc4254f6e66ce3111a3802f0a162210144260234 -v1.9 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T22:36:56Z 403db3ad4ae9e27272a06c6c95850507fa34dc2b311447f2190e22fa2c901ded -v1.9-otp-20 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T22:36:45Z 403db3ad4ae9e27272a06c6c95850507fa34dc2b311447f2190e22fa2c901ded -v1.9-otp-21 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T21:21:43Z 6d538a3e45b4bee6449d085c53f104a0c9680cb006f15857cd689a2e5e3251d5 -v1.9-otp-22 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T21:20:47Z 80953f1a1cbd8428a3d17042360a0a2c023ea029c2199909df97045f7b962de2 -v1.9.0 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:37:01Z 74808a0308d64f36946dce470b51615117c9933a4454e52d3e25538f243fcfa3 -v1.9.0-otp-20 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:36:55Z 74808a0308d64f36946dce470b51615117c9933a4454e52d3e25538f243fcfa3 -v1.9.0-otp-21 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T21:21:41Z 59dc26d6691062788ec8e774c941098eaa5f02b4ad3c33502e910e4efaf4ee1e -v1.9.0-otp-22 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:35:06Z ddae00c5bca44dd5bacbc4c4200be302c96b63cbad9c4433ea9fa0bba1d0a486 -v1.9.0-rc.0 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:37:19Z b6e6026f22a7e590f3b9122f3363a09572f251a288a4e50b9faad63548e81331 -v1.9.0-rc.0-otp-20 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:37:12Z b6e6026f22a7e590f3b9122f3363a09572f251a288a4e50b9faad63548e81331 -v1.9.0-rc.0-otp-21 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:36:25Z 698b8b34f9fe12ce3fbf1cf06ca455d689ed83fb927ae70f636a058a4ef9e700 -v1.9.0-rc.0-otp-22 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2019-06-04T11:49:17Z -v1.9.1 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:37:38Z cf13db14a1fd86d6e8824331eca7a2b41674a4ce04fba838877952194f9d02cd -v1.9.1-otp-20 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:37:31Z cf13db14a1fd86d6e8824331eca7a2b41674a4ce04fba838877952194f9d02cd -v1.9.1-otp-21 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T21:22:51Z 93af7d51379858451b90c1efdd859b7c80e0d9c0fc6531cea06e4edffd85605e -v1.9.1-otp-22 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:35:55Z 3e9d11d583fe60b4e4d7ae23aa4fa70baf41a4d53df4d1be75d9636637f7f699 -v1.9.2 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T21:24:21Z ec94b266ec22e3479126cfca69bd84002671c93c9a9dfe13e018efc5cf090f9e -v1.9.2-otp-20 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:37:45Z 0971bbcfb1759fdcb2b9dd13907c1f3cb521fbd0afbd177b8a236ad2018b669f -v1.9.2-otp-21 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:36:59Z e579d4f46fbc847d4609d7ca1be4ce28ea08c6c46b9113a278540ea89adb31f8 -v1.9.2-otp-22 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:36:11Z c2a03b667d9f079558995112ca29adb11bde1eeecd6126ac74bdd4a3c583c547 -v1.9.3 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:38:20Z 3f8e1d964e70bbd935b24ee5d06319440b2214ef66c5e6d3007bb1737c7589b2 -v1.9.3-otp-20 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:38:13Z 3f8e1d964e70bbd935b24ee5d06319440b2214ef66c5e6d3007bb1737c7589b2 -v1.9.3-otp-21 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:37:27Z a67f1826a0ee7a66e8588d72ac50843e68316ab275656dc95e1dcca5515dc612 -v1.9.3-otp-22 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:36:42Z 063e93f5de308925aa198343d5fdd65a8ebdff76bf7e8c5f4c0ef76c16f67e4c -v1.9.4 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:38:42Z 46810a6da6e68c4ac408c6e3120d985d87485f62e4afcd62673831d328d9e588 -v1.9.4-otp-20 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:38:36Z 46810a6da6e68c4ac408c6e3120d985d87485f62e4afcd62673831d328d9e588 -v1.9.4-otp-21 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:37:52Z 1e6c090841c267c4828d68647e020c91067daace9ba05669fd5c3ec315175423 -v1.9.4-otp-22 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:37:07Z b5eba5ab892f431a0d914055ee0ba177304e74da0b2af5a657670aa5ce00f10f diff --git a/__tests__/setup-beam.test.js b/__tests__/setup-beam.test.js index 219e6afe..c712ff97 100644 --- a/__tests__/setup-beam.test.js +++ b/__tests__/setup-beam.test.js @@ -1,21 +1,158 @@ -const {getElixirVersion} = require('../src/setup-beam') -const {deepStrictEqual} = require('assert') +simulateInput('otp-version', '23.2') +simulateInput('elixir-version', '1.11') +simulateInput('rebar3-version', '3.14') +simulateInput('install-rebar', 'true') +simulateInput('install-hex', 'true') -async function test() { - let vsn - vsn = await getElixirVersion('v1.10.x', '23') - deepStrictEqual(vsn, ['v1.10.4', '23']) +const setupElixir = require('../src/setup-beam') +const assert = require('assert') +const installer = require('../src/installer') - vsn = await getElixirVersion('^v1.10', '23') - deepStrictEqual(vsn, ['v1.10.4', '23']) +async function all() { + await testFailInstallOTP() + await testFailInstallElixir() + await testFailInstallRebar3() - vsn = await getElixirVersion('v1.11.0-rc.0', '23') - deepStrictEqual(vsn, ['v1.11.0-rc.0', '23']) + await testOTPVersions() + await testElixirVersions() + await testRebar3Versions() } -test() +async function testFailInstallOTP() { + const otpOSVersion = 'ubuntu-08.04' + const otpVersion = 'OTP-23.2' + assert.rejects( + async () => { + await installer.installOTP(otpOSVersion, otpVersion) + }, + (err) => { + assert.ok(err instanceof Error) + return true + }, + `Installing Erlang/OTP ${otpVersion} over ${otpOSVersion} is supposed to fail`, + ) +} + +async function testFailInstallElixir() { + let exVersion + + exVersion = '0.11' + assert.rejects( + async () => { + await installer.installElixir(exVersion) + }, + (err) => { + assert.ok(err instanceof Error) + return true + }, + `Installing Elixir ${exVersion} is supposed to fail`, + ) + + exVersion = 'v1.0.0-otp-17' + assert.rejects( + async () => { + await installer.installElixir(exVersion) + }, + (err) => { + assert.ok(err instanceof Error) + return true + }, + `Installing Elixir ${exVersion} is supposed to fail`, + ) +} + +async function testFailInstallRebar3() { + const r3Version = '0.14.4' + assert.rejects( + async () => { + await installer.installRebar3(r3Version) + }, + (err) => { + assert.ok(err instanceof Error) + return true + }, + `Installing rebar3 ${r3Version} is supposed to fail`, + ) +} + +async function testOTPVersions() { + let got + let expected + let spec + let osVersion + + spec = '19.3.x' + osVersion = 'ubuntu-16.04' + expected = 'OTP-19.3.6' + got = await setupElixir.getOTPVersion(spec, osVersion) + assert.deepStrictEqual(got, expected) + + spec = '^19.3.6' + osVersion = 'ubuntu-16.04' + expected = 'OTP-19.3.6' + got = await setupElixir.getOTPVersion(spec, osVersion) + assert.deepStrictEqual(got, expected) + + spec = '^19.3' + osVersion = 'ubuntu-18.04' + expected = 'OTP-19.3.6' + got = await setupElixir.getOTPVersion(spec, osVersion) + assert.deepStrictEqual(got, expected) +} + +async function testElixirVersions() { + let got + let expected + let spec + let otpVersion + + spec = '1.1.x' + otpVersion = 'OTP-23' + expected = 'v1.1.1' + got = await setupElixir.getElixirVersion(spec, otpVersion) + assert.deepStrictEqual(got, expected) + + spec = '1.10.4' + otpVersion = 'OTP-23' + expected = 'v1.10.4-otp-23' + got = await setupElixir.getElixirVersion(spec, otpVersion) + assert.deepStrictEqual(got, expected) + + spec = '1.11.0-rc.0' + otpVersion = 'OTP-23' + expected = 'v1.11.0-rc.0-otp-23' + got = await setupElixir.getElixirVersion(spec, otpVersion) + assert.deepStrictEqual(got, expected) +} + +async function testRebar3Versions() { + let got + let expected + let spec + + spec = '3.13.x' + expected = '3.13.2' + got = await setupElixir.getRebar3Version(spec) + assert.deepStrictEqual(got, expected) + + spec = '3.13.2' + expected = '3.13.2' + got = await setupElixir.getRebar3Version(spec) + assert.deepStrictEqual(got, expected) + + spec = '3.13' + expected = '3.13.2' + got = await setupElixir.getRebar3Version(spec) + assert.deepStrictEqual(got, expected) +} + +function simulateInput(key, value) { + process.env[`INPUT_${key.replace(/ /g, '_').toUpperCase()}`] = value +} + +all() .then(() => process.exit(0)) - .catch(err => { + .catch((err) => { console.error(err) process.exit(1) }) diff --git a/action.yml b/action.yml index b9444df0..12754821 100644 --- a/action.yml +++ b/action.yml @@ -1,6 +1,9 @@ -name: Setup Elixir -description: Set up a specific version of OTP and Elixir and add the command-line tools to the PATH -author: GitHub +--- +name: Setup Erlang/OTP with optional Elixir and/or rebar3 +description: > + Set up a specific version of Erlang/OTP, Elixir, and/or rebar3 + and add the command-line tools to the PATH +author: Erlang Ecosystem Foundation branding: color: blue icon: code @@ -8,18 +11,22 @@ inputs: elixir-version: description: Version range or exact version of Elixir to use otp-version: - description: Version range or exact version of OTP to use + description: Version range or exact version of Erlang/OTP to use install-hex: description: Whether to install Hex default: true install-rebar: description: Whether to install Rebar default: true + rebar3-version: + description: Version range or exact version of rebar3 to use outputs: elixir-version: description: Exact version of Elixir that was installed otp-version: - description: Exact version of OTP that was installed + description: Exact version of Erlang/OTP that was installed + rebar3-version: + description: Exact version of rebar3 that was installed runs: using: node12 main: dist/index.js diff --git a/dist/.github/workflows/ci.yml b/dist/.github/workflows/ci.yml new file mode 100644 index 00000000..7253b212 --- /dev/null +++ b/dist/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +--- +name: ci + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + check_integrity: + name: Make sure expected pre-release actions are performed + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: '12' + - run: npm install -g npm + - run: npm install + - run: npm run format + - run: npm install -g markdownlint-cli + - run: npm run markdownlint + - run: npm run shellcheck + - run: npm run yamllint + - run: npm run jslint + - run: npm run licenses + - run: npm run build + - name: Check if build left artifacts + run: git diff --exit-code diff --git a/dist/.github/workflows/licensed.yml b/dist/.github/workflows/licensed.yml deleted file mode 100644 index 90b4a98b..00000000 --- a/dist/.github/workflows/licensed.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Licensed - -on: - push: {branches: main} - pull_request: {branches: main} - repository_dispatch: - workflow_dispatch: - -jobs: - test: - runs-on: ubuntu-latest - name: Check licenses - steps: - - uses: actions/checkout@v2 - - uses: actions/cache@v1 - with: - path: ~/.npm - key: ${{runner.os}}-npm-${{hashFiles('**/package-lock.json')}} - restore-keys: ${{runner.os}}-npm- - - run: npm ci - - name: Install licensed - run: |- - cd $RUNNER_TEMP - curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.9.2/licensed-2.9.2-linux-x64.tar.gz - sudo tar -xzf licensed.tar.gz - sudo mv licensed /usr/local/bin/licensed - - run: licensed status diff --git a/dist/.github/workflows/test.yml b/dist/.github/workflows/test.yml index fc9e2bb7..55b40578 100644 --- a/dist/.github/workflows/test.yml +++ b/dist/.github/workflows/test.yml @@ -1,4 +1,5 @@ -name: Test +--- +name: test on: push: {branches: main} @@ -8,8 +9,8 @@ on: jobs: unit_test: + name: Pre-release unit tests runs-on: ubuntu-latest - name: Unit tests steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 @@ -18,17 +19,26 @@ jobs: - run: npm test integration_test: - runs-on: ubuntu-latest - name: OTP ${{matrix.pair.otp-version}} / Elixir ${{matrix.pair.elixir-version}} + name: > + Pre-release integration tests + (Erlang/OTP ${{matrix.pair.otp-version}}, + Elixir ${{matrix.pair.elixir-version}}, + rebar3 ${{matrix.pair.rebar3-version}}) + runs-on: ubuntu-18.04 strategy: + fail-fast: false matrix: pair: # Full Versions - otp-version: '22.0' elixir-version: '1.9.1' + - otp-version: '22.3.4' + rebar3-version: '3.14.4' # Semver ranges - otp-version: '21.x' elixir-version: '<1.9.1' + - otp-version: '21.x' + rebar3-version: '3.14.4' # Branches - otp-version: '22.0' elixir-version: master @@ -37,18 +47,73 @@ jobs: # Pre-releases - otp-version: '23.0' elixir-version: '1.11.0-rc.0' + # Fallback to Elixir (with no OTP) + - otp-version: '24.0-rc1' + elixir-version: '1.9.3' + # Miscellaneous combos + - elixir-version: 'master' + otp-version: '22.3' + - elixir-version: 'master' + otp-version: '22' + - elixir-version: 'master' + otp-version: '^22' + - elixir-version: 'master' + otp-version: '22' + - elixir-version: '1.6.5' + otp-version: 'maint-21' + - elixir-version: 'v1.6.5' + otp-version: 'maint-21' + - elixir-version: 'v1.9.x' + otp-version: '21.1' + - elixir-version: '1.9.x' + otp-version: '21' + - elixir-version: 'v1.8.x' + otp-version: '22' + - elixir-version: 'v1.8.x' + otp-version: '23.1' + - elixir-version: 'v1.8' + otp-version: '^22.3' + - elixir-version: 'v1.10' + otp-version: '21.x' + - elixir-version: 'v1.x' + otp-version: 'master' + - elixir-version: 'v1.11.0-rc.0' + otp-version: '23' + - elixir-version: 'v1.11.0-rc.0' + otp-version: '23.0' + - elixir-version: 'v1.11.0-rc.0' + otp-version: 'master' steps: - uses: actions/checkout@v2 - - name: Use erlef/setup-elixir - id: setup-elixir + - name: Use erlef/setup-beam + id: setup-beam uses: ./ with: otp-version: ${{matrix.pair.otp-version}} elixir-version: ${{matrix.pair.elixir-version}} - - name: Output runtime versions - run: echo "Elixir ${{steps.setup-elixir.outputs.elixir-version}} / OTP ${{steps.setup-elixir.outputs.otp-version}}" + rebar3-version: ${{matrix.pair.rebar3-version}} + - name: Erlang/OTP version (action) + run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}" + - name: Elixir version (action) + run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}" + if: ${{matrix.pair.elixir-version}} + - name: rebar3 version (action) + run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}" + if: ${{matrix.pair.rebar3-version}} + - name: mix version and help (CLI) + run: | + mix -v + mix help local.rebar + mix help local.hex + if: ${{matrix.pair.elixir-version}} - name: Run Mix project tests - run: |- - cd test-project + run: | + cd test-projects/mix mix deps.get mix test + if: ${{matrix.pair.elixir-version}} + - name: Run rebar3 project tests + run: | + cd test-projects/rebar3 + rebar3 as test do xref,dialyzer,ct,cover + if: ${{matrix.pair.rebar3-version}} diff --git a/dist/builds.txt b/dist/builds.txt deleted file mode 100644 index 3c118d0d..00000000 --- a/dist/builds.txt +++ /dev/null @@ -1,313 +0,0 @@ -master d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:12:57Z a8ca8155a9b4b6ec1d60454f9032a29d4b95afa782984e3ed783c5f242541090 -master-otp-21 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:12:48Z a8ca8155a9b4b6ec1d60454f9032a29d4b95afa782984e3ed783c5f242541090 -master-otp-22 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:11:25Z 917d5856e50670c8670e60fcbaddd74aa207e7cb60a91fe5f7d62959db1161de -master-otp-23 d25b61db13d94ee83374748581c7bcb8e2dfc0e6 2020-09-16T06:09:48Z 80af5358209cdc3c8321c3852e962957fd3e63a22b1da13f56a3f1571ecb1e7e -v0.12.4 543dfdeac80cfaf3483927c189cf9974f1e361eb 2016-06-02T12:43:53Z -v0.12.5 b07fbcf8b73e9353cc336107050a8aac5fdabd11 2016-06-02T12:42:56Z -v0.13.0 ada53524caa6ea27ffaa1a373f5c86bd6cadb0d5 2016-06-02T12:42:00Z -v0.13.1 c03d42b0ccf38b31dcaef0cb7e9ea8851cb39907 2016-06-02T12:41:00Z -v0.13.2 7a24767137c596a84014a0ed1a8dde64e45f9666 2016-06-02T12:40:00Z -v0.13.3 3c48099718cd718d25527875a407cc842cf72565 2016-06-02T12:39:01Z -v0.14.0 9cff61493e9e3626e8d243dfe8aec07230a7fe73 2016-06-02T12:38:04Z -v0.14.1 22f3a50ebabfefd36be1a8472c8b78257df6affa 2016-03-07T22:22:53Z -v0.14.2 44b04120425c83984c867ee6b06974b7c139ba52 2016-03-07T22:22:53Z -v0.14.3 82535feb90ba1a27ad12b9389d86b11b8311a618 2016-06-02T12:36:35Z -v0.15.0 2f2a52a64874a0a5b6d5c1fab812a80e94d982bc 2016-06-02T12:35:36Z -v0.15.1 a54d9212b89da61ec0dd4227ed24e59f37738fe5 2016-06-02T12:34:37Z -v1.0 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:13:41Z 0fccc644156e18ff02c8fe0fa6d3b5ee085b05ecc956ae93151ea938d2d0297b -v1.0-otp-17 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:13:35Z 0fccc644156e18ff02c8fe0fa6d3b5ee085b05ecc956ae93151ea938d2d0297b -v1.0-otp-18 9033b217d9721c86d1e73ccd91ceb7c6716124d9 2020-03-25T22:12:48Z a3d53f5001261eca9c976b911f3ece7b0d32ec45029975781c1b67f0511eb216 -v1.0.0 52ff7e96867c027745d29f5d3feb77f546f22c4f 2017-06-26T04:08:29Z -v1.0.0-otp-17 52ff7e96867c027745d29f5d3feb77f546f22c4f 2017-06-26T04:08:31Z -v1.0.0-rc1 5b4497fa6b2da7831418cf1307248dc73b4ee34b 2017-06-26T04:12:30Z -v1.0.0-rc1-otp-17 5b4497fa6b2da7831418cf1307248dc73b4ee34b 2017-06-26T04:12:32Z -v1.0.0-rc2 8931f345826b71056ab3df0fba7dbb1b9c3bce25 2017-06-26T04:10:30Z -v1.0.0-rc2-otp-17 8931f345826b71056ab3df0fba7dbb1b9c3bce25 2017-06-26T04:10:32Z -v1.0.1 89460154bb1ab3faa9a7aad4a1edc621cc35d1de 2017-06-26T04:06:28Z -v1.0.1-otp-17 89460154bb1ab3faa9a7aad4a1edc621cc35d1de 2017-06-26T04:06:30Z -v1.0.2 34df8176385200d483ab483a973c498ffa62e580 2017-06-26T04:04:26Z -v1.0.2-otp-17 34df8176385200d483ab483a973c498ffa62e580 2017-06-26T04:04:28Z -v1.0.3 307675284cfde2e2e3ff4b868ff5c2253dac3936 2017-06-26T04:02:25Z -v1.0.3-otp-17 307675284cfde2e2e3ff4b868ff5c2253dac3936 2017-06-26T04:02:27Z -v1.0.4 e02d7bf913f3e5ea8c9e49648e69324ec5c65919 2020-03-25T22:13:16Z 64aa83a5f82a36f451e692f2abb080756056b141e45a088546610182916aab1e -v1.0.4-otp-17 e02d7bf913f3e5ea8c9e49648e69324ec5c65919 2020-03-25T22:13:10Z 64aa83a5f82a36f451e692f2abb080756056b141e45a088546610182916aab1e -v1.0.5 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2020-03-25T22:13:18Z 7fab3ebec908087824c94e9a9d2606aa83793d98737a5389e737aad71d1b6d5b -v1.0.5-otp-17 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2020-03-25T21:25:52Z fb980bd05a63a3d419fc56235c52dbef96bcd91b559da523a12f92e352d49719 -v1.0.5-otp-18 3eb938a0ba7db5c6cc13d390e6242f66fdc9ef00 2018-11-25T23:13:38Z -v1.1 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T22:14:09Z 085c6bfbce870870741cbdbf4917e3785b54bd804749955052d8875857847652 -v1.1-otp-17 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T22:14:03Z 085c6bfbce870870741cbdbf4917e3785b54bd804749955052d8875857847652 -v1.1-otp-18 5591ab2dffeb8df448728dd2e712c416ac1a07ca 2020-03-25T21:25:40Z 3989ccea818ce8da9d355f9b3080780cd1c0fc03b51a2d0bb47673250bae4504 -v1.1.0 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T21:27:07Z de44f8b3b3969d2fd280a50f4f96a8f2b7249037a696d6c2214d50b4e3b9adb9 -v1.1.0-otp-17 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T22:14:20Z a0b5ff7c507881f6557c86686574c046b5bd67cddf2fedfc82cd5d9c8176ed0b -v1.1.0-otp-18 f2a9c7016633ca63541a8160c63a53eb7edbccdb 2020-03-25T22:13:27Z e767678a166e0799792321073f53ac9655d120e8fa0a5a789af6832356c53755 -v1.1.0-rc.0 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T21:27:09Z 205c018fd2b0a4ebd4fa00a43b68cf2222aba43ab06fc07eeda98c0058a3d6d6 -v1.1.0-rc.0-otp-17 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T22:14:30Z 9a5674bfc64bc7236436c097d99aafce02c83ec926d58854a1f175284f271648 -v1.1.0-rc.0-otp-18 0e3c06b03149022b980e69872003d401c4788fea 2020-03-25T22:13:38Z 81a3be6e2711a66c90676ad0029ee305430e7c9384901857a1ec9047aea30235 -v1.1.1 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:14:44Z 61c3ebc971aecfe8624ff819ab7b2e7a7802a867f2ec5407c9827d879521b866 -v1.1.1-otp-17 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:14:38Z 61c3ebc971aecfe8624ff819ab7b2e7a7802a867f2ec5407c9827d879521b866 -v1.1.1-otp-18 139d2eac5998259379862ff6ed2a5287f7de4ea6 2020-03-25T22:13:44Z bdfa8f86fc0ca296c045b67d6c7d9a7b25f3dddcb2388c066dddfe03e231a0aa -v1.10 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:41:39Z 4de78cc0d7ae93146912a6866070a19caddb18ed5766babf50432de05f1f670c -v1.10-otp-21 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:41:34Z 4de78cc0d7ae93146912a6866070a19caddb18ed5766babf50432de05f1f670c -v1.10-otp-22 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:40:30Z 53bae3f6816383278ec2b85324f5c55df0d3e9c9ac260e9d8f7fc18e184e6e23 -v1.10-otp-23 8731ef03d97a8febcaa272a85efe1656a797892b 2020-07-14T10:39:13Z 17785f8d823baca46daec4a1c61dc846eee86fc89497b50777d819dd54ff5ac5 -v1.10.0 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:15:30Z 15e0f608cde3757a7a2e44f3683dd3ec5f184cd76cfa43366467f9d3556870ce -v1.10.0-otp-21 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:15:23Z 15e0f608cde3757a7a2e44f3683dd3ec5f184cd76cfa43366467f9d3556870ce -v1.10.0-otp-22 5bd7a90864417e7be9483002cfa0e543d265b71d 2020-03-25T22:14:28Z b0c1f9bcddba50dc39e63b16e2df38a0fef74995d29bc47084ffb6ad5bd7b533 -v1.10.0-rc.0 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:16:49Z 8e6aec5f0c2bcf8c08451af20cfc0e61e0e484561e68a0e5f42eb8d6c99727d1 -v1.10.0-rc.0-otp-21 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:16:31Z 8e6aec5f0c2bcf8c08451af20cfc0e61e0e484561e68a0e5f42eb8d6c99727d1 -v1.10.0-rc.0-otp-22 105770cfa0ac0591c1fecca17f2221e0ac6af051 2020-03-25T22:15:26Z 3e6d407075290902b220c18726da4a785623e57dee620f414a8cefead34e1c01 -v1.10.1 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T22:16:45Z 70adaff3b66377251aa8687087fa589981336371dd80d134e57abc39b6788a7c -v1.10.1-otp-21 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T21:29:16Z ee33314dad3ab8be426bcc2c77eaff7713fe03306b2d92b53dc0618d29a82ee7 -v1.10.1-otp-22 51c95b60004d3d9d297fff23f576bdd97c931afd 2020-03-25T22:15:35Z 8aba1324a382eded4dc614fad5d21f9af63d46a0f60b0834369868fa10b3402f -v1.10.2 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:17:19Z dd23b5b2f78860de341b7fbeae0f4e8b681dca971036e1546ba86d04852b9097 -v1.10.2-otp-21 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:17:06Z dd23b5b2f78860de341b7fbeae0f4e8b681dca971036e1546ba86d04852b9097 -v1.10.2-otp-22 07450832e7fbc902bfdee124adda1b5a0f6b689d 2020-03-25T22:16:15Z 58616d0a492f9375d6e892200bf3d7618e5021a7a639620595b570a52973eac1 -v1.10.3 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:54Z c9b6ebc81bed67be4eeac420b3d4c8d727f69caf23103ce65d9d0795eab50aec -v1.10.3-otp-21 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:48Z c9b6ebc81bed67be4eeac420b3d4c8d727f69caf23103ce65d9d0795eab50aec -v1.10.3-otp-22 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:09:03Z db294219b295b1b24e7f7b5f8a133851f84f3eb175f73a7f43dbfa55e05af3fb -v1.10.3-otp-23 c88ecdec1655b04f88e3caef22f050bb85740e4c 2020-05-13T18:08:09Z ef567be0c939211a21843a39dfdec3f870328e3ef9fb2695c0aa8a2d37b50d96 -v1.10.4 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:01:41Z e780a224631e029b3eee675ef251d01fc0f29bf550027cd0e93c2dbeeb8f4da8 -v1.10.4-otp-21 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:01:36Z e780a224631e029b3eee675ef251d01fc0f29bf550027cd0e93c2dbeeb8f4da8 -v1.10.4-otp-22 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T12:00:35Z ab49b0e07cac98cf8e73168be359b6ec3e6e7f6357be1407e31d7d823ca9e97c -v1.10.4-otp-23 1145dc01680aab7094f8a6dbd38b65185e14adb4 2020-07-05T11:59:26Z ebe895088bdfdf6d156f090f3ec4c939265ce2ebe3868886832ddeb7f8f3aba1 -v1.11 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:27:05Z 20bc4ecf1fb7256f16081abc8c05a25b7fdebc89e7c6769e9fb80bee2f39a621 -v1.11-otp-21 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:26:58Z 20bc4ecf1fb7256f16081abc8c05a25b7fdebc89e7c6769e9fb80bee2f39a621 -v1.11-otp-22 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:25:35Z 4b5d7096f3a83ce9ee267c8f68f9d706da903958a5bf75a2c23f640caa05fe31 -v1.11-otp-23 57abca4c1687c77781785afef488d24cd945fa37 2020-09-14T22:24:03Z 7e2480c562ea3d7a15b82985b114668cdd8dbb8e00e819070a41c45ac79cd4a7 -v1.11.0-rc.0 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:57:02Z ff64bb368e07ba6b6c4434c36b8de89a4fbfac70e01a1e087c48a4e8eddf8b3a -v1.11.0-rc.0-otp-21 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:56:53Z ff64bb368e07ba6b6c4434c36b8de89a4fbfac70e01a1e087c48a4e8eddf8b3a -v1.11.0-rc.0-otp-22 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:55:50Z 6874ed67a30ec4e4ba8d9332d3833a0f0d68ebcd4fe3cd6e5992741384c888a4 -v1.11.0-rc.0-otp-23 48cee5aaa54fad593c5aca940ab3dd330652eab8 2020-09-14T10:54:36Z 171229bade46586771d05a18e489002d57cbe7b9a41640c3802ca07f5bff87d6 -v1.2 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T22:16:42Z 9bc461faad6f92f10f09e5d3b61b216dc4b28122cdae3a28b3bbfac8a693160f -v1.2-otp-18 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T22:16:36Z 9bc461faad6f92f10f09e5d3b61b216dc4b28122cdae3a28b3bbfac8a693160f -v1.2-otp-19 9c91d2cc91fa2ee2ceb88075e69e5eb18bbb1af8 2020-03-25T21:28:02Z b2d2fb4fa365d848ee6c8fabe11b72376a57bfeb9d2fc3c0067ce3e7c0a94c88 -v1.2.0 b1344724b695a9a474d73d4633c5a151f1a7d61d 2020-03-25T22:16:11Z 44f2a639ed3ffbae7489c4e229370b205014c9495a674d2bda23463a802de49d -v1.2.0-otp-18 b1344724b695a9a474d73d4633c5a151f1a7d61d 2020-03-25T22:16:04Z 44f2a639ed3ffbae7489c4e229370b205014c9495a674d2bda23463a802de49d -v1.2.0-rc.0 a2860b32a3cc8f543406b582fc583185c8c31e5c 2017-06-26T03:35:19Z -v1.2.0-rc.0-otp-18 a2860b32a3cc8f543406b582fc583185c8c31e5c 2017-06-26T03:36:45Z -v1.2.0-rc.1 211a1299cc033debf9a00fc5ac5f4d4e1eb4d6a7 2017-06-26T03:32:52Z -v1.2.0-rc.1-otp-18 211a1299cc033debf9a00fc5ac5f4d4e1eb4d6a7 2017-06-26T03:34:19Z -v1.2.1 a3d88dc406ca9642bcabf375db7f74f2cc6a751d 2020-03-25T22:16:38Z fc9d9c833d5cbcb49dba0a5d567c40c27bd9c39478f3712c0a5e738b96e4b53a -v1.2.1-otp-18 a3d88dc406ca9642bcabf375db7f74f2cc6a751d 2018-11-25T23:39:21Z -v1.2.2 9decf4c78a911bc1375891bb65fbf2e50fcedeb8 2020-03-25T22:17:12Z 8f0010f5924d5e8d1e42e907c85e662a7d0c41d33d92cf2c0c7c40b5d5190e44 -v1.2.2-otp-18 9decf4c78a911bc1375891bb65fbf2e50fcedeb8 2020-03-25T21:29:41Z 6699e120159a17c7e06e2ad4b5ce3fb6741d68cf43c9153c51e3ef00b3b1cb58 -v1.2.3 737ac62926db7a692e2fe67c27b696cfd0866674 2020-03-25T22:17:23Z 7513357020d13813ac09f1b4abaf825df62936f95e8ea33224a9719b88423bb7 -v1.2.3-otp-18 737ac62926db7a692e2fe67c27b696cfd0866674 2020-03-25T22:17:17Z 7513357020d13813ac09f1b4abaf825df62936f95e8ea33224a9719b88423bb7 -v1.2.4 17e8dbbf16c08dff0ded22c37ae80a37f99ff99a 2020-03-25T22:17:34Z 485cf049c609a33dd3f7f49842ea1d23b6ee41170e7e148a65feded33e4ec3c6 -v1.2.4-otp-18 17e8dbbf16c08dff0ded22c37ae80a37f99ff99a 2020-03-25T22:17:27Z 485cf049c609a33dd3f7f49842ea1d23b6ee41170e7e148a65feded33e4ec3c6 -v1.2.5 e5374cf5d3beb510a0fdeddd0f8b89e8e26445ef 2020-03-25T22:17:43Z 1e583f13c332082e58b1b9c4d183c161c95623924606d1673dd260d9d52ecef0 -v1.2.5-otp-18 e5374cf5d3beb510a0fdeddd0f8b89e8e26445ef 2020-03-25T22:17:37Z 1e583f13c332082e58b1b9c4d183c161c95623924606d1673dd260d9d52ecef0 -v1.2.6 3dbfb92860fb24f83c92e1f1b67f48554fb211d6 2020-03-25T22:18:06Z a9a29ba0b872be92aee79f221bd5cfcccbe242edf298df04940004b211b75332 -v1.2.6-otp-18 3dbfb92860fb24f83c92e1f1b67f48554fb211d6 2020-03-25T22:17:59Z a9a29ba0b872be92aee79f221bd5cfcccbe242edf298df04940004b211b75332 -v1.3 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:19:45Z 971b9b3ec0fe6aba8811f675bfb44f13b1be97439e2b959dba3941dbf6b04ba4 -v1.3-otp-18 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:19:38Z 971b9b3ec0fe6aba8811f675bfb44f13b1be97439e2b959dba3941dbf6b04ba4 -v1.3-otp-19 bbf5e2bc7bc3179588bab5e87ad740ff5790d72e 2020-03-25T22:18:42Z 3b1eb45ad96b573db97759931e120f78e1ac35983da14bc1ace8e9e4821e6a7b -v1.3.0 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T22:20:09Z 10f3755e1575b85e364db5120d53ac72d1e7af66cc86d46874a035d142ff14b5 -v1.3.0-otp-18 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T22:20:02Z 10f3755e1575b85e364db5120d53ac72d1e7af66cc86d46874a035d142ff14b5 -v1.3.0-otp-19 416bf41a032280b988d537bd4635beecc3aeed29 2020-03-25T21:41:57Z 0dde36e034c35af1b3d51db86616800619f6e455d3c5410dd7daa36ec23f0972 -v1.3.0-rc.0 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T22:20:16Z 4f8a004a6e6f97d8a27044ff45f0a149728fbb6d6c839e6af4122bb3b2bf866e -v1.3.0-rc.0-otp-18 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T21:32:26Z beacc2e95f1d4a5af290bbeef031f328fb0df4dabd95215fe1df9aebcd16a47b -v1.3.0-rc.0-otp-19 7881123953300152650e83e4ba6e56e4d6895d72 2020-03-25T22:18:50Z b5b32c2c920038f50a8037d51722f83364026cdfb4a14e6c6c0f7add18e55878 -v1.3.0-rc.1 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:19:57Z 583b9f1bbfc650784fcd9f9a2930a5ea077a05262112aad2c983ef25d390c428 -v1.3.0-rc.1-otp-18 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:19:50Z 583b9f1bbfc650784fcd9f9a2930a5ea077a05262112aad2c983ef25d390c428 -v1.3.0-rc.1-otp-19 9eb47818abb00f207e442ffe06eef5a28155d371 2020-03-25T22:18:52Z 3d9a9441319c1cbe749833fce2ff5d057676ecebb98d371c1c4a1bf9cad4ad46 -v1.3.1 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:20:24Z 75b8c766c25873ab49e217bfa74b680c0f1630b28ad59b6cddca29fe549b87da -v1.3.1-otp-18 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:20:18Z 75b8c766c25873ab49e217bfa74b680c0f1630b28ad59b6cddca29fe549b87da -v1.3.1-otp-19 01a1acd27b2b742a480dbc2210177f45982cc77e 2020-03-25T22:19:17Z e40938de58f10ad2b436eaae5725239ae06bd0d8416aa05d58b3970603488fd3 -v1.3.2 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:20:27Z 32b7542ab3fffd51422bc44721f878e82a23ec6d11ae798805e1c52717f8566a -v1.3.2-otp-18 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:20:20Z 32b7542ab3fffd51422bc44721f878e82a23ec6d11ae798805e1c52717f8566a -v1.3.2-otp-19 56f1037973d50721206324db48cf86509779c862 2020-03-25T22:19:21Z 3a0095634b1ba86156c0cec4d07eacebad9185eb57507a6ecf3e4a94769cf685 -v1.3.3 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T22:20:43Z a68a1fdec897290d816cb265fe66588e8345f23f53254d954be266edad4e0c59 -v1.3.3-otp-18 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T21:33:07Z 535fc67015404e21326f9aa55f8866a416ae6a5cfe65dc9ddd2885d8abdde3d2 -v1.3.3-otp-19 0caa75760b14e7392a9f2d7aa08218ba53c8c76a 2020-03-25T22:19:29Z 3ae582c46d95c22c724df9a4f617684c277737d8ac82f154ce718baed20726bd -v1.3.4 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:20:46Z 1c3048f9de5f645c4f393201a15c403924886dc18690c36abbeb48aa342cc952 -v1.3.4-otp-18 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:20:37Z 1c3048f9de5f645c4f393201a15c403924886dc18690c36abbeb48aa342cc952 -v1.3.4-otp-19 87710cd49521fc396f3f04fa8615f05e7f57ecc0 2020-03-25T22:19:40Z fc55e25dae9eb99db14bcf73952274db99467cbde17d7084232e4cc444e9e57d -v1.4 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:22:08Z 73b9d87a2d83a447ee13f78469fa0cb477691b5a7c580b6b1e8543ded0d74740 -v1.4-otp-18 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:22:02Z 73b9d87a2d83a447ee13f78469fa0cb477691b5a7c580b6b1e8543ded0d74740 -v1.4-otp-19 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:21:01Z 30da8426d030698c54ce18ab7388224eee9873ea05d84314ca07b8e9a20ce98c -v1.4-otp-20 5131c6be9d1799eb32567afa95290313833afab4 2020-03-25T22:19:59Z 3aa8e74da72590a059a106dbbc0ecfa8cdcaae0de947296a2758d29d6898334c -v1.4.0 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T22:21:20Z 3b215e4caa0346086e05bd687b8e6d24429cee2f33738be5acbce34eb42ee961 -v1.4.0-otp-18 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T22:21:14Z 3b215e4caa0346086e05bd687b8e6d24429cee2f33738be5acbce34eb42ee961 -v1.4.0-otp-19 f045705ac559290866abda5f9daeac4b701b6e7f 2020-03-25T21:33:02Z c6a69b98a6a337a778888a2ca525cbc68e1323e2eee9a66126d3703df7a3cb69 -v1.4.0-rc.0 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T21:35:09Z 73e665879a38ebe9ac2f9e01151d824fabb346c972153c55c6a51a15d77dfd0a -v1.4.0-rc.0-otp-18 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2018-11-26T00:18:02Z -v1.4.0-rc.0-otp-19 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T22:22:35Z 6465652089273611d4b30956cf805368dc7f98251ff97f2f4260aa92f5559040 -v1.4.0-rc.0-otp-20 fbfb41dfeedf14ccc4bd80c3c366382c8a2fcb9e 2020-03-25T22:21:44Z d19b14c98892750c03274862e4ae9bacc4e5541762acecb069e1e2b3998bec61 -v1.4.0-rc.1 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:24:04Z c7f8f78eb2e61fc664b3827c112b0019a26415147bf46942b048647b37f164e1 -v1.4.0-rc.1-otp-18 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:23:57Z c7f8f78eb2e61fc664b3827c112b0019a26415147bf46942b048647b37f164e1 -v1.4.0-rc.1-otp-19 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:22:58Z 709696973ae7f81a3cdc4fd6438981f67988ef26fe1481dc63fda29985d6a66f -v1.4.0-rc.1-otp-20 16a14c1f6d25e4b51e78fdcacf4f824966a17eb5 2020-03-25T22:21:58Z d847e27bdbbd6ecff6f6e94d9087b31a57eaf2822a38b6af87e81beea3e9b1de -v1.4.1 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:23:21Z 9398a8fbd4c64bbde76cbc179f2837ba6815a9d60fdca49fe43cd86c70ed0fcb -v1.4.1-otp-18 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:23:14Z 9398a8fbd4c64bbde76cbc179f2837ba6815a9d60fdca49fe43cd86c70ed0fcb -v1.4.1-otp-19 0397a46bb762923a91353e1c957ae2443d50dc05 2020-03-25T22:22:15Z fc54fa404028f712a135db14d9cf8d6bcec505cae020dc1c60db92f22b43a93f -v1.4.2 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:24:08Z bb6b153387177a6e440b385420ce20e6017d05170fff681f0d23c7fba82fca1b -v1.4.2-otp-18 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:24:02Z bb6b153387177a6e440b385420ce20e6017d05170fff681f0d23c7fba82fca1b -v1.4.2-otp-19 27fdc68ff41a75b16778f2ed8d4d6605764e31b6 2020-03-25T22:22:42Z 88a6afd1d9c7d0a2c60e2c24be439942568f6ab2a4bc507fd3831865188efe8d -v1.4.3 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:23:39Z b2313b3e4efb2841d2c3c7cd34fc03cae85366ca9e7a2f56e4eca836811f2177 -v1.4.3-otp-18 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:23:33Z b2313b3e4efb2841d2c3c7cd34fc03cae85366ca9e7a2f56e4eca836811f2177 -v1.4.3-otp-19 b2b974dc71e2d98c3179c08a9356835f68442a80 2020-03-25T22:22:31Z da40d1f7aaa389b6366ad3fbd0fc622caa70081f30b0dcbc5820eb57fd3e13ea -v1.4.4 867da6f876c48279823a41a33030c95ef37379b2 2020-03-25T22:23:43Z c1f13c7b6f46bb82928a1545a2980c93f4f32c5065d172b18d978913e39aec57 -v1.4.4-otp-18 867da6f876c48279823a41a33030c95ef37379b2 2020-03-25T22:23:36Z c1f13c7b6f46bb82928a1545a2980c93f4f32c5065d172b18d978913e39aec57 -v1.4.4-otp-19 867da6f876c48279823a41a33030c95ef37379b2 2019-01-11T13:10:55Z -v1.4.5 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:24:53Z a52e8962a2856887e8401ea3868c35f9811d2584bebe0e1e2243242f5bf208ee -v1.4.5-otp-18 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:24:46Z a52e8962a2856887e8401ea3868c35f9811d2584bebe0e1e2243242f5bf208ee -v1.4.5-otp-19 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:23:46Z 16351a7334cfb840b5be0be854c95c3092425463da7bd97509dfc0d964d3ece8 -v1.4.5-otp-20 e25c37108a5294b205ad0abe558cb82f19d342c5 2020-03-25T22:22:45Z 8b3c151e66b2ba79786aad6dd83a2b6f846cf6451e361847f0604bbb31a11db3 -v1.5 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:24:25Z 6a1e40830b90883395c84abc7f98a41da33d70e89da841256fdf568c3afcaf42 -v1.5-otp-18 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T21:36:44Z f706fbb55eb5d2dde87d71a69f82176f8d6876e0a3b7471f2c28839169b98cf9 -v1.5-otp-19 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:23:30Z 12c498b581f6cec636d8994195548ac9730aefde3ef9b1d7febc06ffe24a2430 -v1.5-otp-20 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T21:35:04Z f7347176a029cae438d87c87117af3862ce9175514eb69a468ade4bbe37c6e92 -v1.5.0 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:25:26Z 9e1b22e464e70f7d614b91d002d37dbabec2bd1a0ff7ced0578435d69f5b695f -v1.5.0-otp-18 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T21:38:02Z ad69e965bef4d98282a17551cd33350ca0d189c0c35b7ea3f78c9dd36fb221aa -v1.5.0-otp-19 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:24:16Z 5829820f88b2af596c2ed810dbe12cbe02fd5445052ac8338cf2855085eeaa15 -v1.5.0-otp-20 117b2bf614d4b74281ff6dfe0e0e95caf50ff100 2020-03-25T22:23:18Z ca38567d4468fc5463105c87e79886a458404596fad06cf60d9b41ab63b8ae10 -v1.5.0-rc.0 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:26:37Z 3cc7f60e1e1514de2a39b91af1605fc15017a170a1f56649a77cba08792e0693 -v1.5.0-rc.0-otp-18 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T21:38:42Z 8fded176eed47bd6787280f68fe66c57ab34f441cf9d05b1015f605026af133e -v1.5.0-rc.0-otp-19 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:25:25Z ca09faf48cf590bc128fd2a3cb1ea40a53cad9d8f242be7f3ba684b536de86ef -v1.5.0-rc.0-otp-20 fa0de77862f10496f8285079c7cdc367ead7c8c8 2020-03-25T22:24:19Z 94dc670c3989970976c951b554d78b235c8d16d434faf398147788c661c3481d -v1.5.0-rc.1 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T21:13:57Z a93294558d96225d89adad8140195e2d037671bbba268f7232cbf9a0c262a75a -v1.5.0-rc.1-otp-18 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T21:13:51Z a93294558d96225d89adad8140195e2d037671bbba268f7232cbf9a0c262a75a -v1.5.0-rc.1-otp-19 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T22:26:30Z 3a77c443c52bad797b527a5042a11800f95204efe6f84ec3d580ea15836db06d -v1.5.0-rc.1-otp-20 704fb9599b522bb530efdc5bb527d005e0c8ed68 2020-03-25T22:25:17Z 634c5939d546639e1e7535555b40eea9181fed035bc3276f6eb8b7978e7776bb -v1.5.0-rc.2 e5208421b32f197379b26c55bfde22651bea5e1c 2018-11-26T02:09:46Z -v1.5.0-rc.2-otp-18 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T22:27:49Z 4a8f1ac1160d9b0b7d664e23d5beeb1a8fc763ec23b4c50b8ae26bea7ecf053f -v1.5.0-rc.2-otp-19 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T21:12:20Z e813dd6ec6cb5fdd8047e4c663903e32cc36eda50d6f7259596477f41390df41 -v1.5.0-rc.2-otp-20 e5208421b32f197379b26c55bfde22651bea5e1c 2020-03-25T22:25:44Z 5cbab05adcf1953bbd6b56f56c1ba0ca81a4697bcc93d488c8e6b2d6e638cdf9 -v1.5.1 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:27:58Z cae0fcae269ac84e5e67e522dc0bdd857a660fa3e46733a198d9ded465e4fba8 -v1.5.1-otp-18 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:27:51Z cae0fcae269ac84e5e67e522dc0bdd857a660fa3e46733a198d9ded465e4fba8 -v1.5.1-otp-19 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T22:26:47Z 8109aae79aa6fc175ecf45283309b54697b3d050c38d14250f939b4dcae08696 -v1.5.1-otp-20 1406d853e0e6515007696f871d0a9e2c023da6da 2020-03-25T21:10:55Z b2af6a669a7d62d9e29ca5057393de5531597286812335684c6a826b9b628563 -v1.5.2 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:27:19Z 6376a037205f9de43a520335be42c2475d3576f3da944b998a24082eea359054 -v1.5.2-otp-18 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:27:12Z 6376a037205f9de43a520335be42c2475d3576f3da944b998a24082eea359054 -v1.5.2-otp-19 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:26:22Z 1f72b8efad0e23ed3da34313cc87724b09bd8eb312d544827c07acf5cd9c6a63 -v1.5.2-otp-20 05418eaa4bf4fa8473900741252d93d76ed3307b 2020-03-25T22:25:33Z 972f37c2372d0237eab5efc295f4c79bef958a79ead0c08784bf42e821fc53ba -v1.5.3 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:27:45Z 34e7571a455e5983ca34c846edb323954d89e16ca037bbb68fd8a51d580338b5 -v1.5.3-otp-18 7340ca2d925297e98dd71528a09bf0fb8634b47f 2020-03-25T22:27:37Z 34e7571a455e5983ca34c846edb323954d89e16ca037bbb68fd8a51d580338b5 -v1.5.3-otp-19 7340ca2d925297e98dd71528a09bf0fb8634b47f 2018-11-26T02:26:23Z -v1.5.3-otp-20 7340ca2d925297e98dd71528a09bf0fb8634b47f 2018-11-26T02:24:29Z -v1.6 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:27:39Z 81cae25bef08452ceaf734c382c56f710c55ad5c45e1357a39b1dabf47b65d4b -v1.6-otp-19 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:27:31Z 81cae25bef08452ceaf734c382c56f710c55ad5c45e1357a39b1dabf47b65d4b -v1.6-otp-20 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:26:41Z 1b6fe7864287f959d4e1b401679389e44ea8ba97fb91cbc2fda5232630f2cde7 -v1.6-otp-21 ddc554a7efef67f16e462709e7f46662f21f7ab5 2020-03-25T22:25:53Z ee2763087170a639d9f5c3b044de81bafdbd717aba11e69db9fe7d94007a8c8e -v1.6.0 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:27:06Z 610e548f35d0a90e0a8d291449d17bbba9d5d1e80509792f5e44aea7bb76ac4c -v1.6.0-otp-19 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:26:58Z 610e548f35d0a90e0a8d291449d17bbba9d5d1e80509792f5e44aea7bb76ac4c -v1.6.0-otp-20 63b8d0ba34f38baa6f3a11020215b2f66213d27e 2020-03-25T22:26:09Z c09a0a90143abf9a37fce19a1959308fc52d52c461f1a703eae3ee18b616c683 -v1.6.0-rc.0 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:37:44Z -v1.6.0-rc.0-otp-19 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:38:46Z -v1.6.0-rc.0-otp-20 182c730bdb431fd1ff6789057e4903c33e377f43 2017-12-24T12:39:45Z -v1.6.0-rc.1 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:39:01Z -v1.6.0-rc.1-otp-19 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:40:00Z -v1.6.0-rc.1-otp-20 67e575eca7b97d4fe063626671d1fd1da0ba7fed 2018-01-11T10:40:58Z -v1.6.1 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:28:09Z f9102f0a90aec8ad2a372a782aedc9ed4c3bd0d6ae391a7cc84cb3fc6c5f133c -v1.6.1-otp-19 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:28:03Z f9102f0a90aec8ad2a372a782aedc9ed4c3bd0d6ae391a7cc84cb3fc6c5f133c -v1.6.1-otp-20 2b588dfb3ebb2f3221bec3509cb1dbb8e08ef1af 2020-03-25T22:27:15Z 679c6d51e6955225b6fd553282f09d003ecdc1b2bcebf3fd3d855034a60419f3 -v1.6.2 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T22:28:44Z c9e1e85acfd362fd1dfe6abb89019b57bf44fc032c982a37fca60ec2ccf0cefa -v1.6.2-otp-19 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T22:28:38Z c9e1e85acfd362fd1dfe6abb89019b57bf44fc032c982a37fca60ec2ccf0cefa -v1.6.2-otp-20 c2a9c93f023c0c00e5f387a1476f4cca01752bb8 2020-03-25T21:11:05Z e555433aa78c4c50dc4adcd14f7713f03c8d17ad3bc0db4e8ebbd6cfeca50e85 -v1.6.3 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:29:23Z c33d6c4440838fe1c09e514ff0a907937a5bae5336b424129d8a4375e308bb01 -v1.6.3-otp-19 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:29:16Z c33d6c4440838fe1c09e514ff0a907937a5bae5336b424129d8a4375e308bb01 -v1.6.3-otp-20 45c7f828ef7cb29647d4ac999761ed4e2ff0dc08 2020-03-25T22:28:23Z e9b49410f9c2b49464c23e813d1f43303f9199926323d047631c82019423517f -v1.6.4 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T21:15:15Z f4945bf238bb96675c8462c781f520a23025a58311608b4760f0ca71a98dd0e9 -v1.6.4-otp-19 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T22:29:37Z 57f5902d73f55e502fa9f785c7fa76505e649a494bd507fe55ee98356a5d89b7 -v1.6.4-otp-20 c107a2fe2623d11d132cdfeefbb7370abd44f85c 2020-03-25T22:28:47Z 7b09df2473d0b4073fd7612ba3317b578e1a9646955e18cd15807107a0a11dac -v1.6.5 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:56Z d6bf2716030666d4939211d867fad73eabb9fbacd330861a6e325eded452f84d -v1.6.5-otp-19 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:49Z d6bf2716030666d4939211d867fad73eabb9fbacd330861a6e325eded452f84d -v1.6.5-otp-20 a9f1be07ca1a939739bd013f100686c8cf81432a 2020-03-25T22:29:01Z 1606a442acf49326d6805d9aa0a323fabfb150a27c5cb5de36489d5d759447a5 -v1.6.5-otp-21 a9f1be07ca1a939739bd013f100686c8cf81432a 2018-11-26T02:52:18Z -v1.6.6 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T22:30:57Z 025cb325e1cd9b6823bbd869f1b30f7f0529bef38e52335af5063a292b210a29 -v1.6.6-otp-19 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T22:30:50Z 025cb325e1cd9b6823bbd869f1b30f7f0529bef38e52335af5063a292b210a29 -v1.6.6-otp-20 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2020-03-25T21:14:55Z 25e55384303eaf867722fdfd9ff6ecdd300633a8e35146fa4c90a2f873f1d916 -v1.6.6-otp-21 1ec9d1d7bdd01665deb3607ba6beb8bcd524b85d 2018-11-26T02:57:59Z -v1.7 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:32:27Z 1ecb432fe2fe82a5f4b1287eda09799de1f4544a5cfd451c89544f93b3856b68 -v1.7-otp-19 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:32:19Z 1ecb432fe2fe82a5f4b1287eda09799de1f4544a5cfd451c89544f93b3856b68 -v1.7-otp-20 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:31:26Z feace86783358fe1ccbe5a8b55bfcdaddd64e6a0aef3656ff36c9200b7e8dacb -v1.7-otp-21 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:30:37Z 8535ea645e53e5b1d740fcee364a98e309247a623f28b7b0d281c8cdf518086f -v1.7-otp-22 a1fb6c0d0e801debd2ec88602abc493ef7937907 2020-03-25T22:29:45Z 6cdd6a9714a1fc7209e2498936986418c3a145b14e158df5e9e8d762a52fb281 -v1.7.0 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:17:57Z 16f6a0c235c8766fcb3a97ced61c9e3f08df579f7234464827824a9097b59123 -v1.7.0-otp-19 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T22:32:30Z 3f0ce20986311d9d21121d7e6314fb25ffebe520fd9f4b974074caf74dca33e0 -v1.7.0-otp-20 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:16:57Z c9bbf4d7d9a4088644797bae699f10be011ef0a144faa8c48a14aa40e6d2bd05 -v1.7.0-otp-21 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T22:30:45Z ca180626cc6fcd7a6b4c591410d42e68ad3e0007e07ad645a39fb3c2ed66f6ff -v1.7.0-otp-22 06e5ec2d4c628e57440b0a393e4efa98e7226173 2020-03-25T21:14:57Z c3fee34257d49ba18fce12dc165bea9f65828969ff2e6acc596c0d8a594237d1 -v1.7.0-rc.0 1164784b8ef25967471c068600301db850de58b3 2020-03-25T21:18:18Z f5d16a2382408acddb1a6d18ee73d0e92ae2eaa0d4adfebf8097723743eea85c -v1.7.0-rc.0-otp-19 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:32:36Z 08dbb2970f9ce6a9c4b246dbc8dd8dcace40d7ce0027772da09fdc8891b112e2 -v1.7.0-rc.0-otp-20 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:31:39Z ea293ca82f093a75ef10a377b3fe75ef5244c60388853bfcfcfebd313f21ced1 -v1.7.0-rc.0-otp-21 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:30:48Z 069a6875b80837e39b879ebc7a614cdc6e3a57d903c1c9c113fbf37a0a001805 -v1.7.0-rc.0-otp-22 1164784b8ef25967471c068600301db850de58b3 2020-03-25T22:29:59Z 236dbcc06de39c4c6afb8d72fe8f45e8a260da96aff214e0dfe442108f5bdaac -v1.7.0-rc.1 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:32:49Z 82001fa454804c467dc5d3128273e2f4c51d1529e05ab0dd976c5fbfc810c1c1 -v1.7.0-rc.1-otp-19 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:32:42Z 82001fa454804c467dc5d3128273e2f4c51d1529e05ab0dd976c5fbfc810c1c1 -v1.7.0-rc.1-otp-20 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T21:17:38Z e89ede91c4a824e7b930ad02a0b9c231a0b77cf01f74e122dd72ad29e31f9b99 -v1.7.0-rc.1-otp-21 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:30:59Z 6aa0013c238185014b300016c88f7211a00c5b1b04d3146d4788a7f0e4f2207f -v1.7.0-rc.1-otp-22 b6d77696743a34ade6a222cbe2811440ae4e0018 2020-03-25T22:30:13Z a481cff84a405be9da89721b1ed022f422a45b855d2159266302b3f6f2fa234b -v1.7.1 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2019-05-14T23:45:16Z -v1.7.1-otp-19 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T22:32:44Z b775acc22b7486ee5b0e2a3bb7101206889b4e33d9bb7e5dc734094e949cbfe3 -v1.7.1-otp-20 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T21:17:33Z aa2c20a4e3ac4d2a7767379fa3e185774e7052a969f6595dac4e4d4040e41dd1 -v1.7.1-otp-21 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T21:16:45Z b79f34570ab6ba52b4f0ce6067f6552225f9cc063ffd8d843310d833d7cffeff -v1.7.1-otp-22 8aab53b941ee955f005e7b4e08c333f0b94c48b7 2020-03-25T22:30:09Z 23bb48b55a98a7b47cd58433f6a3c17b6bd18c748ebcb2b32d2f6a90b4057557 -v1.7.2 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:33:25Z bd93d69afaa0ffcb456f158bf785f9b211803e472d5624030877771ba47af2f3 -v1.7.2-otp-19 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:33:18Z bd93d69afaa0ffcb456f158bf785f9b211803e472d5624030877771ba47af2f3 -v1.7.2-otp-20 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T21:17:42Z 1e36d839e8d075e68219944c34b3c90622e0a5698e954c0a22384d412f958509 -v1.7.2-otp-21 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T22:31:36Z f11f023abdf43cbade64b7f0fef316d361e716bf5274aff3398a1ba97411cb41 -v1.7.2-otp-22 2b338092b6da5cd5101072dfdd627cfbb49e4736 2020-03-25T21:16:06Z 83d4c728d4526e7a72e423b2cca650d20ef8cf4cd8ceb1da022c900490de964e -v1.7.3 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:33:58Z 358170a282e52728be7402eadd52fdc66419c322548f2c6f0fd717741c86d029 -v1.7.3-otp-19 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:33:51Z 358170a282e52728be7402eadd52fdc66419c322548f2c6f0fd717741c86d029 -v1.7.3-otp-20 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:32:57Z 7df5ddd0b565c6bfe02b743a7338dd095b74228ea44bf71d912d1875a861c442 -v1.7.3-otp-21 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:32:08Z a20a939d8046184ab45b37efba70705cee4c66f73d227578b7e717a4e65bb26a -v1.7.3-otp-22 8ca85ed2a82019df1a2acf3238f24a56370464bb 2020-03-25T22:31:22Z c3c8b2cff0bef4c91636cd8335988e808ae2978ed90cc0ea2acd238bf60f22d8 -v1.7.4 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:34:34Z c82b6f34a17fc6f9fba9327e9080d2c44c97e11bf00398db2a5c120ac289671b -v1.7.4-otp-19 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:34:21Z c82b6f34a17fc6f9fba9327e9080d2c44c97e11bf00398db2a5c120ac289671b -v1.7.4-otp-20 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:33:29Z 620b4f6097aaa22421a41bde19c838983b2854aebc429b883342b7f71f8542df -v1.7.4-otp-21 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:32:39Z 2b372cbe7d905f3403bc42b9284ae9b84d2c1f9ee3b847ca6bc416c4d941e44d -v1.7.4-otp-22 eb5679bfcc9bd35c4c016e91745b4a1a4d43356a 2020-03-25T22:31:50Z 802ef1addcdfb16408b6b90f9a22c415ae23f5d725e5f5e3101cd196ef3a7b56 -v1.8 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:33:48Z 90a26e9cc5b1cc7e2279dc633ef52e471f8eaaa4ce3263a6e87506427ad3fedc -v1.8-otp-20 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:33:41Z 90a26e9cc5b1cc7e2279dc633ef52e471f8eaaa4ce3263a6e87506427ad3fedc -v1.8-otp-21 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:32:52Z 69def395dc582c762c43267935e07732cddcc7a71a830bb09ce863b49b3d20cc -v1.8-otp-22 6d98af49c929b9e23c7c3b59e93f5f53cedeebd4 2020-03-25T22:32:06Z d7532382e69ba14b947a1405fa88cb05de11713673ab106b589958d456d726e3 -v1.8.0 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:34:52Z c08ff8e7affa636b2b0b0769d63c42289691d70cae832bdf97aeff5c931f8f95 -v1.8.0-otp-20 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:34:38Z c08ff8e7affa636b2b0b0769d63c42289691d70cae832bdf97aeff5c931f8f95 -v1.8.0-otp-21 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2019-05-15T02:00:31Z -v1.8.0-otp-22 2eee2fc6a4c3733537dc95083c4247a1fa723ab1 2020-03-25T22:33:03Z 40a1ca4092f367b2200612cfa16f0e1bd0c9ae7a1088a51665681acb6031c94a -v1.8.0-rc.0 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:22:37Z -v1.8.0-rc.0-otp-20 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:22:34Z -v1.8.0-rc.0-otp-21 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:16:16Z -v1.8.0-rc.0-otp-22 2b594057567f352bd63f43c6535a901db6d37ed4 2019-05-15T01:08:38Z -v1.8.0-rc.1 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T21:21:56Z 794460fe3531805f0a9d1a3ccbecf07fc13df0702002651d308e1ebb3f1a525c -v1.8.0-rc.1-otp-20 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:36:20Z 4743096ed9861d76537c36721c9e198e0efb63536ea05d11cb3c2d50abbacbc6 -v1.8.0-rc.1-otp-21 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:35:32Z f5defae82816a9dfef9f77be83e8d3d9f1b82b750b44825a1bbd58b1f4224c91 -v1.8.0-rc.1-otp-22 32825ebaa0c1f6785dcd30d87f0ade45cd6c20cb 2020-03-25T22:34:43Z 225ed2da0b5d0d6f8a6ac908d06f1e5c7000bdd32cc7e896fa44bd0fdf9939c8 -v1.8.1 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:36:31Z 36ab446e5db70a7d26bffc065054b4c70f3640c4b8b0387b170543c2cd769cd1 -v1.8.1-otp-20 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T21:22:02Z d9f62778b673791aa2bfeb50821eac0f949243bdc26287b3bbe2227771d78a0a -v1.8.1-otp-21 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:35:35Z 1e145564990957496145884aaed03228c7dc4105473f8bf023f567aedd2191cc -v1.8.1-otp-22 511a51ba8925daa025d3c2fd410e170c1b651013 2020-03-25T22:34:51Z 3a4aaa68928a5768441577eb9c90ccfc217ecee9be9da2456dde074d93fb2eda -v1.8.2 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:36:35Z c77e0ac5ab0ba5cff5f573cdf711ed9106db788317ab16cacdcf41a93a795d48 -v1.8.2-otp-20 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:36:28Z c77e0ac5ab0ba5cff5f573cdf711ed9106db788317ab16cacdcf41a93a795d48 -v1.8.2-otp-21 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:35:41Z b406265ae842fe8355244150d06c92e01ab1fdc3e985feb59e9bf13452ac9754 -v1.8.2-otp-22 98485daab0a9f3ac2d7809d38f5e57cd73cb22ac 2020-03-25T22:34:56Z 570c7b1ab710b9a44326d7badc4254f6e66ce3111a3802f0a162210144260234 -v1.9 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T22:36:56Z 403db3ad4ae9e27272a06c6c95850507fa34dc2b311447f2190e22fa2c901ded -v1.9-otp-20 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T22:36:45Z 403db3ad4ae9e27272a06c6c95850507fa34dc2b311447f2190e22fa2c901ded -v1.9-otp-21 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T21:21:43Z 6d538a3e45b4bee6449d085c53f104a0c9680cb006f15857cd689a2e5e3251d5 -v1.9-otp-22 762989b39f62e8dc8153f5ea6c71c57693ffc3f3 2020-03-25T21:20:47Z 80953f1a1cbd8428a3d17042360a0a2c023ea029c2199909df97045f7b962de2 -v1.9.0 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:37:01Z 74808a0308d64f36946dce470b51615117c9933a4454e52d3e25538f243fcfa3 -v1.9.0-otp-20 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:36:55Z 74808a0308d64f36946dce470b51615117c9933a4454e52d3e25538f243fcfa3 -v1.9.0-otp-21 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T21:21:41Z 59dc26d6691062788ec8e774c941098eaa5f02b4ad3c33502e910e4efaf4ee1e -v1.9.0-otp-22 71c335ac2694d4457ac8f4fefdfc68ae167c8775 2020-03-25T22:35:06Z ddae00c5bca44dd5bacbc4c4200be302c96b63cbad9c4433ea9fa0bba1d0a486 -v1.9.0-rc.0 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:37:19Z b6e6026f22a7e590f3b9122f3363a09572f251a288a4e50b9faad63548e81331 -v1.9.0-rc.0-otp-20 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:37:12Z b6e6026f22a7e590f3b9122f3363a09572f251a288a4e50b9faad63548e81331 -v1.9.0-rc.0-otp-21 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2020-03-25T22:36:25Z 698b8b34f9fe12ce3fbf1cf06ca455d689ed83fb927ae70f636a058a4ef9e700 -v1.9.0-rc.0-otp-22 aad7aa4d2255f1c33f2de6525f67cd7e852324d2 2019-06-04T11:49:17Z -v1.9.1 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:37:38Z cf13db14a1fd86d6e8824331eca7a2b41674a4ce04fba838877952194f9d02cd -v1.9.1-otp-20 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:37:31Z cf13db14a1fd86d6e8824331eca7a2b41674a4ce04fba838877952194f9d02cd -v1.9.1-otp-21 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T21:22:51Z 93af7d51379858451b90c1efdd859b7c80e0d9c0fc6531cea06e4edffd85605e -v1.9.1-otp-22 79388035f5391f0a283a48fba792ae3b4f4b5f21 2020-03-25T22:35:55Z 3e9d11d583fe60b4e4d7ae23aa4fa70baf41a4d53df4d1be75d9636637f7f699 -v1.9.2 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T21:24:21Z ec94b266ec22e3479126cfca69bd84002671c93c9a9dfe13e018efc5cf090f9e -v1.9.2-otp-20 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:37:45Z 0971bbcfb1759fdcb2b9dd13907c1f3cb521fbd0afbd177b8a236ad2018b669f -v1.9.2-otp-21 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:36:59Z e579d4f46fbc847d4609d7ca1be4ce28ea08c6c46b9113a278540ea89adb31f8 -v1.9.2-otp-22 ffe7a577cc80f37381dc289c820842d346002364 2020-03-25T22:36:11Z c2a03b667d9f079558995112ca29adb11bde1eeecd6126ac74bdd4a3c583c547 -v1.9.3 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:38:20Z 3f8e1d964e70bbd935b24ee5d06319440b2214ef66c5e6d3007bb1737c7589b2 -v1.9.3-otp-20 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:38:13Z 3f8e1d964e70bbd935b24ee5d06319440b2214ef66c5e6d3007bb1737c7589b2 -v1.9.3-otp-21 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:37:27Z a67f1826a0ee7a66e8588d72ac50843e68316ab275656dc95e1dcca5515dc612 -v1.9.3-otp-22 5af52898d344fda201e2437319449cdc0242eb31 2020-03-25T22:36:42Z 063e93f5de308925aa198343d5fdd65a8ebdff76bf7e8c5f4c0ef76c16f67e4c -v1.9.4 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:38:42Z 46810a6da6e68c4ac408c6e3120d985d87485f62e4afcd62673831d328d9e588 -v1.9.4-otp-20 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:38:36Z 46810a6da6e68c4ac408c6e3120d985d87485f62e4afcd62673831d328d9e588 -v1.9.4-otp-21 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:37:52Z 1e6c090841c267c4828d68647e020c91067daace9ba05669fd5c3ec315175423 -v1.9.4-otp-22 055526057ac9992cc1df87441357c4e56d45235d 2020-03-25T22:37:07Z b5eba5ab892f431a0d914055ee0ba177304e74da0b2af5a657670aa5ce00f10f diff --git a/dist/index.js b/dist/index.js index 7214b810..c646b725 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,50 +1,95 @@ module.exports = -/******/ (function(modules, runtime) { // webpackBootstrap -/******/ "use strict"; -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ __webpack_require__.ab = __dirname + "/"; -/******/ -/******/ // the startup function -/******/ function startup() { -/******/ // Load entry module and return exports -/******/ return __webpack_require__(562); -/******/ }; -/******/ -/******/ // run startup -/******/ return startup(); -/******/ }) -/************************************************************************/ -/******/ ({ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 7351: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const os = __importStar(__nccwpck_require__(2087)); +const utils_1 = __nccwpck_require__(5278); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +function escapeData(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), -/***/ 9: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 2186: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -64,3409 +109,4888 @@ var __importStar = (this && this.__importStar) || function (mod) { result["default"] = mod; return result; }; -Object.defineProperty(exports, "__esModule", { value: true }); -const os = __importStar(__webpack_require__(87)); -const events = __importStar(__webpack_require__(614)); -const child = __importStar(__webpack_require__(129)); -const path = __importStar(__webpack_require__(622)); -const io = __importStar(__webpack_require__(194)); -const ioUtil = __importStar(__webpack_require__(408)); -/* eslint-disable @typescript-eslint/unbound-method */ -const IS_WINDOWS = process.platform === 'win32'; -/* - * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. +Object.defineProperty(exports, "__esModule", ({ value: true })); +const command_1 = __nccwpck_require__(7351); +const file_command_1 = __nccwpck_require__(717); +const utils_1 = __nccwpck_require__(5278); +const os = __importStar(__nccwpck_require__(2087)); +const path = __importStar(__nccwpck_require__(5622)); +/** + * The code to exit an action */ -class ToolRunner extends events.EventEmitter { - constructor(toolPath, args, options) { - super(); - if (!toolPath) { - throw new Error("Parameter 'toolPath' cannot be null or empty."); - } - this.toolPath = toolPath; - this.args = args || []; - this.options = options || {}; - } - _debug(message) { - if (this.options.listeners && this.options.listeners.debug) { - this.options.listeners.debug(message); - } - } - _getCommandString(options, noPrefix) { - const toolPath = this._getSpawnFileName(); - const args = this._getSpawnArgs(options); - let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool - if (IS_WINDOWS) { - // Windows + cmd file - if (this._isCmdFile()) { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows + verbatim - else if (options.windowsVerbatimArguments) { - cmd += `"${toolPath}"`; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows (regular) - else { - cmd += this._windowsQuoteCmdArg(toolPath); - for (const a of args) { - cmd += ` ${this._windowsQuoteCmdArg(a)}`; - } - } - } - else { - // OSX/Linux - this can likely be improved with some form of quoting. - // creating processes on Unix is fundamentally different than Windows. - // on Unix, execvp() takes an arg array. - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - return cmd; +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + const delimiter = '_GitHubActionsFileCommandDelimeter_'; + const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; + file_command_1.issueCommand('ENV', commandValue); } - _processLineBuffer(data, strBuffer, onLine) { - try { - let s = strBuffer + data.toString(); - let n = s.indexOf(os.EOL); - while (n > -1) { - const line = s.substring(0, n); - onLine(line); - // the rest of the string ... - s = s.substring(n + os.EOL.length); - n = s.indexOf(os.EOL); - } - strBuffer = s; - } - catch (err) { - // streaming lines to console is best effort. Don't fail a build. - this._debug(`error processing line. Failed with error ${err}`); - } + else { + command_1.issueCommand('set-env', { name }, convertedVal); } - _getSpawnFileName() { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - return process.env['COMSPEC'] || 'cmd.exe'; - } - } - return this.toolPath; +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueCommand('PATH', inputPath); } - _getSpawnArgs(options) { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; - for (const a of this.args) { - argline += ' '; - argline += options.windowsVerbatimArguments - ? a - : this._windowsQuoteCmdArg(a); - } - argline += '"'; - return [argline]; - } - } - return this.args; + else { + command_1.issueCommand('add-path', {}, inputPath); } - _endsWith(str, end) { - return str.endsWith(end); + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. The value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + command_1.issueCommand('set-output', { name }, value); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + */ +function error(message) { + command_1.issue('error', message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds an warning issue + * @param message warning issue message. Errors will be converted to string via toString() + */ +function warning(message) { + command_1.issue('warning', message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + command_1.issueCommand('save-state', { name }, value); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 717: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// For internal use, subject to change. +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const fs = __importStar(__nccwpck_require__(5747)); +const os = __importStar(__nccwpck_require__(2087)); +const utils_1 = __nccwpck_require__(5278); +function issueCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueCommand = issueCommand; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 5278: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 1514: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tr = __importStar(__nccwpck_require__(8159)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 8159: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const os = __importStar(__nccwpck_require__(2087)); +const events = __importStar(__nccwpck_require__(8614)); +const child = __importStar(__nccwpck_require__(3129)); +const path = __importStar(__nccwpck_require__(5622)); +const io = __importStar(__nccwpck_require__(7436)); +const ioUtil = __importStar(__nccwpck_require__(1962)); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + strBuffer = s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); } _isCmdFile() { const upperToolPath = this.toolPath.toUpperCase(); return (this._endsWith(upperToolPath, '.CMD') || this._endsWith(upperToolPath, '.BAT')); } - _windowsQuoteCmdArg(arg) { - // for .exe, apply the normal quoting rules that libuv applies - if (!this._isCmdFile()) { - return this._uvQuoteCmdArg(arg); + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + const stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + const errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + }); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); } - // otherwise apply quoting rules specific to the cmd.exe command line parser. - // the libuv rules are generic and are not designed specifically for cmd.exe - // command line parser. - // - // for a detailed description of the cmd.exe command line parser, refer to - // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 - // need quotes for empty arg - if (!arg) { - return '""'; + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; } - // determine whether the arg needs to be quoted - const cmdSpecialChars = [ - ' ', - '\t', - '&', - '(', - ')', - '[', - ']', - '{', - '}', - '^', - '=', - ';', - '!', - "'", - '+', - ',', - '`', - '~', - '|', - '<', - '>', - '"' - ]; - let needsQuotes = false; - for (const char of arg) { - if (cmdSpecialChars.some(x => x === char)) { - needsQuotes = true; - break; + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + +/***/ 1962: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const assert_1 = __nccwpck_require__(2357); +const fs = __nccwpck_require__(5747); +const path = __nccwpck_require__(5622); +_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +exports.IS_WINDOWS = process.platform === 'win32'; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Recursively create a directory at `fsPath`. + * + * This implementation is optimistic, meaning it attempts to create the full + * path first, and backs up the path stack from there. + * + * @param fsPath The path to create + * @param maxDepth The maximum recursion depth + * @param depth The current recursion depth + */ +function mkdirP(fsPath, maxDepth = 1000, depth = 1) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + fsPath = path.resolve(fsPath); + if (depth >= maxDepth) + return exports.mkdir(fsPath); + try { + yield exports.mkdir(fsPath); + return; + } + catch (err) { + switch (err.code) { + case 'ENOENT': { + yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1); + yield exports.mkdir(fsPath); + return; + } + default: { + let stats; + try { + stats = yield exports.stat(fsPath); + } + catch (err2) { + throw err; + } + if (!stats.isDirectory()) + throw err; + } + } + } + }); +} +exports.mkdirP = mkdirP; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } } } - // short-circuit if quotes not needed - if (!needsQuotes) { - return arg; + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +//# sourceMappingURL=io-util.js.map + +/***/ }), + +/***/ 7436: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const childProcess = __nccwpck_require__(3129); +const path = __nccwpck_require__(5622); +const util_1 = __nccwpck_require__(1669); +const ioUtil = __nccwpck_require__(1962); +const exec = util_1.promisify(childProcess.exec); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; } - // the following quoting rules are very similar to the rules that by libuv applies. - // - // 1) wrap the string in quotes - // - // 2) double-up quotes - i.e. " => "" - // - // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately - // doesn't work well with a cmd.exe command line. - // - // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. - // for example, the command line: - // foo.exe "myarg:""my val""" - // is parsed by a .NET console app into an arg array: - // [ "myarg:\"my val\"" ] - // which is the same end result when applying libuv quoting rules. although the actual - // command line from libuv quoting rules would look like: - // foo.exe "myarg:\"my val\"" - // - // 3) double-up slashes that precede a quote, - // e.g. hello \world => "hello \world" - // hello\"world => "hello\\""world" - // hello\\"world => "hello\\\\""world" - // hello world\ => "hello world\\" - // - // technically this is not required for a cmd.exe command line, or the batch argument parser. - // the reasons for including this as a .cmd quoting rule are: - // - // a) this is optimized for the scenario where the argument is passed from the .cmd file to an - // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. - // - // b) it's what we've been doing previously (by deferring to node default behavior) and we - // haven't heard any complaints about that aspect. - // - // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be - // escaped when used on the command line directly - even though within a .cmd file % can be escaped - // by using %%. - // - // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts - // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. - // - // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would - // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the - // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args - // to an external program. - // - // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. - // % can be escaped within a .cmd file. - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; // double the slash - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '"'; // double the quote + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); } else { - quoteHit = false; + yield cpDirRecursive(source, newDest, 0, force); } } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _uvQuoteCmdArg(arg) { - // Tool runner wraps child_process.spawn() and needs to apply the same quoting as - // Node in certain cases where the undocumented spawn option windowsVerbatimArguments - // is used. - // - // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, - // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), - // pasting copyright notice from Node within this function: - // - // Copyright Joyent, Inc. and other Node contributors. All rights reserved. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to - // deal in the Software without restriction, including without limitation the - // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - // sell copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - // IN THE SOFTWARE. - if (!arg) { - // Need double quotation for empty argument - return '""'; + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); } - if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { - // No quotation needed - return arg; + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } } - if (!arg.includes('"') && !arg.includes('\\')) { - // No embedded double quotes or backslashes, so I can just wrap - // quote marks around the whole thing. - return `"${arg}"`; + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another + // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. + try { + if (yield ioUtil.isDirectory(inputPath, true)) { + yield exec(`rd /s /q "${inputPath}"`); + } + else { + yield exec(`del /f /a "${inputPath}"`); + } + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } + // Shelling out fails to remove a symlink folder with missing source, this unlink catches that + try { + yield ioUtil.unlink(inputPath); + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } } - // Expected input/output: - // input : hello"world - // output: "hello\"world" - // input : hello""world - // output: "hello\"\"world" - // input : hello\world - // output: hello\world - // input : hello\\world - // output: hello\\world - // input : hello\"world - // output: "hello\\\"world" - // input : hello\\"world - // output: "hello\\\\\"world" - // input : hello world\ - // output: "hello world\\" - note the comment in libuv actually reads "hello world\" - // but it appears the comment is wrong, it should be "hello world\\" - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; + else { + let isDir = false; + try { + isDir = yield ioUtil.isDirectory(inputPath); } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '\\'; + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + return; + } + if (isDir) { + yield exec(`rm -rf "${inputPath}"`); } else { - quoteHit = false; + yield ioUtil.unlink(inputPath); } } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _cloneExecOptions(options) { - options = options || {}; - const result = { - cwd: options.cwd || process.cwd(), - env: options.env || process.env, - silent: options.silent || false, - windowsVerbatimArguments: options.windowsVerbatimArguments || false, - failOnStdErr: options.failOnStdErr || false, - ignoreReturnCode: options.ignoreReturnCode || false, - delay: options.delay || 10000 - }; - result.outStream = options.outStream || process.stdout; - result.errStream = options.errStream || process.stderr; - return result; - } - _getSpawnOptions(options, toolPath) { - options = options || {}; - const result = {}; - result.cwd = options.cwd; - result.env = options.env; - result['windowsVerbatimArguments'] = - options.windowsVerbatimArguments || this._isCmdFile(); - if (options.windowsVerbatimArguments) { - result.argv0 = `"${toolPath}"`; + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + yield ioUtil.mkdirP(fsPath); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); } - return result; - } - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec() { - return __awaiter(this, void 0, void 0, function* () { - // root the tool path if it is unrooted and contains relative pathing - if (!ioUtil.isRooted(this.toolPath) && - (this.toolPath.includes('/') || - (IS_WINDOWS && this.toolPath.includes('\\')))) { - // prefer options.cwd if it is specified, however options.cwd may also need to be rooted - this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); - } - // if the tool is only a file name, then resolve it from the PATH - // otherwise verify it exists (add extension on Windows if necessary) - this.toolPath = yield io.which(this.toolPath, true); - return new Promise((resolve, reject) => { - this._debug(`exec tool: ${this.toolPath}`); - this._debug('arguments:'); - for (const arg of this.args) { - this._debug(` ${arg}`); + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); } - const optionsNonNull = this._cloneExecOptions(this.options); - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); } - const state = new ExecState(optionsNonNull, this.toolPath); - state.on('debug', (message) => { - this._debug(message); - }); - const fileName = this._getSpawnFileName(); - const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); - const stdbuffer = ''; - if (cp.stdout) { - cp.stdout.on('data', (data) => { - if (this.options.listeners && this.options.listeners.stdout) { - this.options.listeners.stdout(data); - } - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(data); - } - this._processLineBuffer(data, stdbuffer, (line) => { - if (this.options.listeners && this.options.listeners.stdline) { - this.options.listeners.stdline(line); - } - }); - }); + } + } + try { + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env.PATHEXT) { + for (const extension of process.env.PATHEXT.split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } } - const errbuffer = ''; - if (cp.stderr) { - cp.stderr.on('data', (data) => { - state.processStderr = true; - if (this.options.listeners && this.options.listeners.stderr) { - this.options.listeners.stderr(data); - } - if (!optionsNonNull.silent && - optionsNonNull.errStream && - optionsNonNull.outStream) { - const s = optionsNonNull.failOnStdErr - ? optionsNonNull.errStream - : optionsNonNull.outStream; - s.write(data); - } - this._processLineBuffer(data, errbuffer, (line) => { - if (this.options.listeners && this.options.listeners.errline) { - this.options.listeners.errline(line); - } - }); - }); + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return filePath; } - cp.on('error', (err) => { - state.processError = err.message; - state.processExited = true; - state.processClosed = true; - state.CheckComplete(); - }); - cp.on('exit', (code) => { - state.processExitCode = code; - state.processExited = true; - this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); - state.CheckComplete(); - }); - cp.on('close', (code) => { - state.processExitCode = code; - state.processExited = true; - state.processClosed = true; - this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); - state.CheckComplete(); - }); - state.on('done', (error, exitCode) => { - if (stdbuffer.length > 0) { - this.emit('stdline', stdbuffer); - } - if (errbuffer.length > 0) { - this.emit('errline', errbuffer); - } - cp.removeAllListeners(); - if (error) { - reject(error); - } - else { - resolve(exitCode); - } - }); - if (this.options.input) { - if (!cp.stdin) { - throw new Error('child process missing stdin'); + return ''; + } + // if any path separators, return empty + if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) { + return ''; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); } - cp.stdin.end(this.options.input); } - }); - }); - } -} -exports.ToolRunner = ToolRunner; -/** - * Convert an arg string to an array of args. Handles escaping - * - * @param argString string of arguments - * @returns string[] array of arguments - */ -function argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let arg = ''; - function append(c) { - // we only escape double quotes. - if (escaped && c !== '"') { - arg += '\\'; + } + // return the first match + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions); + if (filePath) { + return filePath; + } + } + return ''; } - arg += c; - escaped = false; - } - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; + catch (err) { + throw new Error(`which failed with message ${err.message}`); + } + }); +} +exports.which = which; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + return { force, recursive }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); } else { - append(c); + yield copyFile(srcFile, destFile, force); } - continue; } - if (c === '\\' && escaped) { - append(c); - continue; + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); } - if (c === '\\' && inQuotes) { - escaped = true; - continue; + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); } - if (c === ' ' && !inQuotes) { - if (arg.length > 0) { - args.push(arg); - arg = ''; - } - continue; + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + +/***/ 7129: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// A linked list to keep track of recently-used-ness +const Yallist = __nccwpck_require__(665) + +const MAX = Symbol('max') +const LENGTH = Symbol('length') +const LENGTH_CALCULATOR = Symbol('lengthCalculator') +const ALLOW_STALE = Symbol('allowStale') +const MAX_AGE = Symbol('maxAge') +const DISPOSE = Symbol('dispose') +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet') +const LRU_LIST = Symbol('lruList') +const CACHE = Symbol('cache') +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet') + +const naiveLength = () => 1 + +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options } + + if (!options) + options = {} + + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + const max = this[MAX] = options.max || Infinity + + const lc = options.length || naiveLength + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc + this[ALLOW_STALE] = options.stale || false + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0 + this[DISPOSE] = options.dispose + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false + this.reset() + } + + // resize the cache when the max changes. + set max (mL) { + if (typeof mL !== 'number' || mL < 0) + throw new TypeError('max must be a non-negative number') + + this[MAX] = mL || Infinity + trim(this) + } + get max () { + return this[MAX] + } + + set allowStale (allowStale) { + this[ALLOW_STALE] = !!allowStale + } + get allowStale () { + return this[ALLOW_STALE] + } + + set maxAge (mA) { + if (typeof mA !== 'number') + throw new TypeError('maxAge must be a non-negative number') + + this[MAX_AGE] = mA + trim(this) + } + get maxAge () { + return this[MAX_AGE] + } + + // resize the cache when the lengthCalculator changes. + set lengthCalculator (lC) { + if (typeof lC !== 'function') + lC = naiveLength + + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC + this[LENGTH] = 0 + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key) + this[LENGTH] += hit.length + }) + } + trim(this) + } + get lengthCalculator () { return this[LENGTH_CALCULATOR] } + + get length () { return this[LENGTH] } + get itemCount () { return this[LRU_LIST].length } + + rforEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev + forEachStep(this, fn, walker, thisp) + walker = prev + } + } + + forEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next + forEachStep(this, fn, walker, thisp) + walker = next + } + } + + keys () { + return this[LRU_LIST].toArray().map(k => k.key) + } + + values () { + return this[LRU_LIST].toArray().map(k => k.value) + } + + reset () { + if (this[DISPOSE] && + this[LRU_LIST] && + this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)) + } + + this[CACHE] = new Map() // hash of items by key + this[LRU_LIST] = new Yallist() // list of items in order of use recency + this[LENGTH] = 0 // length of items in the list + } + + dump () { + return this[LRU_LIST].map(hit => + isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h) + } + + dumpLru () { + return this[LRU_LIST] + } + + set (key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE] + + if (maxAge && typeof maxAge !== 'number') + throw new TypeError('maxAge must be a number') + + const now = maxAge ? Date.now() : 0 + const len = this[LENGTH_CALCULATOR](value, key) + + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)) + return false + } + + const node = this[CACHE].get(key) + const item = node.value + + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value) + } + + item.now = now + item.maxAge = maxAge + item.value = value + this[LENGTH] += len - item.length + item.length = len + this.get(key) + trim(this) + return true + } + + const hit = new Entry(key, value, len, now, maxAge) + + // oversized objects fall out of cache automatically. + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value) + + return false + } + + this[LENGTH] += hit.length + this[LRU_LIST].unshift(hit) + this[CACHE].set(key, this[LRU_LIST].head) + trim(this) + return true + } + + has (key) { + if (!this[CACHE].has(key)) return false + const hit = this[CACHE].get(key).value + return !isStale(this, hit) + } + + get (key) { + return get(this, key, true) + } + + peek (key) { + return get(this, key, false) + } + + pop () { + const node = this[LRU_LIST].tail + if (!node) + return null + + del(this, node) + return node.value + } + + del (key) { + del(this, this[CACHE].get(key)) + } + + load (arr) { + // reset the cache + this.reset() + + const now = Date.now() + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l] + const expiresAt = hit.e || 0 + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v) + else { + const maxAge = expiresAt - now + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge) } - append(c); + } + } + } + + prune () { + this[CACHE].forEach((value, key) => get(this, key, false)) + } +} + +const get = (self, key, doUse) => { + const node = self[CACHE].get(key) + if (node) { + const hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now() + self[LRU_LIST].unshiftNode(node) + } + } + return hit.value + } +} + +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false + + const diff = Date.now() - hit.now + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) +} + +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev + del(self, walker) + walker = prev + } + } +} + +const del = (self, node) => { + if (node) { + const hit = node.value + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value) + + self[LENGTH] -= hit.length + self[CACHE].delete(hit.key) + self[LRU_LIST].removeNode(node) + } +} + +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key + this.value = value + this.length = length + this.now = now + this.maxAge = maxAge || 0 + } +} + +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + hit = undefined + } + if (hit) + fn.call(thisp, hit.value, hit.key, self) +} + +module.exports = LRUCache + + +/***/ }), + +/***/ 1532: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + constructor (comp, options) { + options = parseOptions(options) + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } } - if (arg.length > 0) { - args.push(arg.trim()); + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') } - return args; + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + const sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + const sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + const sameSemVer = this.semver.version === comp.semver.version + const differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + const oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<') + const oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>') + + return ( + sameDirectionIncreasing || + sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || + oppositeDirectionsGreaterThan + ) + } } -exports.argStringToArray = argStringToArray; -class ExecState extends events.EventEmitter { - constructor(options, toolPath) { - super(); - this.processClosed = false; // tracks whether the process has exited and stdio is closed - this.processError = ''; - this.processExitCode = 0; - this.processExited = false; // tracks whether the process has exited - this.processStderr = false; // tracks whether stderr was written to - this.delay = 10000; // 10 seconds - this.done = false; - this.timeout = null; - if (!toolPath) { - throw new Error('toolPath must not be empty'); - } - this.options = options; - this.toolPath = toolPath; - if (options.delay) { - this.delay = options.delay; - } + +module.exports = Comparator + +const parseOptions = __nccwpck_require__(785) +const {re, t} = __nccwpck_require__(9523) +const cmp = __nccwpck_require__(5098) +const debug = __nccwpck_require__(427) +const SemVer = __nccwpck_require__(8088) +const Range = __nccwpck_require__(9828) + + +/***/ }), + +/***/ 9828: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } } - CheckComplete() { - if (this.done) { - return; - } - if (this.processClosed) { - this._setResult(); - } - else if (this.processExited) { - this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this); + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.format() + return this + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range + .split(/\s*\|\|\s*/) + // map the range to a 2d array of comparators + .map(range => this.parseRange(range.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${range}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) + this.set = [first] + else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } } + } } - _debug(message) { - this.emit('debug', message); + + this.format() + } + + format () { + this.range = this.set + .map((comps) => { + return comps.join(' ').trim() + }) + .join('||') + .trim() + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + range = range.trim() + + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = Object.keys(this.options).join(',') + const memoKey = `parseRange:${memoOpts}:${range}` + const cached = cache.get(memoKey) + if (cached) + return cached + + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[t.COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + // in loose mode, throw out any that are not valid comparators + .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) + .map(comp => new Comparator(comp, this.options)) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const l = rangeList.length + const rangeMap = new Map() + for (const comp of rangeList) { + if (isNullSet(comp)) + return [comp] + rangeMap.set(comp.value, comp) } - _setResult() { - // determine whether there is an error - let error; - if (this.processExited) { - if (this.processError) { - error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); - } - else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { - error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); - } - else if (this.processStderr && this.options.failOnStdErr) { - error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); - } + if (rangeMap.size > 1 && rangeMap.has('')) + rangeMap.delete('') + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} +module.exports = Range + +const LRU = __nccwpck_require__(7129) +const cache = new LRU({ max: 1000 }) + +const parseOptions = __nccwpck_require__(785) +const Comparator = __nccwpck_require__(1532) +const debug = __nccwpck_require__(427) +const SemVer = __nccwpck_require__(8088) +const { + re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace +} = __nccwpck_require__(9523) + +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +const replaceTildes = (comp, options) => + comp.trim().split(/\s+/).map((comp) => { + return replaceTilde(comp, options) + }).join(' ') + +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +const replaceCarets = (comp, options) => + comp.trim().split(/\s+/).map((comp) => { + return replaceCaret(comp, options) + }).join(' ') + +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` } - // clear the timeout - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0` } - this.done = true; - this.emit('done', error, this.processExitCode); + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } } - static HandleTimeout(state) { - if (state.done) { - return; + + debug('caret return', ret) + return ret + }) +} + +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map((comp) => { + return replaceXRange(comp, options) + }).join(' ') +} + +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 } - if (!state.processClosed && state.processExited) { - const message = `The STDIO streams did not close within ${state.delay / - 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; - state._debug(message); + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 } - state._setResult(); + } + + if (gtlt === '<') + pr = '-0' + + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` } + + debug('xRange return', ret) + + return ret + }) } -//# sourceMappingURL=toolrunner.js.map -/***/ }), +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') +} -/***/ 82: -/***/ (function(__unusedmodule, exports) { +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp.trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} -"use strict"; +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } + + return (`${from} ${to}`).trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false } - else if (typeof input === 'string' || input instanceof String) { - return input; + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -//# sourceMappingURL=utils.js.map -/***/ }), + // Version has a -pre, but it's not one of the ones we like. + return false + } -/***/ 87: -/***/ (function(module) { + return true +} -module.exports = require("os"); /***/ }), -/***/ 102: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 8088: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +const debug = __nccwpck_require__(427) +const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293) +const { re, t } = __nccwpck_require__(9523) -// For internal use, subject to change. -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__webpack_require__(747)); -const os = __importStar(__webpack_require__(87)); -const utils_1 = __webpack_require__(82); -function issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueCommand = issueCommand; -//# sourceMappingURL=file-command.js.map +const parseOptions = __nccwpck_require__(785) +const { compareIdentifiers } = __nccwpck_require__(2463) +class SemVer { + constructor (version, options) { + options = parseOptions(options) -/***/ }), + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid Version: ${version}`) + } -/***/ 129: -/***/ (function(module) { + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } -module.exports = require("child_process"); + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease -/***/ }), + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) -/***/ 194: -/***/ (function(__unusedmodule, exports, __webpack_require__) { + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } -"use strict"; + this.raw = version -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const childProcess = __webpack_require__(129); -const path = __webpack_require__(622); -const util_1 = __webpack_require__(669); -const ioUtil = __webpack_require__(408); -const exec = util_1.promisify(childProcess.exec); -/** - * Copies a file or folder. - * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -function cp(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - const { force, recursive } = readCopyOptions(options); - const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; - // Dest is an existing file, but not forcing - if (destStat && destStat.isFile() && !force) { - return; - } - // If dest is an existing directory, should copy inside. - const newDest = destStat && destStat.isDirectory() - ? path.join(dest, path.basename(source)) - : dest; - if (!(yield ioUtil.exists(source))) { - throw new Error(`no such file or directory: ${source}`); - } - const sourceStat = yield ioUtil.stat(source); - if (sourceStat.isDirectory()) { - if (!recursive) { - throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); - } - else { - yield cpDirRecursive(source, newDest, 0, force); - } - } - else { - if (path.relative(source, newDest) === '') { - // a file cannot be copied to itself - throw new Error(`'${newDest}' and '${source}' are the same file`); - } - yield copyFile(source, newDest, force); - } - }); -} -exports.cp = cp; -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See MoveOptions. - */ -function mv(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - if (yield ioUtil.exists(dest)) { - let destExists = true; - if (yield ioUtil.isDirectory(dest)) { - // If dest is directory copy src into dest - dest = path.join(dest, path.basename(source)); - destExists = yield ioUtil.exists(dest); - } - if (destExists) { - if (options.force == null || options.force) { - yield rmRF(dest); - } - else { - throw new Error('Destination already exists'); - } - } - } - yield mkdirP(path.dirname(dest)); - yield ioUtil.rename(source, dest); - }); -} -exports.mv = mv; -/** - * Remove a path recursively with force - * - * @param inputPath path to remove - */ -function rmRF(inputPath) { - return __awaiter(this, void 0, void 0, function* () { - if (ioUtil.IS_WINDOWS) { - // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another - // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. - try { - if (yield ioUtil.isDirectory(inputPath, true)) { - yield exec(`rd /s /q "${inputPath}"`); - } - else { - yield exec(`del /f /a "${inputPath}"`); - } - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } - // Shelling out fails to remove a symlink folder with missing source, this unlink catches that - try { - yield ioUtil.unlink(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } - } - else { - let isDir = false; - try { - isDir = yield ioUtil.isDirectory(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - return; - } - if (isDir) { - yield exec(`rm -rf "${inputPath}"`); - } - else { - yield ioUtil.unlink(inputPath); - } + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } } - }); -} -exports.rmRF = rmRF; -/** - * Make a directory. Creates the full path with folders in between - * Will throw if it fails - * - * @param fsPath path to create - * @returns Promise - */ -function mkdirP(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - yield ioUtil.mkdirP(fsPath); - }); -} -exports.mkdirP = mkdirP; -/** - * Returns path of a tool had the tool actually been invoked. Resolves via paths. - * If you check and the tool does not exist, it will throw. - * - * @param tool name of the tool - * @param check whether to check if tool exists - * @returns Promise path to tool - */ -function which(tool, check) { - return __awaiter(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ) + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) } - // recursive when check=true - if (check) { - const result = yield which(tool, false); - if (!result) { - if (ioUtil.IS_WINDOWS) { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); - } - else { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); - } - } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ } - try { - // build the list of extensions to try - const extensions = []; - if (ioUtil.IS_WINDOWS && process.env.PATHEXT) { - for (const extension of process.env.PATHEXT.split(path.delimiter)) { - if (extension) { - extensions.push(extension); - } - } - } - // if it's rooted, return it if exists. otherwise return empty. - if (ioUtil.isRooted(tool)) { - const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); - if (filePath) { - return filePath; - } - return ''; - } - // if any path separators, return empty - if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) { - return ''; - } - // build the list of directories - // - // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, - // it feels like we should not do this. Checking the current directory seems like more of a use - // case of a shell, and the which() function exposed by the toolkit should strive for consistency - // across platforms. - const directories = []; - if (process.env.PATH) { - for (const p of process.env.PATH.split(path.delimiter)) { - if (p) { - directories.push(p); - } - } - } - // return the first match - for (const directory of directories) { - const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions); - if (filePath) { - return filePath; - } - } - return ''; + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ } - catch (err) { - throw new Error(`which failed with message ${err.message}`); + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ } - }); -} -exports.which = which; -function readCopyOptions(options) { - const force = options.force == null ? true : options.force; - const recursive = Boolean(options.recursive); - return { force, recursive }; -} -function cpDirRecursive(sourceDir, destDir, currentDepth, force) { - return __awaiter(this, void 0, void 0, function* () { - // Ensure there is not a run away recursive copy - if (currentDepth >= 255) - return; - currentDepth++; - yield mkdirP(destDir); - const files = yield ioUtil.readdir(sourceDir); - for (const fileName of files) { - const srcFile = `${sourceDir}/${fileName}`; - const destFile = `${destDir}/${fileName}`; - const srcFileStat = yield ioUtil.lstat(srcFile); - if (srcFileStat.isDirectory()) { - // Recurse - yield cpDirRecursive(srcFile, destFile, currentDepth, force); - } - else { - yield copyFile(srcFile, destFile, force); + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } } - // Change the mode for the newly created directory - yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); - }); -} -// Buffered file copy -function copyFile(srcFile, destFile, force) { - return __awaiter(this, void 0, void 0, function* () { - if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { - // unlink/re-link it - try { - yield ioUtil.lstat(destFile); - yield ioUtil.unlink(destFile); - } - catch (e) { - // Try to override file permission - if (e.code === 'EPERM') { - yield ioUtil.chmod(destFile, '0666'); - yield ioUtil.unlink(destFile); - } - // other errors = it doesn't exist, no work to do + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] } - // Copy over symlink - const symlinkFull = yield ioUtil.readlink(srcFile); - yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); - } - else if (!(yield ioUtil.exists(destFile)) || force) { - yield ioUtil.copyFile(srcFile, destFile); + } else { + this.prerelease = [identifier, 0] + } } - }); + break + + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.format() + this.raw = this.version + return this + } } -//# sourceMappingURL=io.js.map + +module.exports = SemVer + /***/ }), -/***/ 211: -/***/ (function(module) { +/***/ 8848: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const parse = __nccwpck_require__(5925) +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} +module.exports = clean -module.exports = require("https"); /***/ }), -/***/ 280: -/***/ (function(module, exports) { +/***/ 5098: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -exports = module.exports = SemVer +const eq = __nccwpck_require__(1898) +const neq = __nccwpck_require__(6017) +const gt = __nccwpck_require__(4123) +const gte = __nccwpck_require__(5522) +const lt = __nccwpck_require__(194) +const lte = __nccwpck_require__(7520) -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) - } -} else { - debug = function () {} -} +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0' + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b -var MAX_LENGTH = 256 -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 + case '': + case '=': + case '==': + return eq(a, b, loose) -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 + case '!=': + return neq(a, b, loose) -// The actual regexps go on exports.re -var re = exports.re = [] -var src = exports.src = [] -var t = exports.tokens = {} -var R = 0 + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) -function tok (n) { - t[n] = R++ + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } } +module.exports = cmp -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. +/***/ }), + +/***/ 3466: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const SemVer = __nccwpck_require__(8088) +const parse = __nccwpck_require__(5925) +const {re, t} = __nccwpck_require__(9523) -tok('NUMERICIDENTIFIER') -src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' -tok('NUMERICIDENTIFIERLOOSE') -src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+' +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. + if (typeof version === 'number') { + version = String(version) + } -tok('NONNUMERICIDENTIFIER') -src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + if (typeof version !== 'string') { + return null + } -// ## Main Version -// Three dot-separated numeric identifiers. + options = options || {} -tok('MAINVERSION') -src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')' + let match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + let next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } -tok('MAINVERSIONLOOSE') -src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' + if (match === null) + return null -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. + return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) +} +module.exports = coerce -tok('PRERELEASEIDENTIFIER') -src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' -tok('PRERELEASEIDENTIFIERLOOSE') -src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' +/***/ }), -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. +/***/ 2156: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -tok('PRERELEASE') -src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' +const SemVer = __nccwpck_require__(8088) +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} +module.exports = compareBuild -tok('PRERELEASELOOSE') -src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. +/***/ }), -tok('BUILDIDENTIFIER') -src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+' +/***/ 2804: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. +const compare = __nccwpck_require__(4309) +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose -tok('BUILD') -src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + - '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. +/***/ }), -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. +/***/ 4309: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -tok('FULL') -tok('FULLPLAIN') -src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + - src[t.PRERELEASE] + '?' + - src[t.BUILD] + '?' +const SemVer = __nccwpck_require__(8088) +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) -src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' +module.exports = compare -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -tok('LOOSEPLAIN') -src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + - src[t.PRERELEASELOOSE] + '?' + - src[t.BUILD] + '?' -tok('LOOSE') -src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' +/***/ }), -tok('GTLT') -src[t.GTLT] = '((?:<|>)?=?)' +/***/ 4297: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -tok('XRANGEIDENTIFIERLOOSE') -src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' -tok('XRANGEIDENTIFIER') -src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' - -tok('XRANGEPLAIN') -src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:' + src[t.PRERELEASE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGEPLAINLOOSE') -src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[t.PRERELEASELOOSE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGE') -src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' -tok('XRANGELOOSE') -src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' +const parse = __nccwpck_require__(5925) +const eq = __nccwpck_require__(1898) -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -tok('COERCE') -src[t.COERCE] = '(^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])' -tok('COERCERTL') -re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') +const diff = (version1, version2) => { + if (eq(version1, version2)) { + return null + } else { + const v1 = parse(version1) + const v2 = parse(version2) + const hasPre = v1.prerelease.length || v2.prerelease.length + const prefix = hasPre ? 'pre' : '' + const defaultResult = hasPre ? 'prerelease' : '' + for (const key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} +module.exports = diff -// Tilde ranges. -// Meaning is "reasonably at or greater than" -tok('LONETILDE') -src[t.LONETILDE] = '(?:~>?)' -tok('TILDETRIM') -src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' -re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') -var tildeTrimReplace = '$1~' +/***/ }), -tok('TILDE') -src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' -tok('TILDELOOSE') -src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' +/***/ 1898: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// Caret ranges. -// Meaning is "at least and backwards compatible with" -tok('LONECARET') -src[t.LONECARET] = '(?:\\^)' +const compare = __nccwpck_require__(4309) +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq -tok('CARETTRIM') -src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' -re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') -var caretTrimReplace = '$1^' -tok('CARET') -src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' -tok('CARETLOOSE') -src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' +/***/ }), -// A simple gt/lt/eq thing, or just "" to indicate "any version" -tok('COMPARATORLOOSE') -src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' -tok('COMPARATOR') -src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' +/***/ 4123: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -tok('COMPARATORTRIM') -src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + - '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' +const compare = __nccwpck_require__(4309) +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt -// this one has to use the /g flag -re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') -var comparatorTrimReplace = '$1$2$3' -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -tok('HYPHENRANGE') -src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAIN] + ')' + - '\\s*$' - -tok('HYPHENRANGELOOSE') -src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s*$' +/***/ }), -// Star ranges basically just allow anything at all. -tok('STAR') -src[t.STAR] = '(<|>)?=?\\s*\\*' +/***/ 5522: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]) - if (!re[i]) { - re[i] = new RegExp(src[i]) - } -} +const compare = __nccwpck_require__(4309) +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - return version - } +/***/ }), - if (typeof version !== 'string') { - return null - } +/***/ 900: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (version.length > MAX_LENGTH) { - return null - } +const SemVer = __nccwpck_require__(8088) - var r = options.loose ? re[t.LOOSE] : re[t.FULL] - if (!r.test(version)) { - return null +const inc = (version, release, options, identifier) => { + if (typeof (options) === 'string') { + identifier = options + options = undefined } try { - return new SemVer(version, options) + return new SemVer(version, options).inc(release, identifier).version } catch (er) { return null } } +module.exports = inc -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} - -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} - -exports.SemVer = SemVer - -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } +/***/ }), - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose +/***/ 194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) +const compare = __nccwpck_require__(4309) +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } - this.raw = version +/***/ }), - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] +/***/ 7520: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } +const compare = __nccwpck_require__(4309) +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } +/***/ }), - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map(function (id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } +/***/ 6688: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.build = m[5] ? m[5].split('.') : [] - this.format() -} +const SemVer = __nccwpck_require__(8088) +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major -SemVer.prototype.format = function () { - this.version = this.major + '.' + this.minor + '.' + this.patch - if (this.prerelease.length) { - this.version += '-' + this.prerelease.join('.') - } - return this.version -} -SemVer.prototype.toString = function () { - return this.version -} +/***/ }), -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +/***/ 8447: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return this.compareMain(other) || this.comparePre(other) -} +const SemVer = __nccwpck_require__(8088) +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} +/***/ }), -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +/***/ 6017: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } +const compare = __nccwpck_require__(4309) +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq - var i = 0 - do { - var a = this.prerelease[i] - var b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} -SemVer.prototype.compareBuild = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +/***/ }), - var i = 0 - do { - var a = this.build[i] - var b = other.build[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} +/***/ 5925: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break +const {MAX_LENGTH} = __nccwpck_require__(2293) +const { re, t } = __nccwpck_require__(9523) +const SemVer = __nccwpck_require__(8088) - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - var i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break +const parseOptions = __nccwpck_require__(785) +const parse = (version, options) => { + options = parseOptions(options) - default: - throw new Error('invalid increment argument: ' + release) + if (version instanceof SemVer) { + return version } - this.format() - this.raw = this.version - return this -} -exports.inc = inc -function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose - loose = undefined + if (typeof version !== 'string') { + return null } - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { + if (version.length > MAX_LENGTH) { return null } -} -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { + const r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined } -} - -exports.compareIdentifiers = compareIdentifiers -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b + try { + return new SemVer(version, options) + } catch (er) { + return null } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} - -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major } -exports.minor = minor -function minor (a, loose) { - return new SemVer(a, loose).minor -} - -exports.patch = patch -function patch (a, loose) { - return new SemVer(a, loose).patch -} - -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} - -exports.compareLoose = compareLoose -function compareLoose (a, b) { - return compare(a, b, true) -} - -exports.compareBuild = compareBuild -function compareBuild (a, b, loose) { - var versionA = new SemVer(a, loose) - var versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} - -exports.rcompare = rcompare -function rcompare (a, b, loose) { - return compare(b, a, loose) -} +module.exports = parse -exports.sort = sort -function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(a, b, loose) - }) -} -exports.rsort = rsort -function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(b, a, loose) - }) -} +/***/ }), -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} +/***/ 2866: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -exports.lt = lt -function lt (a, b, loose) { - return compare(a, b, loose) < 0 -} +const SemVer = __nccwpck_require__(8088) +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch -exports.eq = eq -function eq (a, b, loose) { - return compare(a, b, loose) === 0 -} -exports.neq = neq -function neq (a, b, loose) { - return compare(a, b, loose) !== 0 -} +/***/ }), -exports.gte = gte -function gte (a, b, loose) { - return compare(a, b, loose) >= 0 -} +/***/ 4016: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 +const parse = __nccwpck_require__(5925) +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null } +module.exports = prerelease -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b +/***/ }), - case '': - case '=': - case '==': - return eq(a, b, loose) +/***/ 6417: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - case '!=': - return neq(a, b, loose) +const compare = __nccwpck_require__(4309) +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare - case '>': - return gt(a, b, loose) - case '>=': - return gte(a, b, loose) +/***/ }), - case '<': - return lt(a, b, loose) +/***/ 8701: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - case '<=': - return lte(a, b, loose) +const compareBuild = __nccwpck_require__(2156) +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort - default: - throw new TypeError('Invalid operator: ' + op) - } -} -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +/***/ }), - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } +/***/ 6055: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) +const Range = __nccwpck_require__(9828) +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false } + return range.test(version) +} +module.exports = satisfies - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } +/***/ }), - debug('comp', this) -} +/***/ 1426: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var m = comp.match(r) +const compareBuild = __nccwpck_require__(2156) +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } +/***/ }), - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } -} +/***/ 9601: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Comparator.prototype.toString = function () { - return this.value +const parse = __nccwpck_require__(5925) +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null } +module.exports = valid -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } +/***/ }), - return cmp(version, this.operator, this.semver, this.options) +/***/ 1383: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// just pre-load all the stuff that index.js lazily exports +const internalRe = __nccwpck_require__(9523) +module.exports = { + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: __nccwpck_require__(2293).SEMVER_SPEC_VERSION, + SemVer: __nccwpck_require__(8088), + compareIdentifiers: __nccwpck_require__(2463).compareIdentifiers, + rcompareIdentifiers: __nccwpck_require__(2463).rcompareIdentifiers, + parse: __nccwpck_require__(5925), + valid: __nccwpck_require__(9601), + clean: __nccwpck_require__(8848), + inc: __nccwpck_require__(900), + diff: __nccwpck_require__(4297), + major: __nccwpck_require__(6688), + minor: __nccwpck_require__(8447), + patch: __nccwpck_require__(2866), + prerelease: __nccwpck_require__(4016), + compare: __nccwpck_require__(4309), + rcompare: __nccwpck_require__(6417), + compareLoose: __nccwpck_require__(2804), + compareBuild: __nccwpck_require__(2156), + sort: __nccwpck_require__(1426), + rsort: __nccwpck_require__(8701), + gt: __nccwpck_require__(4123), + lt: __nccwpck_require__(194), + eq: __nccwpck_require__(1898), + neq: __nccwpck_require__(6017), + gte: __nccwpck_require__(5522), + lte: __nccwpck_require__(7520), + cmp: __nccwpck_require__(5098), + coerce: __nccwpck_require__(3466), + Comparator: __nccwpck_require__(1532), + Range: __nccwpck_require__(9828), + satisfies: __nccwpck_require__(6055), + toComparators: __nccwpck_require__(2706), + maxSatisfying: __nccwpck_require__(579), + minSatisfying: __nccwpck_require__(832), + minVersion: __nccwpck_require__(4179), + validRange: __nccwpck_require__(2098), + outside: __nccwpck_require__(420), + gtr: __nccwpck_require__(9380), + ltr: __nccwpck_require__(3323), + intersects: __nccwpck_require__(7008), + simplifyRange: __nccwpck_require__(5297), + subset: __nccwpck_require__(7863), } -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - var rangeTmp +/***/ }), - if (this.operator === '') { - if (this.value === '') { - return true - } - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - var sameSemVer = this.semver.version === comp.semver.version - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan -} - -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } +/***/ 2293: +/***/ ((module) => { - if (range instanceof Comparator) { - return new Range(range.value, options) - } +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' - if (!(this instanceof Range)) { - return new Range(range, options) - } +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 - // First, split based on boolean or || - this.raw = range - this.set = range.split(/\s*\|\|\s*/).map(function (range) { - return this.parseRange(range.trim()) - }, this).filter(function (c) { - // throw out any that are not relevant for whatever reason - return c.length - }) +module.exports = { + SEMVER_SPEC_VERSION, + MAX_LENGTH, + MAX_SAFE_INTEGER, + MAX_SAFE_COMPONENT_LENGTH +} - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range) - } - this.format() -} +/***/ }), -Range.prototype.format = function () { - this.range = this.set.map(function (comps) { - return comps.join(' ').trim() - }).join('||').trim() - return this.range -} +/***/ 427: +/***/ ((module) => { -Range.prototype.toString = function () { - return this.range -} +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} -Range.prototype.parseRange = function (range) { - var loose = this.options.loose - range = range.trim() - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) +module.exports = debug - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) +/***/ }), - // normalize spaces - range = range.split(/\s+/).join(' ') +/***/ 2463: +/***/ ((module) => { - // At this point, the range is completely trimmed and - // ready to be split into comparators. +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + const anum = numeric.test(a) + const bnum = numeric.test(b) - var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function (comp) { - return !!comp.match(compRe) - }) + if (anum && bnum) { + a = +a + b = +b } - set = set.map(function (comp) { - return new Comparator(comp, this.options) - }, this) - return set + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 } -Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) - return this.set.some(function (thisComparators) { - return ( - isSatisfiable(thisComparators, options) && - range.set.some(function (rangeComparators) { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every(function (thisComparator) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) +module.exports = { + compareIdentifiers, + rcompareIdentifiers } -// take a set of comparators and determine whether there -// exists a version which can satisfy it -function isSatisfiable (comparators, options) { - var result = true - var remainingComparators = comparators.slice() - var testComparator = remainingComparators.pop() - while (result && remainingComparators.length) { - result = remainingComparators.every(function (otherComparator) { - return testComparator.intersects(otherComparator, options) - }) +/***/ }), - testComparator = remainingComparators.pop() - } +/***/ 785: +/***/ ((module) => { - return result -} +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((options, k) => { + options[k] = true + return options + }, {}) +module.exports = parseOptions -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator (comp, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} +/***/ }), -function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' -} +/***/ 9523: +/***/ ((module, exports, __nccwpck_require__) => { -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} +const { MAX_SAFE_COMPONENT_LENGTH } = __nccwpck_require__(2293) +const debug = __nccwpck_require__(427) +exports = module.exports = {} -function replaceTilde (comp, options) { - var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr) - var ret +// The actual regexps go on exports.re +const re = exports.re = [] +const src = exports.src = [] +const t = exports.t = {} +let R = 0 + +const createToken = (name, value, isGlobal) => { + const index = R++ + debug(index, value) + t[name] = index + src[index] = value + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) +} - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else if (pr) { - debug('replaceTilde pr', pr) - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. - debug('tilde return', ret) - return ret - }) -} +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+') -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - if (M === '0') { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else { - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + (+M + 1) + '.0.0' - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0' - } - } +createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*') - debug('caret return', ret) - return ret - }) -} +// ## Main Version +// Three dot-separated numeric identifiers. -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') -} +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, function (ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - var xM = isX(M) - var xm = xM || isX(m) - var xp = xm || isX(p) - var anyX = xp +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) - if (gtlt === '=' && anyX) { - gtlt = '' - } +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] +}|${src[t.NONNUMERICIDENTIFIER]})`) - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] +}|${src[t.NONNUMERICIDENTIFIER]})`) - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. - ret = gtlt + M + '.' + m + '.' + p + pr - } else if (xm) { - ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr - } else if (xp) { - ret = '>=' + M + '.' + m + '.0' + pr + - ' <' + M + '.' + (+m + 1) + '.0' + pr - } +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) - debug('xRange return', ret) +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) - return ret - }) -} +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') -} +createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+') -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = '>=' + fM + '.0.0' - } else if (isX(fp)) { - from = '>=' + fM + '.' + fm + '.0' - } else { - from = '>=' + from - } +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = '<' + (+tM + 1) + '.0.0' - } else if (isX(tp)) { - to = '<' + tM + '.' + (+tm + 1) + '.0' - } else if (tpr) { - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr - } else { - to = '<=' + to - } +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - return (from + ' ' + to).trim() -} +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function (version) { - if (!version) { - return false - } +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false -} +createToken('FULL', `^${src[t.FULLPLAIN]}$`) -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue - } +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } +createToken('GTLT', '((?:<|>)?=?)') - // Version has a -pre, but it's not one of the ones we like. - return false - } +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) + +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) - return true -} +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) -exports.satisfies = satisfies -function satisfies (version, range, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }) - } +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' - if (minver && range.test(minver)) { - return minver - } +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) - return null -} +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$') -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} + +/***/ }), + +/***/ 9380: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { // Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) +const outside = __nccwpck_require__(420) +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr + + +/***/ }), + +/***/ 7008: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const Range = __nccwpck_require__(9828) +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) } +module.exports = intersects -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) - var gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } +/***/ }), - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } +/***/ 3323: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. +const outside = __nccwpck_require__(420) +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - var high = null - var low = null +/***/ }), - comparators.forEach(function (comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) +/***/ 579: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } +const SemVer = __nccwpck_require__(8088) +const Range = __nccwpck_require__(9828) - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } } - } - return true -} - -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null + }) + return max } +module.exports = maxSatisfying -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} -exports.coerce = coerce -function coerce (version, options) { - if (version instanceof SemVer) { - return version - } +/***/ }), - if (typeof version === 'number') { - version = String(version) - } +/***/ 832: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (typeof version !== 'string') { +const SemVer = __nccwpck_require__(8088) +const Range = __nccwpck_require__(9828) +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { return null } - - options = options || {} - - var match = null - if (!options.rtl) { - match = version.match(re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - var next - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1 - } - - if (match === null) { - return null - } - - return parse(match[2] + - '.' + (match[3] || '0') + - '.' + (match[4] || '0'), options) + }) + return min } +module.exports = minSatisfying /***/ }), -/***/ 357: -/***/ (function(module) { +/***/ 4179: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = require("assert"); +const SemVer = __nccwpck_require__(8088) +const Range = __nccwpck_require__(9828) +const gt = __nccwpck_require__(4123) -/***/ }), +const minVersion = (range, loose) => { + range = new Range(range, loose) -/***/ 408: -/***/ (function(__unusedmodule, exports, __webpack_require__) { + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } -"use strict"; + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -const assert_1 = __webpack_require__(357); -const fs = __webpack_require__(747); -const path = __webpack_require__(622); -_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; -exports.IS_WINDOWS = process.platform === 'win32'; -function exists(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - try { - yield exports.stat(fsPath); - } - catch (err) { - if (err.code === 'ENOENT') { - return false; - } - throw err; - } - return true; - }); -} -exports.exists = exists; -function isDirectory(fsPath, useStat = false) { - return __awaiter(this, void 0, void 0, function* () { - const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); - return stats.isDirectory(); - }); -} -exports.isDirectory = isDirectory; -/** - * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: - * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). - */ -function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (exports.IS_WINDOWS) { - return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello - ); // e.g. C: or C:\hello - } - return p.startsWith('/'); -} -exports.isRooted = isRooted; -/** - * Recursively create a directory at `fsPath`. - * - * This implementation is optimistic, meaning it attempts to create the full - * path first, and backs up the path stack from there. - * - * @param fsPath The path to create - * @param maxDepth The maximum recursion depth - * @param depth The current recursion depth - */ -function mkdirP(fsPath, maxDepth = 1000, depth = 1) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(fsPath, 'a path argument must be provided'); - fsPath = path.resolve(fsPath); - if (depth >= maxDepth) - return exports.mkdir(fsPath); - try { - yield exports.mkdir(fsPath); - return; - } - catch (err) { - switch (err.code) { - case 'ENOENT': { - yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1); - yield exports.mkdir(fsPath); - return; - } - default: { - let stats; - try { - stats = yield exports.stat(fsPath); - } - catch (err2) { - throw err; - } - if (!stats.isDirectory()) - throw err; - } - } - } - }); -} -exports.mkdirP = mkdirP; -/** - * Best effort attempt to determine whether a file exists and is executable. - * @param filePath file path to check - * @param extensions additional file extensions to try - * @return if file exists and is executable, returns the file path. otherwise empty string. - */ -function tryGetExecutablePath(filePath, extensions) { - return __awaiter(this, void 0, void 0, function* () { - let stats = undefined; - try { - // test file exists - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // on Windows, test for valid extension - const upperExt = path.extname(filePath).toUpperCase(); - if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { - return filePath; - } - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - // try each extension - const originalFilePath = filePath; - for (const extension of extensions) { - filePath = originalFilePath + extension; - stats = undefined; - try { - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // preserve the case of the actual file (since an extension was appended) - try { - const directory = path.dirname(filePath); - const upperName = path.basename(filePath).toUpperCase(); - for (const actualName of yield exports.readdir(directory)) { - if (upperName === actualName.toUpperCase()) { - filePath = path.join(directory, actualName); - break; - } - } - } - catch (err) { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); - } - return filePath; - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - } - return ''; - }); + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) + minver = setMin + } + + if (minver && range.test(minver)) { + return minver + } + + return null } -exports.tryGetExecutablePath = tryGetExecutablePath; -function normalizeSeparators(p) { - p = p || ''; - if (exports.IS_WINDOWS) { - // convert slashes on Windows - p = p.replace(/\//g, '\\'); - // remove redundant slashes - return p.replace(/\\\\+/g, '\\'); +module.exports = minVersion + + +/***/ }), + +/***/ 420: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const SemVer = __nccwpck_require__(8088) +const Comparator = __nccwpck_require__(1532) +const {ANY} = Comparator +const Range = __nccwpck_require__(9828) +const satisfies = __nccwpck_require__(6055) +const gt = __nccwpck_require__(4123) +const lt = __nccwpck_require__(194) +const lte = __nccwpck_require__(7520) +const gte = __nccwpck_require__(5522) + +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) + + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let high = null + let low = null + + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false } - // remove redundant slashes - return p.replace(/\/\/+/g, '/'); + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true } -// on Mac/Linux, test the execute bit -// R W X R W X R W X -// 256 128 64 32 16 8 4 2 1 -function isUnixExecutable(stats) { - return ((stats.mode & 1) > 0 || - ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || - ((stats.mode & 64) > 0 && stats.uid === process.getuid())); + +module.exports = outside + + +/***/ }), + +/***/ 5297: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = __nccwpck_require__(6055) +const compare = __nccwpck_require__(4309) +module.exports = (versions, range, options) => { + const set = [] + let min = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!min) + min = version + } else { + if (prev) { + set.push([min, prev]) + } + prev = null + min = null + } + } + if (min) + set.push([min, null]) + + const ranges = [] + for (const [min, max] of set) { + if (min === max) + ranges.push(min) + else if (!max && min === v[0]) + ranges.push('*') + else if (!max) + ranges.push(`>=${min}`) + else if (min === v[0]) + ranges.push(`<=${max}`) + else + ranges.push(`${min} - ${max}`) + } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range } -//# sourceMappingURL=io-util.js.map + /***/ }), -/***/ 431: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 7863: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const Range = __nccwpck_require__(9828) +const { ANY } = __nccwpck_require__(1532) +const satisfies = __nccwpck_require__(6055) +const compare = __nccwpck_require__(4309) + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else return false +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If any C is a = range, and GT or LT are set, return false +// - Else return true + +const subset = (sub, dom, options) => { + if (sub === dom) + return true -"use strict"; + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const os = __importStar(__webpack_require__(87)); -const utils_1 = __webpack_require__(82); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) + continue OUTER + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) + return false + } + return true } -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) + return true + + if (sub.length === 1 && sub[0].semver === ANY) + return dom.length === 1 && dom[0].semver === ANY + + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') + gt = higherGT(gt, c, options) + else if (c.operator === '<' || c.operator === '<=') + lt = lowerLT(lt, c, options) + else + eqSet.add(c.semver) + } + + if (eqSet.size > 1) + return null + + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) + return null + else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) + return null + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) + return null + + if (lt && !satisfies(eq, String(lt), options)) + return null + + for (const c of dom) { + if (!satisfies(eq, String(c), options)) + return false } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; + + return true + } + + let higher, lower + let hasDomLT, hasDomGT + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) + return false + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) + return false } + if (lt) { + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) + return false + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) + return false + } + if (!c.operator && (lt || gt) && gtltComp !== 0) + return false + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) + return false + + if (lt && hasDomGT && !gt && gtltComp !== 0) + return false + + return true } -function escapeData(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) + return b + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a } -function escapeProperty(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) + return b + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a } -//# sourceMappingURL=command.js.map -/***/ }), +module.exports = subset + + +/***/ }), + +/***/ 2706: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const Range = __nccwpck_require__(9828) + +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + +module.exports = toComparators + + +/***/ }), + +/***/ 2098: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const Range = __nccwpck_require__(9828) +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange + + +/***/ }), + +/***/ 4091: +/***/ ((module) => { + +"use strict"; + +module.exports = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value + } + } +} + + +/***/ }), + +/***/ 665: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +module.exports = Yallist + +Yallist.Node = Node +Yallist.create = Yallist + +function Yallist (list) { + var self = this + if (!(self instanceof Yallist)) { + self = new Yallist() + } + + self.tail = null + self.head = null + self.length = 0 + + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item) + }) + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]) + } + } + + return self +} + +Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } + + var next = node.next + var prev = node.prev + + if (next) { + next.prev = prev + } + + if (prev) { + prev.next = next + } -/***/ 449: -/***/ (function(module, __unusedexports, __webpack_require__) { + if (node === this.head) { + this.head = next + } + if (node === this.tail) { + this.tail = prev + } -const {exec} = __webpack_require__(986) -const path = __webpack_require__(622) -const semver = __webpack_require__(280) + node.list.length-- + node.next = null + node.prev = null + node.list = null -module.exports = {installElixir, installOTP} + return next +} -/** - * Install Elixir. - * - * @param {string} version - * @param {string} otpMajor - */ -async function installElixir(version, otpMajor) { - if (process.platform === 'linux') { - const otpString = otpMajor ? `-otp-${otpMajor}` : '' - await exec(__webpack_require__.ab + "install-elixir", [version, otpString]) +Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var head = this.head + node.list = this + node.next = head + if (head) { + head.prev = node + } + + this.head = node + if (!this.tail) { + this.tail = node } + this.length++ } -/** - * Install OTP. - * - * @param {string} version - */ -async function installOTP(version, osVersion) { - if (process.platform === 'linux') { - await exec(__webpack_require__.ab + "install-otp", [version, osVersion]) +Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { return } - throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') + if (node.list) { + node.list.removeNode(node) + } + + var tail = this.tail + node.list = this + node.prev = tail + if (tail) { + tail.next = node + } + + this.tail = node + if (!this.head) { + this.head = node + } + this.length++ } +Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]) + } + return this.length +} -/***/ }), +Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]) + } + return this.length +} -/***/ 470: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined + } -"use strict"; + var res = this.tail.value + this.tail = this.tail.prev + if (this.tail) { + this.tail.next = null + } else { + this.head = null + } + this.length-- + return res +} -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const command_1 = __webpack_require__(431); -const file_command_1 = __webpack_require__(102); -const utils_1 = __webpack_require__(82); -const os = __importStar(__webpack_require__(87)); -const path = __importStar(__webpack_require__(622)); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - const delimiter = '_GitHubActionsFileCommandDelimeter_'; - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); - } +Yallist.prototype.shift = function () { + if (!this.head) { + return undefined + } + + var res = this.head.value + this.head = this.head.next + if (this.head) { + this.head.prev = null + } else { + this.tail = null + } + this.length-- + return res } -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + +Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this) + walker = walker.next + } } -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueCommand('PATH', inputPath); - } - else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; + +Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this) + walker = walker.prev + } } -exports.addPath = addPath; -/** - * Gets the value of an input. The value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - return val.trim(); + +Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next + } + if (i === n && walker !== null) { + return walker.value + } } -exports.getInput = getInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - command_1.issueCommand('set-output', { name }, value); + +Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev + } + if (i === n && walker !== null) { + return walker.value + } } -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); + +Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.next + } + return res } -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); + +Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.prev + } + return res } -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; + +Yallist.prototype.reduce = function (fn, initial) { + var acc + var walker = this.head + if (arguments.length > 1) { + acc = initial + } else if (this.head) { + walker = this.head.next + acc = this.head.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i) + walker = walker.next + } + + return acc } -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - command_1.issueCommand('debug', {}, message); + +Yallist.prototype.reduceReverse = function (fn, initial) { + var acc + var walker = this.tail + if (arguments.length > 1) { + acc = initial + } else if (this.tail) { + walker = this.tail.prev + acc = this.tail.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i) + walker = walker.prev + } + + return acc } -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - */ -function error(message) { - command_1.issue('error', message instanceof Error ? message.toString() : message); + +Yallist.prototype.toArray = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value + walker = walker.next + } + return arr } -exports.error = error; -/** - * Adds an warning issue - * @param message warning issue message. Errors will be converted to string via toString() - */ -function warning(message) { - command_1.issue('warning', message instanceof Error ? message.toString() : message); + +Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value + walker = walker.prev + } + return arr +} + +Yallist.prototype.slice = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1 + } + if (start < 0) { + start = this.length + start; + } + + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next + } + + var ret = [] + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value) + walker = this.removeNode(walker) + } + if (walker === null) { + walker = this.tail + } + + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev + } + + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]) + } + return ret; +} + +Yallist.prototype.reverse = function () { + var head = this.head + var tail = this.tail + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev + walker.prev = walker.next + walker.next = p + } + this.head = tail + this.tail = head + return this +} + +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self) + + if (inserted.next === null) { + self.tail = inserted + } + if (inserted.prev === null) { + self.head = inserted + } + + self.length++ + + return inserted } -exports.warning = warning; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); + +function push (self, item) { + self.tail = new Node(item, self.tail, null, self) + if (!self.head) { + self.head = self.tail + } + self.length++ } -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - command_1.issue('group', name); + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self) + if (!self.tail) { + self.tail = self.head + } + self.length++ } -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - command_1.issue('endgroup'); + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list + this.value = value + + if (prev) { + prev.next = this + this.prev = prev + } else { + this.prev = null + } + + if (next) { + next.prev = this + this.next = next + } else { + this.next = null + } } -exports.endGroup = endGroup; + +try { + // add if support for Symbol.iterator is present + __nccwpck_require__(4091)(Yallist) +} catch (er) {} + + +/***/ }), + +/***/ 2127: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const {exec} = __nccwpck_require__(1514) +const path = __nccwpck_require__(5622) + /** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. + * Install Erlang/OTP. * - * @param name The name of the group - * @param fn The function to wrap in the group + * @param {string} osVersion + * @param {string} otpVersion */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } - finally { - endGroup(); - } - return result; - }); +async function installOTP(osVersion, otpVersion) { + await exec(__nccwpck_require__.ab + "install-otp", [osVersion, otpVersion]) } -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- + /** - * Saves state for current action, the state can only be retrieved by this action's post job execution. + * Install Elixir. * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify + * @param {string} elixirVersion */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); +async function installElixir(elixirVersion) { + await exec(__nccwpck_require__.ab + "install-elixir", [elixirVersion]) } -exports.saveState = saveState; + /** - * Gets the value of an state set by this action's main execution. + * Install rebar3. * - * @param name name of the state to get - * @returns string + * @param {string} rebar3Version */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; +async function installRebar3(rebar3Version) { + await exec(__nccwpck_require__.ab + "install-rebar3", [rebar3Version]) } -exports.getState = getState; -//# sourceMappingURL=core.js.map + +function checkPlatform() { + if (process.platform !== 'linux') { + throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') + } +} + +module.exports = { + installOTP: installOTP, + installElixir: installElixir, + installRebar3: installRebar3, + checkPlatform: checkPlatform, +} + /***/ }), -/***/ 562: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 7037: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const core = __webpack_require__(470) -const {exec} = __webpack_require__(986) -const {installElixir, installOTP} = __webpack_require__(449) -const path = __webpack_require__(622) -const semver = __webpack_require__(280) -const https = __webpack_require__(211) -const { - fstat, - promises: {readFile}, -} = __webpack_require__(747) +const core = __nccwpck_require__(2186) +const {exec} = __nccwpck_require__(1514) +const installer = __nccwpck_require__(2127) +const path = __nccwpck_require__(5622) +const semver = __nccwpck_require__(1383) +const https = __nccwpck_require__(7211) -main().catch(err => { +main().catch((err) => { core.setFailed(err.message) }) async function main() { - checkPlatform() + installer.checkPlatform() const osVersion = getRunnerOSVersion() const otpSpec = core.getInput('otp-version', {required: true}) - const elixirSpec = core.getInput('elixir-version', {required: true}) - const otpVersion = await getOtpVersion(otpSpec, osVersion) - const [elixirVersion, otpMajor] = await getElixirVersion( - elixirSpec, - otpVersion - ) + const otpVersion = await installOTP(otpSpec, osVersion) - let installHex = core.getInput('install-hex') - installHex = installHex == null ? 'true' : installHex - - let installRebar = core.getInput('install-rebar') - installRebar = installRebar == null ? 'true' : installRebar + const elixirSpec = core.getInput('elixir-version', {required: false}) + const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion) + if (elixirInstalled === true) { + const shouldMixRebar = core.getInput('install-rebar', { + required: false, + }) + await mix(shouldMixRebar, 'rebar') + const shouldMixHex = core.getInput('install-hex', { + required: false, + }) + await mix(shouldMixHex, 'hex') + } - console.log(`##[group]Installing OTP ${otpVersion} - built on ${osVersion}`) - await installOTP(otpVersion, osVersion) - console.log(`##[endgroup]`) + const rebar3Spec = core.getInput('rebar3-version', {required: false}) + maybeInstallRebar3(rebar3Spec) +} - console.log(`##[group]Installing Elixir ${elixirVersion}`) - await installElixir(elixirVersion, otpMajor) +async function installOTP(otpSpec, osVersion) { + const otpVersion = await getOTPVersion(otpSpec, osVersion) + console.log( + `##[group]Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`, + ) + await installer.installOTP(osVersion, otpVersion) + core.setOutput('otp-version', otpVersion) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/otp/bin`) console.log(`##[endgroup]`) - process.env.PATH = `${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin:${process.env.RUNNER_TEMP}/.setup-beam/otp/bin:${process.env.PATH}` + return otpVersion +} - if (installRebar === 'true') await exec('mix local.rebar --force') - if (installHex === 'true') await exec('mix local.hex --force') +async function maybeInstallElixir(elixirSpec, otpVersion) { + if (elixirSpec) { + const elixirVersion = await getElixirVersion(elixirSpec, otpVersion) + console.log(`##[group]Installing Elixir ${elixirVersion}`) + await installer.installElixir(elixirVersion) + core.setOutput('elixir-version', elixirVersion) + const matchersPath = __nccwpck_require__.ab + ".github" + console.log(`##[add-matcher]${path.join(matchersPath, 'elixir.json')}`) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`) + console.log(`##[endgroup]`) - const matchersPath = __webpack_require__.ab + ".github" - console.log(`##[add-matcher]${path.join(matchersPath, 'elixir.json')}`) - core.setOutput('otp-version', otpVersion) - core.setOutput('elixir-version', elixirVersion) - core.setOutput('osVersion', osVersion) + return true + } else { + return false + } } -function checkPlatform() { - if (process.platform !== 'linux') - throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') +async function mix(shouldMix, what) { + if (shouldMix) { + const cmd = 'mix' + const args = [`local.${what}`, '--force'] + console.log(`##[group]Running ${cmd} ${args}`) + await exec(cmd, args) + console.log(`##[endgroup]`) + } } -async function getOtpVersion(spec, osVersion) { - const version = getVersionFromSpec(spec, await getOtpVersions(osVersion)) - return version ? `OTP-${version}` : spec -} +async function maybeInstallRebar3(rebar3Spec) { + if (rebar3Spec) { + const rebar3Version = await getRebar3Version(rebar3Spec) + console.log(`##[group]Installing rebar3 ${rebar3Version}`) + await installer.installRebar3(rebar3Version) + core.setOutput('rebar3-version', rebar3Version) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`) + console.log(`##[endgroup]`) -function getRunnerOSVersion() { - const mapToUbuntuVersion = { - ubuntu16: 'ubuntu-16.04', - ubuntu18: 'ubuntu-18.04', - ubuntu20: 'ubuntu-20.04', + return true + } else { + return false } - - return mapToUbuntuVersion[process.env.ImageOS] || 'ubuntu-18.04' } -exports.getElixirVersion = getElixirVersion - -async function getElixirVersion(spec, otpVersion) { - const versions = await getElixirVersions() - const semverRegex = /^v(\d+\.\d+\.\d+(?:-.+)?)/ +async function getOTPVersion(otpSpec0, osVersion) { + const otpVersions = await getOTPVersions(osVersion) + const otpSpec = otpSpec0.match(/^(OTP-)?([^ ]+)/) + let otpVersion + if (otpSpec[1]) { + throw new Error( + `Requested Erlang/OTP version (from spec ${otpSpec0}) ` + + `should not contain 'OTP-'`, + ) + } + if (otpSpec) { + otpVersion = getVersionFromSpec( + otpSpec[2], + Array.from(otpVersions.keys()).sort(), + ) + } + if (otpVersion === null) { + throw new Error( + `Requested Erlang/OTP version (from spec ${otpSpec0}) not found in build listing`, + ) + } - const semverVersions = Array.from(versions.keys()) - .filter(str => str.match(semverRegex)) - .map(str => str.match(semverRegex)[1]) + return otpVersions.get(otpVersion) // from the reference, for download +} - const version = getVersionFromSpec(spec, semverVersions) - const gitRef = version ? `v${version}` : spec - const otpMatch = otpVersion.match(/^OTP-([\.\d]+)/) +async function getElixirVersion(exSpec0, otpVersion) { + const elixirVersions = await getElixirVersions() + const semverVersions = Array.from(elixirVersions.keys()).sort() - if (otpMatch != null && versions.get(gitRef).includes(otpMatch[0])) { - return [gitRef, otpMatch[0]] + const exSpec = exSpec0.match(/^(.+)(-otp-.+)/) || exSpec0.match(/^(.+)/) + let elixirVersion + if (exSpec[2]) { + throw new Error( + `Requested Elixir / Erlang/OTP version (from spec ${exSpec0} / ${otpVersion}) ` + + `should not contain '-otp-...'`, + ) + } + if (exSpec) { + elixirVersion = getVersionFromSpec(exSpec[1], semverVersions) + } + if (!exSpec || elixirVersion === null) { + throw new Error( + `Requested Elixir version (from spec ${exSpec0}) not found in build listing`, + ) + } + const otpMatch = otpVersion.match(/^(?:OTP-)?([^\.]+)/) + let elixirVersionWithOTP + + if (elixirVersions.get(elixirVersion)) { + const otpVersionMajor = otpMatch[1] + // We try for a version like `v1.4.5-otp-20`... + if (elixirVersions.get(elixirVersion).includes(otpMatch[1])) { + // ... and it's available: use it! + elixirVersionWithOTP = elixirVersion + `-otp-${otpVersionMajor}` + core.info(`Using Elixir / -otp- version ${elixirVersionWithOTP}`) + } else { + // ... and it's not available: fallback to the "generic" version (v1.4.5 only). + elixirVersionWithOTP = elixirVersion + core.info(`Using Elixir ${elixirVersionWithOTP}`) + } } else { - return [gitRef, null] + throw new Error( + `Requested Elixir / Erlang/OTP version (from spec ${exSpec0} / ${otpVersion}) not ` + + `found in build listing`, + ) } + + return elixirVersionWithOTP } -function getVersionFromSpec(spec, versions) { - if (versions.includes(spec)) { - return spec - } else { - const range = semver.validRange(spec) - return semver.maxSatisfying(versions, range) +async function getRebar3Version(r3Spec) { + const rebar3Versions = await getRebar3Versions() + const rebar3Version = getVersionFromSpec(r3Spec, rebar3Versions) + if (rebar3Version === null) { + throw new Error( + `Requested rebar3 version (from spec ${r3Spec}) not found in build listing`, + ) } + + return rebar3Version } -async function getOtpVersions(osVersion) { - const result = await get( - `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt` +async function getOTPVersions(osVersion) { + const otpVersionsListing = await get( + `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`, ) + const otpVersions = new Map() - return result + otpVersionsListing .trim() .split('\n') - .map(line => { - const match = line.match(/^OTP-([\.\d]+)/) + .map((line) => { + debugger + const otpMatch = line.match(/^(OTP-)?([^ ]+)/) - if (match) { - const [_, version] = match - return version - } else { - return line - } + const otpVersion = otpMatch[2] + otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference }) + .sort() + + return otpVersions } async function getElixirVersions() { - const result = await get('https://repo.hex.pm/builds/elixir/builds.txt') - const map = new Map() + const elixirVersionsListing = await get( + 'https://repo.hex.pm/builds/elixir/builds.txt', + ) + const otpVersionsForElixirMap = new Map() - result + elixirVersionsListing .trim() .split('\n') - .forEach(line => { - const match = - line.match(/^(v\d+\.\d+\.\d+(?:-.+)?)-otp-(\d+)/) || - line.match(/^([^-]+)-otp-(\d+)/) - - if (match) { - const [_, version, otp] = match - const array = map.get(version) || [] - array.push(otp) - map.set(version, array) + .forEach((line) => { + const elixirMatch = + line.match(/^(.+)-otp-([^ ]+)/) || line.match(/^([^ ]+)/) + const elixirVersion = elixirMatch[1] + const otpVersion = elixirMatch[2] + const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || [] + if (otpVersion) { + // -otp- present (special case) + otpVersions.push(otpVersion) } + otpVersionsForElixirMap.set(elixirVersion, otpVersions) }) - return map + return otpVersionsForElixirMap } -function get(url) { - if (process.env.NODE_ENV === 'test') { - return readFile( - __webpack_require__.ab + "builds.txt" - ).then(buf => buf.toString()) +async function getRebar3Versions() { + const resultJSON = await get( + 'https://api.github.com/repos/erlang/rebar3/releases', + ) + const rebar3VersionsListing = JSON.parse(resultJSON) + .map((x) => x.tag_name) + .sort() + + return rebar3VersionsListing +} + +function getVersionFromSpec(spec, versions) { + if (versions.includes(spec)) { + return spec + } else { + return semver.maxSatisfying(versions, semver.validRange(spec)) } +} - return new Promise((resolve, reject) => { - const req = https.get(url) +function getRunnerOSVersion() { + const mapToUbuntuVersion = { + ubuntu16: 'ubuntu-16.04', + ubuntu18: 'ubuntu-18.04', + ubuntu20: 'ubuntu-20.04', + } - req.on('response', res => { - let data = '' - res.on('data', chunk => { - data += chunk - }) - res.on('end', () => { - resolve(data) - }) - }) + return mapToUbuntuVersion[process.env.ImageOS] || 'ubuntu-18.04' +} - req.on('error', err => { - reject(err) - }) +function get(url) { + return new Promise((resolve, reject) => { + https + .get( + url, + { + headers: {'user-agent': 'setup-beam'}, + }, + (res) => { + let data = '' + res.on('data', (chunk) => { + data += chunk + }) + res.on('end', () => { + resolve(data) + }) + }, + ) + .on('error', (err) => { + reject(err) + }) }) } +function prependToPath(what) { + process.env.PATH = `${what}:${process.env.PATH}` +} + +module.exports = { + getOTPVersion: getOTPVersion, + getElixirVersion: getElixirVersion, + getRebar3Version: getRebar3Version, +} + /***/ }), -/***/ 614: -/***/ (function(module) { +/***/ 2357: +/***/ ((module) => { -module.exports = require("events"); +"use strict"; +module.exports = require("assert");; /***/ }), -/***/ 622: -/***/ (function(module) { +/***/ 3129: +/***/ ((module) => { -module.exports = require("path"); +"use strict"; +module.exports = require("child_process");; /***/ }), -/***/ 669: -/***/ (function(module) { +/***/ 8614: +/***/ ((module) => { -module.exports = require("util"); +"use strict"; +module.exports = require("events");; /***/ }), -/***/ 747: -/***/ (function(module) { +/***/ 5747: +/***/ ((module) => { -module.exports = require("fs"); +"use strict"; +module.exports = require("fs");; /***/ }), -/***/ 986: -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 7211: +/***/ ((module) => { "use strict"; +module.exports = require("https");; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const tr = __importStar(__webpack_require__(9)); -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code - */ -function exec(commandLine, args, options) { - return __awaiter(this, void 0, void 0, function* () { - const commandArgs = tr.argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - // Path to tool to execute should be first arg - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new tr.ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -exports.exec = exec; -//# sourceMappingURL=exec.js.map +/***/ }), + +/***/ 2087: +/***/ ((module) => { + +"use strict"; +module.exports = require("os");; + +/***/ }), + +/***/ 5622: +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ 1669: +/***/ ((module) => { + +"use strict"; +module.exports = require("util");; /***/ }) -/******/ }); \ No newline at end of file +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ __nccwpck_require__.ab = __dirname + "/";/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __nccwpck_require__(7037); +/******/ })() +; \ No newline at end of file diff --git a/dist/install-elixir b/dist/install-elixir index 45fbc2c7..e7139be5 100755 --- a/dist/install-elixir +++ b/dist/install-elixir @@ -2,9 +2,19 @@ set -eo pipefail -cd $RUNNER_TEMP +cd "$RUNNER_TEMP" -wget -q https://repo.hex.pm/builds/elixir/${1}${2}.zip -unzip -d .setup-beam/elixir ${1}${2}.zip -rm ${1}${2}.zip -echo "$(pwd)/.setup-beam/elixir/bin" >> $GITHUB_PATH +VSN=${1} +FILE_INPUT="${VSN}.zip" +FILE_OUTPUT=elixir.zip +DIR_FOR_BIN=.setup-beam/elixir + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/elixir/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}" +unzip -q -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}" +rm -f "${FILE_OUTPUT}" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed Elixir version follows" +${DIR_FOR_BIN}/bin/iex -v diff --git a/dist/install-otp b/dist/install-otp index 2026e1b4..b3e740d6 100755 --- a/dist/install-otp +++ b/dist/install-otp @@ -2,11 +2,21 @@ set -eo pipefail -cd $RUNNER_TEMP - -wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/${1}.tar.gz -mkdir -p .setup-beam/otp -tar zxf otp.tar.gz -C .setup-beam/otp --strip-components=1 -rm otp.tar.gz -.setup-beam/otp/Install -minimal $(pwd)/.setup-beam/otp -echo "$(pwd)/.setup-beam/otp/bin" >> $GITHUB_PATH +cd "$RUNNER_TEMP" + +OS=${1} +VSN=${2} +FILE_INPUT="${VSN}.tar.gz" +FILE_OUTPUT=otp.tar.gz +DIR_FOR_BIN=.setup-beam/otp + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/otp/${OS}/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}" +tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1 +rm -f "${FILE_OUTPUT}" +"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed Erlang/OTP version follows" +${DIR_FOR_BIN}/bin/erl -version diff --git a/dist/install-rebar3 b/dist/install-rebar3 new file mode 100755 index 00000000..4e918833 --- /dev/null +++ b/dist/install-rebar3 @@ -0,0 +1,20 @@ +#!/bin/bash + +set -eo pipefail + +cd "$RUNNER_TEMP" + +VSN=${1} +FILE_INPUT=rebar3 +FILE_OUTPUT=rebar3 +DIR_FOR_BIN=.setup-beam/rebar3 + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}/bin" +chmod +x "${FILE_OUTPUT}" +mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed rebar3 version follows" +${DIR_FOR_BIN}/bin/rebar3 version diff --git a/dist/licenses.txt b/dist/licenses.txt new file mode 100644 index 00000000..2ed751c3 --- /dev/null +++ b/dist/licenses.txt @@ -0,0 +1,73 @@ +@actions/core +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@actions/exec +MIT + +@actions/io +MIT + +lru-cache +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +semver +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +yallist +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/package-lock.json b/package-lock.json index 05a54d73..4d8f6313 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,19 +5,26 @@ "requires": true, "packages": { "": { - "name": "setup-beam", "version": "1.6.0", "license": "MIT", "dependencies": { - "@actions/core": "^1.0.0", - "@actions/exec": "^1.0.0", - "@actions/tool-cache": "^1.1.0", - "semver": "^6.3.0" + "@actions/core": "1.2.6", + "@actions/exec": "1.0.4", + "semver": "7.3.4" }, "devDependencies": { - "@zeit/ncc": "^0.22.1", - "husky": "^4.2.5", - "prettier": "^2.0.5" + "@vercel/ncc": "0.27.0", + "eslint": "7.22.0", + "eslint-config-google": "0.14.0", + "husky": "5.2.0", + "markdownlint": "0.23.1", + "prettier": "2.2.1", + "shellcheck": "1.0.0", + "yaml-lint": "1.2.4", + "yarn": "1.22.10" + }, + "engines": { + "node": ">=12" } }, "node_modules/@actions/core": { @@ -33,69 +40,33 @@ "@actions/io": "^1.0.1" } }, - "node_modules/@actions/exec/node_modules/@actions/io": { + "node_modules/@actions/io": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz", "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" }, - "node_modules/@actions/io": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.0.tgz", - "integrity": "sha512-ezrJSRdqtXtdx1WXlfYL85+40F7gB39jCK9P0jZVODW3W6xUYmu6ZOEc/UmmElUwhRyDRm1R4yNZu1Joq2kuQg==" - }, - "node_modules/@actions/tool-cache": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.0.tgz", - "integrity": "sha512-Oe/R1Gxv0G699OUL9ypxk9cTwHf1uXHhpcK7kpZt8d/Sbw915ktMkfxXt9+awOfLDwyl54sLi86KGCuSvnRuIQ==", - "dependencies": { - "@actions/core": "^1.0.0", - "@actions/exec": "^1.0.0", - "@actions/io": "^1.0.0", - "semver": "^6.1.0", - "typed-rest-client": "^1.4.0", - "uuid": "^3.3.2" - } - }, - "node_modules/@actions/tool-cache/node_modules/@actions/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.0.0.tgz", - "integrity": "sha512-aMIlkx96XH4E/2YZtEOeyrYQfhlas9jIRkfGPqMwXD095Rdkzo4lB6ZmbxPQSzD+e1M+Xsm98ZhuSMYGv/AlqA==" - }, - "node_modules/@actions/tool-cache/node_modules/@actions/exec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.0.tgz", - "integrity": "sha512-nquH0+XKng+Ll7rZfCojN7NWSbnGh+ltwUJhzfbLkmOJgxocGX2/yXcZLMyT9fa7+tByEow/NSTrBExNlEj9fw==" - }, - "node_modules/@actions/tool-cache/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "node_modules/@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } @@ -162,47 +133,167 @@ "node": ">=4" } }, - "node_modules/@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/@zeit/ncc": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.1.tgz", - "integrity": "sha512-Qq3bMuonkcnV/96jhy9SQYdh39NXHxNMJ1O31ZFzWG9n52fR2DLtgrNzhj/ahlEjnBziMLGVWDbaS9sf03/fEw==", + "node_modules/@vercel/ncc": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.27.0.tgz", + "integrity": "sha512-DllIJQapnU2YwewIhh/4dYesmMQw3h2cFtabECc/zSJHqUbNa0eJuEkRa6DXbZvh1YPWBtYQoPV17NlDpBw1Vw==", "dev": true, "bin": { "ncc": "dist/ncc/cli.js" } }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/callsites": { @@ -214,10 +305,19 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -225,13 +325,77 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/color-convert": { "version": "2.0.1", @@ -251,880 +415,2776 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "dependencies": { - "semver-regex": "^2.0.0" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=6" + "node": ">=8.6" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/husky": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", - "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", + "node_modules/eslint": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, - "hasInstallScript": true, "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^6.0.0", - "find-versions": "^3.2.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" + "node": ">=8.0.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "engines": { - "node": ">=6" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" + "engines": { + "node": ">=4.0" } }, - "node_modules/prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">=4.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/tunnel": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", - "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-5.2.0.tgz", + "integrity": "sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/typicode" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/husky" + } + ], + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leprechaun": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/leprechaun/-/leprechaun-0.0.2.tgz", + "integrity": "sha1-i5ZRSp5jTFP75ZqAlPM3jI+yCE0=", + "dev": true, + "dependencies": { + "log-symbols": "^1.0.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-symbols/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-symbols/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-it": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", + "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdownlint": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", + "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", + "dev": true, + "dependencies": { + "markdown-it": "12.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "dev": true, + "dependencies": { + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shellcheck": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shellcheck/-/shellcheck-1.0.0.tgz", + "integrity": "sha512-CdKbWXOknBwE1wNQzAnwfLf7QNOu/yqyLSGBKoq2WuChEqfg7dnZJ1pHR2P463PbVpBRz3KGkYnXJCoQrPwtYA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "shellcheck": "shellcheck-stable/shellcheck" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml-lint": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/yaml-lint/-/yaml-lint-1.2.4.tgz", + "integrity": "sha512-qpKE0szyKsE9TrlVPi+bxKxVAjl30QjNAOyOxy7noQdf/WCCYUlT4xiCRxMG48eyeBzMBtBN6PgGfaB0MJePNw==", + "dev": true, + "dependencies": { + "glob": "^7.1.2", + "js-yaml": "^3.10.0", + "leprechaun": "0.0.2", + "lodash.merge": "^4.6.1", + "lodash.snakecase": "^4.1.1", + "nconf": "^0.10.0" + }, + "bin": { + "yamllint": "cli.js" + } + }, + "node_modules/yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "dependencies": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.10.tgz", + "integrity": "sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "yarn": "bin/yarn.js", + "yarnpkg": "bin/yarn.js" + }, + "engines": { + "node": ">=4.0.0" + } + } + }, + "dependencies": { + "@actions/core": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", + "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" + }, + "@actions/exec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz", + "integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==", + "requires": { + "@actions/io": "^1.0.1" + } + }, + "@actions/io": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz", + "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "@vercel/ncc": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.27.0.tgz", + "integrity": "sha512-DllIJQapnU2YwewIhh/4dYesmMQw3h2cFtabECc/zSJHqUbNa0eJuEkRa6DXbZvh1YPWBtYQoPV17NlDpBw1Vw==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true }, - "node_modules/typed-rest-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", - "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==", + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, "dependencies": { - "tunnel": "0.0.4", - "underscore": "1.8.3" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, - "node_modules/underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, - "node_modules/uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "bin": { - "uuid": "bin/uuid" + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" } }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true }, - "node_modules/yaml": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", - "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, "dependencies": { - "@babel/runtime": "^7.9.2" + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, - "engines": { - "node": ">= 6" + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } - } - }, - "dependencies": { - "@actions/core": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", - "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" }, - "@actions/exec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz", - "integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, "requires": { - "@actions/io": "^1.0.1" + "estraverse": "^5.1.0" }, "dependencies": { - "@actions/io": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz", - "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true } } }, - "@actions/io": { + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.0.tgz", - "integrity": "sha512-ezrJSRdqtXtdx1WXlfYL85+40F7gB39jCK9P0jZVODW3W6xUYmu6ZOEc/UmmElUwhRyDRm1R4yNZu1Joq2kuQg==" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, - "@actions/tool-cache": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.0.tgz", - "integrity": "sha512-Oe/R1Gxv0G699OUL9ypxk9cTwHf1uXHhpcK7kpZt8d/Sbw915ktMkfxXt9+awOfLDwyl54sLi86KGCuSvnRuIQ==", + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { - "@actions/core": "^1.0.0", - "@actions/exec": "^1.0.0", - "@actions/io": "^1.0.0", - "semver": "^6.1.0", - "typed-rest-client": "^1.4.0", - "uuid": "^3.3.2" + "ansi-regex": "^2.0.0" }, "dependencies": { - "@actions/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.0.0.tgz", - "integrity": "sha512-aMIlkx96XH4E/2YZtEOeyrYQfhlas9jIRkfGPqMwXD095Rdkzo4lB6ZmbxPQSzD+e1M+Xsm98ZhuSMYGv/AlqA==" - }, - "@actions/exec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.0.tgz", - "integrity": "sha512-nquH0+XKng+Ll7rZfCojN7NWSbnGh+ltwUJhzfbLkmOJgxocGX2/yXcZLMyT9fa7+tByEow/NSTrBExNlEj9fw==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "husky": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-5.2.0.tgz", + "integrity": "sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leprechaun": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/leprechaun/-/leprechaun-0.0.2.tgz", + "integrity": "sha1-i5ZRSp5jTFP75ZqAlPM3jI+yCE0=", + "dev": true, + "requires": { + "log-symbols": "^1.0.2" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "uc.micro": "^1.0.1" } }, - "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "chalk": "^1.0.0" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "color-name": "1.1.3" + "ansi-regex": "^2.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, - "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", - "dev": true, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "regenerator-runtime": "^0.13.4" + "yallist": "^4.0.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@zeit/ncc": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.1.tgz", - "integrity": "sha512-Qq3bMuonkcnV/96jhy9SQYdh39NXHxNMJ1O31ZFzWG9n52fR2DLtgrNzhj/ahlEjnBziMLGVWDbaS9sf03/fEw==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "markdown-it": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", + "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "markdownlint": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", + "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "markdown-it": "12.0.4" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", "dev": true }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "color-name": "~1.1.4" + "brace-expansion": "^1.1.7" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "wrappy": "1" } }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "semver-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "husky": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", - "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^6.0.0", - "find-versions": "^3.2.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" + "lcid": "^1.0.0" } }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "callsites": "^3.0.0" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "glob": "^7.1.3" } }, - "opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=", "dev": true }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "requires": { - "p-try": "^2.0.0" + "lru-cache": "^6.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "shebang-regex": "^3.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "shellcheck": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shellcheck/-/shellcheck-1.0.0.tgz", + "integrity": "sha512-CdKbWXOknBwE1wNQzAnwfLf7QNOu/yqyLSGBKoq2WuChEqfg7dnZJ1pHR2P463PbVpBRz3KGkYnXJCoQrPwtYA==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "callsites": "^3.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "find-up": "^4.0.0" + "has-flag": "^4.0.0" } }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "semver-compare": "^1.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, - "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "isexe": "^2.0.0" } }, - "tunnel": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", - "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, - "typed-rest-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", - "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==", + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, - "yaml": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", - "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml-lint": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/yaml-lint/-/yaml-lint-1.2.4.tgz", + "integrity": "sha512-qpKE0szyKsE9TrlVPi+bxKxVAjl30QjNAOyOxy7noQdf/WCCYUlT4xiCRxMG48eyeBzMBtBN6PgGfaB0MJePNw==", + "dev": true, + "requires": { + "glob": "^7.1.2", + "js-yaml": "^3.10.0", + "leprechaun": "0.0.2", + "lodash.merge": "^4.6.1", + "lodash.snakecase": "^4.1.1", + "nconf": "^0.10.0" + } + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { - "@babel/runtime": "^7.9.2" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } + }, + "yarn": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.10.tgz", + "integrity": "sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA==", + "dev": true } } } diff --git a/package.json b/package.json index a52747b6..7842f2c5 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,14 @@ "license": "MIT", "private": true, "scripts": { - "build": "ncc build src/setup-beam.js", - "format": "prettier \"src/**/*.js\"" + "build": "ncc build src/setup-beam.js --no-cache --license licenses.txt", + "format": "prettier src/**/*.js --write && prettier __tests__/**/*.js --write", + "jslint": "eslint src/**/*.js && eslint __tests__/**/*.js", + "licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES", + "markdownlint": "markdownlint *.md", + "shellcheck": "shellcheck src/install-*", + "test": "node __tests__/setup-beam.test.js", + "yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml" }, "husky": { "hooks": { @@ -13,14 +19,22 @@ } }, "dependencies": { - "@actions/core": "^1.0.0", - "@actions/exec": "^1.0.0", - "@actions/tool-cache": "^1.1.0", - "semver": "^6.3.0" + "@actions/core": "1.2.6", + "@actions/exec": "1.0.4", + "semver": "7.3.4" }, "devDependencies": { - "@zeit/ncc": "^0.22.1", - "husky": "^4.2.5", - "prettier": "^2.0.5" + "@vercel/ncc": "0.27.0", + "eslint": "7.22.0", + "eslint-config-google": "0.14.0", + "husky": "5.2.0", + "markdownlint": "0.23.1", + "prettier": "2.2.1", + "shellcheck": "1.0.0", + "yaml-lint": "1.2.4", + "yarn": "1.22.10" + }, + "engines": { + "node": ">=12" } } diff --git a/src/install-elixir b/src/install-elixir index 45fbc2c7..e7139be5 100755 --- a/src/install-elixir +++ b/src/install-elixir @@ -2,9 +2,19 @@ set -eo pipefail -cd $RUNNER_TEMP +cd "$RUNNER_TEMP" -wget -q https://repo.hex.pm/builds/elixir/${1}${2}.zip -unzip -d .setup-beam/elixir ${1}${2}.zip -rm ${1}${2}.zip -echo "$(pwd)/.setup-beam/elixir/bin" >> $GITHUB_PATH +VSN=${1} +FILE_INPUT="${VSN}.zip" +FILE_OUTPUT=elixir.zip +DIR_FOR_BIN=.setup-beam/elixir + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/elixir/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}" +unzip -q -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}" +rm -f "${FILE_OUTPUT}" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed Elixir version follows" +${DIR_FOR_BIN}/bin/iex -v diff --git a/src/install-otp b/src/install-otp index 2026e1b4..b3e740d6 100755 --- a/src/install-otp +++ b/src/install-otp @@ -2,11 +2,21 @@ set -eo pipefail -cd $RUNNER_TEMP - -wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/${1}.tar.gz -mkdir -p .setup-beam/otp -tar zxf otp.tar.gz -C .setup-beam/otp --strip-components=1 -rm otp.tar.gz -.setup-beam/otp/Install -minimal $(pwd)/.setup-beam/otp -echo "$(pwd)/.setup-beam/otp/bin" >> $GITHUB_PATH +cd "$RUNNER_TEMP" + +OS=${1} +VSN=${2} +FILE_INPUT="${VSN}.tar.gz" +FILE_OUTPUT=otp.tar.gz +DIR_FOR_BIN=.setup-beam/otp + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/otp/${OS}/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}" +tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1 +rm -f "${FILE_OUTPUT}" +"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed Erlang/OTP version follows" +${DIR_FOR_BIN}/bin/erl -version diff --git a/src/install-rebar3 b/src/install-rebar3 new file mode 100755 index 00000000..4e918833 --- /dev/null +++ b/src/install-rebar3 @@ -0,0 +1,20 @@ +#!/bin/bash + +set -eo pipefail + +cd "$RUNNER_TEMP" + +VSN=${1} +FILE_INPUT=rebar3 +FILE_OUTPUT=rebar3 +DIR_FOR_BIN=.setup-beam/rebar3 + +rm -f "${FILE_OUTPUT}" +rm -rf "${DIR_FOR_BIN}" +wget -q -O "${FILE_OUTPUT}" "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}" +mkdir -p "${DIR_FOR_BIN}/bin" +chmod +x "${FILE_OUTPUT}" +mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin" +echo "$(pwd)/${DIR_FOR_BIN}/bin" >> "$GITHUB_PATH" +echo "Installed rebar3 version follows" +${DIR_FOR_BIN}/bin/rebar3 version diff --git a/src/installer.js b/src/installer.js index c189e35b..030a3807 100644 --- a/src/installer.js +++ b/src/installer.js @@ -1,32 +1,43 @@ const {exec} = require('@actions/exec') const path = require('path') -const semver = require('semver') -module.exports = {installElixir, installOTP} +/** + * Install Erlang/OTP. + * + * @param {string} osVersion + * @param {string} otpVersion + */ +async function installOTP(osVersion, otpVersion) { + await exec(path.join(__dirname, 'install-otp'), [osVersion, otpVersion]) +} /** * Install Elixir. * - * @param {string} version - * @param {string} otpMajor + * @param {string} elixirVersion */ -async function installElixir(version, otpMajor) { - if (process.platform === 'linux') { - const otpString = otpMajor ? `-otp-${otpMajor}` : '' - await exec(path.join(__dirname, 'install-elixir'), [version, otpString]) - } +async function installElixir(elixirVersion) { + await exec(path.join(__dirname, 'install-elixir'), [elixirVersion]) } /** - * Install OTP. + * Install rebar3. * - * @param {string} version + * @param {string} rebar3Version */ -async function installOTP(version, osVersion) { - if (process.platform === 'linux') { - await exec(path.join(__dirname, 'install-otp'), [version, osVersion]) - return +async function installRebar3(rebar3Version) { + await exec(path.join(__dirname, 'install-rebar3'), [rebar3Version]) +} + +function checkPlatform() { + if (process.platform !== 'linux') { + throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') } +} - throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') +module.exports = { + installOTP: installOTP, + installElixir: installElixir, + installRebar3: installRebar3, + checkPlatform: checkPlatform, } diff --git a/src/setup-beam.js b/src/setup-beam.js index 385c3b39..e4d7f848 100644 --- a/src/setup-beam.js +++ b/src/setup-beam.js @@ -1,171 +1,280 @@ const core = require('@actions/core') const {exec} = require('@actions/exec') -const {installElixir, installOTP} = require('./installer') +const installer = require('./installer') const path = require('path') const semver = require('semver') const https = require('https') -const { - fstat, - promises: {readFile}, -} = require('fs') -main().catch(err => { +main().catch((err) => { core.setFailed(err.message) }) async function main() { - checkPlatform() + installer.checkPlatform() const osVersion = getRunnerOSVersion() const otpSpec = core.getInput('otp-version', {required: true}) - const elixirSpec = core.getInput('elixir-version', {required: true}) - const otpVersion = await getOtpVersion(otpSpec, osVersion) - const [elixirVersion, otpMajor] = await getElixirVersion( - elixirSpec, - otpVersion - ) - - let installHex = core.getInput('install-hex') - installHex = installHex == null ? 'true' : installHex + const otpVersion = await installOTP(otpSpec, osVersion) - let installRebar = core.getInput('install-rebar') - installRebar = installRebar == null ? 'true' : installRebar + const elixirSpec = core.getInput('elixir-version', {required: false}) + const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion) + if (elixirInstalled === true) { + const shouldMixRebar = core.getInput('install-rebar', { + required: false, + }) + await mix(shouldMixRebar, 'rebar') + const shouldMixHex = core.getInput('install-hex', { + required: false, + }) + await mix(shouldMixHex, 'hex') + } - console.log(`##[group]Installing OTP ${otpVersion} - built on ${osVersion}`) - await installOTP(otpVersion, osVersion) - console.log(`##[endgroup]`) + const rebar3Spec = core.getInput('rebar3-version', {required: false}) + maybeInstallRebar3(rebar3Spec) +} - console.log(`##[group]Installing Elixir ${elixirVersion}`) - await installElixir(elixirVersion, otpMajor) +async function installOTP(otpSpec, osVersion) { + const otpVersion = await getOTPVersion(otpSpec, osVersion) + console.log( + `##[group]Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`, + ) + await installer.installOTP(osVersion, otpVersion) + core.setOutput('otp-version', otpVersion) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/otp/bin`) console.log(`##[endgroup]`) - process.env.PATH = `${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin:${process.env.RUNNER_TEMP}/.setup-beam/otp/bin:${process.env.PATH}` + return otpVersion +} - if (installRebar === 'true') await exec('mix local.rebar --force') - if (installHex === 'true') await exec('mix local.hex --force') +async function maybeInstallElixir(elixirSpec, otpVersion) { + if (elixirSpec) { + const elixirVersion = await getElixirVersion(elixirSpec, otpVersion) + console.log(`##[group]Installing Elixir ${elixirVersion}`) + await installer.installElixir(elixirVersion) + core.setOutput('elixir-version', elixirVersion) + const matchersPath = path.join(__dirname, '..', '.github') + console.log(`##[add-matcher]${path.join(matchersPath, 'elixir.json')}`) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`) + console.log(`##[endgroup]`) - const matchersPath = path.join(__dirname, '..', '.github') - console.log(`##[add-matcher]${path.join(matchersPath, 'elixir.json')}`) - core.setOutput('otp-version', otpVersion) - core.setOutput('elixir-version', elixirVersion) - core.setOutput('osVersion', osVersion) + return true + } else { + return false + } } -function checkPlatform() { - if (process.platform !== 'linux') - throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time') +async function mix(shouldMix, what) { + if (shouldMix) { + const cmd = 'mix' + const args = [`local.${what}`, '--force'] + console.log(`##[group]Running ${cmd} ${args}`) + await exec(cmd, args) + console.log(`##[endgroup]`) + } } -async function getOtpVersion(spec, osVersion) { - const version = getVersionFromSpec(spec, await getOtpVersions(osVersion)) - return version ? `OTP-${version}` : spec -} +async function maybeInstallRebar3(rebar3Spec) { + if (rebar3Spec) { + const rebar3Version = await getRebar3Version(rebar3Spec) + console.log(`##[group]Installing rebar3 ${rebar3Version}`) + await installer.installRebar3(rebar3Version) + core.setOutput('rebar3-version', rebar3Version) + prependToPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`) + console.log(`##[endgroup]`) -function getRunnerOSVersion() { - const mapToUbuntuVersion = { - ubuntu16: 'ubuntu-16.04', - ubuntu18: 'ubuntu-18.04', - ubuntu20: 'ubuntu-20.04', + return true + } else { + return false } - - return mapToUbuntuVersion[process.env.ImageOS] || 'ubuntu-18.04' } -exports.getElixirVersion = getElixirVersion +async function getOTPVersion(otpSpec0, osVersion) { + const otpVersions = await getOTPVersions(osVersion) + const otpSpec = otpSpec0.match(/^(OTP-)?([^ ]+)/) + let otpVersion + if (otpSpec[1]) { + throw new Error( + `Requested Erlang/OTP version (from spec ${otpSpec0}) ` + + `should not contain 'OTP-'`, + ) + } + if (otpSpec) { + otpVersion = getVersionFromSpec( + otpSpec[2], + Array.from(otpVersions.keys()).sort(), + ) + } + if (otpVersion === null) { + throw new Error( + `Requested Erlang/OTP version (from spec ${otpSpec0}) not found in build listing`, + ) + } -async function getElixirVersion(spec, otpVersion) { - const versions = await getElixirVersions() - const semverRegex = /^v(\d+\.\d+\.\d+(?:-.+)?)/ + return otpVersions.get(otpVersion) // from the reference, for download +} - const semverVersions = Array.from(versions.keys()) - .filter(str => str.match(semverRegex)) - .map(str => str.match(semverRegex)[1]) +async function getElixirVersion(exSpec0, otpVersion) { + const elixirVersions = await getElixirVersions() + const semverVersions = Array.from(elixirVersions.keys()).sort() - const version = getVersionFromSpec(spec, semverVersions) - const gitRef = version ? `v${version}` : spec - const otpMatch = otpVersion.match(/^OTP-([\.\d]+)/) + const exSpec = exSpec0.match(/^(.+)(-otp-.+)/) || exSpec0.match(/^(.+)/) + let elixirVersion + if (exSpec[2]) { + throw new Error( + `Requested Elixir / Erlang/OTP version (from spec ${exSpec0} / ${otpVersion}) ` + + `should not contain '-otp-...'`, + ) + } + if (exSpec) { + elixirVersion = getVersionFromSpec(exSpec[1], semverVersions) + } + if (!exSpec || elixirVersion === null) { + throw new Error( + `Requested Elixir version (from spec ${exSpec0}) not found in build listing`, + ) + } + const otpMatch = otpVersion.match(/^(?:OTP-)?([^\.]+)/) + let elixirVersionWithOTP - if (otpMatch != null && versions.get(gitRef).includes(otpMatch[0])) { - return [gitRef, otpMatch[0]] + if (elixirVersions.get(elixirVersion)) { + const otpVersionMajor = otpMatch[1] + // We try for a version like `v1.4.5-otp-20`... + if (elixirVersions.get(elixirVersion).includes(otpMatch[1])) { + // ... and it's available: use it! + elixirVersionWithOTP = elixirVersion + `-otp-${otpVersionMajor}` + core.info(`Using Elixir / -otp- version ${elixirVersionWithOTP}`) + } else { + // ... and it's not available: fallback to the "generic" version (v1.4.5 only). + elixirVersionWithOTP = elixirVersion + core.info(`Using Elixir ${elixirVersionWithOTP}`) + } } else { - return [gitRef, null] + throw new Error( + `Requested Elixir / Erlang/OTP version (from spec ${exSpec0} / ${otpVersion}) not ` + + `found in build listing`, + ) } + + return elixirVersionWithOTP } -function getVersionFromSpec(spec, versions) { - if (versions.includes(spec)) { - return spec - } else { - const range = semver.validRange(spec) - return semver.maxSatisfying(versions, range) +async function getRebar3Version(r3Spec) { + const rebar3Versions = await getRebar3Versions() + const rebar3Version = getVersionFromSpec(r3Spec, rebar3Versions) + if (rebar3Version === null) { + throw new Error( + `Requested rebar3 version (from spec ${r3Spec}) not found in build listing`, + ) } + + return rebar3Version } -async function getOtpVersions(osVersion) { - const result = await get( - `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt` +async function getOTPVersions(osVersion) { + const otpVersionsListing = await get( + `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`, ) + const otpVersions = new Map() - return result + otpVersionsListing .trim() .split('\n') - .map(line => { - const match = line.match(/^OTP-([\.\d]+)/) - - if (match) { - const [_, version] = match - return version - } else { - return line - } + .map((line) => { + debugger + const otpMatch = line.match(/^(OTP-)?([^ ]+)/) + + const otpVersion = otpMatch[2] + otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference }) + .sort() + + return otpVersions } async function getElixirVersions() { - const result = await get('https://repo.hex.pm/builds/elixir/builds.txt') - const map = new Map() + const elixirVersionsListing = await get( + 'https://repo.hex.pm/builds/elixir/builds.txt', + ) + const otpVersionsForElixirMap = new Map() - result + elixirVersionsListing .trim() .split('\n') - .forEach(line => { - const match = - line.match(/^(v\d+\.\d+\.\d+(?:-.+)?)-otp-(\d+)/) || - line.match(/^([^-]+)-otp-(\d+)/) - - if (match) { - const [_, version, otp] = match - const array = map.get(version) || [] - array.push(otp) - map.set(version, array) + .forEach((line) => { + const elixirMatch = + line.match(/^(.+)-otp-([^ ]+)/) || line.match(/^([^ ]+)/) + const elixirVersion = elixirMatch[1] + const otpVersion = elixirMatch[2] + const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || [] + if (otpVersion) { + // -otp- present (special case) + otpVersions.push(otpVersion) } + otpVersionsForElixirMap.set(elixirVersion, otpVersions) }) - return map + return otpVersionsForElixirMap } -function get(url) { - if (process.env.NODE_ENV === 'test') { - return readFile( - path.join(__dirname, '..', '__tests__', 'builds.txt') - ).then(buf => buf.toString()) +async function getRebar3Versions() { + const resultJSON = await get( + 'https://api.github.com/repos/erlang/rebar3/releases', + ) + const rebar3VersionsListing = JSON.parse(resultJSON) + .map((x) => x.tag_name) + .sort() + + return rebar3VersionsListing +} + +function getVersionFromSpec(spec, versions) { + if (versions.includes(spec)) { + return spec + } else { + return semver.maxSatisfying(versions, semver.validRange(spec)) } +} - return new Promise((resolve, reject) => { - const req = https.get(url) +function getRunnerOSVersion() { + const mapToUbuntuVersion = { + ubuntu16: 'ubuntu-16.04', + ubuntu18: 'ubuntu-18.04', + ubuntu20: 'ubuntu-20.04', + } - req.on('response', res => { - let data = '' - res.on('data', chunk => { - data += chunk - }) - res.on('end', () => { - resolve(data) - }) - }) + return mapToUbuntuVersion[process.env.ImageOS] || 'ubuntu-18.04' +} - req.on('error', err => { - reject(err) - }) +function get(url) { + return new Promise((resolve, reject) => { + https + .get( + url, + { + headers: {'user-agent': 'setup-beam'}, + }, + (res) => { + let data = '' + res.on('data', (chunk) => { + data += chunk + }) + res.on('end', () => { + resolve(data) + }) + }, + ) + .on('error', (err) => { + reject(err) + }) }) } + +function prependToPath(what) { + process.env.PATH = `${what}:${process.env.PATH}` +} + +module.exports = { + getOTPVersion: getOTPVersion, + getElixirVersion: getElixirVersion, + getRebar3Version: getRebar3Version, +} diff --git a/test-project/.formatter.exs b/test-projects/mix/.formatter.exs similarity index 100% rename from test-project/.formatter.exs rename to test-projects/mix/.formatter.exs diff --git a/test-project/.gitignore b/test-projects/mix/.gitignore similarity index 100% rename from test-project/.gitignore rename to test-projects/mix/.gitignore diff --git a/test-project/README.md b/test-projects/mix/README.md similarity index 100% rename from test-project/README.md rename to test-projects/mix/README.md diff --git a/test-project/lib/test.ex b/test-projects/mix/lib/test.ex similarity index 100% rename from test-project/lib/test.ex rename to test-projects/mix/lib/test.ex diff --git a/test-project/mix.exs b/test-projects/mix/mix.exs similarity index 95% rename from test-project/mix.exs rename to test-projects/mix/mix.exs index 69d6504a..6a31b6e1 100644 --- a/test-project/mix.exs +++ b/test-projects/mix/mix.exs @@ -5,7 +5,7 @@ defmodule Test.MixProject do [ app: :test, version: "0.1.0", - elixir: "~> 1.1", + elixir: "~> 1.0", start_permanent: Mix.env() == :prod, deps: deps() ] diff --git a/test-project/mix.lock b/test-projects/mix/mix.lock similarity index 100% rename from test-project/mix.lock rename to test-projects/mix/mix.lock diff --git a/test-project/test/test_helper.exs b/test-projects/mix/test/test_helper.exs similarity index 100% rename from test-project/test/test_helper.exs rename to test-projects/mix/test/test_helper.exs diff --git a/test-project/test/test_test.exs b/test-projects/mix/test/test_test.exs similarity index 100% rename from test-project/test/test_test.exs rename to test-projects/mix/test/test_test.exs diff --git a/test-projects/rebar3/.gitignore b/test-projects/rebar3/.gitignore new file mode 100644 index 00000000..f1c45545 --- /dev/null +++ b/test-projects/rebar3/.gitignore @@ -0,0 +1,19 @@ +.rebar3 +_* +.eunit +*.o +*.beam +*.plt +*.swp +*.swo +.erlang.cookie +ebin +log +erl_crash.dump +.rebar +logs +_build +.idea +*.iml +rebar3.crashdump +*~ diff --git a/test-projects/rebar3/LICENSE b/test-projects/rebar3/LICENSE new file mode 100644 index 00000000..d64620ab --- /dev/null +++ b/test-projects/rebar3/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2021, Paulo Oliveira . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/test-projects/rebar3/README.md b/test-projects/rebar3/README.md new file mode 100644 index 00000000..5789d978 --- /dev/null +++ b/test-projects/rebar3/README.md @@ -0,0 +1,9 @@ +mylib +===== + +An OTP library + +Build +----- + + $ rebar3 compile diff --git a/test-projects/rebar3/rebar.config b/test-projects/rebar3/rebar.config new file mode 100644 index 00000000..d28b13ed --- /dev/null +++ b/test-projects/rebar3/rebar.config @@ -0,0 +1,22 @@ +{erl_opts, [debug_info]}. +{deps, []}. +{xref_checks, [ + deprecated_function_calls, + exports_not_used, + locals_not_used, + undefined_function_calls +]}. +{dialyzer, [ + {warnings, [ + error_handling, + underspecs, + unknown, + unmatched_returns + ]} +]}. +{profiles, [ + {test, [ + {cover_enabled, true}, + {cover_opts, [verbose]} + ]} +]}. diff --git a/test-projects/rebar3/src/mylib.app.src b/test-projects/rebar3/src/mylib.app.src new file mode 100644 index 00000000..074d2292 --- /dev/null +++ b/test-projects/rebar3/src/mylib.app.src @@ -0,0 +1,16 @@ +{application, mylib, [ + {description, "An OTP library"}, + {vsn, "0.1.0"}, + {registered, []}, + {mod, nil}, + + {applications, [ + % OTP dependencies + kernel, + stdlib + ]}, + + {env,[]}, + + {licenses, ["Apache 2.0"]} + ]}. diff --git a/test-projects/rebar3/src/mylib.erl b/test-projects/rebar3/src/mylib.erl new file mode 100644 index 00000000..f49f5c7e --- /dev/null +++ b/test-projects/rebar3/src/mylib.erl @@ -0,0 +1,17 @@ +%%%------------------------------------------------------------------- +%% @doc mylib public API +%% @end +%%%------------------------------------------------------------------- + +-module(mylib). + +-export([hello/0]). +-ignore_xref(hello/0). + +-spec hello() -> world. +hello() -> + Ret = world, + _ = io:format("~p", [Ret]), + Ret. + +%% internal functions diff --git a/test-projects/rebar3/test/mylib_SUITE.erl b/test-projects/rebar3/test/mylib_SUITE.erl new file mode 100644 index 00000000..d783e497 --- /dev/null +++ b/test-projects/rebar3/test/mylib_SUITE.erl @@ -0,0 +1,11 @@ +-module(mylib_SUITE). + +-include_lib("stdlib/include/assert.hrl"). + +-compile([export_all, nowarn_export_all]). + +all() -> + [hello_world]. + +hello_world(_Config) -> + ?assertEqual(world, mylib:hello()).