├── CODEOWNERS ├── .gitattributes ├── .prettierignore ├── .husky └── pre-commit ├── scripts ├── version.sh ├── test.sh ├── postversion.sh └── release-plz.sh ├── .github ├── renovate.json ├── linters │ └── tsconfig.json └── workflows │ ├── semantic-pr-lint.yml │ ├── release.yml │ ├── autofix.yml │ ├── release-plz.yml │ ├── ci.yml │ ├── codeql-analysis.yml │ ├── check-dist.yml │ ├── test-redacted-env.yml │ └── test.yml ├── mise.toml ├── .prettierrc.json ├── eslint.config.mjs ├── tsconfig.json ├── .eslintrc.yml ├── LICENSE ├── package.json ├── .gitignore ├── CLAUDE.md ├── action.yml ├── README.md ├── cliff.toml ├── src └── index.ts └── dist ├── sourcemap-register.js └── licenses.txt /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @jdx 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | dist/** -diff linguist-generated=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | coverage/ 4 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC1091 2 | 3 | npm run all 4 | git add dist 5 | -------------------------------------------------------------------------------- /scripts/version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | git cliff -o CHANGELOG.md --tag "v${npm_package_version:?}" 5 | git add CHANGELOG.md 6 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["github>jdx/renovate-config"], 4 | "gitIgnoredAuthors": ["autofix.ci[bot] "], 5 | "rebaseWhen": "conflicted" 6 | } 7 | -------------------------------------------------------------------------------- /.github/linters/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "../../tsconfig.json", 4 | "compilerOptions": { 5 | "noEmit": true 6 | }, 7 | "include": ["../../__tests__/**/*", "../../src/**/*"], 8 | "exclude": ["../../dist", "../../node_modules", "../../coverage", "*.json"] 9 | } 10 | -------------------------------------------------------------------------------- /mise.toml: -------------------------------------------------------------------------------- 1 | tasks.pre-commit = ["npm run all", "git add dist"] 2 | tasks.test.alias = ["t"] 3 | tasks.test.run = ["npm run all"] 4 | tasks.lint = "bun run lint" 5 | tasks."lint:fix" = "bun run format:write" 6 | tasks.version = "npm version" 7 | tasks.release-plz = "./scripts/release-plz.sh" 8 | 9 | [tools] 10 | node = '24' 11 | git-cliff = 'latest' 12 | gh = 'latest' 13 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "semi": false, 6 | "singleQuote": true, 7 | "quoteProps": "as-needed", 8 | "jsxSingleQuote": false, 9 | "trailingComma": "none", 10 | "bracketSpacing": true, 11 | "bracketSameLine": true, 12 | "arrowParens": "avoid", 13 | "proseWrap": "always", 14 | "htmlWhitespaceSensitivity": "css", 15 | "endOfLine": "lf" 16 | } 17 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import globals from "globals"; 2 | import pluginJs from "@eslint/js"; 3 | import tseslint from "typescript-eslint"; 4 | 5 | 6 | /** @type {import('eslint').Linter.Config[]} */ 7 | export default [ 8 | {files: ["**/*.{js,mjs,cjs,ts}"]}, 9 | {languageOptions: { globals: globals.browser }}, 10 | pluginJs.configs.recommended, 11 | ...tseslint.configs.recommended, 12 | { 13 | ignores: ["dist"], 14 | }, 15 | ]; 16 | -------------------------------------------------------------------------------- /.github/workflows/semantic-pr-lint.yml: -------------------------------------------------------------------------------- 1 | name: semantic-pr-lint 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | - edited 8 | - reopened 9 | 10 | jobs: 11 | main: 12 | name: Validate PR title 13 | runs-on: ubuntu-latest 14 | permissions: 15 | pull-requests: read 16 | steps: 17 | - uses: amannn/action-semantic-pull-request@e32d7e603df1aa1ba07e981f2a23455dee596825 # v5 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "target": "ES2022", 5 | "module": "NodeNext", 6 | "rootDir": "./src", 7 | "moduleResolution": "NodeNext", 8 | "baseUrl": "./", 9 | "sourceMap": true, 10 | "outDir": "./dist", 11 | "noImplicitAny": true, 12 | "esModuleInterop": true, 13 | "forceConsistentCasingInFileNames": true, 14 | "strict": true, 15 | "skipLibCheck": true, 16 | "newLine": "lf" 17 | }, 18 | "exclude": ["./dist", "./node_modules", "./__tests__", "./coverage"] 19 | } 20 | -------------------------------------------------------------------------------- /scripts/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | function assert_equal() { 5 | if [ "$1" != "$2" ]; then 6 | echo "Assertion failed: Expected '$1', got '$2'" >&2 7 | return 1 8 | fi 9 | } 10 | EXPECTED_OUTPUT="jq-1.7.1" 11 | 12 | assert_equal "$EXPECTED_OUTPUT" "$(mise exec -- jq --version)" 13 | which jq 14 | 15 | # windows bash does not seem to work with shims 16 | if [[ "$(uname)" != "MINGW"* ]]; then 17 | assert_equal "$EXPECTED_OUTPUT" "$(jq --version)" 18 | fi 19 | 20 | # checking that environment variables set in mise.toml are properly set 21 | assert_equal "${MY_ENV_VAR}" "abc" 22 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | pull_request: 5 | types: [closed] 6 | branches: [main] 7 | 8 | permissions: 9 | contents: write 10 | 11 | jobs: 12 | release: 13 | if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release') 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 18 | with: 19 | fetch-depth: 0 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | 22 | - name: Setup mise 23 | uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2 24 | 25 | - name: Release 26 | run: ./scripts/postversion.sh 27 | env: 28 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.github/workflows/autofix.yml: -------------------------------------------------------------------------------- 1 | name: autofix.ci 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | autofix: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Checkout PR branch 18 | uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 19 | 20 | - name: Setup Node.js 21 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 22 | with: 23 | node-version: '24' 24 | cache: 'npm' 25 | 26 | - name: Install dependencies 27 | run: npm ci 28 | 29 | - name: Build and package 30 | run: npm run all 31 | 32 | - name: autofix.ci 33 | uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27 # v1 34 | -------------------------------------------------------------------------------- /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | node: true 3 | es6: true 4 | jest: true 5 | 6 | globals: 7 | Atomics: readonly 8 | SharedArrayBuffer: readonly 9 | 10 | ignorePatterns: 11 | - '!.*' 12 | - '**/node_modules/.*' 13 | - '**/dist/.*' 14 | - '**/coverage/.*' 15 | - '*.json' 16 | 17 | parser: '@typescript-eslint/parser' 18 | 19 | parserOptions: 20 | ecmaVersion: 2023 21 | sourceType: module 22 | project: 23 | - './.github/linters/tsconfig.json' 24 | - './tsconfig.json' 25 | 26 | plugins: 27 | - jest 28 | - '@typescript-eslint' 29 | 30 | extends: 31 | - eslint:recommended 32 | - plugin:@typescript-eslint/eslint-recommended 33 | - plugin:@typescript-eslint/recommended 34 | - plugin:github/recommended 35 | - plugin:jest/recommended 36 | 37 | rules: 38 | 'i18n-text/no-en': off 39 | 'import/no-namespace': off 40 | -------------------------------------------------------------------------------- /.github/workflows/release-plz.yml: -------------------------------------------------------------------------------- 1 | name: release-plz 2 | 3 | permissions: 4 | pull-requests: write 5 | contents: write 6 | 7 | on: 8 | workflow_dispatch: 9 | push: 10 | branches: 11 | - main 12 | 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | NPM_CONFIG_FUND: false 16 | 17 | concurrency: 18 | group: release-plz 19 | 20 | jobs: 21 | release-plz: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 25 | with: 26 | fetch-depth: 0 27 | submodules: recursive 28 | token: ${{ secrets.RELEASE_PLZ_GITHUB_TOKEN }} 29 | - uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2 30 | - run: mise run release-plz 31 | env: 32 | DRY_RUN: 0 33 | GITHUB_TOKEN: ${{ secrets.RELEASE_PLZ_GITHUB_TOKEN }} 34 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Integration 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | - 'releases/*' 9 | 10 | concurrency: 11 | group: ${{ github.workflow }}-${{ github.ref_name }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | test-typescript: 16 | name: TypeScript Tests 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: Checkout 21 | id: checkout 22 | uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 23 | 24 | - name: Setup Node.js 25 | id: setup-node 26 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 27 | with: 28 | node-version: 24 29 | cache: npm 30 | 31 | - name: Install Dependencies 32 | id: npm-ci 33 | run: npm ci 34 | 35 | - name: Check Format 36 | id: npm-format-check 37 | run: npm run format:check 38 | 39 | - name: Lint 40 | id: npm-lint 41 | run: npm run lint 42 | 43 | # - name: Test 44 | # id: npm-ci-test 45 | # run: npm run ci-test 46 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2018 GitHub, Inc. and contributors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. -------------------------------------------------------------------------------- /scripts/postversion.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euxo pipefail 3 | 4 | VERSION=$(jq -r .version package.json) 5 | MAJOR_VERSION=$(echo "$VERSION" | cut -d. -f1) 6 | 7 | # create the version tag (allow it to fail if it already exists) 8 | git tag "v$VERSION" || echo "Tag v$VERSION already exists locally" 9 | 10 | # push changes to github 11 | git push 12 | # push the current tag to github 13 | git push origin "v$VERSION" || echo "Tag v$VERSION already exists on remote" 14 | 15 | # set the major version tag to this release 16 | git tag "v$MAJOR_VERSION" -f 17 | # push the major version tag to github (retry with pull if it fails) 18 | if ! git push origin "v$MAJOR_VERSION" -f; then 19 | echo "Failed to push v$MAJOR_VERSION tag, pulling and retrying..." 20 | git fetch origin "refs/tags/v$MAJOR_VERSION:refs/tags/v$MAJOR_VERSION" -f 21 | git tag "v$MAJOR_VERSION" -f 22 | git push origin "v$MAJOR_VERSION" -f 23 | fi 24 | 25 | # check if release already exists before creating 26 | if gh release view "v$VERSION" >/dev/null 2>&1; then 27 | echo "Release v$VERSION already exists, skipping creation" 28 | else 29 | # create a release on github 30 | gh release create "v$VERSION" --generate-notes --verify-tag 31 | fi 32 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | name: CodeQL 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | schedule: 11 | - cron: '31 7 * * 3' 12 | 13 | concurrency: 14 | group: ${{ github.workflow }}-${{ github.ref_name }} 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | analyze: 19 | name: Analyze 20 | runs-on: ubuntu-latest 21 | 22 | permissions: 23 | actions: read 24 | checks: write 25 | contents: read 26 | security-events: write 27 | 28 | strategy: 29 | fail-fast: false 30 | matrix: 31 | language: 32 | - TypeScript 33 | 34 | steps: 35 | - name: Checkout 36 | id: checkout 37 | uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 38 | 39 | - name: Initialize CodeQL 40 | id: initialize 41 | uses: github/codeql-action/init@497990dfed22177a82ba1bbab381bc8f6d27058f # v3 42 | with: 43 | languages: ${{ matrix.language }} 44 | source-root: src 45 | 46 | - name: Autobuild 47 | id: autobuild 48 | uses: github/codeql-action/autobuild@497990dfed22177a82ba1bbab381bc8f6d27058f # v3 49 | 50 | - name: Perform CodeQL Analysis 51 | id: analyze 52 | uses: github/codeql-action/analyze@497990dfed22177a82ba1bbab381bc8f6d27058f # v3 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mise-action", 3 | "description": "mise tool setup action", 4 | "version": "3.5.1", 5 | "author": "jdx", 6 | "private": true, 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/jdx/mise-action.git" 10 | }, 11 | "keywords": [ 12 | "actions", 13 | "mise", 14 | "setup" 15 | ], 16 | "exports": { 17 | ".": "./dist/index.js" 18 | }, 19 | "scripts": { 20 | "all": "npm run format:write && npm run lint && npm run package", 21 | "bundle": "npm run format:write && npm run package", 22 | "format:check": "prettier --check **/*.ts", 23 | "format:write": "prettier --write **/*.ts", 24 | "lint": "npx eslint . && npm run format:check", 25 | "package": "ncc build -s src/index.ts --license licenses.txt", 26 | "package:watch": "npm run package -- --watch", 27 | "version": "./scripts/version.sh", 28 | "prepare": "husky" 29 | }, 30 | "license": "MIT", 31 | "dependencies": { 32 | "@actions/cache": "^4.0.0", 33 | "@actions/core": "^1.11.1", 34 | "@actions/exec": "^1.1.1", 35 | "@actions/glob": "^0.5.0", 36 | "@types/handlebars": "^4.0.40", 37 | "handlebars": "^4.7.8" 38 | }, 39 | "devDependencies": { 40 | "@eslint/eslintrc": "^3.2.0", 41 | "@eslint/js": "^9.15.0", 42 | "@types/eslint__js": "^8.42.3", 43 | "@types/node": "^24", 44 | "@vercel/ncc": "^0.38.3", 45 | "eslint": "^9.15.0", 46 | "globals": "^16.0.0", 47 | "husky": "^9.1.7", 48 | "jest": "^30", 49 | "js-yaml": "^4.1.0", 50 | "prettier": "^3.4.1", 51 | "typescript": "^5.7.2", 52 | "typescript-eslint": "^8.16.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependency directory 2 | node_modules 3 | 4 | # Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # nyc test coverage 30 | .nyc_output 31 | 32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 | .grunt 34 | 35 | # Bower dependency directory (https://bower.io/) 36 | bower_components 37 | 38 | # node-waf configuration 39 | .lock-wscript 40 | 41 | # Compiled binary addons (https://nodejs.org/api/addons.html) 42 | build/Release 43 | 44 | # Dependency directories 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional REPL history 60 | .node_repl_history 61 | 62 | # Output of 'npm pack' 63 | *.tgz 64 | 65 | # Yarn Integrity file 66 | .yarn-integrity 67 | 68 | # dotenv environment variables file 69 | .env 70 | .env.test 71 | 72 | # parcel-bundler cache (https://parceljs.org/) 73 | .cache 74 | 75 | # next.js build output 76 | .next 77 | 78 | # nuxt.js build output 79 | .nuxt 80 | 81 | # vuepress build output 82 | .vuepress/dist 83 | 84 | # Serverless directories 85 | .serverless/ 86 | 87 | # FuseBox cache 88 | .fusebox/ 89 | 90 | # DynamoDB Local files 91 | .dynamodb/ 92 | 93 | # OS metadata 94 | .DS_Store 95 | Thumbs.db 96 | 97 | # Ignore built ts files 98 | __tests__/runner/* 99 | 100 | # IDE files 101 | .idea 102 | .vscode 103 | *.code-workspace 104 | -------------------------------------------------------------------------------- /.github/workflows/check-dist.yml: -------------------------------------------------------------------------------- 1 | # In TypeScript actions, `dist/index.js` is a special file. When you reference 2 | # an action with `uses:`, `dist/index.js` is the code that will be run. For this 3 | # project, the `dist/index.js` file is generated from other source files through 4 | # the build process. We need to make sure that the checked-in `dist/index.js` 5 | # file matches what is expected from the build. 6 | # 7 | # This workflow will fail if the checked-in `dist/index.js` file does not match 8 | # what is expected from the build. 9 | name: Check dist/ 10 | 11 | on: 12 | push: 13 | branches: 14 | - main 15 | pull_request: 16 | workflow_dispatch: 17 | 18 | concurrency: 19 | group: ${{ github.workflow }}-${{ github.ref_name }} 20 | cancel-in-progress: true 21 | 22 | jobs: 23 | check-dist: 24 | name: Check dist/ 25 | runs-on: ubuntu-latest 26 | 27 | permissions: 28 | contents: read 29 | statuses: write 30 | 31 | steps: 32 | - name: Checkout 33 | id: checkout 34 | uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 35 | 36 | - name: Setup Node.js 37 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 38 | with: 39 | node-version: 24 40 | cache: npm 41 | 42 | - name: Install Dependencies 43 | id: install 44 | run: npm ci 45 | 46 | - name: Build dist/ Directory 47 | id: build 48 | run: npm run bundle 49 | 50 | - name: Compare Expected and Actual Directories 51 | id: diff 52 | run: | 53 | if [ "$(git diff --ignore-space-at-eol --text dist/ | wc -l)" -gt "0" ]; then 54 | echo "Detected uncommitted changes after build. See status below:" 55 | git diff --ignore-space-at-eol --text dist/ 56 | exit 1 57 | fi 58 | 59 | # If index.js was different than expected, upload the expected version as 60 | # a workflow artifact. 61 | - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 62 | if: ${{ failure() && steps.diff.conclusion == 'failure' }} 63 | with: 64 | name: dist 65 | path: dist/ 66 | -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- 1 | # CLAUDE.md 2 | 3 | This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. 4 | 5 | ## Project Overview 6 | 7 | This is a GitHub Action that installs and configures mise, a polyglot runtime manager. The action is written in TypeScript and published to the GitHub Actions marketplace. 8 | 9 | ## Development Commands 10 | 11 | ```bash 12 | # Install dependencies 13 | npm install 14 | 15 | # Build, format, lint, and package 16 | npm run all 17 | 18 | # Individual commands 19 | npm run format:write # Format code with Prettier 20 | npm run lint # Run ESLint and format check 21 | npm run package # Bundle with ncc for distribution 22 | 23 | # Testing 24 | npm run all # Run full build pipeline 25 | ./scripts/test.sh # Integration test script 26 | ``` 27 | 28 | ## Architecture 29 | 30 | The action follows GitHub's standard TypeScript action structure: 31 | 32 | 1. **Entry Point**: `src/index.ts` - Main action logic that: 33 | - Downloads and installs mise binary 34 | - Manages caching through GitHub Actions cache 35 | - Configures environment variables (MISE_*, GITHUB_TOKEN) 36 | - Runs mise commands (install, reshim, etc.) 37 | - Exports mise environment variables to GITHUB_ENV 38 | 39 | 2. **Distribution**: `dist/index.js` - Compiled and bundled output (must be committed) 40 | 41 | 3. **Action Definition**: `action.yml` - Defines inputs, outputs, and metadata 42 | 43 | ## Key Implementation Details 44 | 45 | - **Cache Management**: Uses content-addressable caching based on mise config files (.mise.toml, .tool-versions, etc.) 46 | - **Binary Download**: Supports downloading from GitHub releases or mise.jdx.dev 47 | - **Platform Support**: Handles Linux (glibc/musl), macOS, and Windows 48 | - **Environment Setup**: Automatically adds mise bin and shims directories to PATH 49 | - **GitHub API**: Uses GITHUB_TOKEN to avoid rate limits when installing GitHub-hosted tools 50 | 51 | ## Important Notes 52 | 53 | - Always run `npm run all` before committing to ensure dist/ is updated 54 | - The dist/ folder must be committed as GitHub Actions runs the compiled code 55 | - Test changes using the action itself (uses: ./) in test workflows 56 | -------------------------------------------------------------------------------- /.github/workflows/test-redacted-env.yml: -------------------------------------------------------------------------------- 1 | name: Test Redacted Environment Variables 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | workflow_dispatch: 9 | 10 | jobs: 11 | test-redacted-env: 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 16 | 17 | - name: Create test mise config with sensitive values 18 | run: | 19 | cat > .mise.toml << 'EOF' 20 | [env] 21 | PUBLIC_VAR = "this-is-public" 22 | API_KEY = {value = "secret-api-key-12345", redact = true} 23 | SECRET_TOKEN = {value = "supersecret-token-xyz", redact = true} 24 | DATABASE_PASSWORD = {value = "db-pass-789", redact = true} 25 | EOF 26 | 27 | - name: Setup mise 28 | uses: ./ 29 | 30 | - name: Verify environment variables are exported 31 | run: | 32 | echo "Checking if environment variables are set..." 33 | 34 | # Check that public var is set 35 | if [ "$PUBLIC_VAR" != "this-is-public" ]; then 36 | echo "ERROR: PUBLIC_VAR not set correctly" 37 | exit 1 38 | fi 39 | echo "✓ PUBLIC_VAR is set correctly" 40 | 41 | # Check that sensitive vars are set (but their values should be masked in logs) 42 | if [ -z "$API_KEY" ]; then 43 | echo "ERROR: API_KEY not set" 44 | exit 1 45 | fi 46 | echo "✓ API_KEY is set" 47 | 48 | if [ -z "$SECRET_TOKEN" ]; then 49 | echo "ERROR: SECRET_TOKEN not set" 50 | exit 1 51 | fi 52 | echo "✓ SECRET_TOKEN is set" 53 | 54 | if [ -z "$DATABASE_PASSWORD" ]; then 55 | echo "ERROR: DATABASE_PASSWORD not set" 56 | exit 1 57 | fi 58 | echo "✓ DATABASE_PASSWORD is set" 59 | 60 | - name: Test that sensitive values are masked (will show *** if properly masked) 61 | run: | 62 | echo "Testing value masking..." 63 | echo "API_KEY value: $API_KEY" 64 | echo "SECRET_TOKEN value: $SECRET_TOKEN" 65 | echo "DATABASE_PASSWORD value: $DATABASE_PASSWORD" 66 | echo "PUBLIC_VAR value: $PUBLIC_VAR" 67 | 68 | # This should show the actual values in the step output, 69 | # but GitHub Actions should mask them if core.setSecret was called 70 | 71 | - name: Verify mise version 72 | run: mise --version 73 | -------------------------------------------------------------------------------- /scripts/release-plz.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck shell=bash 3 | set -euxo pipefail 4 | 5 | # Get the current package.json version before any modifications 6 | cur_pkg_version="$(jq -r .version package.json)" 7 | 8 | # Get the latest GitHub release version 9 | latest_release="$(gh release view --json tagName --jq .tagName 2>/dev/null || echo "")" 10 | latest_release_version="${latest_release#v}" 11 | 12 | # Check if package.json version is newer than the latest release 13 | if [ -n "$latest_release_version" ] && [ "$cur_pkg_version" = "$latest_release_version" ]; then 14 | echo "Package version $cur_pkg_version matches latest release $latest_release. Nothing to release." 15 | # Still check if we need to create a new PR for unreleased changes 16 | 17 | # Get the latest released version tag 18 | latest_tag="$(git tag --list | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$' | sort -V | tail -1)" 19 | 20 | # Check if there are commits since the last release 21 | if [ -n "$latest_tag" ]; then 22 | commits_since_release="$(git rev-list "$latest_tag"..HEAD --count)" 23 | if [ "$commits_since_release" -eq 0 ]; then 24 | echo "No commits since last release $latest_tag" 25 | exit 0 26 | fi 27 | echo "Found $commits_since_release commits since $latest_tag" 28 | fi 29 | 30 | # Get the next version and changelog from git-cliff 31 | version="$(git cliff --bumped-version)" 32 | changelog="$(git cliff --bump --unreleased | tail -n +2)" 33 | 34 | if [ "${DRY_RUN:-1}" == 1 ]; then 35 | echo "version: $version" 36 | echo "changelog: $changelog" 37 | exit 0 38 | fi 39 | 40 | # Check if there are any unreleased changes 41 | if [ -z "$changelog" ] || [ "$changelog" = "" ]; then 42 | echo "No unreleased changes found" 43 | exit 0 44 | fi 45 | 46 | # Configure git for automated commits 47 | git config user.name mise-en-dev 48 | git config user.email 123107610+mise-en-dev@users.noreply.github.com 49 | 50 | # Create a PR with the version bump 51 | npm version "${version#v}" --no-git-tag-version 52 | 53 | git add package.json package-lock.json 54 | git status 55 | 56 | # Create release branch and commit 57 | git checkout -B release 58 | git commit -m "chore: release $version" 59 | 60 | # Push to release branch 61 | git push origin release --force 62 | 63 | # Create or update PR 64 | if gh pr create --title "chore: release $version" --body "$changelog" --label "release"; then 65 | echo "Created new release PR" 66 | else 67 | gh pr edit --title "chore: release $version" --body "$changelog" 68 | echo "Updated existing release PR" 69 | fi 70 | elif [ -n "$cur_pkg_version" ] && [ "$cur_pkg_version" != "$latest_release_version" ]; then 71 | # Package version is different from latest release 72 | echo "Package version v$cur_pkg_version is newer than latest release $latest_release." 73 | echo "Release will be created by the release.yml workflow when the PR is merged." 74 | # Exit successfully - the release.yml workflow handles actual release creation 75 | exit 0 76 | else 77 | echo "No action needed" 78 | exit 0 79 | fi 80 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: mise action 2 | description: Actions for working with mise runtime manager 3 | author: Jeff Dickey <@jdx> 4 | branding: 5 | icon: arrow-down-circle 6 | color: purple 7 | inputs: 8 | version: 9 | required: false 10 | description: The version of mise to use. If not specified, will use the latest release. 11 | sha256: 12 | required: false 13 | description: The SHA256 checksum of the mise binary to verify the download. 14 | mise_dir: 15 | required: false 16 | description: | 17 | The directory that mise will be installed to, defaults to $HOME/.local/share/mise 18 | Or $XDG_DATA_HOME/mise if $XDG_DATA_HOME is set. 19 | Or $MISE_DATA_DIR if $MISE_DATA_DIR is set. 20 | tool_versions: 21 | required: false 22 | description: If present, this value will be written to the .tool-versions file 23 | mise_toml: 24 | required: false 25 | description: If present, this value will be written to the .mise.toml file 26 | install: 27 | required: false 28 | default: "true" 29 | description: if false, will not run `mise install` 30 | install_args: 31 | required: false 32 | description: Arguments to pass to `mise install` such as "bun" to only install bun 33 | install_dir: 34 | required: false 35 | description: deprecated 36 | cache: 37 | required: false 38 | default: "true" 39 | description: if false, action will not read or write to cache 40 | cache_save: 41 | required: false 42 | default: "true" 43 | description: if false, action will not write to cache 44 | cache_key_prefix: 45 | required: false 46 | default: "mise-v0" 47 | description: The prefix key to use for the cache, change this to invalidate the cache 48 | cache_key: 49 | required: false 50 | description: | 51 | Override the complete cache key (ignores all other cache key options). 52 | Supports template variables: {{version}}, {{cache_key_prefix}}, {{platform}}, {{file_hash}}, 53 | {{mise_env}}, {{install_args_hash}}, {{default}}, {{env.VAR_NAME}} for environment variables, 54 | and conditional logic like {{#if version}}...{{/if}} 55 | experimental: 56 | required: false 57 | default: "false" 58 | description: if true, will use experimental features 59 | log_level: 60 | required: false 61 | default: "info" 62 | description: The log level to use for the action 63 | working_directory: 64 | required: false 65 | description: The directory that mise runs in 66 | reshim: 67 | required: false 68 | default: "false" 69 | description: if true, will run `mise reshim --all` after setting up mise 70 | add_shims_to_path: 71 | required: false 72 | default: "true" 73 | description: if false, will not add mise shims directory to PATH 74 | github_token: 75 | required: false 76 | description: | 77 | GitHub token for API authentication to avoid rate limits when installing GitHub-hosted tools. 78 | Defaults to the automatic GitHub token. 79 | default: ${{ github.token }} 80 | fetch_from_github: 81 | required: false 82 | default: "true" 83 | description: If true (default), fetch the mise binary from GitHub. If false and using the latest version, fetch from mise.jdx.dev instead. 84 | env: 85 | description: "Automatically load mise env vars into GITHUB_ENV. Note that PATH modifications are not part of this." 86 | required: false 87 | default: "true" 88 | outputs: 89 | cache-hit: 90 | description: A boolean value to indicate if a cache was hit. 91 | runs: 92 | using: node20 93 | main: dist/index.js 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Example Workflow 2 | 3 | ```yaml 4 | name: test 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | push: 10 | branches: 11 | - main 12 | jobs: 13 | lint: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: jdx/mise-action@v3 18 | with: 19 | version: 2024.10.0 # [default: latest] mise version to install 20 | install: true # [default: true] run `mise install` 21 | install_args: "bun" # [default: ""] additional arguments to `mise install` 22 | cache: true # [default: true] cache mise using GitHub's cache 23 | experimental: true # [default: false] enable experimental features 24 | log_level: debug # [default: info] log level 25 | # automatically write this .tool-versions file 26 | tool_versions: | 27 | shellcheck 0.9.0 28 | # or, if you prefer .mise.toml format: 29 | mise_toml: | 30 | [tools] 31 | shellcheck = "0.9.0" 32 | working_directory: app # [default: .] directory to run mise in 33 | reshim: false # [default: false] run `mise reshim -f` 34 | github_token: ${{ secrets.GITHUB_TOKEN }} # [default: ${{ github.token }}] GitHub token for API authentication 35 | - run: shellcheck scripts/*.sh 36 | test: 37 | runs-on: ubuntu-latest 38 | steps: 39 | - uses: actions/checkout@v4 40 | - uses: jdx/mise-action@v3 41 | # .tool-versions will be read from repo root 42 | - run: node ./my_app.js 43 | ``` 44 | 45 | ## Cache Configuration 46 | 47 | You can customize the cache key used by the action: 48 | 49 | ```yaml 50 | - uses: jdx/mise-action@v3 51 | with: 52 | cache_key: "my-custom-cache-key" # Override the entire cache key 53 | cache_key_prefix: "mise-v1" # Or just change the prefix (default: "mise-v0") 54 | ``` 55 | 56 | ### Template Variables in Cache Keys 57 | 58 | When using `cache_key`, you can use template variables to reference internal values: 59 | 60 | ```yaml 61 | - uses: jdx/mise-action@v3 62 | with: 63 | cache_key: "mise-{{platform}}-{{version}}-{{file_hash}}" 64 | version: "2024.10.0" 65 | install_args: "node python" 66 | ``` 67 | 68 | Available template variables: 69 | - `{{version}}` - The mise version (from the `version` input) 70 | - `{{cache_key_prefix}}` - The cache key prefix (from `cache_key_prefix` input or default) 71 | - `{{platform}}` - The target platform (e.g., "linux-x64", "macos-arm64") 72 | - `{{file_hash}}` - Hash of all mise configuration files 73 | - `{{mise_env}}` - The MISE_ENV environment variable value 74 | - `{{install_args_hash}}` - SHA256 hash of the sorted tools from install args 75 | - `{{default}}` - The processed default cache key (useful for extending) 76 | 77 | Conditional logic is also supported using Handlebars syntax like `{{#if version}}...{{/if}}`. 78 | 79 | Example using multiple variables: 80 | ```yaml 81 | - uses: jdx/mise-action@v3 82 | with: 83 | cache_key: "mise-v1-{{platform}}-{{install_args_hash}}-{{file_hash}}" 84 | install_args: "node@20 python@3.12" 85 | ``` 86 | 87 | You can also extend the default cache key: 88 | ```yaml 89 | - uses: jdx/mise-action@v3 90 | with: 91 | cache_key: "{{default}}-custom-suffix" 92 | install_args: "node@20 python@3.12" 93 | ``` 94 | 95 | This gives you full control over cache invalidation based on the specific aspects that matter to your workflow. 96 | 97 | ## GitHub API Rate Limits 98 | 99 | When installing tools hosted on GitHub (like `gh`, `node`, `bun`, etc.), mise needs to make API calls to GitHub's releases API. Without authentication, these calls are subject to GitHub's rate limit of 60 requests per hour, which can cause installation failures. 100 | 101 | ```yaml 102 | - uses: jdx/mise-action@v3 103 | with: 104 | github_token: ${{ secrets.GITHUB_TOKEN }} 105 | # your other configuration 106 | ``` 107 | 108 | **Note:** The action automatically uses `${{ github.token }}` as the default, so in most cases you don't need to explicitly provide it. However, if you encounter rate limit errors, make sure the token is being passed correctly. 109 | 110 | ## Alternative Installation 111 | 112 | Alternatively, mise is easy to use in GitHub Actions even without this: 113 | 114 | ```yaml 115 | jobs: 116 | build: 117 | steps: 118 | - run: | 119 | curl https://mise.run | sh 120 | echo "$HOME/.local/share/mise/bin" >> $GITHUB_PATH 121 | echo "$HOME/.local/share/mise/shims" >> $GITHUB_PATH 122 | ``` 123 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: "build-test" 2 | on: # rebuild any PRs and main branch changes 3 | pull_request: 4 | branches: 5 | - main 6 | push: 7 | branches: 8 | - main 9 | workflow_dispatch: 10 | 11 | concurrency: 12 | group: ${{ github.workflow }}-${{ github.ref_name }} 13 | cancel-in-progress: true 14 | 15 | jobs: 16 | build: # make sure build/ci work properly 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 20 | - run: | 21 | npm install 22 | - run: | 23 | npm run all 24 | test: # make sure the action works on a clean machine without building 25 | strategy: 26 | fail-fast: false 27 | matrix: 28 | include: 29 | - name: ubuntu 30 | runs-on: ubuntu-latest 31 | - name: macos 32 | runs-on: macos-latest 33 | - name: windows 34 | runs-on: windows-latest 35 | - name: alpine 36 | runs-on: ubuntu-latest 37 | container: alpine:latest 38 | requirements: apk add --no-cache curl bash 39 | name: ${{ matrix.name }} 40 | runs-on: ${{ matrix.runs-on }} 41 | container: ${{ matrix.container }} 42 | steps: 43 | - name: Install requirements 44 | if: ${{ matrix.requirements }} 45 | run: ${{ matrix.requirements }} 46 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 47 | - name: Setup mise 48 | uses: ./ 49 | with: 50 | mise_toml: | 51 | [tools] 52 | jq = "1.7.1" 53 | 54 | [env] 55 | MY_ENV_VAR = "abc" 56 | env: 57 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 58 | - run: mise --version 59 | - run: mise x jq -- jq --version 60 | - run: which jq 61 | - run: jq --version 62 | - run: . scripts/test.sh 63 | shell: bash 64 | 65 | specific_version: 66 | runs-on: ubuntu-latest 67 | steps: 68 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 69 | - name: Setup mise 70 | uses: ./ 71 | with: 72 | cache_save: ${{ github.ref_name == 'main' }} 73 | cache_key_prefix: mise-v1 74 | version: 2025.7.3 75 | sha256: d38d4993c5379a680b50661f86287731dc1d1264777880a79b786403af337948 76 | install_args: bun 77 | mise_toml: | 78 | [tools] 79 | bun = "1" 80 | - run: which bun 81 | - run: bun -v 82 | - name: Update mise 83 | uses: ./ 84 | with: 85 | cache_save: ${{ github.ref_name == 'main' }} 86 | cache_key_prefix: mise-v1 87 | version: v2025.7.3 # should trim the `v` 88 | sha256: d38d4993c5379a680b50661f86287731dc1d1264777880a79b786403af337948 89 | 90 | checksum_failure: 91 | runs-on: ubuntu-latest 92 | steps: 93 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 94 | - name: Setup mise 95 | id: bad 96 | uses: ./ 97 | with: 98 | version: 2024.9.6 99 | sha256: 1f0b8c3d2e4f5a6b7c8d9e0f1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t 100 | continue-on-error: true 101 | - name: Dump steps context 102 | if: ${{ always() }} 103 | env: 104 | STEPS_CONTEXT: ${{ toJson(steps) }} 105 | run: echo "$STEPS_CONTEXT" 106 | - name: expect failure 107 | run: echo "Failed as expected" 108 | if: ${{ steps.bad.outcome == 'failure' }} 109 | - name: not failed as expected 110 | run: | 111 | echo "Expected failure but the job was ${{ steps.bad.outcome }}" 112 | exit 1 113 | if: ${{ steps.bad.outcome != 'failure' }} 114 | 115 | custom_cache_key: 116 | runs-on: ubuntu-latest 117 | steps: 118 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 119 | - name: Setup mise with custom cache key 120 | uses: ./ 121 | with: 122 | cache_key: "custom-{{platform}}-{{install_args_hash}}-${{ github.run_id }}" 123 | install_args: "jq@1.7.1" 124 | mise_toml: | 125 | [tools] 126 | jq = "1.7.1" 127 | - run: mise --version 128 | - run: mise x jq -- jq --version 129 | - run: which jq 130 | - run: jq --version 131 | 132 | fetch_from_github: 133 | runs-on: ubuntu-latest 134 | steps: 135 | - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 136 | - name: Setup mise from mise.jdx.dev 137 | uses: ./ 138 | with: 139 | fetch_from_github: true 140 | cache: false 141 | cache_save: false 142 | mise_toml: | 143 | [tools] 144 | jq = "1.7.1" 145 | - run: mise --version 146 | - run: mise x jq -- jq --version 147 | - run: which jq 148 | - run: jq --version 149 | -------------------------------------------------------------------------------- /cliff.toml: -------------------------------------------------------------------------------- 1 | # git-cliff ~ default configuration file 2 | # https://git-cliff.org/docs/configuration 3 | # 4 | # Lines starting with "#" are comments. 5 | # Configuration options are organized into tables and keys. 6 | # See documentation for more information on available options. 7 | 8 | [changelog] 9 | # changelog header 10 | header = """ 11 | # Changelog\n 12 | """ 13 | # template for the changelog body 14 | # https://keats.github.io/tera/docs/#introduction 15 | body = """ 16 | --- 17 | {% if version %}\ 18 | {% if previous.version %}\ 19 | ## [{{ version | trim_start_matches(pat="v") }}]($REPO/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }} 20 | {% else %}\ 21 | ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} 22 | {% endif %}\ 23 | {% else %}\ 24 | ## [unreleased] 25 | {% endif %}\ 26 | {% for group, commits in commits | group_by(attribute="group") %} 27 | ### {{ group | striptags | trim | upper_first }} 28 | 29 | {% for commit in commits 30 | | filter(attribute="scope") 31 | | sort(attribute="scope") -%} 32 | {% if commit.scope -%} 33 | - {{self::commit(commit=commit)}}\ 34 | {% endif -%} 35 | {% endfor -%} 36 | {% for commit in commits -%} 37 | {% if commit.scope -%} 38 | {% else -%} 39 | - {{self::commit(commit=commit)}}\ 40 | {% endif -%} 41 | {% endfor -%} 42 | {% endfor %} 43 | {% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 -%} 44 | ### New Contributors 45 | {% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} 46 | * @{{ contributor.username }} made their first contribution 47 | {%- if contributor.pr_number %} in \ 48 | [#{{ contributor.pr_number }}]($REPO/pull/{{ contributor.pr_number }})\ 49 | {% endif %}\ 50 | {% endfor %} 51 | 52 | {% endif -%} 53 | {% macro commit(commit) -%} 54 | {% if commit.scope %}**({{commit.scope}})** {% endif -%} 55 | {% if commit.breaking %}**breaking** {% endif -%} 56 | {{ commit.message | split(pat="\n") | first | trim }} by \ 57 | {% if commit.remote.username %}[@{{commit.remote.username}}](https://github.com/{{commit.remote.username}})\ 58 | {% else %}{{commit.author.name}}{% endif %} in \ 59 | {% if commit.remote.pr_number %}[#{{ commit.remote.pr_number }}]($REPO/pull/{{ commit.remote.pr_number }})\ 60 | {% else %}[{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})\ 61 | {%- endif %} 62 | {% endmacro commit -%} 63 | """ 64 | # template for the changelog footer 65 | footer = """ 66 | 67 | """ 68 | # remove the leading and trailing whitespace from the template 69 | trim = true 70 | postprocessors = [ 71 | { pattern = '\$REPO', replace = "https://github.com/jdx/mise-action" }, 72 | ] 73 | 74 | [git] 75 | # parse the commits based on https://www.conventionalcommits.org 76 | conventional_commits = true 77 | # filter out the commits that are not conventional 78 | filter_unconventional = false 79 | # process each line of a commit as an individual commit 80 | split_commits = false 81 | # regex for preprocessing the commit messages 82 | commit_preprocessors = [ 83 | # remove issue numbers from commits 84 | #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "" }, 85 | # Check spelling of the commit with https://github.com/crate-ci/typos 86 | # If the spelling is incorrect, it will be automatically fixed. 87 | #{ pattern = '.*', replace_command = 'typos --write-changes -' }, 88 | ] 89 | # regex for parsing and grouping commits 90 | commit_parsers = [ 91 | { message = '^\d+\.\d+\.\d+$', skip = true }, 92 | { message = '^(chore|fix)\(deps.*\):', skip = true }, 93 | { message = '^feat', group = "🚀 Features" }, 94 | { message = '^fix', group = "🐛 Bug Fixes" }, 95 | { message = '^doc', group = "📚 Documentation" }, 96 | { message = '^perf', group = "⚡ Performance" }, 97 | { message = '^refactor', group = "🚜 Refactor" }, 98 | { message = '^style', group = "🎨 Styling" }, 99 | { message = '^test', group = "🧪 Testing" }, 100 | { message = '^chore\(release\): prepare for', skip = true }, 101 | { message = '^chore\(pr\)', skip = true }, 102 | { message = '^chore\(pull\)', skip = true }, 103 | { message = '^chore: release v\d+\.\d+\.\d+', skip = true }, 104 | { message = '^chore: Release mise-action', skip = true }, 105 | { message = '^chore|^ci', group = "⚙️ Miscellaneous Tasks" }, 106 | { body = '.*security', group = "🛡️ Security" }, 107 | { message = '^revert', group = "◀️ Revert" }, 108 | { message = '.', group = "🔍 Other Changes" }, 109 | ] 110 | # protect breaking changes from being skipped due to matching a skipping commit_parser 111 | protect_breaking_commits = false 112 | # filter out the commits that are not matched by commit parsers 113 | filter_commits = false 114 | # regex for matching git tags 115 | tag_pattern = '^v\d+\.\d+\.\d+$' 116 | # regex for skipping tags 117 | #skip_tags = '^v(1|2023|2024\.0)\.' 118 | # regex for ignoring tags 119 | # ignore_tags = "" 120 | # sort the tags topologically 121 | topo_order = false 122 | # sort the commits inside sections by oldest/newest order 123 | sort_commits = "oldest" 124 | # limit the number of commits included in the changelog. 125 | # limit_commits = 42 126 | 127 | [remote.github] 128 | owner = "jdx" 129 | repo = "mise-action" 130 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import * as cache from '@actions/cache' 2 | import * as io from '@actions/io' 3 | import * as core from '@actions/core' 4 | import * as exec from '@actions/exec' 5 | import * as glob from '@actions/glob' 6 | import * as crypto from 'crypto' 7 | import * as fs from 'fs' 8 | import * as os from 'os' 9 | import * as path from 'path' 10 | import * as Handlebars from 'handlebars' 11 | 12 | // Configuration file patterns for cache key generation 13 | const MISE_CONFIG_FILE_PATTERNS = [ 14 | `**/.config/mise/config.toml`, 15 | `**/.config/mise/config.lock`, 16 | `**/.config/mise/config.*.toml`, 17 | `**/.config/mise/config.*.lock`, 18 | `**/.config/mise.toml`, 19 | `**/.config/mise.lock`, 20 | `**/.config/mise.*.toml`, 21 | `**/.config/mise.*.lock`, 22 | `**/.mise/config.toml`, 23 | `**/.mise/config.lock`, 24 | `**/.mise/config.*.toml`, 25 | `**/.mise/config.*.lock`, 26 | `**/mise/config.toml`, 27 | `**/mise/config.lock`, 28 | `**/mise/config.*.toml`, 29 | `**/mise/config.*.lock`, 30 | `**/.mise.toml`, 31 | `**/.mise.lock`, 32 | `**/.mise.*.toml`, 33 | `**/.mise.*.lock`, 34 | `**/mise.toml`, 35 | `**/mise.lock`, 36 | `**/mise.*.toml`, 37 | `**/mise.*.lock`, 38 | `**/.tool-versions` 39 | ] 40 | 41 | // Default cache key template 42 | const DEFAULT_CACHE_KEY_TEMPLATE = 43 | '{{cache_key_prefix}}-{{platform}}-{{file_hash}}{{#if version}}-{{version}}{{/if}}{{#if mise_env}}-{{mise_env}}{{/if}}{{#if install_args_hash}}-{{install_args_hash}}{{/if}}' 44 | 45 | async function run(): Promise { 46 | try { 47 | await setToolVersions() 48 | await setMiseToml() 49 | 50 | let cacheKey: string | undefined 51 | if (core.getBooleanInput('cache')) { 52 | cacheKey = await restoreMiseCache() 53 | } else { 54 | core.setOutput('cache-hit', false) 55 | } 56 | 57 | const version = core.getInput('version') 58 | const fetchFromGitHub = core.getBooleanInput('fetch_from_github') 59 | await setupMise(version, fetchFromGitHub) 60 | await setEnvVars() 61 | if (core.getBooleanInput('reshim')) { 62 | await miseReshim() 63 | } 64 | await testMise() 65 | if (core.getBooleanInput('install')) { 66 | await miseInstall() 67 | if (cacheKey && core.getBooleanInput('cache_save')) { 68 | await saveCache(cacheKey) 69 | } 70 | } 71 | await miseLs() 72 | const loadEnv = core.getBooleanInput('env') 73 | if (loadEnv) { 74 | await exportMiseEnv() 75 | } 76 | } catch (err) { 77 | if (err instanceof Error) core.setFailed(err.message) 78 | else throw err 79 | } 80 | } 81 | 82 | async function exportMiseEnv(): Promise { 83 | core.startGroup('Exporting mise environment variables') 84 | 85 | // Check if mise supports --redacted flags based on version input 86 | const supportsRedacted = checkMiseSupportsRedacted() 87 | 88 | if (supportsRedacted) { 89 | try { 90 | // First, get the redacted values to identify what needs masking 91 | const redactedOutput = await exec.getExecOutput( 92 | 'mise', 93 | ['env', '--redacted', '--json'], 94 | { silent: true } 95 | ) 96 | const redactedVars = JSON.parse(redactedOutput.stdout) 97 | 98 | // Mask sensitive values in GitHub Actions 99 | for (const [key, actualValue] of Object.entries(redactedVars)) { 100 | core.setSecret(actualValue as string) 101 | core.info(`Masked sensitive value for: ${key}`) 102 | } 103 | 104 | // Then get the actual values 105 | const actualOutput = await exec.getExecOutput('mise', ['env', '--json']) 106 | const actualVars = JSON.parse(actualOutput.stdout) 107 | 108 | // Export all environment variables 109 | for (const [key, value] of Object.entries(actualVars)) { 110 | if (typeof value === 'string') { 111 | core.exportVariable(key, value) 112 | } 113 | } 114 | } catch { 115 | // Fall back to dotenv format if the redacted command fails 116 | core.info('Falling back to dotenv format') 117 | const output = await exec.getExecOutput('mise', ['env', '--dotenv']) 118 | fs.appendFileSync(process.env.GITHUB_ENV!, output.stdout) 119 | } 120 | } else { 121 | // Fall back to the old --dotenv format for older versions 122 | const output = await exec.getExecOutput('mise', ['env', '--dotenv']) 123 | fs.appendFileSync(process.env.GITHUB_ENV!, output.stdout) 124 | } 125 | 126 | core.endGroup() 127 | } 128 | 129 | function cleanVersion(version: string) { 130 | // remove 'v' prefix if present 131 | return version.replace(/^v/, '') 132 | } 133 | 134 | function checkMiseSupportsRedacted(): boolean { 135 | const version = core.getInput('version') 136 | 137 | // If no version is specified, assume latest which supports redacted 138 | if (!version) { 139 | return true 140 | } 141 | 142 | const versionMatch = cleanVersion(version).match(/^(\d+)\.(\d+)\.(\d+)/) 143 | 144 | if (!versionMatch) { 145 | // If we can't parse the version, assume it supports redacted 146 | return true 147 | } 148 | 149 | const [, year, month, patch] = versionMatch 150 | const yearNum = parseInt(year, 10) 151 | const monthNum = parseInt(month, 10) 152 | const patchNum = parseInt(patch, 10) 153 | 154 | // Check if version is >= 2025.8.17 155 | if (yearNum > 2025) return true 156 | if (yearNum === 2025) { 157 | if (monthNum > 8) return true 158 | if (monthNum === 8 && patchNum >= 17) return true 159 | } 160 | 161 | return false 162 | } 163 | 164 | async function setEnvVars(): Promise { 165 | core.startGroup('Setting env vars') 166 | const set = (k: string, v: string): void => { 167 | if (!process.env[k]) { 168 | core.info(`Setting ${k}=${v}`) 169 | core.exportVariable(k, v) 170 | } 171 | } 172 | if (core.getBooleanInput('experimental')) set('MISE_EXPERIMENTAL', '1') 173 | 174 | const logLevel = core.getInput('log_level') 175 | if (logLevel) set('MISE_LOG_LEVEL', logLevel) 176 | 177 | const githubToken = core.getInput('github_token') 178 | if (githubToken) { 179 | // Don't use GITHUB_TOKEN, use MISE_GITHUB_TOKEN instead to avoid downstream issues. 180 | set('MISE_GITHUB_TOKEN', githubToken) 181 | } else { 182 | core.warning( 183 | 'No MISE_GITHUB_TOKEN provided. You may hit GitHub API rate limits when installing tools from GitHub.' 184 | ) 185 | } 186 | 187 | set('MISE_TRUSTED_CONFIG_PATHS', process.cwd()) 188 | set('MISE_YES', '1') 189 | 190 | if (core.getBooleanInput('add_shims_to_path')) { 191 | const shimsDir = path.join(miseDir(), 'shims') 192 | core.info(`Adding ${shimsDir} to PATH`) 193 | core.addPath(shimsDir) 194 | } 195 | } 196 | 197 | async function restoreMiseCache(): Promise { 198 | core.startGroup('Restoring mise cache') 199 | const cachePath = miseDir() 200 | 201 | // Use custom cache key if provided, otherwise use default template 202 | const cacheKeyTemplate = 203 | core.getInput('cache_key') || DEFAULT_CACHE_KEY_TEMPLATE 204 | const primaryKey = await processCacheKeyTemplate(cacheKeyTemplate) 205 | 206 | core.saveState('PRIMARY_KEY', primaryKey) 207 | core.saveState('MISE_DIR', cachePath) 208 | 209 | const cacheKey = await cache.restoreCache([cachePath], primaryKey) 210 | core.setOutput('cache-hit', Boolean(cacheKey)) 211 | 212 | if (!cacheKey) { 213 | core.info(`mise cache not found for ${primaryKey}`) 214 | return primaryKey 215 | } 216 | 217 | core.info(`mise cache restored from key: ${cacheKey}`) 218 | } 219 | 220 | async function setupMise( 221 | version: string, 222 | fetchFromGitHub = false 223 | ): Promise { 224 | const miseBinDir = path.join(miseDir(), 'bin') 225 | const miseBinPath = path.join( 226 | miseBinDir, 227 | process.platform === 'win32' ? 'mise.exe' : 'mise' 228 | ) 229 | if (!fs.existsSync(path.join(miseBinPath))) { 230 | core.startGroup(version ? `Download mise@${version}` : 'Setup mise') 231 | await fs.promises.mkdir(miseBinDir, { recursive: true }) 232 | const ext = 233 | process.platform === 'win32' 234 | ? '.zip' 235 | : version && version.startsWith('2024') 236 | ? '' 237 | : (await zstdInstalled()) 238 | ? '.tar.zst' 239 | : '.tar.gz' 240 | let resolvedVersion = version || (await latestMiseVersion()) 241 | resolvedVersion = resolvedVersion.replace(/^v/, '') 242 | let url: string 243 | if (!fetchFromGitHub && !version) { 244 | // Only for latest version 245 | url = `https://mise.jdx.dev/mise-latest-${await getTarget()}${ext}` 246 | } else { 247 | url = `https://github.com/jdx/mise/releases/download/v${resolvedVersion}/mise-v${resolvedVersion}-${await getTarget()}${ext}` 248 | } 249 | const archivePath = path.join(os.tmpdir(), `mise${ext}`) 250 | switch (ext) { 251 | case '.zip': 252 | await exec.exec('curl', ['-fsSL', url, '--output', archivePath]) 253 | await exec.exec('unzip', [archivePath, '-d', os.tmpdir()]) 254 | await io.mv(path.join(os.tmpdir(), 'mise/bin/mise.exe'), miseBinPath) 255 | break 256 | case '.tar.zst': 257 | await exec.exec('sh', [ 258 | '-c', 259 | `curl -fsSL ${url} | tar --zstd -xf - -C ${os.tmpdir()} && mv ${os.tmpdir()}/mise/bin/mise ${miseBinPath}` 260 | ]) 261 | break 262 | case '.tar.gz': 263 | await exec.exec('sh', [ 264 | '-c', 265 | `curl -fsSL ${url} | tar -xzf - -C ${os.tmpdir()} && mv ${os.tmpdir()}/mise/bin/mise ${miseBinPath}` 266 | ]) 267 | break 268 | default: 269 | await exec.exec('sh', ['-c', `curl -fsSL ${url} > ${miseBinPath}`]) 270 | await exec.exec('chmod', ['+x', miseBinPath]) 271 | break 272 | } 273 | } else { 274 | const requestedVersion = cleanVersion(core.getInput('version')) 275 | if (requestedVersion !== '') { 276 | const versionOutput = await exec.getExecOutput( 277 | miseBinPath, 278 | ['version', '--json'], 279 | { silent: true } 280 | ) 281 | const versionJson = JSON.parse(versionOutput.stdout) 282 | const version = cleanVersion(versionJson.version.split(' ')[0]) 283 | if (requestedVersion === version) { 284 | core.info(`mise already installed`) 285 | } else { 286 | core.info( 287 | `mise already installed (${version}), but different version requested (${requestedVersion})` 288 | ) 289 | await exec.exec(miseBinPath, ['self-update', requestedVersion, '-y'], { 290 | silent: true 291 | }) 292 | core.info(`mise updated to version ${requestedVersion}`) 293 | } 294 | } 295 | } 296 | // compare with provided hash 297 | const want = core.getInput('sha256') 298 | if (want) { 299 | const hash = crypto.createHash('sha256') 300 | const fileBuffer = await fs.promises.readFile(miseBinPath) 301 | const got = hash.update(fileBuffer).digest('hex') 302 | if (got !== want) { 303 | throw new Error( 304 | `SHA256 mismatch: expected ${want}, got ${got} for ${miseBinPath}` 305 | ) 306 | } 307 | } 308 | 309 | core.addPath(miseBinDir) 310 | } 311 | 312 | async function zstdInstalled(): Promise { 313 | try { 314 | await exec.exec('zstd', ['--version']) 315 | return true 316 | } catch { 317 | return false 318 | } 319 | } 320 | 321 | async function latestMiseVersion(): Promise { 322 | const rsp = await exec.getExecOutput('curl', [ 323 | '-fsSL', 324 | 'https://mise.jdx.dev/VERSION' 325 | ]) 326 | return rsp.stdout.trim() 327 | } 328 | 329 | async function setToolVersions(): Promise { 330 | const toolVersions = core.getInput('tool_versions') 331 | if (toolVersions) { 332 | await writeFile('.tool-versions', toolVersions) 333 | } 334 | } 335 | 336 | async function setMiseToml(): Promise { 337 | const toml = core.getInput('mise_toml') 338 | if (toml) { 339 | await writeFile('mise.toml', toml) 340 | } 341 | } 342 | 343 | const testMise = async (): Promise => mise(['--version']) 344 | const miseInstall = async (): Promise => 345 | mise([`install ${core.getInput('install_args')}`]) 346 | const miseLs = async (): Promise => mise([`ls`]) 347 | const miseReshim = async (): Promise => mise([`reshim`, `-f`]) 348 | const mise = async (args: string[]): Promise => 349 | await core.group(`Running mise ${args.join(' ')}`, async () => { 350 | const cwd = 351 | core.getInput('working_directory') || 352 | core.getInput('install_dir') || 353 | process.cwd() 354 | const baseEnv = Object.fromEntries( 355 | Object.entries(process.env).filter( 356 | (entry): entry is [string, string] => entry[1] !== undefined 357 | ) 358 | ) 359 | const env = core.isDebug() 360 | ? { ...baseEnv, MISE_LOG_LEVEL: 'debug' } 361 | : baseEnv 362 | 363 | if (args.length === 1) { 364 | return exec.exec(`mise ${args}`, [], { 365 | cwd, 366 | env 367 | }) 368 | } else { 369 | return exec.exec('mise', args, { cwd, env }) 370 | } 371 | }) 372 | 373 | const writeFile = async (p: fs.PathLike, body: string): Promise => 374 | await core.group(`Writing ${p}`, async () => { 375 | core.info(`Body:\n${body}`) 376 | await fs.promises.writeFile(p, body, { encoding: 'utf8' }) 377 | }) 378 | 379 | run() 380 | 381 | function miseDir(): string { 382 | const dir = core.getState('MISE_DIR') 383 | if (dir) return dir 384 | 385 | const miseDir = core.getInput('mise_dir') 386 | if (miseDir) return miseDir 387 | 388 | const { MISE_DATA_DIR, XDG_DATA_HOME, LOCALAPPDATA } = process.env 389 | if (MISE_DATA_DIR) return MISE_DATA_DIR 390 | if (XDG_DATA_HOME) return path.join(XDG_DATA_HOME, 'mise') 391 | if (process.platform === 'win32' && LOCALAPPDATA) 392 | return path.join(LOCALAPPDATA, 'mise') 393 | 394 | return path.join(os.homedir(), '.local', 'share', 'mise') 395 | } 396 | 397 | async function saveCache(cacheKey: string): Promise { 398 | await core.group(`Saving mise cache`, async () => { 399 | const cachePath = miseDir() 400 | 401 | if (!fs.existsSync(cachePath)) { 402 | throw new Error(`Cache folder path does not exist on disk: ${cachePath}`) 403 | } 404 | 405 | const cacheId = await cache.saveCache([cachePath], cacheKey) 406 | if (cacheId === -1) return 407 | 408 | core.info(`Cache saved from ${cachePath} with key: ${cacheKey}`) 409 | }) 410 | } 411 | 412 | async function getTarget(): Promise { 413 | let { arch } = process 414 | 415 | // quick overwrite to abide by release format 416 | if (arch === 'arm') arch = 'armv7' as NodeJS.Architecture 417 | 418 | switch (process.platform) { 419 | case 'darwin': 420 | return `macos-${arch}` 421 | case 'win32': 422 | return `windows-${arch}` 423 | case 'linux': 424 | return `linux-${arch}${(await isMusl()) ? '-musl' : ''}` 425 | default: 426 | throw new Error(`Unsupported platform ${process.platform}`) 427 | } 428 | } 429 | 430 | async function processCacheKeyTemplate(template: string): Promise { 431 | // Get all available variables 432 | const version = core.getInput('version') 433 | const installArgs = core.getInput('install_args') 434 | const cacheKeyPrefix = core.getInput('cache_key_prefix') || 'mise-v0' 435 | const miseEnv = process.env.MISE_ENV?.replace(/,/g, '-') 436 | const platform = await getTarget() 437 | 438 | // Calculate file hash 439 | const fileHash = await glob.hashFiles(MISE_CONFIG_FILE_PATTERNS.join('\n')) 440 | 441 | // Calculate install args hash 442 | let installArgsHash = '' 443 | if (installArgs) { 444 | const tools = installArgs 445 | .split(' ') 446 | .filter(arg => !arg.startsWith('-')) 447 | .sort() 448 | .join(' ') 449 | if (tools) { 450 | installArgsHash = crypto.createHash('sha256').update(tools).digest('hex') 451 | } 452 | } 453 | 454 | // Prepare base template data 455 | const baseTemplateData = { 456 | version, 457 | cache_key_prefix: cacheKeyPrefix, 458 | platform, 459 | file_hash: fileHash, 460 | mise_env: miseEnv, 461 | install_args_hash: installArgsHash 462 | } 463 | 464 | // Calculate the default cache key by processing the default template 465 | const defaultTemplate = Handlebars.compile(DEFAULT_CACHE_KEY_TEMPLATE) 466 | const defaultCacheKey = defaultTemplate(baseTemplateData) 467 | 468 | // Prepare final template data including the default cache key and env variables 469 | const templateData = { 470 | ...baseTemplateData, 471 | default: defaultCacheKey, 472 | env: process.env 473 | } 474 | 475 | // Compile and execute the user's template 476 | const compiledTemplate = Handlebars.compile(template) 477 | return compiledTemplate(templateData) 478 | } 479 | 480 | async function isMusl() { 481 | // `ldd --version` always returns 1 and print to stderr 482 | const { stderr } = await exec.getExecOutput('ldd', ['--version'], { 483 | failOnStdErr: false, 484 | ignoreReturnCode: true 485 | }) 486 | return stderr.indexOf('musl') > -1 487 | } 488 | -------------------------------------------------------------------------------- /dist/sourcemap-register.js: -------------------------------------------------------------------------------- 1 | (()=>{var e={296:e=>{var r=Object.prototype.toString;var n=typeof Buffer!=="undefined"&&typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},599:(e,r,n)=>{e=n.nmd(e);var t=n(927).SourceMapConsumer;var o=n(928);var i;try{i=n(896);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(296);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var d=[];var h=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"")}}else if(u){o+="new "+(i||"")}else if(i){o+=i}else{o+=r;a=false}if(a){o+=" ("+r+")"}return o}function cloneCallSite(e){var r={};Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach((function(n){r[n]=/^(?:is|get)/.test(n)?function(){return e[n].call(e)}:e[n]}));r.toString=CallSiteToString;return r}function wrapCallSite(e,r){if(r===undefined){r={nextPosition:null,curPosition:null}}if(e.isNative()){r.curPosition=null;return e}var n=e.getFileName()||e.getScriptNameOrSourceURL();if(n){var t=e.getLineNumber();var o=e.getColumnNumber()-1;var i=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;var a=i.test(globalProcessVersion())?0:62;if(t===1&&o>a&&!isInBrowser()&&!e.isEval()){o-=a}var u=mapSourcePosition({source:n,line:t,column:o});r.curPosition=u;e=cloneCallSite(e);var s=e.getFunctionName;e.getFunctionName=function(){if(r.nextPosition==null){return s()}return r.nextPosition.name||s()};e.getFileName=function(){return u.source};e.getLineNumber=function(){return u.line};e.getColumnNumber=function(){return u.column+1};e.getScriptNameOrSourceURL=function(){return u.source};return e}var l=e.isEval()&&e.getEvalOrigin();if(l){l=mapEvalOrigin(l);e=cloneCallSite(e);e.getEvalOrigin=function(){return l};return e}return e}function prepareStackTrace(e,r){if(l){p={};f={}}var n=e.name||"Error";var t=e.message||"";var o=n+": "+t;var i={nextPosition:null,curPosition:null};var a=[];for(var u=r.length-1;u>=0;u--){a.push("\n at "+wrapCallSite(r[u],i));i.nextPosition=i.curPosition}i.curPosition=i.nextPosition=null;return o+a.reverse().join("")}function getErrorSource(e){var r=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(r){var n=r[1];var t=+r[2];var o=+r[3];var a=p[n];if(!a&&i&&i.existsSync(n)){try{a=i.readFileSync(n,"utf8")}catch(e){a=""}}if(a){var u=a.split(/(?:\r\n|\r|\n)/)[t-1];if(u){return n+":"+t+"\n"+u+"\n"+new Array(o).join(" ")+"^"}}}return null}function printErrorAndExit(e){var r=getErrorSource(e);var n=globalProcessStderr();if(n&&n._handle&&n._handle.setBlocking){n._handle.setBlocking(true)}if(r){console.error();console.error(r)}console.error(e.stack);globalProcessExit(1)}function shimEmitUncaughtException(){var e=process.emit;process.emit=function(r){if(r==="uncaughtException"){var n=arguments[1]&&arguments[1].stack;var t=this.listeners(r).length>0;if(n&&!t){return printErrorAndExit(arguments[1])}}return e.apply(this,arguments)}}var S=d.slice(0);var _=h.slice(0);r.wrapCallSite=wrapCallSite;r.getErrorSource=getErrorSource;r.mapSourcePosition=mapSourcePosition;r.retrieveSourceMap=v;r.install=function(r){r=r||{};if(r.environment){c=r.environment;if(["node","browser","auto"].indexOf(c)===-1){throw new Error("environment "+c+" was unknown. Available options are {auto, browser, node}")}}if(r.retrieveFile){if(r.overrideRetrieveFile){d.length=0}d.unshift(r.retrieveFile)}if(r.retrieveSourceMap){if(r.overrideRetrieveSourceMap){h.length=0}h.unshift(r.retrieveSourceMap)}if(r.hookRequire&&!isInBrowser()){var n=dynamicRequire(e,"module");var t=n.prototype._compile;if(!t.__sourceMapSupport){n.prototype._compile=function(e,r){p[r]=e;f[r]=undefined;return t.call(this,e,r)};n.prototype._compile.__sourceMapSupport=true}}if(!l){l="emptyCacheBetweenOperations"in r?r.emptyCacheBetweenOperations:false}if(!u){u=true;Error.prepareStackTrace=prepareStackTrace}if(!s){var o="handleUncaughtExceptions"in r?r.handleUncaughtExceptions:true;try{var i=dynamicRequire(e,"worker_threads");if(i.isMainThread===false){o=false}}catch(e){}if(o&&hasGlobalProcessEventEmitter()){s=true;shimEmitUncaughtException()}}};r.resetRetrieveHandlers=function(){d.length=0;h.length=0;d=S.slice(0);h=_.slice(0);v=handlerExec(h);m=handlerExec(d)}},517:(e,r,n)=>{var t=n(297);var o=Object.prototype.hasOwnProperty;var i=typeof Map!=="undefined";function ArraySet(){this._array=[];this._set=i?new Map:Object.create(null)}ArraySet.fromArray=function ArraySet_fromArray(e,r){var n=new ArraySet;for(var t=0,o=e.length;t=0){return r}}else{var n=t.toSetString(e);if(o.call(this._set,n)){return this._set[n]}}throw new Error('"'+e+'" is not in the set.')};ArraySet.prototype.at=function ArraySet_at(e){if(e>=0&&e{var t=n(158);var o=5;var i=1<>1;return r?-n:n}r.encode=function base64VLQ_encode(e){var r="";var n;var i=toVLQSigned(e);do{n=i&a;i>>>=o;if(i>0){n|=u}r+=t.encode(n)}while(i>0);return r};r.decode=function base64VLQ_decode(e,r,n){var i=e.length;var s=0;var l=0;var c,p;do{if(r>=i){throw new Error("Expected more digits in base 64 VLQ value.")}p=t.decode(e.charCodeAt(r++));if(p===-1){throw new Error("Invalid base64 digit: "+e.charAt(r-1))}c=!!(p&u);p&=a;s=s+(p<{var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");r.encode=function(e){if(0<=e&&e{r.GREATEST_LOWER_BOUND=1;r.LEAST_UPPER_BOUND=2;function recursiveSearch(e,n,t,o,i,a){var u=Math.floor((n-e)/2)+e;var s=i(t,o[u],true);if(s===0){return u}else if(s>0){if(n-u>1){return recursiveSearch(u,n,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return n1){return recursiveSearch(e,u,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return u}else{return e<0?-1:e}}}r.search=function search(e,n,t,o){if(n.length===0){return-1}var i=recursiveSearch(-1,n.length,e,n,t,o||r.GREATEST_LOWER_BOUND);if(i<0){return-1}while(i-1>=0){if(t(n[i],n[i-1],true)!==0){break}--i}return i}},24:(e,r,n)=>{var t=n(297);function generatedPositionAfter(e,r){var n=e.generatedLine;var o=r.generatedLine;var i=e.generatedColumn;var a=r.generatedColumn;return o>n||o==n&&a>=i||t.compareByGeneratedPositionsInflated(e,r)<=0}function MappingList(){this._array=[];this._sorted=true;this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function MappingList_forEach(e,r){this._array.forEach(e,r)};MappingList.prototype.add=function MappingList_add(e){if(generatedPositionAfter(this._last,e)){this._last=e;this._array.push(e)}else{this._sorted=false;this._array.push(e)}};MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(t.compareByGeneratedPositionsInflated);this._sorted=true}return this._array};r.P=MappingList},299:(e,r)=>{function swap(e,r,n){var t=e[r];e[r]=e[n];e[n]=t}function randomIntInRange(e,r){return Math.round(e+Math.random()*(r-e))}function doQuickSort(e,r,n,t){if(n{var t;var o=n(297);var i=n(197);var a=n(517).C;var u=n(818);var s=n(299).g;function SourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}return n.sections!=null?new IndexedSourceMapConsumer(n,r):new BasicSourceMapConsumer(n,r)}SourceMapConsumer.fromSourceMap=function(e,r){return BasicSourceMapConsumer.fromSourceMap(e,r)};SourceMapConsumer.prototype._version=3;SourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{configurable:true,enumerable:true,get:function(){if(!this.__generatedMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__generatedMappings}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{configurable:true,enumerable:true,get:function(){if(!this.__originalMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__originalMappings}});SourceMapConsumer.prototype._charIsMappingSeparator=function SourceMapConsumer_charIsMappingSeparator(e,r){var n=e.charAt(r);return n===";"||n===","};SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(e,r){throw new Error("Subclasses must implement _parseMappings")};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.GREATEST_LOWER_BOUND=1;SourceMapConsumer.LEAST_UPPER_BOUND=2;SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(e,r,n){var t=r||null;var i=n||SourceMapConsumer.GENERATED_ORDER;var a;switch(i){case SourceMapConsumer.GENERATED_ORDER:a=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:a=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;a.map((function(e){var r=e.source===null?null:this._sources.at(e.source);r=o.computeSourceURL(u,r,this._sourceMapURL);return{source:r,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:e.name===null?null:this._names.at(e.name)}}),this).forEach(e,t)};SourceMapConsumer.prototype.allGeneratedPositionsFor=function SourceMapConsumer_allGeneratedPositionsFor(e){var r=o.getArg(e,"line");var n={source:o.getArg(e,"source"),originalLine:r,originalColumn:o.getArg(e,"column",0)};n.source=this._findSourceIndex(n.source);if(n.source<0){return[]}var t=[];var a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,i.LEAST_UPPER_BOUND);if(a>=0){var u=this._originalMappings[a];if(e.column===undefined){var s=u.originalLine;while(u&&u.originalLine===s){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}else{var l=u.originalColumn;while(u&&u.originalLine===r&&u.originalColumn==l){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}}return t};r.SourceMapConsumer=SourceMapConsumer;function BasicSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sources");var u=o.getArg(n,"names",[]);var s=o.getArg(n,"sourceRoot",null);var l=o.getArg(n,"sourcesContent",null);var c=o.getArg(n,"mappings");var p=o.getArg(n,"file",null);if(t!=this._version){throw new Error("Unsupported version: "+t)}if(s){s=o.normalize(s)}i=i.map(String).map(o.normalize).map((function(e){return s&&o.isAbsolute(s)&&o.isAbsolute(e)?o.relative(s,e):e}));this._names=a.fromArray(u.map(String),true);this._sources=a.fromArray(i,true);this._absoluteSources=this._sources.toArray().map((function(e){return o.computeSourceURL(s,e,r)}));this.sourceRoot=s;this.sourcesContent=l;this._mappings=c;this._sourceMapURL=r;this.file=p}BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer;BasicSourceMapConsumer.prototype._findSourceIndex=function(e){var r=e;if(this.sourceRoot!=null){r=o.relative(this.sourceRoot,r)}if(this._sources.has(r)){return this._sources.indexOf(r)}var n;for(n=0;n1){v.source=l+_[1];l+=_[1];v.originalLine=i+_[2];i=v.originalLine;v.originalLine+=1;v.originalColumn=a+_[3];a=v.originalColumn;if(_.length>4){v.name=c+_[4];c+=_[4]}}m.push(v);if(typeof v.originalLine==="number"){h.push(v)}}}s(m,o.compareByGeneratedPositionsDeflated);this.__generatedMappings=m;s(h,o.compareByOriginalPositions);this.__originalMappings=h};BasicSourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(e,r,n,t,o,a){if(e[n]<=0){throw new TypeError("Line must be greater than or equal to 1, got "+e[n])}if(e[t]<0){throw new TypeError("Column must be greater than or equal to 0, got "+e[t])}return i.search(e,r,o,a)};BasicSourceMapConsumer.prototype.computeColumnSpans=function SourceMapConsumer_computeColumnSpans(){for(var e=0;e=0){var t=this._generatedMappings[n];if(t.generatedLine===r.generatedLine){var i=o.getArg(t,"source",null);if(i!==null){i=this._sources.at(i);i=o.computeSourceURL(this.sourceRoot,i,this._sourceMapURL)}var a=o.getArg(t,"name",null);if(a!==null){a=this._names.at(a)}return{source:i,line:o.getArg(t,"originalLine",null),column:o.getArg(t,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}};BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function BasicSourceMapConsumer_hasContentsOfAllSources(){if(!this.sourcesContent){return false}return this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return e==null}))};BasicSourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(e,r){if(!this.sourcesContent){return null}var n=this._findSourceIndex(e);if(n>=0){return this.sourcesContent[n]}var t=e;if(this.sourceRoot!=null){t=o.relative(this.sourceRoot,t)}var i;if(this.sourceRoot!=null&&(i=o.urlParse(this.sourceRoot))){var a=t.replace(/^file:\/\//,"");if(i.scheme=="file"&&this._sources.has(a)){return this.sourcesContent[this._sources.indexOf(a)]}if((!i.path||i.path=="/")&&this._sources.has("/"+t)){return this.sourcesContent[this._sources.indexOf("/"+t)]}}if(r){return null}else{throw new Error('"'+t+'" is not in the SourceMap.')}};BasicSourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(e){var r=o.getArg(e,"source");r=this._findSourceIndex(r);if(r<0){return{line:null,column:null,lastColumn:null}}var n={source:r,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")};var t=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(t>=0){var i=this._originalMappings[t];if(i.source===n.source){return{line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}}}return{line:null,column:null,lastColumn:null}};t=BasicSourceMapConsumer;function IndexedSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sections");if(t!=this._version){throw new Error("Unsupported version: "+t)}this._sources=new a;this._names=new a;var u={line:-1,column:0};this._sections=i.map((function(e){if(e.url){throw new Error("Support for url field in sections not implemented.")}var n=o.getArg(e,"offset");var t=o.getArg(n,"line");var i=o.getArg(n,"column");if(t{var t=n(818);var o=n(297);var i=n(517).C;var a=n(24).P;function SourceMapGenerator(e){if(!e){e={}}this._file=o.getArg(e,"file",null);this._sourceRoot=o.getArg(e,"sourceRoot",null);this._skipValidation=o.getArg(e,"skipValidation",false);this._sources=new i;this._names=new i;this._mappings=new a;this._sourcesContents=null}SourceMapGenerator.prototype._version=3;SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(e){var r=e.sourceRoot;var n=new SourceMapGenerator({file:e.file,sourceRoot:r});e.eachMapping((function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};if(e.source!=null){t.source=e.source;if(r!=null){t.source=o.relative(r,t.source)}t.original={line:e.originalLine,column:e.originalColumn};if(e.name!=null){t.name=e.name}}n.addMapping(t)}));e.sources.forEach((function(t){var i=t;if(r!==null){i=o.relative(r,t)}if(!n._sources.has(i)){n._sources.add(i)}var a=e.sourceContentFor(t);if(a!=null){n.setSourceContent(t,a)}}));return n};SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(e){var r=o.getArg(e,"generated");var n=o.getArg(e,"original",null);var t=o.getArg(e,"source",null);var i=o.getArg(e,"name",null);if(!this._skipValidation){this._validateMapping(r,n,t,i)}if(t!=null){t=String(t);if(!this._sources.has(t)){this._sources.add(t)}}if(i!=null){i=String(i);if(!this._names.has(i)){this._names.add(i)}}this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:t,name:i})};SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(e,r){var n=e;if(this._sourceRoot!=null){n=o.relative(this._sourceRoot,n)}if(r!=null){if(!this._sourcesContents){this._sourcesContents=Object.create(null)}this._sourcesContents[o.toSetString(n)]=r}else if(this._sourcesContents){delete this._sourcesContents[o.toSetString(n)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null}}};SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(e,r,n){var t=r;if(r==null){if(e.file==null){throw new Error("SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, "+'or the source map\'s "file" property. Both were omitted.')}t=e.file}var a=this._sourceRoot;if(a!=null){t=o.relative(a,t)}var u=new i;var s=new i;this._mappings.unsortedForEach((function(r){if(r.source===t&&r.originalLine!=null){var i=e.originalPositionFor({line:r.originalLine,column:r.originalColumn});if(i.source!=null){r.source=i.source;if(n!=null){r.source=o.join(n,r.source)}if(a!=null){r.source=o.relative(a,r.source)}r.originalLine=i.line;r.originalColumn=i.column;if(i.name!=null){r.name=i.name}}}var l=r.source;if(l!=null&&!u.has(l)){u.add(l)}var c=r.name;if(c!=null&&!s.has(c)){s.add(c)}}),this);this._sources=u;this._names=s;e.sources.forEach((function(r){var t=e.sourceContentFor(r);if(t!=null){if(n!=null){r=o.join(n,r)}if(a!=null){r=o.relative(a,r)}this.setSourceContent(r,t)}}),this)};SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(e,r,n,t){if(r&&typeof r.line!=="number"&&typeof r.column!=="number"){throw new Error("original.line and original.column are not numbers -- you probably meant to omit "+"the original mapping entirely and only map the generated position. If so, pass "+"null for the original mapping instead of an object with empty or null values.")}if(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!r&&!n&&!t){return}else if(e&&"line"in e&&"column"in e&&r&&"line"in r&&"column"in r&&e.line>0&&e.column>=0&&r.line>0&&r.column>=0&&n){return}else{throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:r,name:t}))}};SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var e=0;var r=1;var n=0;var i=0;var a=0;var u=0;var s="";var l;var c;var p;var f;var g=this._mappings.toArray();for(var d=0,h=g.length;d0){if(!o.compareByGeneratedPositionsInflated(c,g[d-1])){continue}l+=","}}l+=t.encode(c.generatedColumn-e);e=c.generatedColumn;if(c.source!=null){f=this._sources.indexOf(c.source);l+=t.encode(f-u);u=f;l+=t.encode(c.originalLine-1-i);i=c.originalLine-1;l+=t.encode(c.originalColumn-n);n=c.originalColumn;if(c.name!=null){p=this._names.indexOf(c.name);l+=t.encode(p-a);a=p}}s+=l}return s};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(e,r){return e.map((function(e){if(!this._sourcesContents){return null}if(r!=null){e=o.relative(r,e)}var n=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)};SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null){e.file=this._file}if(this._sourceRoot!=null){e.sourceRoot=this._sourceRoot}if(this._sourcesContents){e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)}return e};SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this.toJSON())};r.x=SourceMapGenerator},565:(e,r,n)=>{var t;var o=n(163).x;var i=n(297);var a=/(\r?\n)/;var u=10;var s="$$$isSourceNode$$$";function SourceNode(e,r,n,t,o){this.children=[];this.sourceContents={};this.line=e==null?null:e;this.column=r==null?null:r;this.source=n==null?null:n;this.name=o==null?null:o;this[s]=true;if(t!=null)this.add(t)}SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(e,r,n){var t=new SourceNode;var o=e.split(a);var u=0;var shiftNextLine=function(){var e=getNextLine();var r=getNextLine()||"";return e+r;function getNextLine(){return u=0;r--){this.prepend(e[r])}}else if(e[s]||typeof e==="string"){this.children.unshift(e)}else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e)}return this};SourceNode.prototype.walk=function SourceNode_walk(e){var r;for(var n=0,t=this.children.length;n0){r=[];for(n=0;n{function getArg(e,r,n){if(r in e){return e[r]}else if(arguments.length===3){return n}else{throw new Error('"'+r+'" is a required argument.')}}r.getArg=getArg;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;var t=/^data:.+\,.+$/;function urlParse(e){var r=e.match(n);if(!r){return null}return{scheme:r[1],auth:r[2],host:r[3],port:r[4],path:r[5]}}r.urlParse=urlParse;function urlGenerate(e){var r="";if(e.scheme){r+=e.scheme+":"}r+="//";if(e.auth){r+=e.auth+"@"}if(e.host){r+=e.host}if(e.port){r+=":"+e.port}if(e.path){r+=e.path}return r}r.urlGenerate=urlGenerate;function normalize(e){var n=e;var t=urlParse(e);if(t){if(!t.path){return e}n=t.path}var o=r.isAbsolute(n);var i=n.split(/\/+/);for(var a,u=0,s=i.length-1;s>=0;s--){a=i[s];if(a==="."){i.splice(s,1)}else if(a===".."){u++}else if(u>0){if(a===""){i.splice(s+1,u);u=0}else{i.splice(s,2);u--}}}n=i.join("/");if(n===""){n=o?"/":"."}if(t){t.path=n;return urlGenerate(t)}return n}r.normalize=normalize;function join(e,r){if(e===""){e="."}if(r===""){r="."}var n=urlParse(r);var o=urlParse(e);if(o){e=o.path||"/"}if(n&&!n.scheme){if(o){n.scheme=o.scheme}return urlGenerate(n)}if(n||r.match(t)){return r}if(o&&!o.host&&!o.path){o.host=r;return urlGenerate(o)}var i=r.charAt(0)==="/"?r:normalize(e.replace(/\/+$/,"")+"/"+r);if(o){o.path=i;return urlGenerate(o)}return i}r.join=join;r.isAbsolute=function(e){return e.charAt(0)==="/"||n.test(e)};function relative(e,r){if(e===""){e="."}e=e.replace(/\/$/,"");var n=0;while(r.indexOf(e+"/")!==0){var t=e.lastIndexOf("/");if(t<0){return r}e=e.slice(0,t);if(e.match(/^([^\/]+:\/)?\/*$/)){return r}++n}return Array(n+1).join("../")+r.substr(e.length+1)}r.relative=relative;var o=function(){var e=Object.create(null);return!("__proto__"in e)}();function identity(e){return e}function toSetString(e){if(isProtoString(e)){return"$"+e}return e}r.toSetString=o?identity:toSetString;function fromSetString(e){if(isProtoString(e)){return e.slice(1)}return e}r.fromSetString=o?identity:fromSetString;function isProtoString(e){if(!e){return false}var r=e.length;if(r<9){return false}if(e.charCodeAt(r-1)!==95||e.charCodeAt(r-2)!==95||e.charCodeAt(r-3)!==111||e.charCodeAt(r-4)!==116||e.charCodeAt(r-5)!==111||e.charCodeAt(r-6)!==114||e.charCodeAt(r-7)!==112||e.charCodeAt(r-8)!==95||e.charCodeAt(r-9)!==95){return false}for(var n=r-10;n>=0;n--){if(e.charCodeAt(n)!==36){return false}}return true}function compareByOriginalPositions(e,r,n){var t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0||n){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0){return t}t=e.generatedLine-r.generatedLine;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByOriginalPositions=compareByOriginalPositions;function compareByGeneratedPositionsDeflated(e,r,n){var t=e.generatedLine-r.generatedLine;if(t!==0){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0||n){return t}t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsDeflated=compareByGeneratedPositionsDeflated;function strcmp(e,r){if(e===r){return 0}if(e===null){return 1}if(r===null){return-1}if(e>r){return 1}return-1}function compareByGeneratedPositionsInflated(e,r){var n=e.generatedLine-r.generatedLine;if(n!==0){return n}n=e.generatedColumn-r.generatedColumn;if(n!==0){return n}n=strcmp(e.source,r.source);if(n!==0){return n}n=e.originalLine-r.originalLine;if(n!==0){return n}n=e.originalColumn-r.originalColumn;if(n!==0){return n}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsInflated=compareByGeneratedPositionsInflated;function parseSourceMapInput(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}r.parseSourceMapInput=parseSourceMapInput;function computeSourceURL(e,r,n){r=r||"";if(e){if(e[e.length-1]!=="/"&&r[0]!=="/"){e+="/"}r=e+r}if(n){var t=urlParse(n);if(!t){throw new Error("sourceMapURL could not be parsed")}if(t.path){var o=t.path.lastIndexOf("/");if(o>=0){t.path=t.path.substring(0,o+1)}}r=join(urlGenerate(t),r)}return normalize(r)}r.computeSourceURL=computeSourceURL},927:(e,r,n)=>{n(163).x;r.SourceMapConsumer=n(684).SourceMapConsumer;n(565)},896:e=>{"use strict";e.exports=require("fs")},928:e=>{"use strict";e.exports=require("path")}};var r={};function __webpack_require__(n){var t=r[n];if(t!==undefined){return t.exports}var o=r[n]={id:n,loaded:false,exports:{}};var i=true;try{e[n](o,o.exports,__webpack_require__);i=false}finally{if(i)delete r[n]}o.loaded=true;return o.exports}(()=>{__webpack_require__.nmd=e=>{e.paths=[];if(!e.children)e.children=[];return e}})();if(typeof __webpack_require__!=="undefined")__webpack_require__.ab=__dirname+"/";var n={};__webpack_require__(599).install();module.exports=n})(); -------------------------------------------------------------------------------- /dist/licenses.txt: -------------------------------------------------------------------------------- 1 | @actions/cache 2 | MIT 3 | The MIT License (MIT) 4 | 5 | Copyright 2019 GitHub 6 | 7 | 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: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | 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. 12 | 13 | @actions/core 14 | MIT 15 | The MIT License (MIT) 16 | 17 | Copyright 2019 GitHub 18 | 19 | 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: 20 | 21 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 22 | 23 | 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. 24 | 25 | @actions/exec 26 | MIT 27 | The MIT License (MIT) 28 | 29 | Copyright 2019 GitHub 30 | 31 | 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: 32 | 33 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 34 | 35 | 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. 36 | 37 | @actions/glob 38 | MIT 39 | The MIT License (MIT) 40 | 41 | Copyright 2019 GitHub 42 | 43 | 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: 44 | 45 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 46 | 47 | 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. 48 | 49 | @actions/http-client 50 | MIT 51 | Actions Http Client for Node.js 52 | 53 | Copyright (c) GitHub, Inc. 54 | 55 | All rights reserved. 56 | 57 | MIT License 58 | 59 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 60 | associated documentation files (the "Software"), to deal in the Software without restriction, 61 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 62 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 63 | subject to the following conditions: 64 | 65 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 66 | 67 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 68 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 69 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 70 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 71 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 72 | 73 | 74 | @actions/io 75 | MIT 76 | The MIT License (MIT) 77 | 78 | Copyright 2019 GitHub 79 | 80 | 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: 81 | 82 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 83 | 84 | 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. 85 | 86 | @azure/abort-controller 87 | MIT 88 | The MIT License (MIT) 89 | 90 | Copyright (c) 2020 Microsoft 91 | 92 | Permission is hereby granted, free of charge, to any person obtaining a copy 93 | of this software and associated documentation files (the "Software"), to deal 94 | in the Software without restriction, including without limitation the rights 95 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 96 | copies of the Software, and to permit persons to whom the Software is 97 | furnished to do so, subject to the following conditions: 98 | 99 | The above copyright notice and this permission notice shall be included in all 100 | copies or substantial portions of the Software. 101 | 102 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 103 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 104 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 105 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 106 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 107 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 108 | SOFTWARE. 109 | 110 | 111 | @azure/core-auth 112 | MIT 113 | Copyright (c) Microsoft Corporation. 114 | 115 | MIT License 116 | 117 | Permission is hereby granted, free of charge, to any person obtaining a copy 118 | of this software and associated documentation files (the "Software"), to deal 119 | in the Software without restriction, including without limitation the rights 120 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 121 | copies of the Software, and to permit persons to whom the Software is 122 | furnished to do so, subject to the following conditions: 123 | 124 | The above copyright notice and this permission notice shall be included in all 125 | copies or substantial portions of the Software. 126 | 127 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 128 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 129 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 130 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 131 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 132 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 133 | SOFTWARE. 134 | 135 | 136 | @azure/core-client 137 | MIT 138 | Copyright (c) Microsoft Corporation. 139 | 140 | MIT License 141 | 142 | Permission is hereby granted, free of charge, to any person obtaining a copy 143 | of this software and associated documentation files (the "Software"), to deal 144 | in the Software without restriction, including without limitation the rights 145 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 146 | copies of the Software, and to permit persons to whom the Software is 147 | furnished to do so, subject to the following conditions: 148 | 149 | The above copyright notice and this permission notice shall be included in all 150 | copies or substantial portions of the Software. 151 | 152 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 153 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 154 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 155 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 156 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 157 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 158 | SOFTWARE. 159 | 160 | 161 | @azure/core-http-compat 162 | MIT 163 | Copyright (c) Microsoft Corporation. 164 | 165 | MIT License 166 | 167 | Permission is hereby granted, free of charge, to any person obtaining a copy 168 | of this software and associated documentation files (the "Software"), to deal 169 | in the Software without restriction, including without limitation the rights 170 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 171 | copies of the Software, and to permit persons to whom the Software is 172 | furnished to do so, subject to the following conditions: 173 | 174 | The above copyright notice and this permission notice shall be included in all 175 | copies or substantial portions of the Software. 176 | 177 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 178 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 179 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 180 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 181 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 182 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 183 | SOFTWARE. 184 | 185 | 186 | @azure/core-lro 187 | MIT 188 | The MIT License (MIT) 189 | 190 | Copyright (c) 2020 Microsoft 191 | 192 | Permission is hereby granted, free of charge, to any person obtaining a copy 193 | of this software and associated documentation files (the "Software"), to deal 194 | in the Software without restriction, including without limitation the rights 195 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 196 | copies of the Software, and to permit persons to whom the Software is 197 | furnished to do so, subject to the following conditions: 198 | 199 | The above copyright notice and this permission notice shall be included in all 200 | copies or substantial portions of the Software. 201 | 202 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 203 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 204 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 205 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 206 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 207 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 208 | SOFTWARE. 209 | 210 | 211 | @azure/core-rest-pipeline 212 | MIT 213 | Copyright (c) Microsoft Corporation. 214 | 215 | MIT License 216 | 217 | Permission is hereby granted, free of charge, to any person obtaining a copy 218 | of this software and associated documentation files (the "Software"), to deal 219 | in the Software without restriction, including without limitation the rights 220 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 221 | copies of the Software, and to permit persons to whom the Software is 222 | furnished to do so, subject to the following conditions: 223 | 224 | The above copyright notice and this permission notice shall be included in all 225 | copies or substantial portions of the Software. 226 | 227 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 228 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 229 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 230 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 231 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 232 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 233 | SOFTWARE. 234 | 235 | 236 | @azure/core-tracing 237 | MIT 238 | Copyright (c) Microsoft Corporation. 239 | 240 | MIT License 241 | 242 | Permission is hereby granted, free of charge, to any person obtaining a copy 243 | of this software and associated documentation files (the "Software"), to deal 244 | in the Software without restriction, including without limitation the rights 245 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 246 | copies of the Software, and to permit persons to whom the Software is 247 | furnished to do so, subject to the following conditions: 248 | 249 | The above copyright notice and this permission notice shall be included in all 250 | copies or substantial portions of the Software. 251 | 252 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 253 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 254 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 255 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 256 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 257 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 258 | SOFTWARE. 259 | 260 | 261 | @azure/core-util 262 | MIT 263 | Copyright (c) Microsoft Corporation. 264 | 265 | MIT License 266 | 267 | Permission is hereby granted, free of charge, to any person obtaining a copy 268 | of this software and associated documentation files (the "Software"), to deal 269 | in the Software without restriction, including without limitation the rights 270 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 271 | copies of the Software, and to permit persons to whom the Software is 272 | furnished to do so, subject to the following conditions: 273 | 274 | The above copyright notice and this permission notice shall be included in all 275 | copies or substantial portions of the Software. 276 | 277 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 278 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 279 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 280 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 281 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 282 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 283 | SOFTWARE. 284 | 285 | 286 | @azure/core-xml 287 | MIT 288 | Copyright (c) Microsoft Corporation. 289 | 290 | MIT License 291 | 292 | Permission is hereby granted, free of charge, to any person obtaining a copy 293 | of this software and associated documentation files (the "Software"), to deal 294 | in the Software without restriction, including without limitation the rights 295 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 296 | copies of the Software, and to permit persons to whom the Software is 297 | furnished to do so, subject to the following conditions: 298 | 299 | The above copyright notice and this permission notice shall be included in all 300 | copies or substantial portions of the Software. 301 | 302 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 303 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 304 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 305 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 306 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 307 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 308 | SOFTWARE. 309 | 310 | 311 | @azure/logger 312 | MIT 313 | Copyright (c) Microsoft Corporation. 314 | 315 | MIT License 316 | 317 | Permission is hereby granted, free of charge, to any person obtaining a copy 318 | of this software and associated documentation files (the "Software"), to deal 319 | in the Software without restriction, including without limitation the rights 320 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 321 | copies of the Software, and to permit persons to whom the Software is 322 | furnished to do so, subject to the following conditions: 323 | 324 | The above copyright notice and this permission notice shall be included in all 325 | copies or substantial portions of the Software. 326 | 327 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 328 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 329 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 330 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 331 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 332 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 333 | SOFTWARE. 334 | 335 | 336 | @azure/storage-blob 337 | MIT 338 | Copyright (c) Microsoft Corporation. 339 | 340 | MIT License 341 | 342 | Permission is hereby granted, free of charge, to any person obtaining a copy 343 | of this software and associated documentation files (the "Software"), to deal 344 | in the Software without restriction, including without limitation the rights 345 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 346 | copies of the Software, and to permit persons to whom the Software is 347 | furnished to do so, subject to the following conditions: 348 | 349 | The above copyright notice and this permission notice shall be included in all 350 | copies or substantial portions of the Software. 351 | 352 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 353 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 354 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 355 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 356 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 357 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 358 | SOFTWARE. 359 | 360 | 361 | @azure/storage-common 362 | MIT 363 | The MIT License (MIT) 364 | 365 | Copyright (c) 2018 Microsoft 366 | 367 | Permission is hereby granted, free of charge, to any person obtaining a copy 368 | of this software and associated documentation files (the "Software"), to deal 369 | in the Software without restriction, including without limitation the rights 370 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 371 | copies of the Software, and to permit persons to whom the Software is 372 | furnished to do so, subject to the following conditions: 373 | 374 | The above copyright notice and this permission notice shall be included in all 375 | copies or substantial portions of the Software. 376 | 377 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 378 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 379 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 380 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 381 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 382 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 383 | SOFTWARE. 384 | 385 | @fastify/busboy 386 | MIT 387 | Copyright Brian White. All rights reserved. 388 | 389 | Permission is hereby granted, free of charge, to any person obtaining a copy 390 | of this software and associated documentation files (the "Software"), to 391 | deal in the Software without restriction, including without limitation the 392 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 393 | sell copies of the Software, and to permit persons to whom the Software is 394 | furnished to do so, subject to the following conditions: 395 | 396 | The above copyright notice and this permission notice shall be included in 397 | all copies or substantial portions of the Software. 398 | 399 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 400 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 401 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 402 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 403 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 404 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 405 | IN THE SOFTWARE. 406 | 407 | @protobuf-ts/runtime 408 | (Apache-2.0 AND BSD-3-Clause) 409 | Apache License 410 | Version 2.0, January 2004 411 | http://www.apache.org/licenses/ 412 | 413 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 414 | 415 | 1. Definitions. 416 | 417 | "License" shall mean the terms and conditions for use, reproduction, 418 | and distribution as defined by Sections 1 through 9 of this document. 419 | 420 | "Licensor" shall mean the copyright owner or entity authorized by 421 | the copyright owner that is granting the License. 422 | 423 | "Legal Entity" shall mean the union of the acting entity and all 424 | other entities that control, are controlled by, or are under common 425 | control with that entity. For the purposes of this definition, 426 | "control" means (i) the power, direct or indirect, to cause the 427 | direction or management of such entity, whether by contract or 428 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 429 | outstanding shares, or (iii) beneficial ownership of such entity. 430 | 431 | "You" (or "Your") shall mean an individual or Legal Entity 432 | exercising permissions granted by this License. 433 | 434 | "Source" form shall mean the preferred form for making modifications, 435 | including but not limited to software source code, documentation 436 | source, and configuration files. 437 | 438 | "Object" form shall mean any form resulting from mechanical 439 | transformation or translation of a Source form, including but 440 | not limited to compiled object code, generated documentation, 441 | and conversions to other media types. 442 | 443 | "Work" shall mean the work of authorship, whether in Source or 444 | Object form, made available under the License, as indicated by a 445 | copyright notice that is included in or attached to the work 446 | (an example is provided in the Appendix below). 447 | 448 | "Derivative Works" shall mean any work, whether in Source or Object 449 | form, that is based on (or derived from) the Work and for which the 450 | editorial revisions, annotations, elaborations, or other modifications 451 | represent, as a whole, an original work of authorship. For the purposes 452 | of this License, Derivative Works shall not include works that remain 453 | separable from, or merely link (or bind by name) to the interfaces of, 454 | the Work and Derivative Works thereof. 455 | 456 | "Contribution" shall mean any work of authorship, including 457 | the original version of the Work and any modifications or additions 458 | to that Work or Derivative Works thereof, that is intentionally 459 | submitted to Licensor for inclusion in the Work by the copyright owner 460 | or by an individual or Legal Entity authorized to submit on behalf of 461 | the copyright owner. For the purposes of this definition, "submitted" 462 | means any form of electronic, verbal, or written communication sent 463 | to the Licensor or its representatives, including but not limited to 464 | communication on electronic mailing lists, source code control systems, 465 | and issue tracking systems that are managed by, or on behalf of, the 466 | Licensor for the purpose of discussing and improving the Work, but 467 | excluding communication that is conspicuously marked or otherwise 468 | designated in writing by the copyright owner as "Not a Contribution." 469 | 470 | "Contributor" shall mean Licensor and any individual or Legal Entity 471 | on behalf of whom a Contribution has been received by Licensor and 472 | subsequently incorporated within the Work. 473 | 474 | 2. Grant of Copyright License. Subject to the terms and conditions of 475 | this License, each Contributor hereby grants to You a perpetual, 476 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 477 | copyright license to reproduce, prepare Derivative Works of, 478 | publicly display, publicly perform, sublicense, and distribute the 479 | Work and such Derivative Works in Source or Object form. 480 | 481 | 3. Grant of Patent License. Subject to the terms and conditions of 482 | this License, each Contributor hereby grants to You a perpetual, 483 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 484 | (except as stated in this section) patent license to make, have made, 485 | use, offer to sell, sell, import, and otherwise transfer the Work, 486 | where such license applies only to those patent claims licensable 487 | by such Contributor that are necessarily infringed by their 488 | Contribution(s) alone or by combination of their Contribution(s) 489 | with the Work to which such Contribution(s) was submitted. If You 490 | institute patent litigation against any entity (including a 491 | cross-claim or counterclaim in a lawsuit) alleging that the Work 492 | or a Contribution incorporated within the Work constitutes direct 493 | or contributory patent infringement, then any patent licenses 494 | granted to You under this License for that Work shall terminate 495 | as of the date such litigation is filed. 496 | 497 | 4. Redistribution. You may reproduce and distribute copies of the 498 | Work or Derivative Works thereof in any medium, with or without 499 | modifications, and in Source or Object form, provided that You 500 | meet the following conditions: 501 | 502 | (a) You must give any other recipients of the Work or 503 | Derivative Works a copy of this License; and 504 | 505 | (b) You must cause any modified files to carry prominent notices 506 | stating that You changed the files; and 507 | 508 | (c) You must retain, in the Source form of any Derivative Works 509 | that You distribute, all copyright, patent, trademark, and 510 | attribution notices from the Source form of the Work, 511 | excluding those notices that do not pertain to any part of 512 | the Derivative Works; and 513 | 514 | (d) If the Work includes a "NOTICE" text file as part of its 515 | distribution, then any Derivative Works that You distribute must 516 | include a readable copy of the attribution notices contained 517 | within such NOTICE file, excluding those notices that do not 518 | pertain to any part of the Derivative Works, in at least one 519 | of the following places: within a NOTICE text file distributed 520 | as part of the Derivative Works; within the Source form or 521 | documentation, if provided along with the Derivative Works; or, 522 | within a display generated by the Derivative Works, if and 523 | wherever such third-party notices normally appear. The contents 524 | of the NOTICE file are for informational purposes only and 525 | do not modify the License. You may add Your own attribution 526 | notices within Derivative Works that You distribute, alongside 527 | or as an addendum to the NOTICE text from the Work, provided 528 | that such additional attribution notices cannot be construed 529 | as modifying the License. 530 | 531 | You may add Your own copyright statement to Your modifications and 532 | may provide additional or different license terms and conditions 533 | for use, reproduction, or distribution of Your modifications, or 534 | for any such Derivative Works as a whole, provided Your use, 535 | reproduction, and distribution of the Work otherwise complies with 536 | the conditions stated in this License. 537 | 538 | 5. Submission of Contributions. Unless You explicitly state otherwise, 539 | any Contribution intentionally submitted for inclusion in the Work 540 | by You to the Licensor shall be under the terms and conditions of 541 | this License, without any additional terms or conditions. 542 | Notwithstanding the above, nothing herein shall supersede or modify 543 | the terms of any separate license agreement you may have executed 544 | with Licensor regarding such Contributions. 545 | 546 | 6. Trademarks. This License does not grant permission to use the trade 547 | names, trademarks, service marks, or product names of the Licensor, 548 | except as required for reasonable and customary use in describing the 549 | origin of the Work and reproducing the content of the NOTICE file. 550 | 551 | 7. Disclaimer of Warranty. Unless required by applicable law or 552 | agreed to in writing, Licensor provides the Work (and each 553 | Contributor provides its Contributions) on an "AS IS" BASIS, 554 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 555 | implied, including, without limitation, any warranties or conditions 556 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 557 | PARTICULAR PURPOSE. You are solely responsible for determining the 558 | appropriateness of using or redistributing the Work and assume any 559 | risks associated with Your exercise of permissions under this License. 560 | 561 | 8. Limitation of Liability. In no event and under no legal theory, 562 | whether in tort (including negligence), contract, or otherwise, 563 | unless required by applicable law (such as deliberate and grossly 564 | negligent acts) or agreed to in writing, shall any Contributor be 565 | liable to You for damages, including any direct, indirect, special, 566 | incidental, or consequential damages of any character arising as a 567 | result of this License or out of the use or inability to use the 568 | Work (including but not limited to damages for loss of goodwill, 569 | work stoppage, computer failure or malfunction, or any and all 570 | other commercial damages or losses), even if such Contributor 571 | has been advised of the possibility of such damages. 572 | 573 | 9. Accepting Warranty or Additional Liability. While redistributing 574 | the Work or Derivative Works thereof, You may choose to offer, 575 | and charge a fee for, acceptance of support, warranty, indemnity, 576 | or other liability obligations and/or rights consistent with this 577 | License. However, in accepting such obligations, You may act only 578 | on Your own behalf and on Your sole responsibility, not on behalf 579 | of any other Contributor, and only if You agree to indemnify, 580 | defend, and hold each Contributor harmless for any liability 581 | incurred by, or claims asserted against, such Contributor by reason 582 | of your accepting any such warranty or additional liability. 583 | 584 | 585 | @protobuf-ts/runtime-rpc 586 | Apache-2.0 587 | Apache License 588 | Version 2.0, January 2004 589 | http://www.apache.org/licenses/ 590 | 591 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 592 | 593 | 1. Definitions. 594 | 595 | "License" shall mean the terms and conditions for use, reproduction, 596 | and distribution as defined by Sections 1 through 9 of this document. 597 | 598 | "Licensor" shall mean the copyright owner or entity authorized by 599 | the copyright owner that is granting the License. 600 | 601 | "Legal Entity" shall mean the union of the acting entity and all 602 | other entities that control, are controlled by, or are under common 603 | control with that entity. For the purposes of this definition, 604 | "control" means (i) the power, direct or indirect, to cause the 605 | direction or management of such entity, whether by contract or 606 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 607 | outstanding shares, or (iii) beneficial ownership of such entity. 608 | 609 | "You" (or "Your") shall mean an individual or Legal Entity 610 | exercising permissions granted by this License. 611 | 612 | "Source" form shall mean the preferred form for making modifications, 613 | including but not limited to software source code, documentation 614 | source, and configuration files. 615 | 616 | "Object" form shall mean any form resulting from mechanical 617 | transformation or translation of a Source form, including but 618 | not limited to compiled object code, generated documentation, 619 | and conversions to other media types. 620 | 621 | "Work" shall mean the work of authorship, whether in Source or 622 | Object form, made available under the License, as indicated by a 623 | copyright notice that is included in or attached to the work 624 | (an example is provided in the Appendix below). 625 | 626 | "Derivative Works" shall mean any work, whether in Source or Object 627 | form, that is based on (or derived from) the Work and for which the 628 | editorial revisions, annotations, elaborations, or other modifications 629 | represent, as a whole, an original work of authorship. For the purposes 630 | of this License, Derivative Works shall not include works that remain 631 | separable from, or merely link (or bind by name) to the interfaces of, 632 | the Work and Derivative Works thereof. 633 | 634 | "Contribution" shall mean any work of authorship, including 635 | the original version of the Work and any modifications or additions 636 | to that Work or Derivative Works thereof, that is intentionally 637 | submitted to Licensor for inclusion in the Work by the copyright owner 638 | or by an individual or Legal Entity authorized to submit on behalf of 639 | the copyright owner. For the purposes of this definition, "submitted" 640 | means any form of electronic, verbal, or written communication sent 641 | to the Licensor or its representatives, including but not limited to 642 | communication on electronic mailing lists, source code control systems, 643 | and issue tracking systems that are managed by, or on behalf of, the 644 | Licensor for the purpose of discussing and improving the Work, but 645 | excluding communication that is conspicuously marked or otherwise 646 | designated in writing by the copyright owner as "Not a Contribution." 647 | 648 | "Contributor" shall mean Licensor and any individual or Legal Entity 649 | on behalf of whom a Contribution has been received by Licensor and 650 | subsequently incorporated within the Work. 651 | 652 | 2. Grant of Copyright License. Subject to the terms and conditions of 653 | this License, each Contributor hereby grants to You a perpetual, 654 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 655 | copyright license to reproduce, prepare Derivative Works of, 656 | publicly display, publicly perform, sublicense, and distribute the 657 | Work and such Derivative Works in Source or Object form. 658 | 659 | 3. Grant of Patent License. Subject to the terms and conditions of 660 | this License, each Contributor hereby grants to You a perpetual, 661 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 662 | (except as stated in this section) patent license to make, have made, 663 | use, offer to sell, sell, import, and otherwise transfer the Work, 664 | where such license applies only to those patent claims licensable 665 | by such Contributor that are necessarily infringed by their 666 | Contribution(s) alone or by combination of their Contribution(s) 667 | with the Work to which such Contribution(s) was submitted. If You 668 | institute patent litigation against any entity (including a 669 | cross-claim or counterclaim in a lawsuit) alleging that the Work 670 | or a Contribution incorporated within the Work constitutes direct 671 | or contributory patent infringement, then any patent licenses 672 | granted to You under this License for that Work shall terminate 673 | as of the date such litigation is filed. 674 | 675 | 4. Redistribution. You may reproduce and distribute copies of the 676 | Work or Derivative Works thereof in any medium, with or without 677 | modifications, and in Source or Object form, provided that You 678 | meet the following conditions: 679 | 680 | (a) You must give any other recipients of the Work or 681 | Derivative Works a copy of this License; and 682 | 683 | (b) You must cause any modified files to carry prominent notices 684 | stating that You changed the files; and 685 | 686 | (c) You must retain, in the Source form of any Derivative Works 687 | that You distribute, all copyright, patent, trademark, and 688 | attribution notices from the Source form of the Work, 689 | excluding those notices that do not pertain to any part of 690 | the Derivative Works; and 691 | 692 | (d) If the Work includes a "NOTICE" text file as part of its 693 | distribution, then any Derivative Works that You distribute must 694 | include a readable copy of the attribution notices contained 695 | within such NOTICE file, excluding those notices that do not 696 | pertain to any part of the Derivative Works, in at least one 697 | of the following places: within a NOTICE text file distributed 698 | as part of the Derivative Works; within the Source form or 699 | documentation, if provided along with the Derivative Works; or, 700 | within a display generated by the Derivative Works, if and 701 | wherever such third-party notices normally appear. The contents 702 | of the NOTICE file are for informational purposes only and 703 | do not modify the License. You may add Your own attribution 704 | notices within Derivative Works that You distribute, alongside 705 | or as an addendum to the NOTICE text from the Work, provided 706 | that such additional attribution notices cannot be construed 707 | as modifying the License. 708 | 709 | You may add Your own copyright statement to Your modifications and 710 | may provide additional or different license terms and conditions 711 | for use, reproduction, or distribution of Your modifications, or 712 | for any such Derivative Works as a whole, provided Your use, 713 | reproduction, and distribution of the Work otherwise complies with 714 | the conditions stated in this License. 715 | 716 | 5. Submission of Contributions. Unless You explicitly state otherwise, 717 | any Contribution intentionally submitted for inclusion in the Work 718 | by You to the Licensor shall be under the terms and conditions of 719 | this License, without any additional terms or conditions. 720 | Notwithstanding the above, nothing herein shall supersede or modify 721 | the terms of any separate license agreement you may have executed 722 | with Licensor regarding such Contributions. 723 | 724 | 6. Trademarks. This License does not grant permission to use the trade 725 | names, trademarks, service marks, or product names of the Licensor, 726 | except as required for reasonable and customary use in describing the 727 | origin of the Work and reproducing the content of the NOTICE file. 728 | 729 | 7. Disclaimer of Warranty. Unless required by applicable law or 730 | agreed to in writing, Licensor provides the Work (and each 731 | Contributor provides its Contributions) on an "AS IS" BASIS, 732 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 733 | implied, including, without limitation, any warranties or conditions 734 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 735 | PARTICULAR PURPOSE. You are solely responsible for determining the 736 | appropriateness of using or redistributing the Work and assume any 737 | risks associated with Your exercise of permissions under this License. 738 | 739 | 8. Limitation of Liability. In no event and under no legal theory, 740 | whether in tort (including negligence), contract, or otherwise, 741 | unless required by applicable law (such as deliberate and grossly 742 | negligent acts) or agreed to in writing, shall any Contributor be 743 | liable to You for damages, including any direct, indirect, special, 744 | incidental, or consequential damages of any character arising as a 745 | result of this License or out of the use or inability to use the 746 | Work (including but not limited to damages for loss of goodwill, 747 | work stoppage, computer failure or malfunction, or any and all 748 | other commercial damages or losses), even if such Contributor 749 | has been advised of the possibility of such damages. 750 | 751 | 9. Accepting Warranty or Additional Liability. While redistributing 752 | the Work or Derivative Works thereof, You may choose to offer, 753 | and charge a fee for, acceptance of support, warranty, indemnity, 754 | or other liability obligations and/or rights consistent with this 755 | License. However, in accepting such obligations, You may act only 756 | on Your own behalf and on Your sole responsibility, not on behalf 757 | of any other Contributor, and only if You agree to indemnify, 758 | defend, and hold each Contributor harmless for any liability 759 | incurred by, or claims asserted against, such Contributor by reason 760 | of your accepting any such warranty or additional liability. 761 | 762 | 763 | @typespec/ts-http-runtime 764 | MIT 765 | Copyright (c) Microsoft Corporation. 766 | 767 | MIT License 768 | 769 | Permission is hereby granted, free of charge, to any person obtaining a copy 770 | of this software and associated documentation files (the "Software"), to deal 771 | in the Software without restriction, including without limitation the rights 772 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 773 | copies of the Software, and to permit persons to whom the Software is 774 | furnished to do so, subject to the following conditions: 775 | 776 | The above copyright notice and this permission notice shall be included in all 777 | copies or substantial portions of the Software. 778 | 779 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 780 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 781 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 782 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 783 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 784 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 785 | SOFTWARE. 786 | 787 | 788 | agent-base 789 | MIT 790 | (The MIT License) 791 | 792 | Copyright (c) 2013 Nathan Rajlich 793 | 794 | Permission is hereby granted, free of charge, to any person obtaining 795 | a copy of this software and associated documentation files (the 796 | 'Software'), to deal in the Software without restriction, including 797 | without limitation the rights to use, copy, modify, merge, publish, 798 | distribute, sublicense, and/or sell copies of the Software, and to 799 | permit persons to whom the Software is furnished to do so, subject to 800 | the following conditions: 801 | 802 | The above copyright notice and this permission notice shall be 803 | included in all copies or substantial portions of the Software. 804 | 805 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 806 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 807 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 808 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 809 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 810 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 811 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 812 | 813 | balanced-match 814 | MIT 815 | (MIT) 816 | 817 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> 818 | 819 | Permission is hereby granted, free of charge, to any person obtaining a copy of 820 | this software and associated documentation files (the "Software"), to deal in 821 | the Software without restriction, including without limitation the rights to 822 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 823 | of the Software, and to permit persons to whom the Software is furnished to do 824 | so, subject to the following conditions: 825 | 826 | The above copyright notice and this permission notice shall be included in all 827 | copies or substantial portions of the Software. 828 | 829 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 830 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 831 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 832 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 833 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 834 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 835 | SOFTWARE. 836 | 837 | 838 | brace-expansion 839 | MIT 840 | MIT License 841 | 842 | Copyright (c) 2013 Julian Gruber 843 | 844 | Permission is hereby granted, free of charge, to any person obtaining a copy 845 | of this software and associated documentation files (the "Software"), to deal 846 | in the Software without restriction, including without limitation the rights 847 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 848 | copies of the Software, and to permit persons to whom the Software is 849 | furnished to do so, subject to the following conditions: 850 | 851 | The above copyright notice and this permission notice shall be included in all 852 | copies or substantial portions of the Software. 853 | 854 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 855 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 856 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 857 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 858 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 859 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 860 | SOFTWARE. 861 | 862 | 863 | concat-map 864 | MIT 865 | This software is released under the MIT license: 866 | 867 | Permission is hereby granted, free of charge, to any person obtaining a copy of 868 | this software and associated documentation files (the "Software"), to deal in 869 | the Software without restriction, including without limitation the rights to 870 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 871 | the Software, and to permit persons to whom the Software is furnished to do so, 872 | subject to the following conditions: 873 | 874 | The above copyright notice and this permission notice shall be included in all 875 | copies or substantial portions of the Software. 876 | 877 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 878 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 879 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 880 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 881 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 882 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 883 | 884 | 885 | debug 886 | MIT 887 | (The MIT License) 888 | 889 | Copyright (c) 2014-2017 TJ Holowaychuk 890 | Copyright (c) 2018-2021 Josh Junon 891 | 892 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 893 | and associated documentation files (the 'Software'), to deal in the Software without restriction, 894 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 895 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 896 | subject to the following conditions: 897 | 898 | The above copyright notice and this permission notice shall be included in all copies or substantial 899 | portions of the Software. 900 | 901 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 902 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 903 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 904 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 905 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 906 | 907 | 908 | 909 | fast-xml-parser 910 | MIT 911 | MIT License 912 | 913 | Copyright (c) 2017 Amit Kumar Gupta 914 | 915 | Permission is hereby granted, free of charge, to any person obtaining a copy 916 | of this software and associated documentation files (the "Software"), to deal 917 | in the Software without restriction, including without limitation the rights 918 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 919 | copies of the Software, and to permit persons to whom the Software is 920 | furnished to do so, subject to the following conditions: 921 | 922 | The above copyright notice and this permission notice shall be included in all 923 | copies or substantial portions of the Software. 924 | 925 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 926 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 927 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 928 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 929 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 930 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 931 | SOFTWARE. 932 | 933 | 934 | handlebars 935 | MIT 936 | Copyright (C) 2011-2019 by Yehuda Katz 937 | 938 | Permission is hereby granted, free of charge, to any person obtaining a copy 939 | of this software and associated documentation files (the "Software"), to deal 940 | in the Software without restriction, including without limitation the rights 941 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 942 | copies of the Software, and to permit persons to whom the Software is 943 | furnished to do so, subject to the following conditions: 944 | 945 | The above copyright notice and this permission notice shall be included in 946 | all copies or substantial portions of the Software. 947 | 948 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 949 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 950 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 951 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 952 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 953 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 954 | THE SOFTWARE. 955 | 956 | 957 | has-flag 958 | MIT 959 | MIT License 960 | 961 | Copyright (c) Sindre Sorhus (sindresorhus.com) 962 | 963 | 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: 964 | 965 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 966 | 967 | 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. 968 | 969 | 970 | http-proxy-agent 971 | MIT 972 | (The MIT License) 973 | 974 | Copyright (c) 2013 Nathan Rajlich 975 | 976 | Permission is hereby granted, free of charge, to any person obtaining 977 | a copy of this software and associated documentation files (the 978 | 'Software'), to deal in the Software without restriction, including 979 | without limitation the rights to use, copy, modify, merge, publish, 980 | distribute, sublicense, and/or sell copies of the Software, and to 981 | permit persons to whom the Software is furnished to do so, subject to 982 | the following conditions: 983 | 984 | The above copyright notice and this permission notice shall be 985 | included in all copies or substantial portions of the Software. 986 | 987 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 988 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 989 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 990 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 991 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 992 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 993 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 994 | 995 | 996 | https-proxy-agent 997 | MIT 998 | (The MIT License) 999 | 1000 | Copyright (c) 2013 Nathan Rajlich 1001 | 1002 | Permission is hereby granted, free of charge, to any person obtaining 1003 | a copy of this software and associated documentation files (the 1004 | 'Software'), to deal in the Software without restriction, including 1005 | without limitation the rights to use, copy, modify, merge, publish, 1006 | distribute, sublicense, and/or sell copies of the Software, and to 1007 | permit persons to whom the Software is furnished to do so, subject to 1008 | the following conditions: 1009 | 1010 | The above copyright notice and this permission notice shall be 1011 | included in all copies or substantial portions of the Software. 1012 | 1013 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1014 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1015 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1016 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1017 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1018 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1019 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1020 | 1021 | minimatch 1022 | ISC 1023 | The ISC License 1024 | 1025 | Copyright (c) Isaac Z. Schlueter and Contributors 1026 | 1027 | Permission to use, copy, modify, and/or distribute this software for any 1028 | purpose with or without fee is hereby granted, provided that the above 1029 | copyright notice and this permission notice appear in all copies. 1030 | 1031 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1032 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1033 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1034 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1035 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1036 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 1037 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1038 | 1039 | 1040 | ms 1041 | MIT 1042 | The MIT License (MIT) 1043 | 1044 | Copyright (c) 2020 Vercel, Inc. 1045 | 1046 | Permission is hereby granted, free of charge, to any person obtaining a copy 1047 | of this software and associated documentation files (the "Software"), to deal 1048 | in the Software without restriction, including without limitation the rights 1049 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1050 | copies of the Software, and to permit persons to whom the Software is 1051 | furnished to do so, subject to the following conditions: 1052 | 1053 | The above copyright notice and this permission notice shall be included in all 1054 | copies or substantial portions of the Software. 1055 | 1056 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1057 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1058 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1059 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1060 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1061 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1062 | SOFTWARE. 1063 | 1064 | 1065 | semver 1066 | ISC 1067 | The ISC License 1068 | 1069 | Copyright (c) Isaac Z. Schlueter and Contributors 1070 | 1071 | Permission to use, copy, modify, and/or distribute this software for any 1072 | purpose with or without fee is hereby granted, provided that the above 1073 | copyright notice and this permission notice appear in all copies. 1074 | 1075 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1076 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1077 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1078 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1079 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1080 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 1081 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1082 | 1083 | 1084 | source-map 1085 | BSD-3-Clause 1086 | 1087 | Copyright (c) 2009-2011, Mozilla Foundation and contributors 1088 | All rights reserved. 1089 | 1090 | Redistribution and use in source and binary forms, with or without 1091 | modification, are permitted provided that the following conditions are met: 1092 | 1093 | * Redistributions of source code must retain the above copyright notice, this 1094 | list of conditions and the following disclaimer. 1095 | 1096 | * Redistributions in binary form must reproduce the above copyright notice, 1097 | this list of conditions and the following disclaimer in the documentation 1098 | and/or other materials provided with the distribution. 1099 | 1100 | * Neither the names of the Mozilla Foundation nor the names of project 1101 | contributors may be used to endorse or promote products derived from this 1102 | software without specific prior written permission. 1103 | 1104 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 1105 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1106 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1107 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 1108 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1109 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1110 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 1111 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 1112 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1113 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1114 | 1115 | 1116 | supports-color 1117 | MIT 1118 | MIT License 1119 | 1120 | Copyright (c) Sindre Sorhus (sindresorhus.com) 1121 | 1122 | 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: 1123 | 1124 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1125 | 1126 | 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. 1127 | 1128 | 1129 | tslib 1130 | 0BSD 1131 | Copyright (c) Microsoft Corporation. 1132 | 1133 | Permission to use, copy, modify, and/or distribute this software for any 1134 | purpose with or without fee is hereby granted. 1135 | 1136 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 1137 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 1138 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 1139 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 1140 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 1141 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 1142 | PERFORMANCE OF THIS SOFTWARE. 1143 | 1144 | tunnel 1145 | MIT 1146 | The MIT License (MIT) 1147 | 1148 | Copyright (c) 2012 Koichi Kobayashi 1149 | 1150 | Permission is hereby granted, free of charge, to any person obtaining a copy 1151 | of this software and associated documentation files (the "Software"), to deal 1152 | in the Software without restriction, including without limitation the rights 1153 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1154 | copies of the Software, and to permit persons to whom the Software is 1155 | furnished to do so, subject to the following conditions: 1156 | 1157 | The above copyright notice and this permission notice shall be included in 1158 | all copies or substantial portions of the Software. 1159 | 1160 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1161 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1162 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1163 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1164 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1165 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1166 | THE SOFTWARE. 1167 | 1168 | 1169 | undici 1170 | MIT 1171 | MIT License 1172 | 1173 | Copyright (c) Matteo Collina and Undici contributors 1174 | 1175 | Permission is hereby granted, free of charge, to any person obtaining a copy 1176 | of this software and associated documentation files (the "Software"), to deal 1177 | in the Software without restriction, including without limitation the rights 1178 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1179 | copies of the Software, and to permit persons to whom the Software is 1180 | furnished to do so, subject to the following conditions: 1181 | 1182 | The above copyright notice and this permission notice shall be included in all 1183 | copies or substantial portions of the Software. 1184 | 1185 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1186 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1187 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1188 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1189 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1190 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1191 | SOFTWARE. 1192 | --------------------------------------------------------------------------------