Compare commits
No commits in common. "test-show-progress" and "master" have entirely different histories.
test-show-
...
master
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"plugins": ["jest", "@typescript-eslint"],
|
"plugins": ["jest", "@typescript-eslint"],
|
||||||
"extends": ["plugin:github/recommended"],
|
"extends": ["plugin:github/es6"],
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 9,
|
"ecmaVersion": 9,
|
||||||
|
@ -16,19 +16,23 @@
|
||||||
"@typescript-eslint/no-require-imports": "error",
|
"@typescript-eslint/no-require-imports": "error",
|
||||||
"@typescript-eslint/array-type": "error",
|
"@typescript-eslint/array-type": "error",
|
||||||
"@typescript-eslint/await-thenable": "error",
|
"@typescript-eslint/await-thenable": "error",
|
||||||
|
"@typescript-eslint/ban-ts-ignore": "error",
|
||||||
"camelcase": "off",
|
"camelcase": "off",
|
||||||
|
"@typescript-eslint/camelcase": "error",
|
||||||
|
"@typescript-eslint/class-name-casing": "error",
|
||||||
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
|
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
|
||||||
"@typescript-eslint/func-call-spacing": ["error", "never"],
|
"@typescript-eslint/func-call-spacing": ["error", "never"],
|
||||||
|
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
|
||||||
"@typescript-eslint/no-array-constructor": "error",
|
"@typescript-eslint/no-array-constructor": "error",
|
||||||
"@typescript-eslint/no-empty-interface": "error",
|
"@typescript-eslint/no-empty-interface": "error",
|
||||||
"@typescript-eslint/no-explicit-any": "error",
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
"@typescript-eslint/no-extraneous-class": "error",
|
"@typescript-eslint/no-extraneous-class": "error",
|
||||||
"@typescript-eslint/no-floating-promises": "error",
|
|
||||||
"@typescript-eslint/no-for-in-array": "error",
|
"@typescript-eslint/no-for-in-array": "error",
|
||||||
"@typescript-eslint/no-inferrable-types": "error",
|
"@typescript-eslint/no-inferrable-types": "error",
|
||||||
"@typescript-eslint/no-misused-new": "error",
|
"@typescript-eslint/no-misused-new": "error",
|
||||||
"@typescript-eslint/no-namespace": "error",
|
"@typescript-eslint/no-namespace": "error",
|
||||||
"@typescript-eslint/no-non-null-assertion": "warn",
|
"@typescript-eslint/no-non-null-assertion": "warn",
|
||||||
|
"@typescript-eslint/no-object-literal-type-assertion": "error",
|
||||||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||||||
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
||||||
"@typescript-eslint/no-useless-constructor": "error",
|
"@typescript-eslint/no-useless-constructor": "error",
|
||||||
|
@ -36,6 +40,7 @@
|
||||||
"@typescript-eslint/prefer-for-of": "warn",
|
"@typescript-eslint/prefer-for-of": "warn",
|
||||||
"@typescript-eslint/prefer-function-type": "warn",
|
"@typescript-eslint/prefer-function-type": "warn",
|
||||||
"@typescript-eslint/prefer-includes": "error",
|
"@typescript-eslint/prefer-includes": "error",
|
||||||
|
"@typescript-eslint/prefer-interface": "error",
|
||||||
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
||||||
"@typescript-eslint/promise-function-async": "error",
|
"@typescript-eslint/promise-function-async": "error",
|
||||||
"@typescript-eslint/require-array-sort-compare": "error",
|
"@typescript-eslint/require-array-sort-compare": "error",
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
.licenses/** -diff linguist-generated=true
|
|
|
@ -1,51 +0,0 @@
|
||||||
# `dist/index.js` is a special file in Actions.
|
|
||||||
# When you reference an action with `uses:` in a workflow,
|
|
||||||
# `index.js` is the code that will run.
|
|
||||||
# For our project, we generate this file through a build process
|
|
||||||
# from other source files.
|
|
||||||
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
|
|
||||||
name: Check dist
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-dist:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set Node.js 20.x
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 20.x
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Rebuild the index.js file
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
- name: Compare the expected and actual dist/ directories
|
|
||||||
run: |
|
|
||||||
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
|
|
||||||
echo "Detected uncommitted changes after build. See status below:"
|
|
||||||
git diff
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If dist/ was different than expected, upload the expected version as an artifact
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: dist/
|
|
|
@ -1,58 +0,0 @@
|
||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ main ]
|
|
||||||
schedule:
|
|
||||||
- cron: '28 9 * * 0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'javascript' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
|
||||||
# Learn more:
|
|
||||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm run build
|
|
||||||
- run: rm -rf dist # We want code scanning to analyze lib instead (individual .js files)
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
|
@ -1,14 +0,0 @@
|
||||||
name: Licensed
|
|
||||||
|
|
||||||
on:
|
|
||||||
push: {branches: main}
|
|
||||||
pull_request: {branches: main}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Check licenses
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm run licensed-check
|
|
|
@ -4,7 +4,7 @@ on:
|
||||||
pull_request:
|
pull_request:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- master
|
||||||
- releases/*
|
- releases/*
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -13,8 +13,8 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 20.x
|
node-version: 12.x
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
- run: npm run format-check
|
- run: npm run format-check
|
||||||
|
@ -32,7 +32,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
# Clone this repo
|
# Clone this repo
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Basic checkout
|
# Basic checkout
|
||||||
- name: Checkout basic
|
- name: Checkout basic
|
||||||
|
@ -72,33 +72,6 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
run: __test__/verify-side-by-side.sh
|
run: __test__/verify-side-by-side.sh
|
||||||
|
|
||||||
# Sparse checkout
|
|
||||||
- name: Sparse checkout
|
|
||||||
uses: ./
|
|
||||||
with:
|
|
||||||
sparse-checkout: |
|
|
||||||
__test__
|
|
||||||
.github
|
|
||||||
dist
|
|
||||||
path: sparse-checkout
|
|
||||||
|
|
||||||
- name: Verify sparse checkout
|
|
||||||
run: __test__/verify-sparse-checkout.sh
|
|
||||||
|
|
||||||
# Sparse checkout (non-cone mode)
|
|
||||||
- name: Sparse checkout (non-cone mode)
|
|
||||||
uses: ./
|
|
||||||
with:
|
|
||||||
sparse-checkout: |
|
|
||||||
/__test__/
|
|
||||||
/.github/
|
|
||||||
/dist/
|
|
||||||
sparse-checkout-cone-mode: false
|
|
||||||
path: sparse-checkout-non-cone-mode
|
|
||||||
|
|
||||||
- name: Verify sparse checkout (non-cone mode)
|
|
||||||
run: __test__/verify-sparse-checkout-non-cone-mode.sh
|
|
||||||
|
|
||||||
# LFS
|
# LFS
|
||||||
- name: Checkout LFS
|
- name: Checkout LFS
|
||||||
uses: ./
|
uses: ./
|
||||||
|
@ -169,7 +142,7 @@ jobs:
|
||||||
options: --dns 127.0.0.1
|
options: --dns 127.0.0.1
|
||||||
services:
|
services:
|
||||||
squid-proxy:
|
squid-proxy:
|
||||||
image: ubuntu/squid:latest
|
image: datadog/squid:latest
|
||||||
ports:
|
ports:
|
||||||
- 3128:3128
|
- 3128:3128
|
||||||
env:
|
env:
|
||||||
|
@ -177,7 +150,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
# Clone this repo
|
# Clone this repo
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Basic checkout using git
|
# Basic checkout using git
|
||||||
- name: Checkout basic
|
- name: Checkout basic
|
||||||
|
@ -209,7 +182,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
# Clone this repo
|
# Clone this repo
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Basic checkout using git
|
# Basic checkout using git
|
||||||
- name: Checkout basic
|
- name: Checkout basic
|
||||||
|
@ -232,41 +205,3 @@ jobs:
|
||||||
path: basic
|
path: basic
|
||||||
- name: Verify basic
|
- name: Verify basic
|
||||||
run: __test__/verify-basic.sh --archive
|
run: __test__/verify-basic.sh --archive
|
||||||
|
|
||||||
test-git-container:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container: bitnami/git:latest
|
|
||||||
steps:
|
|
||||||
# Clone this repo
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
path: v3
|
|
||||||
|
|
||||||
# Basic checkout using git
|
|
||||||
- name: Checkout basic
|
|
||||||
uses: ./v3
|
|
||||||
with:
|
|
||||||
ref: test-data/v2/basic
|
|
||||||
- name: Verify basic
|
|
||||||
run: |
|
|
||||||
if [ ! -f "./basic-file.txt" ]; then
|
|
||||||
echo "Expected basic file does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verify .git folder
|
|
||||||
if [ ! -d "./.git" ]; then
|
|
||||||
echo "Expected ./.git folder to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verify auth token
|
|
||||||
git config --global --add safe.directory "*"
|
|
||||||
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
|
||||||
|
|
||||||
# needed to make checkout post cleanup succeed
|
|
||||||
- name: Fix Checkout v3
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
path: v3
|
|
|
@ -1,32 +0,0 @@
|
||||||
name: Update Main Version
|
|
||||||
run-name: Move ${{ github.event.inputs.major_version }} to ${{ github.event.inputs.target }}
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
target:
|
|
||||||
description: The tag or reference to use
|
|
||||||
required: true
|
|
||||||
major_version:
|
|
||||||
type: choice
|
|
||||||
description: The major version to update
|
|
||||||
options:
|
|
||||||
- v4
|
|
||||||
- v3
|
|
||||||
- v2
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
tag:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Git config
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
- name: Tag new target
|
|
||||||
run: git tag -f ${{ github.event.inputs.major_version }} ${{ github.event.inputs.target }}
|
|
||||||
- name: Push new tag
|
|
||||||
run: git push origin ${{ github.event.inputs.major_version }} --force
|
|
|
@ -1,5 +1,3 @@
|
||||||
__test__/_temp
|
__test__/_temp
|
||||||
_temp/
|
|
||||||
lib/
|
lib/
|
||||||
node_modules/
|
node_modules/
|
||||||
.vscode/
|
|
|
@ -1,14 +0,0 @@
|
||||||
sources:
|
|
||||||
npm: true
|
|
||||||
|
|
||||||
allowed:
|
|
||||||
- apache-2.0
|
|
||||||
- bsd-2-clause
|
|
||||||
- bsd-3-clause
|
|
||||||
- isc
|
|
||||||
- mit
|
|
||||||
- cc0-1.0
|
|
||||||
- unlicense
|
|
||||||
|
|
||||||
reviewed:
|
|
||||||
npm:
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/core"
|
|
||||||
version: 1.10.0
|
|
||||||
type: npm
|
|
||||||
summary: Actions core lib
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |-
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright 2019 GitHub
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/exec"
|
|
||||||
version: 1.0.1
|
|
||||||
type: npm
|
|
||||||
summary: Actions exec lib
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/master/packages/exec
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |-
|
|
||||||
Copyright 2019 GitHub
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/github"
|
|
||||||
version: 5.1.1
|
|
||||||
type: npm
|
|
||||||
summary: Actions github lib
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/github
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |-
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright 2019 GitHub
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/http-client"
|
|
||||||
version: 2.1.0
|
|
||||||
type: npm
|
|
||||||
summary: Actions Http Client
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
Actions Http Client for Node.js
|
|
||||||
|
|
||||||
Copyright (c) GitHub, Inc.
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
||||||
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
||||||
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
||||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/io"
|
|
||||||
version: 1.1.3
|
|
||||||
type: npm
|
|
||||||
summary: Actions io lib
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/io
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |-
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright 2019 GitHub
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
name: "@actions/tool-cache"
|
|
||||||
version: 1.1.2
|
|
||||||
type: npm
|
|
||||||
summary: Actions tool-cache lib
|
|
||||||
homepage: https://github.com/actions/toolkit/tree/master/packages/exec
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: Auto-generated MIT license text
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/auth-token"
|
|
||||||
version: 2.5.0
|
|
||||||
type: npm
|
|
||||||
summary: GitHub API token authentication for browsers and Node.js
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/core"
|
|
||||||
version: 3.6.0
|
|
||||||
type: npm
|
|
||||||
summary: Extendable client for GitHub's REST & GraphQL APIs
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/endpoint"
|
|
||||||
version: 6.0.12
|
|
||||||
type: npm
|
|
||||||
summary: Turns REST API endpoints into generic request options
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/graphql"
|
|
||||||
version: 4.8.0
|
|
||||||
type: npm
|
|
||||||
summary: GitHub GraphQL API client for browsers and Node
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/openapi-types"
|
|
||||||
version: 12.11.0
|
|
||||||
type: npm
|
|
||||||
summary: Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |-
|
|
||||||
Copyright 2020 Gregor Martynus
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/plugin-paginate-rest"
|
|
||||||
version: 2.21.3
|
|
||||||
type: npm
|
|
||||||
summary: Octokit plugin to paginate REST API endpoint responses
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/plugin-rest-endpoint-methods"
|
|
||||||
version: 5.16.2
|
|
||||||
type: npm
|
|
||||||
summary: Octokit plugin adding one method for all of api.github.com REST API endpoints
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/request-error"
|
|
||||||
version: 2.1.0
|
|
||||||
type: npm
|
|
||||||
summary: Error class for Octokit request errors
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,35 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/request"
|
|
||||||
version: 5.6.3
|
|
||||||
type: npm
|
|
||||||
summary: Send parameterized requests to GitHub's APIs with sensible defaults in browsers
|
|
||||||
and Node
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2018 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: "@octokit/types"
|
|
||||||
version: 6.41.0
|
|
||||||
type: npm
|
|
||||||
summary: Shared TypeScript definitions for Octokit projects
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License Copyright (c) 2019 Octokit contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[MIT](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,214 +0,0 @@
|
||||||
---
|
|
||||||
name: before-after-hook
|
|
||||||
version: 2.2.3
|
|
||||||
type: npm
|
|
||||||
summary: asynchronous before/error/after hooks for internal functionality
|
|
||||||
homepage:
|
|
||||||
license: apache-2.0
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |2
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright 2018 Gregor Martynus and other contributors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[Apache 2.0](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
name: call-bind
|
|
||||||
version: 1.0.2
|
|
||||||
type: npm
|
|
||||||
summary: Robustly `.call.bind()` a function
|
|
||||||
homepage: https://github.com/ljharb/call-bind#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2020 Jordan Harband
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,28 +0,0 @@
|
||||||
---
|
|
||||||
name: deprecation
|
|
||||||
version: 2.3.1
|
|
||||||
type: npm
|
|
||||||
summary: Log a deprecation message with stack
|
|
||||||
homepage: https://github.com/gr2m/deprecation#readme
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Gregor Martynus and contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[ISC](LICENSE)"
|
|
||||||
notices: []
|
|
|
@ -1,31 +0,0 @@
|
||||||
---
|
|
||||||
name: function-bind
|
|
||||||
version: 1.1.1
|
|
||||||
type: npm
|
|
||||||
summary: Implementation of Function.prototype.bind
|
|
||||||
homepage: https://github.com/Raynos/function-bind
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |+
|
|
||||||
Copyright (c) 2013 Raynos.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
|
|
||||||
notices: []
|
|
|
@ -1,33 +0,0 @@
|
||||||
---
|
|
||||||
name: get-intrinsic
|
|
||||||
version: 1.1.1
|
|
||||||
type: npm
|
|
||||||
summary: Get and robustly cache all JS language-level intrinsics at first require
|
|
||||||
time
|
|
||||||
homepage: https://github.com/ljharb/get-intrinsic#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2020 Jordan Harband
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
name: has-symbols
|
|
||||||
version: 1.0.2
|
|
||||||
type: npm
|
|
||||||
summary: Determine if the JS environment has Symbol support. Supports spec, or shams.
|
|
||||||
homepage: https://github.com/inspect-js/has-symbols#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2016 Jordan Harband
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,33 +0,0 @@
|
||||||
---
|
|
||||||
name: has
|
|
||||||
version: 1.0.3
|
|
||||||
type: npm
|
|
||||||
summary: Object.prototype.hasOwnProperty.call shortcut
|
|
||||||
homepage: https://github.com/tarruda/has
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE-MIT
|
|
||||||
text: |
|
|
||||||
Copyright (c) 2013 Thiago de Arruda
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use,
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,40 +0,0 @@
|
||||||
---
|
|
||||||
name: is-plain-object
|
|
||||||
version: 5.0.0
|
|
||||||
type: npm
|
|
||||||
summary: Returns true if an object was created by the `Object` constructor, or Object.create(null).
|
|
||||||
homepage: https://github.com/jonschlinkert/is-plain-object
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014-2017, Jon Schlinkert.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
|
|
||||||
Released under the [MIT License](LICENSE).
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
|
|
||||||
notices: []
|
|
|
@ -1,56 +0,0 @@
|
||||||
---
|
|
||||||
name: node-fetch
|
|
||||||
version: 2.6.9
|
|
||||||
type: npm
|
|
||||||
summary: A light-weight module that brings window.fetch to node.js
|
|
||||||
homepage: https://github.com/bitinn/node-fetch
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |+
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2016 David Frank
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://flat.badgen.net/npm/v/node-fetch
|
|
||||||
[npm-url]: https://www.npmjs.com/package/node-fetch
|
|
||||||
[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch
|
|
||||||
[travis-url]: https://travis-ci.org/bitinn/node-fetch
|
|
||||||
[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master
|
|
||||||
[codecov-url]: https://codecov.io/gh/bitinn/node-fetch
|
|
||||||
[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch
|
|
||||||
[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch
|
|
||||||
[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square
|
|
||||||
[discord-url]: https://discord.gg/Zxbndcm
|
|
||||||
[opencollective-image]: https://opencollective.com/node-fetch/backers.svg
|
|
||||||
[opencollective-url]: https://opencollective.com/node-fetch
|
|
||||||
[whatwg-fetch]: https://fetch.spec.whatwg.org/
|
|
||||||
[response-init]: https://fetch.spec.whatwg.org/#responseinit
|
|
||||||
[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams
|
|
||||||
[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers
|
|
||||||
[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md
|
|
||||||
[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md
|
|
||||||
[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md
|
|
||||||
notices: []
|
|
|
@ -1,51 +0,0 @@
|
||||||
---
|
|
||||||
name: object-inspect
|
|
||||||
version: 1.11.0
|
|
||||||
type: npm
|
|
||||||
summary: string representations of objects in node and the browser
|
|
||||||
homepage: https://github.com/inspect-js/object-inspect
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2013 James Halliday
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
- sources: readme.markdown
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[1]: https://npmjs.org/package/object-inspect
|
|
||||||
[2]: https://versionbadg.es/inspect-js/object-inspect.svg
|
|
||||||
[5]: https://david-dm.org/inspect-js/object-inspect.svg
|
|
||||||
[6]: https://david-dm.org/inspect-js/object-inspect
|
|
||||||
[7]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg
|
|
||||||
[8]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies
|
|
||||||
[11]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true
|
|
||||||
[license-image]: https://img.shields.io/npm/l/object-inspect.svg
|
|
||||||
[license-url]: LICENSE
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg
|
|
||||||
[downloads-url]: https://npm-stat.com/charts.html?package=object-inspect
|
|
||||||
[codecov-image]: https://codecov.io/gh/inspect-js/object-inspect/branch/main/graphs/badge.svg
|
|
||||||
[codecov-url]: https://app.codecov.io/gh/inspect-js/object-inspect/
|
|
||||||
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/object-inspect
|
|
||||||
[actions-url]: https://github.com/inspect-js/object-inspect/actions
|
|
||||||
notices: []
|
|
|
@ -1,26 +0,0 @@
|
||||||
---
|
|
||||||
name: once
|
|
||||||
version: 1.4.0
|
|
||||||
type: npm
|
|
||||||
summary: Run a function exactly one time
|
|
||||||
homepage: https://github.com/isaacs/once#readme
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,40 +0,0 @@
|
||||||
---
|
|
||||||
name: qs
|
|
||||||
version: 6.11.0
|
|
||||||
type: npm
|
|
||||||
summary: A querystring parser that supports nesting and arrays, with a depth limit
|
|
||||||
homepage: https://github.com/ljharb/qs
|
|
||||||
license: bsd-3-clause
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors)
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
notices: []
|
|
|
@ -1,26 +0,0 @@
|
||||||
---
|
|
||||||
name: semver
|
|
||||||
version: 6.3.0
|
|
||||||
type: npm
|
|
||||||
summary: The semantic version parser used by npm.
|
|
||||||
homepage:
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
name: side-channel
|
|
||||||
version: 1.0.4
|
|
||||||
type: npm
|
|
||||||
summary: Store information about any JS value in a side channel. Uses WeakMap if available.
|
|
||||||
homepage: https://github.com/ljharb/side-channel#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2019 Jordan Harband
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
name: tr46
|
|
||||||
version: 0.0.3
|
|
||||||
type: npm
|
|
||||||
summary: An implementation of the Unicode TR46 spec
|
|
||||||
homepage: https://github.com/Sebmaster/tr46.js#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: Auto-generated MIT license text
|
|
||||||
text: |
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,35 +0,0 @@
|
||||||
---
|
|
||||||
name: tunnel
|
|
||||||
version: 0.0.6
|
|
||||||
type: npm
|
|
||||||
summary: Node HTTP/HTTPS Agents for tunneling proxies
|
|
||||||
homepage: https://github.com/koichik/node-tunnel/
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2012 Koichi Kobayashi
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE)
|
|
||||||
license.
|
|
||||||
notices: []
|
|
|
@ -1,945 +0,0 @@
|
||||||
---
|
|
||||||
name: typed-rest-client
|
|
||||||
version: 1.8.6
|
|
||||||
type: npm
|
|
||||||
summary: Node Rest and Http Clients for use with TypeScript
|
|
||||||
homepage: https://github.com/Microsoft/typed-rest-client#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
Typed Rest Client for Node.js
|
|
||||||
|
|
||||||
Copyright (c) Microsoft Corporation
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
||||||
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
||||||
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
||||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
|
|
||||||
/* Node-SMB/ntlm
|
|
||||||
* https://github.com/Node-SMB/ntlm
|
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
|
||||||
* copyright notice and this permission notice appear in all copies.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2012 Joshua M. Clulow <josh@sysmgr.org>
|
|
||||||
*/
|
|
||||||
notices:
|
|
||||||
- sources: ThirdPartyNotice.txt
|
|
||||||
text: "\nTHIRD-PARTY SOFTWARE NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis
|
|
||||||
Visual Studio Team Services extension (vsts-task-lib) is based on or incorporates
|
|
||||||
material from the projects listed below (Third Party IP). The original copyright
|
|
||||||
notice and the license under which Microsoft received such Third Party IP, are
|
|
||||||
set forth below. Such licenses and notices are provided for informational purposes
|
|
||||||
only. Microsoft licenses the Third Party IP to you under the licensing terms for
|
|
||||||
the Visual Studio Team Services extension. Microsoft reserves all other rights
|
|
||||||
not expressly granted under this agreement, whether by implication, estoppel or
|
|
||||||
otherwise.\n\n1.\t@types/glob (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n2.\t@types/minimatch
|
|
||||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n3.\t@types/mocha
|
|
||||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n4.\t@types/node
|
|
||||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n5.\t@types/shelljs
|
|
||||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n6.\tbalanced-match
|
|
||||||
(git://github.com/juliangruber/balanced-match.git)\n7.\tbrace-expansion (git://github.com/juliangruber/brace-expansion.git)\n8.\tbrowser-stdout
|
|
||||||
(git+ssh://git@github.com/kumavis/browser-stdout.git)\n9.\tcommander (git+https://github.com/tj/commander.js.git)\n10.\tconcat-map
|
|
||||||
(git://github.com/substack/node-concat-map.git)\n11.\tdebug (git://github.com/visionmedia/debug.git)\n12.\tdiff
|
|
||||||
(git://github.com/kpdecker/jsdiff.git)\n13.\tescape-string-regexp (git+https://github.com/sindresorhus/escape-string-regexp.git)\n14.\tfs.realpath
|
|
||||||
(git+https://github.com/isaacs/fs.realpath.git)\n15.\tglob (git://github.com/isaacs/node-glob.git)\n16.\tgraceful-readlink
|
|
||||||
(git://github.com/zhiyelee/graceful-readlink.git)\n17.\tgrowl (git://github.com/tj/node-growl.git)\n18.\thas-flag
|
|
||||||
(git+https://github.com/sindresorhus/has-flag.git)\n19.\the (git+https://github.com/mathiasbynens/he.git)\n20.\tinflight
|
|
||||||
(git+https://github.com/npm/inflight.git)\n21.\tinherits (git://github.com/isaacs/inherits.git)\n22.\tinterpret
|
|
||||||
(git://github.com/tkellen/node-interpret.git)\n23.\tjson3 (git://github.com/bestiejs/json3.git)\n24.\tlodash.create
|
|
||||||
(git+https://github.com/lodash/lodash.git)\n25.\tlodash.isarguments (git+https://github.com/lodash/lodash.git)\n26.\tlodash.isarray
|
|
||||||
(git+https://github.com/lodash/lodash.git)\n27.\tlodash.keys (git+https://github.com/lodash/lodash.git)\n28.\tlodash._baseassign
|
|
||||||
(git+https://github.com/lodash/lodash.git)\n29.\tlodash._basecopy (git+https://github.com/lodash/lodash.git)\n30.\tlodash._basecreate
|
|
||||||
(git+https://github.com/lodash/lodash.git)\n31.\tlodash._getnative (git+https://github.com/lodash/lodash.git)\n32.\tlodash._isiterateecall
|
|
||||||
(git+https://github.com/lodash/lodash.git)\n33.\tminimatch (git://github.com/isaacs/minimatch.git)\n34.\tminimist
|
|
||||||
(git://github.com/substack/minimist.git)\n35.\tmkdirp (git+https://github.com/substack/node-mkdirp.git)\n36.\tmocha
|
|
||||||
(git+https://github.com/mochajs/mocha.git)\n37.\tms (git+https://github.com/zeit/ms.git)\n38.\tonce
|
|
||||||
(git://github.com/isaacs/once.git)\n39.\tpath-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git)\n40.\tpath-parse
|
|
||||||
(git+https://github.com/jbgutierrez/path-parse.git)\n41.\trechoir (git://github.com/tkellen/node-rechoir.git)\n42.\tresolve
|
|
||||||
(git://github.com/substack/node-resolve.git)\n43.\tsemver (git://github.com/npm/node-semver.git)\n44.\tshelljs
|
|
||||||
(git://github.com/shelljs/shelljs.git)\n45.\tsupports-color (git+https://github.com/chalk/supports-color.git)\n46.\ttunnel
|
|
||||||
(git+https://github.com/koichik/node-tunnel.git)\n47.\ttypescript (git+https://github.com/Microsoft/TypeScript.git)\n48.\tunderscore
|
|
||||||
(git://github.com/jashkenas/underscore.git)\n49.\twrappy (git+https://github.com/npm/wrappy.git)\n\n\n%%
|
|
||||||
@types/glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
|
||||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
|
||||||
software and associated documentation files (the \"Software\"), to deal\n in
|
|
||||||
the Software without restriction, including without limitation the rights\n to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
|
||||||
of the Software, and to permit persons to whom the Software is\n furnished
|
|
||||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
|
||||||
and this permission notice shall be included in all\n copies or substantial
|
|
||||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
|
||||||
OF @types/glob NOTICES, INFORMATION, AND LICENSE\n\n%% @types/minimatch NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
|
||||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
|
||||||
software and associated documentation files (the \"Software\"), to deal\n in
|
|
||||||
the Software without restriction, including without limitation the rights\n to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
|
||||||
of the Software, and to permit persons to whom the Software is\n furnished
|
|
||||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
|
||||||
and this permission notice shall be included in all\n copies or substantial
|
|
||||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
|
||||||
OF @types/minimatch NOTICES, INFORMATION, AND LICENSE\n\n%% @types/mocha NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
|
||||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
|
||||||
software and associated documentation files (the \"Software\"), to deal\n in
|
|
||||||
the Software without restriction, including without limitation the rights\n to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
|
||||||
of the Software, and to permit persons to whom the Software is\n furnished
|
|
||||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
|
||||||
and this permission notice shall be included in all\n copies or substantial
|
|
||||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
|
||||||
OF @types/mocha NOTICES, INFORMATION, AND LICENSE\n\n%% @types/node NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nMIT License\n\n
|
|
||||||
\ Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
|
||||||
software and associated documentation files (the \"Software\"), to deal\n in
|
|
||||||
the Software without restriction, including without limitation the rights\n to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
|
||||||
of the Software, and to permit persons to whom the Software is\n furnished
|
|
||||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
|
||||||
and this permission notice shall be included in all\n copies or substantial
|
|
||||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
|
||||||
OF @types/node NOTICES, INFORMATION, AND LICENSE\n\n%% @types/shelljs NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
|
||||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
|
||||||
software and associated documentation files (the \"Software\"), to deal\n in
|
|
||||||
the Software without restriction, including without limitation the rights\n to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
|
||||||
of the Software, and to permit persons to whom the Software is\n furnished
|
|
||||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
|
||||||
and this permission notice shall be included in all\n copies or substantial
|
|
||||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
|
||||||
OF @types/shelljs NOTICES, INFORMATION, AND LICENSE\n\n%% balanced-match NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\n(MIT)\n\nCopyright
|
|
||||||
(c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby
|
|
||||||
granted, free of charge, to any person obtaining a copy of\nthis software and
|
|
||||||
associated documentation files (the \"Software\"), to deal in\nthe Software without
|
|
||||||
restriction, including without limitation the rights to\nuse, copy, modify, merge,
|
|
||||||
publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit
|
|
||||||
persons to whom the Software is furnished to do\nso, subject to the following
|
|
||||||
conditions:\n\nThe above copyright notice and this permission notice shall be
|
|
||||||
included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE
|
|
||||||
IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING
|
|
||||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF
|
|
||||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
||||||
OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND
|
|
||||||
OF balanced-match NOTICES, INFORMATION, AND LICENSE\n\n%% brace-expansion NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo
|
|
||||||
license text available.\n=========================================\nEND OF brace-expansion
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% browser-stdout NOTICES, INFORMATION, AND
|
|
||||||
LICENSE BEGIN HERE\n=========================================\nNo license text
|
|
||||||
available.\n=========================================\nEND OF browser-stdout NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% commander NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\n(The MIT License)\n\nCopyright
|
|
||||||
(c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted,
|
|
||||||
free of charge, to any person obtaining\na copy of this software and associated
|
|
||||||
documentation files (the\n'Software'), to deal in the Software without restriction,
|
|
||||||
including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute,
|
|
||||||
sublicense, and/or sell copies of the Software, and to\npermit persons to whom
|
|
||||||
the Software is furnished to do so, subject to\nthe following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be\nincluded in all copies
|
|
||||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS',
|
|
||||||
WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
||||||
THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF commander
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% concat-map NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nThis software is released
|
|
||||||
under the MIT license:\n\nPermission is hereby granted, free of charge, to any
|
|
||||||
person obtaining a copy of\nthis software and associated documentation files (the
|
|
||||||
\"Software\"), to deal in\nthe Software without restriction, including without
|
|
||||||
limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of\nthe Software, and to permit persons to whom the Software
|
|
||||||
is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be included in all\ncopies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF concat-map
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% debug NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright
|
|
||||||
(c) 2014 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted,
|
|
||||||
free of charge, to any person obtaining a copy of this software \nand associated
|
|
||||||
documentation files (the 'Software'), to deal in the Software without restriction,
|
|
||||||
\nincluding without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, \nand/or sell copies of the Software, and to permit persons
|
|
||||||
to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be included in all copies
|
|
||||||
or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS',
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \nLIMITED
|
|
||||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER LIABILITY, \nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE \nSOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.\n=========================================\nEND OF debug
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% diff NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nSoftware License Agreement
|
|
||||||
(BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n\nAll
|
|
||||||
rights reserved.\n\nRedistribution and use of this software in source and binary
|
|
||||||
forms, with or without modification,\nare permitted provided that the following
|
|
||||||
conditions are met:\n\n* Redistributions of source code must retain the above\n
|
|
||||||
\ copyright notice, this list of conditions and the\n following disclaimer.\n\n*
|
|
||||||
Redistributions in binary form must reproduce the above\n copyright notice, this
|
|
||||||
list of conditions and the\n following disclaimer in the documentation and/or
|
|
||||||
other\n materials provided with the distribution.\n\n* Neither the name of Kevin
|
|
||||||
Decker nor the names of its\n contributors may be used to endorse or promote
|
|
||||||
products\n derived from this software without specific prior\n written permission.\n\nTHIS
|
|
||||||
SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY
|
|
||||||
EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
||||||
EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
||||||
OF SUCH DAMAGE.\n=========================================\nEND OF diff NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% escape-string-regexp NOTICES, INFORMATION, AND
|
|
||||||
LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
|
||||||
(MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\nof this software
|
|
||||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
|
||||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
|
||||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
|
||||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
|
||||||
following conditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF escape-string-regexp NOTICES, INFORMATION, AND LICENSE\n\n%% fs.realpath NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe
|
|
||||||
ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission
|
|
||||||
to use, copy, modify, and/or distribute this software for any\npurpose with or
|
|
||||||
without fee is hereby granted, provided that the above\ncopyright notice and this
|
|
||||||
permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\"
|
|
||||||
AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING
|
|
||||||
ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
||||||
AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
|
||||||
OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
|
||||||
IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n----\n\nThis
|
|
||||||
library bundles a version of the `fs.realpath` and `fs.realpathSync`\nmethods
|
|
||||||
from Node.js v0.10 under the terms of the Node.js MIT license.\n\nNode's license
|
|
||||||
follows, also included at the header of `old.js` which contains\nthe licensed
|
|
||||||
code:\n\n Copyright Joyent, Inc. and other Node contributors.\n\n Permission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a\n copy of this software
|
|
||||||
and associated documentation files (the \"Software\"),\n to deal in the Software
|
|
||||||
without restriction, including without limitation\n the rights to use, copy,
|
|
||||||
modify, merge, publish, distribute, sublicense,\n and/or sell copies of the Software,
|
|
||||||
and to permit persons to whom the\n Software is furnished to do so, subject to
|
|
||||||
the following conditions:\n\n The above copyright notice and this permission
|
|
||||||
notice shall be included in\n all copies or substantial portions of the Software.\n\n
|
|
||||||
\ THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n
|
|
||||||
\ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS
|
|
||||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER\n DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF fs.realpath NOTICES, INFORMATION, AND LICENSE\n\n%% glob NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
|
||||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
|
||||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
|
||||||
provided that the above\ncopyright notice and this permission notice appear in
|
|
||||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
|
||||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
|
||||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
|
||||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
|
||||||
OF THIS SOFTWARE.\n=========================================\nEND OF glob NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% graceful-readlink NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
|
||||||
(c) 2015 Zhiye Li\n\nPermission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy\nof this software and associated documentation files (the \"Software\"),
|
|
||||||
to deal\nin the Software without restriction, including without limitation the
|
|
||||||
rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
|
||||||
of the Software, and to permit persons to whom the Software is\nfurnished to do
|
|
||||||
so, subject to the following conditions:\n\nThe above copyright notice and this
|
|
||||||
permission notice shall be included in all\ncopies or substantial portions of
|
|
||||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND
|
|
||||||
OF graceful-readlink NOTICES, INFORMATION, AND LICENSE\n\n%% growl NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nNo license
|
|
||||||
text available.\n=========================================\nEND OF growl NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% has-flag NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
|
||||||
(c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is
|
|
||||||
hereby granted, free of charge, to any person obtaining a copy\nof this software
|
|
||||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
|
||||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
|
||||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
|
||||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
|
||||||
following conditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF has-flag NOTICES, INFORMATION, AND LICENSE\n\n%% he NOTICES, INFORMATION, AND
|
|
||||||
LICENSE BEGIN HERE\n=========================================\nCopyright Mathias
|
|
||||||
Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge,
|
|
||||||
to any person obtaining\na copy of this software and associated documentation
|
|
||||||
files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF he NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\nThe ISC License\n\nCopyright
|
|
||||||
(c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this
|
|
||||||
software for any\npurpose with or without fee is hereby granted, provided that
|
|
||||||
the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD
|
|
||||||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR
|
|
||||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA
|
|
||||||
OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
||||||
ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
|
||||||
OF inflight NOTICES, INFORMATION, AND LICENSE\n\n%% inherits NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
|
||||||
(c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this
|
|
||||||
software for any\npurpose with or without fee is hereby granted, provided that
|
|
||||||
the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD
|
|
||||||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR
|
|
||||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA
|
|
||||||
OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION,
|
|
||||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
|
||||||
OF inherits NOTICES, INFORMATION, AND LICENSE\n\n%% interpret NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
|
||||||
2014 Tyler Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining
|
|
||||||
a copy of this software and associated documentation\nfiles (the \"Software\"),
|
|
||||||
to deal in the Software without\nrestriction, including without limitation the
|
|
||||||
rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
|
||||||
of the Software, and to permit persons to whom the\nSoftware is furnished to do
|
|
||||||
so, subject to the following\nconditions:\n\nThe above copyright notice and this
|
|
||||||
permission notice shall be\nincluded in all copies or substantial portions of
|
|
||||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS
|
|
||||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF interpret NOTICES, INFORMATION, AND LICENSE\n\n%% json3 NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
|
||||||
2012-2014 Kit Cambridge.\nhttp://kitcambridge.be/\n\nPermission is hereby granted,
|
|
||||||
free of charge, to any person obtaining a copy of\nthis software and associated
|
|
||||||
documentation files (the \"Software\"), to deal in\nthe Software without restriction,
|
|
||||||
including without limitation the rights to\nuse, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies\nof the Software, and to permit persons
|
|
||||||
to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be included in all\ncopies
|
|
||||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
||||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE\nSOFTWARE.\n=========================================\nEND OF json3 NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% lodash.create NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nCopyright 2012-2015 The
|
|
||||||
Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.create
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarguments NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright jQuery
|
|
||||||
Foundation and other contributors <https://jquery.org/>\n\nBased on Underscore.js,
|
|
||||||
copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nThis software consists of voluntary contributions
|
|
||||||
made by many\nindividuals. For exact contribution history, see the revision history\navailable
|
|
||||||
at https://github.com/lodash/lodash\n\nThe following license applies to all parts
|
|
||||||
of this software except as\ndocumented below:\n\n====\n\nPermission is hereby
|
|
||||||
granted, free of charge, to any person obtaining\na copy of this software and
|
|
||||||
associated documentation files (the\n\"Software\"), to deal in the Software without
|
|
||||||
restriction, including\nwithout limitation the rights to use, copy, modify, merge,
|
|
||||||
publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit
|
|
||||||
persons to whom the Software is furnished to do so, subject to\nthe following
|
|
||||||
conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded
|
|
||||||
in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED
|
|
||||||
\"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
||||||
LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE
|
|
||||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR
|
|
||||||
THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights
|
|
||||||
for sample code are waived via CC0. Sample\ncode is defined as all source code
|
|
||||||
displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles
|
|
||||||
located in the node_modules and vendor directories are externally\nmaintained
|
|
||||||
libraries used by this software which have their own\nlicenses; we recommend you
|
|
||||||
read them, as their terms may differ from the\nterms above.\n=========================================\nEND
|
|
||||||
OF lodash.isarguments NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarray NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nCopyright
|
|
||||||
2012-2015 The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js,
|
|
||||||
copyright 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters
|
|
||||||
& Editors <http://underscorejs.org/>\n\nPermission is hereby granted, free of
|
|
||||||
charge, to any person obtaining\na copy of this software and associated documentation
|
|
||||||
files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.isarray
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.keys NOTICES, INFORMATION, AND
|
|
||||||
LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.keys
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._baseassign NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._baseassign
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecopy NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecopy
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecreate NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecreate
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._getnative NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._getnative
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._isiterateecall NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
|
||||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
|
||||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
|
||||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
|
||||||
any person obtaining\na copy of this software and associated documentation files
|
|
||||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
|
||||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
|
||||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._isiterateecall
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% minimatch NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
|
||||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
|
||||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
|
||||||
provided that the above\ncopyright notice and this permission notice appear in
|
|
||||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
|
||||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
|
||||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
|
||||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
|
||||||
OF THIS SOFTWARE.\n=========================================\nEND OF minimatch
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% minimist NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nThis software is released
|
|
||||||
under the MIT license:\n\nPermission is hereby granted, free of charge, to any
|
|
||||||
person obtaining a copy of\nthis software and associated documentation files (the
|
|
||||||
\"Software\"), to deal in\nthe Software without restriction, including without
|
|
||||||
limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of\nthe Software, and to permit persons to whom the Software
|
|
||||||
is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright
|
|
||||||
notice and this permission notice shall be included in all\ncopies or substantial
|
|
||||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
||||||
NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF minimist NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% mkdirp NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\nCopyright 2010 James Halliday
|
|
||||||
(mail@substack.net)\n\nThis project is free software released under the MIT/X11
|
|
||||||
license:\n\nPermission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy\nof this software and associated documentation files (the \"Software\"),
|
|
||||||
to deal\nin the Software without restriction, including without limitation the
|
|
||||||
rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
|
||||||
of the Software, and to permit persons to whom the Software is\nfurnished to do
|
|
||||||
so, subject to the following conditions:\n\nThe above copyright notice and this
|
|
||||||
permission notice shall be included in\nall copies or substantial portions of
|
|
||||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF mkdirp NOTICES, INFORMATION, AND LICENSE\n\n%% mocha NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright
|
|
||||||
(c) 2011-2017 JS Foundation and contributors, https://js.foundation\n\nPermission
|
|
||||||
is hereby granted, free of charge, to any person obtaining\na copy of this software
|
|
||||||
and associated documentation files (the\n'Software'), to deal in the Software
|
|
||||||
without restriction, including\nwithout limitation the rights to use, copy, modify,
|
|
||||||
merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and
|
|
||||||
to\npermit persons to whom the Software is furnished to do so, subject to\nthe
|
|
||||||
following conditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE
|
|
||||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF mocha NOTICES, INFORMATION, AND LICENSE\n\n%% ms NOTICES, INFORMATION, AND
|
|
||||||
LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
|
||||||
(MIT)\n\nCopyright (c) 2016 Zeit, Inc.\n\nPermission is hereby granted, free of
|
|
||||||
charge, to any person obtaining a copy\nof this software and associated documentation
|
|
||||||
files (the \"Software\"), to deal\nin the Software without restriction, including
|
|
||||||
without limitation the rights\nto use, copy, modify, merge, publish, distribute,
|
|
||||||
sublicense, and/or sell\ncopies of the Software, and to permit persons to whom
|
|
||||||
the Software is\nfurnished to do so, subject to the following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be included in all\ncopies
|
|
||||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
||||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE\nSOFTWARE.\n=========================================\nEND OF ms NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe
|
|
||||||
ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission
|
|
||||||
to use, copy, modify, and/or distribute this software for any\npurpose with or
|
|
||||||
without fee is hereby granted, provided that the above\ncopyright notice and this
|
|
||||||
permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\"
|
|
||||||
AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING
|
|
||||||
ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
||||||
AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
|
||||||
OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
|
||||||
IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
|
||||||
OF once NOTICES, INFORMATION, AND LICENSE\n\n%% path-is-absolute NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
|
||||||
(MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission
|
|
||||||
is hereby granted, free of charge, to any person obtaining a copy\nof this software
|
|
||||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
|
||||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
|
||||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
|
||||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
|
||||||
following conditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF path-is-absolute NOTICES, INFORMATION, AND LICENSE\n\n%% path-parse NOTICES,
|
|
||||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo
|
|
||||||
license text available.\n=========================================\nEND OF path-parse
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% rechoir NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nCopyright (c) 2015 Tyler
|
|
||||||
Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining
|
|
||||||
a copy of this software and associated documentation\nfiles (the \"Software\"),
|
|
||||||
to deal in the Software without\nrestriction, including without limitation the
|
|
||||||
rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
|
||||||
of the Software, and to permit persons to whom the\nSoftware is furnished to do
|
|
||||||
so, subject to the following\nconditions:\n\nThe above copyright notice and this
|
|
||||||
permission notice shall be\nincluded in all copies or substantial portions of
|
|
||||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS
|
|
||||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF rechoir NOTICES, INFORMATION, AND LICENSE\n\n%% resolve NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThis software
|
|
||||||
is released under the MIT license:\n\nPermission is hereby granted, free of charge,
|
|
||||||
to any person obtaining a copy of\nthis software and associated documentation
|
|
||||||
files (the \"Software\"), to deal in\nthe Software without restriction, including
|
|
||||||
without limitation the rights to\nuse, copy, modify, merge, publish, distribute,
|
|
||||||
sublicense, and/or sell copies of\nthe Software, and to permit persons to whom
|
|
||||||
the Software is furnished to do so,\nsubject to the following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be included in all\ncopies
|
|
||||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
||||||
THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.\n=========================================\nEND OF resolve NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% semver NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\nCopyright (c) Isaac Z. Schlueter
|
|
||||||
(\"Author\")\nAll rights reserved.\n\nThe BSD License\n\nRedistribution and use
|
|
||||||
in source and binary forms, with or without\nmodification, are permitted provided
|
|
||||||
that the following conditions\nare met:\n\n1. Redistributions of source code must
|
|
||||||
retain the above copyright\n notice, this list of conditions and the following
|
|
||||||
disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n
|
|
||||||
\ notice, this list of conditions and the following disclaimer in the\n documentation
|
|
||||||
and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED
|
|
||||||
BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES,
|
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
|
|
||||||
OR CONTRIBUTORS\nBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
|
||||||
OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY,\nWHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN\nIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n=========================================\nEND
|
|
||||||
OF semver NOTICES, INFORMATION, AND LICENSE\n\n%% shelljs NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
|
||||||
2012, Artur Adib <arturadib@gmail.com>\nAll rights reserved.\n\nYou may use this
|
|
||||||
project under the terms of the New BSD license as follows:\n\nRedistribution and
|
|
||||||
use in source and binary forms, with or without\nmodification, are permitted provided
|
|
||||||
that the following conditions are met:\n * Redistributions of source code must
|
|
||||||
retain the above copyright\n notice, this list of conditions and the following
|
|
||||||
disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n
|
|
||||||
\ notice, this list of conditions and the following disclaimer in the\n documentation
|
|
||||||
and/or other materials provided with the distribution.\n * Neither the name
|
|
||||||
of Artur Adib nor the\n names of the contributors may be used to endorse
|
|
||||||
or promote products\n derived from this software without specific prior written
|
|
||||||
permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
\"AS IS\" \nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, THE \nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
\nARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY\nDIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF \nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
||||||
OF SUCH DAMAGE.\n=========================================\nEND OF shelljs NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% supports-color NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
|
||||||
(c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is
|
|
||||||
hereby granted, free of charge, to any person obtaining a copy\nof this software
|
|
||||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
|
||||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
|
||||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
|
||||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
|
||||||
following conditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF supports-color NOTICES, INFORMATION, AND LICENSE\n\n%% tunnel NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
|
||||||
(MIT)\n\nCopyright (c) 2012 Koichi Kobayashi\n\nPermission is hereby granted,
|
|
||||||
free of charge, to any person obtaining a copy\nof this software and associated
|
|
||||||
documentation files (the \"Software\"), to deal\nin the Software without restriction,
|
|
||||||
including without limitation the rights\nto use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons
|
|
||||||
to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe
|
|
||||||
above copyright notice and this permission notice shall be included in\nall copies
|
|
||||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
||||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
||||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN\nTHE SOFTWARE.\n=========================================\nEND OF tunnel NOTICES,
|
|
||||||
INFORMATION, AND LICENSE\n\n%% typescript NOTICES, INFORMATION, AND LICENSE BEGIN
|
|
||||||
HERE\n=========================================\nApache License\n\nVersion 2.0,
|
|
||||||
January 2004\n\nhttp://www.apache.org/licenses/ \n\nTERMS AND CONDITIONS FOR USE,
|
|
||||||
REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the
|
|
||||||
terms and conditions for use, reproduction, and distribution as defined by Sections
|
|
||||||
1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or
|
|
||||||
entity authorized by the copyright owner that is granting the License.\n\n\"Legal
|
|
||||||
Entity\" shall mean the union of the acting entity and all other entities that
|
|
||||||
control, are controlled by, or are under common control with that entity. For
|
|
||||||
the purposes of this definition, \"control\" means (i) the power, direct or indirect,
|
|
||||||
to cause the direction or management of such entity, whether by contract or otherwise,
|
|
||||||
or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or
|
|
||||||
(iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean
|
|
||||||
an individual or Legal Entity exercising permissions granted by this License.\n\n\"Source\"
|
|
||||||
form shall mean the preferred form for making modifications, including but not
|
|
||||||
limited to software source code, documentation source, and configuration files.\n\n\"Object\"
|
|
||||||
form shall mean any form resulting from mechanical transformation or translation
|
|
||||||
of a Source form, including but not limited to compiled object code, generated
|
|
||||||
documentation, and conversions to other media types.\n\n\"Work\" shall mean the
|
|
||||||
work of authorship, whether in Source or Object form, made available under the
|
|
||||||
License, as indicated by a copyright notice that is included in or attached to
|
|
||||||
the work (an example is provided in the Appendix below).\n\n\"Derivative Works\"
|
|
||||||
shall mean any work, whether in Source or Object form, that is based on (or derived
|
|
||||||
from) the Work and for which the editorial revisions, annotations, elaborations,
|
|
||||||
or other modifications represent, as a whole, an original work of authorship.
|
|
||||||
For the purposes of this License, Derivative Works shall not include works that
|
|
||||||
remain separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work
|
|
||||||
of authorship, including the original version of the Work and any modifications
|
|
||||||
or additions to that Work or Derivative Works thereof, that is intentionally submitted
|
|
||||||
to Licensor for inclusion in the Work by the copyright owner or by an individual
|
|
||||||
or Legal Entity authorized to submit on behalf of the copyright owner. For the
|
|
||||||
purposes of this definition, \"submitted\" means any form of electronic, verbal,
|
|
||||||
or written communication sent to the Licensor or its representatives, including
|
|
||||||
but not limited to communication on electronic mailing lists, source code control
|
|
||||||
systems, and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any
|
|
||||||
individual or Legal Entity on behalf of whom a Contribution has been received
|
|
||||||
by Licensor and subsequently incorporated within the Work.\n\n2. Grant of Copyright
|
|
||||||
License. Subject to the terms and conditions of this License, each Contributor
|
|
||||||
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of, publicly
|
|
||||||
display, publicly perform, sublicense, and distribute the Work and such Derivative
|
|
||||||
Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the
|
|
||||||
terms and conditions of this License, each Contributor hereby grants to You a
|
|
||||||
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except
|
|
||||||
as stated in this section) patent license to make, have made, use, offer to sell,
|
|
||||||
sell, import, and otherwise transfer the Work, where such license applies only
|
|
||||||
to those patent claims licensable by such Contributor that are necessarily infringed
|
|
||||||
by their Contribution(s) alone or by combination of their Contribution(s) with
|
|
||||||
the Work to which such Contribution(s) was submitted. If You institute patent
|
|
||||||
litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
|
|
||||||
alleging that the Work or a Contribution incorporated within the Work constitutes
|
|
||||||
direct or contributory patent infringement, then any patent licenses granted to
|
|
||||||
You under this License for that Work shall terminate as of the date such litigation
|
|
||||||
is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without modifications,
|
|
||||||
and in Source or Object form, provided that You meet the following conditions:\n\nYou
|
|
||||||
must give any other recipients of the Work or Derivative Works a copy of this
|
|
||||||
License; and\n\nYou must cause any modified files to carry prominent notices stating
|
|
||||||
that You changed the files; and\n\nYou must retain, in the Source form of any
|
|
||||||
Derivative Works that You distribute, all copyright, patent, trademark, and attribution
|
|
||||||
notices from the Source form of the Work, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works; and\n\nIf the Work includes a \"NOTICE\"
|
|
||||||
text file as part of its distribution, then any Derivative Works that You distribute
|
|
||||||
must include a readable copy of the attribution notices contained within such
|
|
||||||
NOTICE file, excluding those notices that do not pertain to any part of the Derivative
|
|
||||||
Works, in at least one of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or documentation, if provided
|
|
||||||
along with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and do not modify the License.
|
|
||||||
You may add Your own attribution notices within Derivative Works that You distribute,
|
|
||||||
alongside or as an addendum to the NOTICE text from the Work, provided that such
|
|
||||||
additional attribution notices cannot be construed as modifying the License. You
|
|
||||||
may add Your own copyright statement to Your modifications and may provide additional
|
|
||||||
or different license terms and conditions for use, reproduction, or distribution
|
|
||||||
of Your modifications, or for any such Derivative Works as a whole, provided Your
|
|
||||||
use, reproduction, and distribution of the Work otherwise complies with the conditions
|
|
||||||
stated in this License.\n\n5. Submission of Contributions. Unless You explicitly
|
|
||||||
state otherwise, any Contribution intentionally submitted for inclusion in the
|
|
||||||
Work by You to the Licensor shall be under the terms and conditions of this License,
|
|
||||||
without any additional terms or conditions. Notwithstanding the above, nothing
|
|
||||||
herein shall supersede or modify the terms of any separate license agreement you
|
|
||||||
may have executed with Licensor regarding such Contributions.\n\n6. Trademarks.
|
|
||||||
This License does not grant permission to use the trade names, trademarks, service
|
|
||||||
marks, or product names of the Licensor, except as required for reasonable and
|
|
||||||
customary use in describing the origin of the Work and reproducing the content
|
|
||||||
of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable
|
|
||||||
law or agreed to in writing, Licensor provides the Work (and each Contributor
|
|
||||||
provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
|
||||||
OF ANY KIND, either express or implied, including, without limitation, any warranties
|
|
||||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. You are solely responsible for determining the appropriateness of using
|
|
||||||
or redistributing the Work and assume any risks associated with Your exercise
|
|
||||||
of permissions under this License.\n\n8. Limitation of Liability. In no event
|
|
||||||
and under no legal theory, whether in tort (including negligence), contract, or
|
|
||||||
otherwise, unless required by applicable law (such as deliberate and grossly negligent
|
|
||||||
acts) or agreed to in writing, shall any Contributor be liable to You for damages,
|
|
||||||
including any direct, indirect, special, incidental, or consequential damages
|
|
||||||
of any character arising as a result of this License or out of the use or inability
|
|
||||||
to use the Work (including but not limited to damages for loss of goodwill, work
|
|
||||||
stoppage, computer failure or malfunction, or any and all other commercial damages
|
|
||||||
or losses), even if such Contributor has been advised of the possibility of such
|
|
||||||
damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer, and charge a fee
|
|
||||||
for, acceptance of support, warranty, indemnity, or other liability obligations
|
|
||||||
and/or rights consistent with this License. However, in accepting such obligations,
|
|
||||||
You may act only on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify, defend, and hold
|
|
||||||
each Contributor harmless for any liability incurred by, or claims asserted against,
|
|
||||||
such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND
|
|
||||||
OF TERMS AND CONDITIONS\n=========================================\nEND OF typescript
|
|
||||||
NOTICES, INFORMATION, AND LICENSE\n\n%% underscore NOTICES, INFORMATION, AND LICENSE
|
|
||||||
BEGIN HERE\n=========================================\nCopyright (c) 2009-2015
|
|
||||||
Jeremy Ashkenas, DocumentCloud and Investigative\nReporters & Editors\n\nPermission
|
|
||||||
is hereby granted, free of charge, to any person\nobtaining a copy of this software
|
|
||||||
and associated documentation\nfiles (the \"Software\"), to deal in the Software
|
|
||||||
without\nrestriction, including without limitation the rights to use,\ncopy, modify,
|
|
||||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
|
||||||
to permit persons to whom the\nSoftware is furnished to do so, subject to the
|
|
||||||
following\nconditions:\n\nThe above copyright notice and this permission notice
|
|
||||||
shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE
|
|
||||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS
|
|
||||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF
|
|
||||||
CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
||||||
OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
|
||||||
OF underscore NOTICES, INFORMATION, AND LICENSE\n\n%% wrappy NOTICES, INFORMATION,
|
|
||||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
|
||||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
|
||||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
|
||||||
provided that the above\ncopyright notice and this permission notice appear in
|
|
||||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
|
||||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
|
||||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
|
||||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
|
||||||
OF THIS SOFTWARE.\n=========================================\nEND OF wrappy NOTICES,
|
|
||||||
INFORMATION, AND LICENSE"
|
|
|
@ -1,33 +0,0 @@
|
||||||
---
|
|
||||||
name: underscore
|
|
||||||
version: 1.13.1
|
|
||||||
type: npm
|
|
||||||
summary: JavaScript's functional programming helper library.
|
|
||||||
homepage: https://underscorejs.org
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
Copyright (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use,
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: universal-user-agent
|
|
||||||
version: 6.0.0
|
|
||||||
type: npm
|
|
||||||
summary: Get a user agent string in both browser and node
|
|
||||||
homepage:
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
# [ISC License](https://spdx.org/licenses/ISC)
|
|
||||||
|
|
||||||
Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: "[ISC](LICENSE.md)"
|
|
||||||
notices: []
|
|
|
@ -1,39 +0,0 @@
|
||||||
---
|
|
||||||
name: uuid
|
|
||||||
version: 3.3.3
|
|
||||||
type: npm
|
|
||||||
summary: RFC4122 (v1, v4, and v5) UUIDs
|
|
||||||
homepage: https://github.com/kelektiv/node-uuid#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2010-2016 Robert Kieffer and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices:
|
|
||||||
- sources: AUTHORS
|
|
||||||
text: |-
|
|
||||||
Robert Kieffer <robert@broofa.com>
|
|
||||||
Christoph Tavan <dev@tavan.de>
|
|
||||||
AJ ONeal <coolaj86@gmail.com>
|
|
||||||
Vincent Voyer <vincent@zeroload.net>
|
|
||||||
Roman Shtylman <shtylman@gmail.com>
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: uuid
|
|
||||||
version: 8.3.2
|
|
||||||
type: npm
|
|
||||||
summary: RFC4122 (v1, v4, and v5) UUIDs
|
|
||||||
homepage: https://github.com/uuidjs/uuid#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2010-2020 Robert Kieffer and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,23 +0,0 @@
|
||||||
---
|
|
||||||
name: webidl-conversions
|
|
||||||
version: 3.0.1
|
|
||||||
type: npm
|
|
||||||
summary: Implements the WebIDL algorithms for converting to and from JavaScript values
|
|
||||||
homepage: https://github.com/jsdom/webidl-conversions#readme
|
|
||||||
license: bsd-2-clause
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
# The BSD 2-Clause License
|
|
||||||
|
|
||||||
Copyright (c) 2014, Domenic Denicola
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
notices: []
|
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
name: whatwg-url
|
|
||||||
version: 5.0.0
|
|
||||||
type: npm
|
|
||||||
summary: An implementation of the WHATWG URL Standard's URL API and parsing machinery
|
|
||||||
homepage: https://github.com/jsdom/whatwg-url#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.txt
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2015–2016 Sebastian Mayr
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
notices: []
|
|
|
@ -1,26 +0,0 @@
|
||||||
---
|
|
||||||
name: wrappy
|
|
||||||
version: 1.0.2
|
|
||||||
type: npm
|
|
||||||
summary: Callback wrapping utility
|
|
||||||
homepage: https://github.com/npm/wrappy
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
notices: []
|
|
56
CHANGELOG.md
56
CHANGELOG.md
|
@ -1,64 +1,10 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## v4.0.0
|
|
||||||
- [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
|
|
||||||
- [Update to node20](https://github.com/actions/checkout/pull/1436)
|
|
||||||
|
|
||||||
## v3.6.0
|
|
||||||
- [Fix: Mark test scripts with Bash'isms to be run via Bash](https://github.com/actions/checkout/pull/1377)
|
|
||||||
- [Add option to fetch tags even if fetch-depth > 0](https://github.com/actions/checkout/pull/579)
|
|
||||||
|
|
||||||
## v3.5.3
|
|
||||||
- [Fix: Checkout fail in self-hosted runners when faulty submodule are checked-in](https://github.com/actions/checkout/pull/1196)
|
|
||||||
- [Fix typos found by codespell](https://github.com/actions/checkout/pull/1287)
|
|
||||||
- [Add support for sparse checkouts](https://github.com/actions/checkout/pull/1369)
|
|
||||||
|
|
||||||
## v3.5.2
|
|
||||||
- [Fix api endpoint for GHES](https://github.com/actions/checkout/pull/1289)
|
|
||||||
|
|
||||||
## v3.5.1
|
|
||||||
- [Fix slow checkout on Windows](https://github.com/actions/checkout/pull/1246)
|
|
||||||
|
|
||||||
## v3.5.0
|
|
||||||
* [Add new public key for known_hosts](https://github.com/actions/checkout/pull/1237)
|
|
||||||
|
|
||||||
## v3.4.0
|
|
||||||
- [Upgrade codeql actions to v2](https://github.com/actions/checkout/pull/1209)
|
|
||||||
- [Upgrade dependencies](https://github.com/actions/checkout/pull/1210)
|
|
||||||
- [Upgrade @actions/io](https://github.com/actions/checkout/pull/1225)
|
|
||||||
|
|
||||||
## v3.3.0
|
|
||||||
- [Implement branch list using callbacks from exec function](https://github.com/actions/checkout/pull/1045)
|
|
||||||
- [Add in explicit reference to private checkout options](https://github.com/actions/checkout/pull/1050)
|
|
||||||
- [Fix comment typos (that got added in #770)](https://github.com/actions/checkout/pull/1057)
|
|
||||||
|
|
||||||
## v3.2.0
|
|
||||||
- [Add GitHub Action to perform release](https://github.com/actions/checkout/pull/942)
|
|
||||||
- [Fix status badge](https://github.com/actions/checkout/pull/967)
|
|
||||||
- [Replace datadog/squid with ubuntu/squid Docker image](https://github.com/actions/checkout/pull/1002)
|
|
||||||
- [Wrap pipeline commands for submoduleForeach in quotes](https://github.com/actions/checkout/pull/964)
|
|
||||||
- [Update @actions/io to 1.1.2](https://github.com/actions/checkout/pull/1029)
|
|
||||||
- [Upgrading version to 3.2.0](https://github.com/actions/checkout/pull/1039)
|
|
||||||
|
|
||||||
## v3.1.0
|
|
||||||
- [Use @actions/core `saveState` and `getState`](https://github.com/actions/checkout/pull/939)
|
|
||||||
- [Add `github-server-url` input](https://github.com/actions/checkout/pull/922)
|
|
||||||
|
|
||||||
## v3.0.2
|
|
||||||
- [Add input `set-safe-directory`](https://github.com/actions/checkout/pull/770)
|
|
||||||
|
|
||||||
## v3.0.1
|
|
||||||
- [Fixed an issue where checkout failed to run in container jobs due to the new git setting `safe.directory`](https://github.com/actions/checkout/pull/762)
|
|
||||||
- [Bumped various npm package versions](https://github.com/actions/checkout/pull/744)
|
|
||||||
|
|
||||||
## v3.0.0
|
|
||||||
|
|
||||||
- [Update to node 16](https://github.com/actions/checkout/pull/689)
|
|
||||||
|
|
||||||
## v2.3.1
|
## v2.3.1
|
||||||
|
|
||||||
- [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284)
|
- [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284)
|
||||||
|
|
||||||
|
|
||||||
## v2.3.0
|
## v2.3.0
|
||||||
|
|
||||||
- [Fallback to the default branch](https://github.com/actions/checkout/pull/278)
|
- [Fallback to the default branch](https://github.com/actions/checkout/pull/278)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
* @actions/actions-runtime
|
|
|
@ -1,28 +0,0 @@
|
||||||
# Contributing
|
|
||||||
|
|
||||||
## Submitting a pull request
|
|
||||||
|
|
||||||
1. Fork and clone the repository
|
|
||||||
1. Configure and install the dependencies: `npm install`
|
|
||||||
1. Create a new branch: `git checkout -b my-branch-name`
|
|
||||||
1. Make your change, add tests, and make sure the tests still pass: `npm run test`
|
|
||||||
1. Make sure your code is correctly formatted: `npm run format`
|
|
||||||
1. Update `dist/index.js` using `npm run build`. This creates a single javascript file that is used as an entrypoint for the action
|
|
||||||
1. Push to your fork and submit a pull request
|
|
||||||
1. Pat yourself on the back and wait for your pull request to be reviewed and merged
|
|
||||||
|
|
||||||
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
|
|
||||||
|
|
||||||
- Write tests.
|
|
||||||
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
|
||||||
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
|
|
||||||
- [GitHub Help](https://help.github.com)
|
|
||||||
- [Writing good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
|
||||||
|
|
||||||
Thanks! :heart: :heart: :heart:
|
|
||||||
|
|
||||||
GitHub Actions Team :octocat:
|
|
132
README.md
132
README.md
|
@ -1,6 +1,8 @@
|
||||||
[![Build and Test](https://github.com/actions/checkout/actions/workflows/test.yml/badge.svg)](https://github.com/actions/checkout/actions/workflows/test.yml)
|
<p align="center">
|
||||||
|
<a href="https://github.com/actions/checkout"><img alt="GitHub Actions status" src="https://github.com/actions/checkout/workflows/test-local/badge.svg"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
# Checkout V4
|
# Checkout V2
|
||||||
|
|
||||||
This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it.
|
This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it.
|
||||||
|
|
||||||
|
@ -12,15 +14,27 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
|
|
||||||
# What's new
|
# What's new
|
||||||
|
|
||||||
- Updated default runtime to node20
|
- Improved performance
|
||||||
- This requires a minimum Actions Runner version of [v2.308.0](https://github.com/actions/runner/releases/tag/v2.308.0).
|
- Fetches only a single commit by default
|
||||||
- Added support for fetching without the `--progress` option
|
- Script authenticated git commands
|
||||||
|
- Auth token persisted in the local git config
|
||||||
|
- Supports SSH
|
||||||
|
- Creates a local branch
|
||||||
|
- No longer detached HEAD when checking out a branch
|
||||||
|
- Improved layout
|
||||||
|
- The input `path` is always relative to $GITHUB_WORKSPACE
|
||||||
|
- Aligns better with container actions, where $GITHUB_WORKSPACE gets mapped in
|
||||||
|
- Fallback to REST API download
|
||||||
|
- When Git 2.18 or higher is not in the PATH, the REST API will be used to download the files
|
||||||
|
- When using a job container, the container's PATH is used
|
||||||
|
|
||||||
|
Refer [here](https://github.com/actions/checkout/blob/v1/README.md) for previous versions.
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
<!-- start usage -->
|
<!-- start usage -->
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
# Repository name with owner. For example, actions/checkout
|
# Repository name with owner. For example, actions/checkout
|
||||||
# Default: ${{ github.repository }}
|
# Default: ${{ github.repository }}
|
||||||
|
@ -75,27 +89,10 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
# Default: true
|
# Default: true
|
||||||
clean: ''
|
clean: ''
|
||||||
|
|
||||||
# Do a sparse checkout on given patterns. Each pattern should be separated with
|
|
||||||
# new lines
|
|
||||||
# Default: null
|
|
||||||
sparse-checkout: ''
|
|
||||||
|
|
||||||
# Specifies whether to use cone-mode when doing a sparse checkout.
|
|
||||||
# Default: true
|
|
||||||
sparse-checkout-cone-mode: ''
|
|
||||||
|
|
||||||
# Number of commits to fetch. 0 indicates all history for all branches and tags.
|
# Number of commits to fetch. 0 indicates all history for all branches and tags.
|
||||||
# Default: 1
|
# Default: 1
|
||||||
fetch-depth: ''
|
fetch-depth: ''
|
||||||
|
|
||||||
# Whether to fetch tags, even if fetch-depth > 0.
|
|
||||||
# Default: false
|
|
||||||
fetch-tags: ''
|
|
||||||
|
|
||||||
# Whether to show progress status output when fetching.
|
|
||||||
# Default: true
|
|
||||||
show-progress: ''
|
|
||||||
|
|
||||||
# Whether to download Git-LFS files
|
# Whether to download Git-LFS files
|
||||||
# Default: false
|
# Default: false
|
||||||
lfs: ''
|
lfs: ''
|
||||||
|
@ -108,25 +105,11 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
#
|
#
|
||||||
# Default: false
|
# Default: false
|
||||||
submodules: ''
|
submodules: ''
|
||||||
|
|
||||||
# Add repository path as safe.directory for Git global config by running `git
|
|
||||||
# config --global --add safe.directory <path>`
|
|
||||||
# Default: true
|
|
||||||
set-safe-directory: ''
|
|
||||||
|
|
||||||
# The base URL for the GitHub instance that you are trying to clone from, will use
|
|
||||||
# environment defaults to fetch from the same instance that the workflow is
|
|
||||||
# running from unless specified. Example URLs are https://github.com or
|
|
||||||
# https://my-ghes-server.example.com
|
|
||||||
github-server-url: ''
|
|
||||||
```
|
```
|
||||||
<!-- end usage -->
|
<!-- end usage -->
|
||||||
|
|
||||||
# Scenarios
|
# Scenarios
|
||||||
|
|
||||||
- [Fetch only the root files](#Fetch-only-the-root-files)
|
|
||||||
- [Fetch only the root files and `.github` and `src` folder](#Fetch-only-the-root-files-and-github-and-src-folder)
|
|
||||||
- [Fetch only a single file](#Fetch-only-a-single-file)
|
|
||||||
- [Fetch all history for all tags and branches](#Fetch-all-history-for-all-tags-and-branches)
|
- [Fetch all history for all tags and branches](#Fetch-all-history-for-all-tags-and-branches)
|
||||||
- [Checkout a different branch](#Checkout-a-different-branch)
|
- [Checkout a different branch](#Checkout-a-different-branch)
|
||||||
- [Checkout HEAD^](#Checkout-HEAD)
|
- [Checkout HEAD^](#Checkout-HEAD)
|
||||||
|
@ -135,40 +118,11 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
- [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
- [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
||||||
- [Checkout pull request HEAD commit instead of merge commit](#Checkout-pull-request-HEAD-commit-instead-of-merge-commit)
|
- [Checkout pull request HEAD commit instead of merge commit](#Checkout-pull-request-HEAD-commit-instead-of-merge-commit)
|
||||||
- [Checkout pull request on closed event](#Checkout-pull-request-on-closed-event)
|
- [Checkout pull request on closed event](#Checkout-pull-request-on-closed-event)
|
||||||
- [Push a commit using the built-in token](#Push-a-commit-using-the-built-in-token)
|
|
||||||
|
|
||||||
## Fetch only the root files
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: .
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fetch only the root files and `.github` and `src` folder
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: |
|
|
||||||
.github
|
|
||||||
src
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fetch only a single file
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
sparse-checkout: |
|
|
||||||
README.md
|
|
||||||
sparse-checkout-cone-mode: false
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fetch all history for all tags and branches
|
## Fetch all history for all tags and branches
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
```
|
```
|
||||||
|
@ -176,7 +130,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
## Checkout a different branch
|
## Checkout a different branch
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: my-branch
|
ref: my-branch
|
||||||
```
|
```
|
||||||
|
@ -184,7 +138,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
## Checkout HEAD^
|
## Checkout HEAD^
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
- run: git checkout HEAD^
|
- run: git checkout HEAD^
|
||||||
|
@ -194,45 +148,43 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
path: main
|
path: main
|
||||||
|
|
||||||
- name: Checkout tools repo
|
- name: Checkout tools repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
repository: my-org/my-tools
|
repository: my-org/my-tools
|
||||||
path: my-tools
|
path: my-tools
|
||||||
```
|
```
|
||||||
> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
|
||||||
|
|
||||||
## Checkout multiple repos (nested)
|
## Checkout multiple repos (nested)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Checkout tools repo
|
- name: Checkout tools repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
repository: my-org/my-tools
|
repository: my-org/my-tools
|
||||||
path: my-tools
|
path: my-tools
|
||||||
```
|
```
|
||||||
> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
|
||||||
|
|
||||||
## Checkout multiple repos (private)
|
## Checkout multiple repos (private)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
path: main
|
path: main
|
||||||
|
|
||||||
- name: Checkout private tools
|
- name: Checkout private tools
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
repository: my-org/my-private-tools
|
repository: my-org/my-private-tools
|
||||||
token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT
|
token: ${{ secrets.GitHub_PAT }} # `GitHub_PAT` is a secret that contains your PAT
|
||||||
path: my-tools
|
path: my-tools
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -242,7 +194,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
## Checkout pull request HEAD commit instead of merge commit
|
## Checkout pull request HEAD commit instead of merge commit
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
```
|
```
|
||||||
|
@ -252,31 +204,13 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
|
||||||
```yaml
|
```yaml
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [main]
|
branches: [master]
|
||||||
types: [opened, synchronize, closed]
|
types: [opened, synchronize, closed]
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
```
|
|
||||||
|
|
||||||
## Push a commit using the built-in token
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
on: push
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- run: |
|
|
||||||
date > generated.txt
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
git add .
|
|
||||||
git commit -m "generated"
|
|
||||||
git push
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
|
@ -20,7 +20,6 @@ let tempHomedir: string
|
||||||
let git: IGitCommandManager & {env: {[key: string]: string}}
|
let git: IGitCommandManager & {env: {[key: string]: string}}
|
||||||
let settings: IGitSourceSettings
|
let settings: IGitSourceSettings
|
||||||
let sshPath: string
|
let sshPath: string
|
||||||
let githubServerUrl: string
|
|
||||||
|
|
||||||
describe('git-auth-helper tests', () => {
|
describe('git-auth-helper tests', () => {
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
|
@ -68,18 +67,11 @@ describe('git-auth-helper tests', () => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
async function testAuthHeader(
|
const configureAuth_configuresAuthHeader =
|
||||||
testName: string,
|
'configureAuth configures auth header'
|
||||||
serverUrl: string | undefined = undefined
|
it(configureAuth_configuresAuthHeader, async () => {
|
||||||
) {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
let expectedServerUrl = 'https://github.com'
|
await setup(configureAuth_configuresAuthHeader)
|
||||||
if (serverUrl) {
|
|
||||||
githubServerUrl = serverUrl
|
|
||||||
expectedServerUrl = githubServerUrl
|
|
||||||
}
|
|
||||||
|
|
||||||
await setup(testName)
|
|
||||||
expect(settings.authToken).toBeTruthy() // sanity check
|
expect(settings.authToken).toBeTruthy() // sanity check
|
||||||
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
||||||
|
|
||||||
|
@ -96,33 +88,9 @@ describe('git-auth-helper tests', () => {
|
||||||
).toString('base64')
|
).toString('base64')
|
||||||
expect(
|
expect(
|
||||||
configContent.indexOf(
|
configContent.indexOf(
|
||||||
`http.${expectedServerUrl}/.extraheader AUTHORIZATION: basic ${basicCredential}`
|
`http.https://github.com/.extraheader AUTHORIZATION: basic ${basicCredential}`
|
||||||
)
|
)
|
||||||
).toBeGreaterThanOrEqual(0)
|
).toBeGreaterThanOrEqual(0)
|
||||||
}
|
|
||||||
|
|
||||||
const configureAuth_configuresAuthHeader =
|
|
||||||
'configureAuth configures auth header'
|
|
||||||
it(configureAuth_configuresAuthHeader, async () => {
|
|
||||||
await testAuthHeader(configureAuth_configuresAuthHeader)
|
|
||||||
})
|
|
||||||
|
|
||||||
const configureAuth_AcceptsGitHubServerUrl =
|
|
||||||
'inject https://my-ghes-server.com as github server url'
|
|
||||||
it(configureAuth_AcceptsGitHubServerUrl, async () => {
|
|
||||||
await testAuthHeader(
|
|
||||||
configureAuth_AcceptsGitHubServerUrl,
|
|
||||||
'https://my-ghes-server.com'
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
const configureAuth_AcceptsGitHubServerUrlSetToGHEC =
|
|
||||||
'inject https://github.com as github server url'
|
|
||||||
it(configureAuth_AcceptsGitHubServerUrlSetToGHEC, async () => {
|
|
||||||
await testAuthHeader(
|
|
||||||
configureAuth_AcceptsGitHubServerUrl,
|
|
||||||
'https://github.com'
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse =
|
const configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse =
|
||||||
|
@ -449,7 +417,7 @@ describe('git-auth-helper tests', () => {
|
||||||
`Did not expect file to exist: '${globalGitConfigPath}'`
|
`Did not expect file to exist: '${globalGitConfigPath}'`
|
||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,17 +518,12 @@ describe('git-auth-helper tests', () => {
|
||||||
await authHelper.configureSubmoduleAuth()
|
await authHelper.configureSubmoduleAuth()
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(mockSubmoduleForeach).toHaveBeenCalledTimes(4)
|
expect(mockSubmoduleForeach).toHaveBeenCalledTimes(3)
|
||||||
expect(mockSubmoduleForeach.mock.calls[0][0]).toMatch(
|
expect(mockSubmoduleForeach.mock.calls[0][0]).toMatch(
|
||||||
/unset-all.*insteadOf/
|
/unset-all.*insteadOf/
|
||||||
)
|
)
|
||||||
expect(mockSubmoduleForeach.mock.calls[1][0]).toMatch(/http.*extraheader/)
|
expect(mockSubmoduleForeach.mock.calls[1][0]).toMatch(/http.*extraheader/)
|
||||||
expect(mockSubmoduleForeach.mock.calls[2][0]).toMatch(
|
expect(mockSubmoduleForeach.mock.calls[2][0]).toMatch(/url.*insteadOf/)
|
||||||
/url.*insteadOf.*git@github.com:/
|
|
||||||
)
|
|
||||||
expect(mockSubmoduleForeach.mock.calls[3][0]).toMatch(
|
|
||||||
/url.*insteadOf.*org-123456@github.com:/
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -638,7 +601,7 @@ describe('git-auth-helper tests', () => {
|
||||||
await fs.promises.stat(actualKeyPath)
|
await fs.promises.stat(actualKeyPath)
|
||||||
throw new Error('SSH key should have been deleted')
|
throw new Error('SSH key should have been deleted')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -648,7 +611,7 @@ describe('git-auth-helper tests', () => {
|
||||||
await fs.promises.stat(actualKnownHostsPath)
|
await fs.promises.stat(actualKnownHostsPath)
|
||||||
throw new Error('SSH known hosts should have been deleted')
|
throw new Error('SSH known hosts should have been deleted')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -675,11 +638,10 @@ describe('git-auth-helper tests', () => {
|
||||||
expect(gitConfigContent.indexOf('http.')).toBeLessThan(0)
|
expect(gitConfigContent.indexOf('http.')).toBeLessThan(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
const removeGlobalConfig_removesOverride =
|
const removeGlobalAuth_removesOverride = 'removeGlobalAuth removes override'
|
||||||
'removeGlobalConfig removes override'
|
it(removeGlobalAuth_removesOverride, async () => {
|
||||||
it(removeGlobalConfig_removesOverride, async () => {
|
|
||||||
// Arrange
|
// Arrange
|
||||||
await setup(removeGlobalConfig_removesOverride)
|
await setup(removeGlobalAuth_removesOverride)
|
||||||
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
||||||
await authHelper.configureAuth()
|
await authHelper.configureAuth()
|
||||||
await authHelper.configureGlobalAuth()
|
await authHelper.configureGlobalAuth()
|
||||||
|
@ -688,7 +650,7 @@ describe('git-auth-helper tests', () => {
|
||||||
await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig'))
|
await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig'))
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
await authHelper.removeGlobalConfig()
|
await authHelper.removeGlobalAuth()
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(git.env['HOME']).toBeUndefined()
|
expect(git.env['HOME']).toBeUndefined()
|
||||||
|
@ -696,7 +658,7 @@ describe('git-auth-helper tests', () => {
|
||||||
await fs.promises.stat(homeOverride)
|
await fs.promises.stat(homeOverride)
|
||||||
throw new Error(`Should have been deleted '${homeOverride}'`)
|
throw new Error(`Should have been deleted '${homeOverride}'`)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -727,8 +689,6 @@ async function setup(testName: string): Promise<void> {
|
||||||
branchDelete: jest.fn(),
|
branchDelete: jest.fn(),
|
||||||
branchExists: jest.fn(),
|
branchExists: jest.fn(),
|
||||||
branchList: jest.fn(),
|
branchList: jest.fn(),
|
||||||
sparseCheckout: jest.fn(),
|
|
||||||
sparseCheckoutNonConeMode: jest.fn(),
|
|
||||||
checkout: jest.fn(),
|
checkout: jest.fn(),
|
||||||
checkoutDetach: jest.fn(),
|
checkoutDetach: jest.fn(),
|
||||||
config: jest.fn(
|
config: jest.fn(
|
||||||
|
@ -772,9 +732,6 @@ async function setup(testName: string): Promise<void> {
|
||||||
return ''
|
return ''
|
||||||
}),
|
}),
|
||||||
submoduleSync: jest.fn(),
|
submoduleSync: jest.fn(),
|
||||||
submoduleStatus: jest.fn(async () => {
|
|
||||||
return true
|
|
||||||
}),
|
|
||||||
submoduleUpdate: jest.fn(),
|
submoduleUpdate: jest.fn(),
|
||||||
tagExists: jest.fn(),
|
tagExists: jest.fn(),
|
||||||
tryClean: jest.fn(),
|
tryClean: jest.fn(),
|
||||||
|
@ -802,25 +759,18 @@ async function setup(testName: string): Promise<void> {
|
||||||
authToken: 'some auth token',
|
authToken: 'some auth token',
|
||||||
clean: true,
|
clean: true,
|
||||||
commit: '',
|
commit: '',
|
||||||
sparseCheckout: [],
|
|
||||||
sparseCheckoutConeMode: true,
|
|
||||||
fetchDepth: 1,
|
fetchDepth: 1,
|
||||||
fetchTags: false,
|
|
||||||
showProgress: true,
|
|
||||||
lfs: false,
|
lfs: false,
|
||||||
submodules: false,
|
submodules: false,
|
||||||
nestedSubmodules: false,
|
nestedSubmodules: false,
|
||||||
persistCredentials: true,
|
persistCredentials: true,
|
||||||
ref: 'refs/heads/main',
|
ref: 'refs/heads/master',
|
||||||
repositoryName: 'my-repo',
|
repositoryName: 'my-repo',
|
||||||
repositoryOwner: 'my-org',
|
repositoryOwner: 'my-org',
|
||||||
repositoryPath: '',
|
repositoryPath: '',
|
||||||
sshKey: sshPath ? 'some ssh private key' : '',
|
sshKey: sshPath ? 'some ssh private key' : '',
|
||||||
sshKnownHosts: '',
|
sshKnownHosts: '',
|
||||||
sshStrict: true,
|
sshStrict: true
|
||||||
workflowOrganizationId: 123456,
|
|
||||||
setSafeDirectory: true,
|
|
||||||
githubServerUrl: githubServerUrl
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,378 +0,0 @@
|
||||||
import * as exec from '@actions/exec'
|
|
||||||
import * as fshelper from '../lib/fs-helper'
|
|
||||||
import * as commandManager from '../lib/git-command-manager'
|
|
||||||
|
|
||||||
let git: commandManager.IGitCommandManager
|
|
||||||
let mockExec = jest.fn()
|
|
||||||
|
|
||||||
describe('git-auth-helper tests', () => {
|
|
||||||
beforeAll(async () => {})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
jest.spyOn(fshelper, 'fileExistsSync').mockImplementation(jest.fn())
|
|
||||||
jest.spyOn(fshelper, 'directoryExistsSync').mockImplementation(jest.fn())
|
|
||||||
})
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jest.restoreAllMocks()
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {})
|
|
||||||
|
|
||||||
it('branch list matches', async () => {
|
|
||||||
mockExec.mockImplementation((path, args, options) => {
|
|
||||||
console.log(args, options.listeners.stdout)
|
|
||||||
|
|
||||||
if (args.includes('version')) {
|
|
||||||
options.listeners.stdout(Buffer.from('2.18'))
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.includes('rev-parse')) {
|
|
||||||
options.listeners.stdline(Buffer.from('refs/heads/foo'))
|
|
||||||
options.listeners.stdline(Buffer.from('refs/heads/bar'))
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1
|
|
||||||
})
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
|
|
||||||
let branches = await git.branchList(false)
|
|
||||||
|
|
||||||
expect(branches).toHaveLength(2)
|
|
||||||
expect(branches.sort()).toEqual(['foo', 'bar'].sort())
|
|
||||||
})
|
|
||||||
|
|
||||||
it('ambiguous ref name output is captured', async () => {
|
|
||||||
mockExec.mockImplementation((path, args, options) => {
|
|
||||||
console.log(args, options.listeners.stdout)
|
|
||||||
|
|
||||||
if (args.includes('version')) {
|
|
||||||
options.listeners.stdout(Buffer.from('2.18'))
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.includes('rev-parse')) {
|
|
||||||
options.listeners.stdline(Buffer.from('refs/heads/foo'))
|
|
||||||
// If refs/tags/v1 and refs/heads/tags/v1 existed on this repository
|
|
||||||
options.listeners.errline(
|
|
||||||
Buffer.from("error: refname 'tags/v1' is ambiguous")
|
|
||||||
)
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1
|
|
||||||
})
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
|
|
||||||
let branches = await git.branchList(false)
|
|
||||||
|
|
||||||
expect(branches).toHaveLength(1)
|
|
||||||
expect(branches.sort()).toEqual(['foo'].sort())
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('Test fetchDepth and fetchTags options', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
jest.spyOn(fshelper, 'fileExistsSync').mockImplementation(jest.fn())
|
|
||||||
jest.spyOn(fshelper, 'directoryExistsSync').mockImplementation(jest.fn())
|
|
||||||
mockExec.mockImplementation((path, args, options) => {
|
|
||||||
console.log(args, options.listeners.stdout)
|
|
||||||
|
|
||||||
if (args.includes('version')) {
|
|
||||||
options.listeners.stdout(Buffer.from('2.18'))
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jest.restoreAllMocks()
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is true', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchDepth: 0,
|
|
||||||
fetchTags: true
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is false', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchDepth: 0,
|
|
||||||
fetchTags: false
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--no-tags',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is false', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchDepth: 1,
|
|
||||||
fetchTags: false
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--no-tags',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'--depth=1',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is true', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchDepth: 1,
|
|
||||||
fetchTags: true
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'--depth=1',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when showProgress is true', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
showProgress: true
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--no-tags',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--progress',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchDepth is 42 and showProgress is true', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchDepth: 42,
|
|
||||||
showProgress: true
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--no-tags',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--progress',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'--depth=42',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should call execGit with the correct arguments when fetchTags is true and showProgress is true', async () => {
|
|
||||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
|
||||||
|
|
||||||
const workingDirectory = 'test'
|
|
||||||
const lfs = false
|
|
||||||
const doSparseCheckout = false
|
|
||||||
git = await commandManager.createCommandManager(
|
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
const refSpec = ['refspec1', 'refspec2']
|
|
||||||
const options = {
|
|
||||||
filter: 'filterValue',
|
|
||||||
fetchTags: true,
|
|
||||||
showProgress: true
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.fetch(refSpec, options)
|
|
||||||
|
|
||||||
expect(mockExec).toHaveBeenCalledWith(
|
|
||||||
expect.any(String),
|
|
||||||
[
|
|
||||||
'-c',
|
|
||||||
'protocol.version=2',
|
|
||||||
'fetch',
|
|
||||||
'--prune',
|
|
||||||
'--no-recurse-submodules',
|
|
||||||
'--progress',
|
|
||||||
'--filter=filterValue',
|
|
||||||
'origin',
|
|
||||||
'refspec1',
|
|
||||||
'refspec2'
|
|
||||||
],
|
|
||||||
expect.any(Object)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -281,65 +281,6 @@ describe('git-directory-helper tests', () => {
|
||||||
expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
|
expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
|
||||||
})
|
})
|
||||||
|
|
||||||
const cleanWhenSubmoduleStatusIsFalse =
|
|
||||||
'cleans when submodule status is false'
|
|
||||||
|
|
||||||
it(cleanWhenSubmoduleStatusIsFalse, async () => {
|
|
||||||
// Arrange
|
|
||||||
await setup(cleanWhenSubmoduleStatusIsFalse)
|
|
||||||
await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
|
||||||
|
|
||||||
//mock bad submodule
|
|
||||||
|
|
||||||
const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
|
||||||
submoduleStatus.mockImplementation(async (remote: boolean) => {
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await gitDirectoryHelper.prepareExistingDirectory(
|
|
||||||
git,
|
|
||||||
repositoryPath,
|
|
||||||
repositoryUrl,
|
|
||||||
clean,
|
|
||||||
ref
|
|
||||||
)
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
const files = await fs.promises.readdir(repositoryPath)
|
|
||||||
expect(files).toHaveLength(0)
|
|
||||||
expect(git.tryClean).toHaveBeenCalled()
|
|
||||||
})
|
|
||||||
|
|
||||||
const doesNotCleanWhenSubmoduleStatusIsTrue =
|
|
||||||
'does not clean when submodule status is true'
|
|
||||||
|
|
||||||
it(doesNotCleanWhenSubmoduleStatusIsTrue, async () => {
|
|
||||||
// Arrange
|
|
||||||
await setup(doesNotCleanWhenSubmoduleStatusIsTrue)
|
|
||||||
await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
|
||||||
|
|
||||||
const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
|
||||||
submoduleStatus.mockImplementation(async (remote: boolean) => {
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await gitDirectoryHelper.prepareExistingDirectory(
|
|
||||||
git,
|
|
||||||
repositoryPath,
|
|
||||||
repositoryUrl,
|
|
||||||
clean,
|
|
||||||
ref
|
|
||||||
)
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
|
|
||||||
const files = await fs.promises.readdir(repositoryPath)
|
|
||||||
expect(files.sort()).toEqual(['.git', 'my-file'])
|
|
||||||
expect(git.tryClean).toHaveBeenCalled()
|
|
||||||
})
|
|
||||||
|
|
||||||
const removesLockFiles = 'removes lock files'
|
const removesLockFiles = 'removes lock files'
|
||||||
it(removesLockFiles, async () => {
|
it(removesLockFiles, async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
@ -462,8 +403,6 @@ async function setup(testName: string): Promise<void> {
|
||||||
branchList: jest.fn(async () => {
|
branchList: jest.fn(async () => {
|
||||||
return []
|
return []
|
||||||
}),
|
}),
|
||||||
sparseCheckout: jest.fn(),
|
|
||||||
sparseCheckoutNonConeMode: jest.fn(),
|
|
||||||
checkout: jest.fn(),
|
checkout: jest.fn(),
|
||||||
checkoutDetach: jest.fn(),
|
checkoutDetach: jest.fn(),
|
||||||
config: jest.fn(),
|
config: jest.fn(),
|
||||||
|
@ -484,9 +423,6 @@ async function setup(testName: string): Promise<void> {
|
||||||
submoduleForeach: jest.fn(),
|
submoduleForeach: jest.fn(),
|
||||||
submoduleSync: jest.fn(),
|
submoduleSync: jest.fn(),
|
||||||
submoduleUpdate: jest.fn(),
|
submoduleUpdate: jest.fn(),
|
||||||
submoduleStatus: jest.fn(async () => {
|
|
||||||
return true
|
|
||||||
}),
|
|
||||||
tagExists: jest.fn(),
|
tagExists: jest.fn(),
|
||||||
tryClean: jest.fn(async () => {
|
tryClean: jest.fn(async () => {
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
import * as assert from 'assert'
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as fsHelper from '../lib/fs-helper'
|
import * as fsHelper from '../lib/fs-helper'
|
||||||
import * as github from '@actions/github'
|
import * as github from '@actions/github'
|
||||||
import * as inputHelper from '../lib/input-helper'
|
import * as inputHelper from '../lib/input-helper'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import * as workflowContextHelper from '../lib/workflow-context-helper'
|
|
||||||
import {IGitSourceSettings} from '../lib/git-source-settings'
|
import {IGitSourceSettings} from '../lib/git-source-settings'
|
||||||
|
|
||||||
const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE']
|
const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE']
|
||||||
|
@ -43,11 +43,6 @@ describe('input-helper tests', () => {
|
||||||
.spyOn(fsHelper, 'directoryExistsSync')
|
.spyOn(fsHelper, 'directoryExistsSync')
|
||||||
.mockImplementation((path: string) => path == gitHubWorkspace)
|
.mockImplementation((path: string) => path == gitHubWorkspace)
|
||||||
|
|
||||||
// Mock ./workflowContextHelper getOrganizationId()
|
|
||||||
jest
|
|
||||||
.spyOn(workflowContextHelper, 'getOrganizationId')
|
|
||||||
.mockImplementation(() => Promise.resolve(123456))
|
|
||||||
|
|
||||||
// GitHub workspace
|
// GitHub workspace
|
||||||
process.env['GITHUB_WORKSPACE'] = gitHubWorkspace
|
process.env['GITHUB_WORKSPACE'] = gitHubWorkspace
|
||||||
})
|
})
|
||||||
|
@ -72,31 +67,26 @@ describe('input-helper tests', () => {
|
||||||
jest.restoreAllMocks()
|
jest.restoreAllMocks()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('sets defaults', async () => {
|
it('sets defaults', () => {
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
const settings: IGitSourceSettings = inputHelper.getInputs()
|
||||||
expect(settings).toBeTruthy()
|
expect(settings).toBeTruthy()
|
||||||
expect(settings.authToken).toBeFalsy()
|
expect(settings.authToken).toBeFalsy()
|
||||||
expect(settings.clean).toBe(true)
|
expect(settings.clean).toBe(true)
|
||||||
expect(settings.commit).toBeTruthy()
|
expect(settings.commit).toBeTruthy()
|
||||||
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
||||||
expect(settings.sparseCheckout).toBe(undefined)
|
|
||||||
expect(settings.sparseCheckoutConeMode).toBe(true)
|
|
||||||
expect(settings.fetchDepth).toBe(1)
|
expect(settings.fetchDepth).toBe(1)
|
||||||
expect(settings.fetchTags).toBe(false)
|
|
||||||
expect(settings.showProgress).toBe(true)
|
|
||||||
expect(settings.lfs).toBe(false)
|
expect(settings.lfs).toBe(false)
|
||||||
expect(settings.ref).toBe('refs/heads/some-ref')
|
expect(settings.ref).toBe('refs/heads/some-ref')
|
||||||
expect(settings.repositoryName).toBe('some-repo')
|
expect(settings.repositoryName).toBe('some-repo')
|
||||||
expect(settings.repositoryOwner).toBe('some-owner')
|
expect(settings.repositoryOwner).toBe('some-owner')
|
||||||
expect(settings.repositoryPath).toBe(gitHubWorkspace)
|
expect(settings.repositoryPath).toBe(gitHubWorkspace)
|
||||||
expect(settings.setSafeDirectory).toBe(true)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('qualifies ref', async () => {
|
it('qualifies ref', () => {
|
||||||
let originalRef = github.context.ref
|
let originalRef = github.context.ref
|
||||||
try {
|
try {
|
||||||
github.context.ref = 'some-unqualified-ref'
|
github.context.ref = 'some-unqualified-ref'
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
const settings: IGitSourceSettings = inputHelper.getInputs()
|
||||||
expect(settings).toBeTruthy()
|
expect(settings).toBeTruthy()
|
||||||
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
||||||
expect(settings.ref).toBe('refs/heads/some-unqualified-ref')
|
expect(settings.ref).toBe('refs/heads/some-unqualified-ref')
|
||||||
|
@ -105,42 +95,32 @@ describe('input-helper tests', () => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
it('requires qualified repo', async () => {
|
it('requires qualified repo', () => {
|
||||||
inputs.repository = 'some-unqualified-repo'
|
inputs.repository = 'some-unqualified-repo'
|
||||||
try {
|
assert.throws(() => {
|
||||||
await inputHelper.getInputs()
|
inputHelper.getInputs()
|
||||||
throw 'should not reach here'
|
}, /Invalid repository 'some-unqualified-repo'/)
|
||||||
} catch (err) {
|
|
||||||
expect(`(${(err as any).message}`).toMatch(
|
|
||||||
"Invalid repository 'some-unqualified-repo'"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('roots path', async () => {
|
it('roots path', () => {
|
||||||
inputs.path = 'some-directory/some-subdirectory'
|
inputs.path = 'some-directory/some-subdirectory'
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
const settings: IGitSourceSettings = inputHelper.getInputs()
|
||||||
expect(settings.repositoryPath).toBe(
|
expect(settings.repositoryPath).toBe(
|
||||||
path.join(gitHubWorkspace, 'some-directory', 'some-subdirectory')
|
path.join(gitHubWorkspace, 'some-directory', 'some-subdirectory')
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('sets ref to empty when explicit sha', async () => {
|
it('sets ref to empty when explicit sha', () => {
|
||||||
inputs.ref = '1111111111222222222233333333334444444444'
|
inputs.ref = '1111111111222222222233333333334444444444'
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
const settings: IGitSourceSettings = inputHelper.getInputs()
|
||||||
expect(settings.ref).toBeFalsy()
|
expect(settings.ref).toBeFalsy()
|
||||||
expect(settings.commit).toBe('1111111111222222222233333333334444444444')
|
expect(settings.commit).toBe('1111111111222222222233333333334444444444')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('sets sha to empty when explicit ref', async () => {
|
it('sets sha to empty when explicit ref', () => {
|
||||||
inputs.ref = 'refs/heads/some-other-ref'
|
inputs.ref = 'refs/heads/some-other-ref'
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
const settings: IGitSourceSettings = inputHelper.getInputs()
|
||||||
expect(settings.ref).toBe('refs/heads/some-other-ref')
|
expect(settings.ref).toBe('refs/heads/some-other-ref')
|
||||||
expect(settings.commit).toBeFalsy()
|
expect(settings.commit).toBeFalsy()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('sets workflow organization ID', async () => {
|
|
||||||
const settings: IGitSourceSettings = await inputHelper.getInputs()
|
|
||||||
expect(settings.workflowOrganizationId).toBe(123456)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
mkdir override-git-version
|
mkdir override-git-version
|
||||||
cd override-git-version
|
cd override-git-version
|
||||||
echo @echo override git version 1.2.3 > git.cmd
|
echo @echo override git version 1.2.3 > git.cmd
|
||||||
echo "%CD%" >> $GITHUB_PATH
|
echo ::add-path::%CD%
|
||||||
cd ..
|
cd ..
|
||||||
|
|
|
@ -5,5 +5,5 @@ cd override-git-version
|
||||||
echo "#!/bin/sh" > git
|
echo "#!/bin/sh" > git
|
||||||
echo "echo override git version 1.2.3" >> git
|
echo "echo override git version 1.2.3" >> git
|
||||||
chmod +x git
|
chmod +x git
|
||||||
echo "$(pwd)" >> $GITHUB_PATH
|
echo "::add-path::$(pwd)"
|
||||||
cd ..
|
cd ..
|
||||||
|
|
|
@ -16,7 +16,7 @@ describe('ref-helper tests', () => {
|
||||||
await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit)
|
await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit)
|
||||||
throw new Error('Should not reach here')
|
throw new Error('Should not reach here')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
expect((err as any)?.message).toBe('Arg git cannot be empty')
|
expect(err.message).toBe('Arg git cannot be empty')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -25,9 +25,7 @@ describe('ref-helper tests', () => {
|
||||||
await refHelper.getCheckoutInfo(git, '', '')
|
await refHelper.getCheckoutInfo(git, '', '')
|
||||||
throw new Error('Should not reach here')
|
throw new Error('Should not reach here')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
expect((err as any)?.message).toBe(
|
expect(err.message).toBe('Args ref and commit cannot both be empty')
|
||||||
'Args ref and commit cannot both be empty'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -104,7 +102,7 @@ describe('ref-helper tests', () => {
|
||||||
await refHelper.getCheckoutInfo(git, 'my-ref', '')
|
await refHelper.getCheckoutInfo(git, 'my-ref', '')
|
||||||
throw new Error('Should not reach here')
|
throw new Error('Should not reach here')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
expect((err as any)?.message).toBe(
|
expect(err.message).toBe(
|
||||||
"A branch or tag with the name 'my-ref' could not be found"
|
"A branch or tag with the name 'my-ref' could not be found"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ describe('retry-helper tests', () => {
|
||||||
throw new Error(`some error ${++attempts}`)
|
throw new Error(`some error ${++attempts}`)
|
||||||
})
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
error = err as Error
|
error = err
|
||||||
}
|
}
|
||||||
expect(error.message).toBe('some error 3')
|
expect(error.message).toBe('some error 3')
|
||||||
expect(attempts).toBe(3)
|
expect(attempts).toBe(3)
|
||||||
|
|
|
@ -20,5 +20,5 @@ else
|
||||||
|
|
||||||
# Verify auth token
|
# Verify auth token
|
||||||
cd basic
|
cd basic
|
||||||
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
git fetch --no-tags --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Verify .git folder
|
|
||||||
if [ ! -d "./sparse-checkout-non-cone-mode/.git" ]; then
|
|
||||||
echo "Expected ./sparse-checkout-non-cone-mode/.git folder to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verify sparse-checkout (non-cone-mode)
|
|
||||||
cd sparse-checkout-non-cone-mode
|
|
||||||
|
|
||||||
ENABLED=$(git config --local --get-all core.sparseCheckout)
|
|
||||||
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
echo "Failed to verify that sparse-checkout is enabled"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that sparse-checkout is enabled
|
|
||||||
if [ "$ENABLED" != "true" ]; then
|
|
||||||
echo "Expected sparse-checkout to be enabled (is: $ENABLED)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SPARSE_CHECKOUT_FILE=$(git rev-parse --git-path info/sparse-checkout)
|
|
||||||
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
echo "Failed to validate sparse-checkout"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that sparse-checkout list is not empty
|
|
||||||
if [ ! -f "$SPARSE_CHECKOUT_FILE" ]; then
|
|
||||||
echo "Expected sparse-checkout file to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that all folders from sparse-checkout exists
|
|
||||||
for pattern in $(cat "$SPARSE_CHECKOUT_FILE")
|
|
||||||
do
|
|
||||||
if [ ! -d "${pattern#/}" ]; then
|
|
||||||
echo "Expected directory '${pattern#/}' to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Verify that the root directory is not checked out
|
|
||||||
if [ -f README.md ]; then
|
|
||||||
echo "Expected top-level files not to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -1,63 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Verify .git folder
|
|
||||||
if [ ! -d "./sparse-checkout/.git" ]; then
|
|
||||||
echo "Expected ./sparse-checkout/.git folder to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verify sparse-checkout
|
|
||||||
cd sparse-checkout
|
|
||||||
|
|
||||||
SPARSE=$(git sparse-checkout list)
|
|
||||||
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
echo "Failed to validate sparse-checkout"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that sparse-checkout list is not empty
|
|
||||||
if [ -z "$SPARSE" ]; then
|
|
||||||
echo "Expected sparse-checkout list to not be empty"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that all folders of the sparse checkout exist
|
|
||||||
for pattern in $SPARSE
|
|
||||||
do
|
|
||||||
if [ ! -d "$pattern" ]; then
|
|
||||||
echo "Expected directory '$pattern' to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
checkSparse () {
|
|
||||||
if [ ! -d "./$1" ]; then
|
|
||||||
echo "Expected directory '$1' to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for file in $(git ls-tree -r --name-only HEAD $1)
|
|
||||||
do
|
|
||||||
if [ ! -f "$file" ]; then
|
|
||||||
echo "Expected file '$file' to exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check that all folders and their children have been checked out
|
|
||||||
checkSparse __test__
|
|
||||||
checkSparse .github
|
|
||||||
checkSparse dist
|
|
||||||
|
|
||||||
# Check that only sparse-checkout folders have been checked out
|
|
||||||
for pattern in $(git ls-tree --name-only HEAD)
|
|
||||||
do
|
|
||||||
if [ -d "$pattern" ]; then
|
|
||||||
if [[ "$pattern" != "__test__" && "$pattern" != ".github" && "$pattern" != "dist" ]]; then
|
|
||||||
echo "Expected directory '$pattern' to not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
23
action.yml
23
action.yml
|
@ -53,24 +53,9 @@ inputs:
|
||||||
clean:
|
clean:
|
||||||
description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
|
description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
|
||||||
default: true
|
default: true
|
||||||
sparse-checkout:
|
|
||||||
description: >
|
|
||||||
Do a sparse checkout on given patterns.
|
|
||||||
Each pattern should be separated with new lines
|
|
||||||
default: null
|
|
||||||
sparse-checkout-cone-mode:
|
|
||||||
description: >
|
|
||||||
Specifies whether to use cone-mode when doing a sparse checkout.
|
|
||||||
default: true
|
|
||||||
fetch-depth:
|
fetch-depth:
|
||||||
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
|
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
|
||||||
default: 1
|
default: 1
|
||||||
fetch-tags:
|
|
||||||
description: 'Whether to fetch tags, even if fetch-depth > 0.'
|
|
||||||
default: false
|
|
||||||
show-progress:
|
|
||||||
description: 'Whether to show progress status output when fetching.'
|
|
||||||
default: true
|
|
||||||
lfs:
|
lfs:
|
||||||
description: 'Whether to download Git-LFS files'
|
description: 'Whether to download Git-LFS files'
|
||||||
default: false
|
default: false
|
||||||
|
@ -83,13 +68,7 @@ inputs:
|
||||||
When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
|
When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
|
||||||
converted to HTTPS.
|
converted to HTTPS.
|
||||||
default: false
|
default: false
|
||||||
set-safe-directory:
|
|
||||||
description: Add repository path as safe.directory for Git global config by running `git config --global --add safe.directory <path>`
|
|
||||||
default: true
|
|
||||||
github-server-url:
|
|
||||||
description: The base URL for the GitHub instance that you are trying to clone from, will use environment defaults to fetch from the same instance that the workflow is running from unless specified. Example URLs are https://github.com or https://my-ghes-server.example.com
|
|
||||||
required: false
|
|
||||||
runs:
|
runs:
|
||||||
using: node20
|
using: node12
|
||||||
main: dist/index.js
|
main: dist/index.js
|
||||||
post: dist/index.js
|
post: dist/index.js
|
||||||
|
|
|
@ -24,7 +24,7 @@ We want to take this opportunity to make behavioral changes, from v1. This docum
|
||||||
description: >
|
description: >
|
||||||
The branch, tag or SHA to checkout. When checking out the repository that
|
The branch, tag or SHA to checkout. When checking out the repository that
|
||||||
triggered a workflow, this defaults to the reference or SHA for that
|
triggered a workflow, this defaults to the reference or SHA for that
|
||||||
event. Otherwise, uses the default branch.
|
event. Otherwise, defaults to `master`.
|
||||||
token:
|
token:
|
||||||
description: >
|
description: >
|
||||||
Personal access token (PAT) used to fetch the repository. The PAT is configured
|
Personal access token (PAT) used to fetch the repository. The PAT is configured
|
||||||
|
@ -181,7 +181,7 @@ GITHUB_WORKSPACE=/home/runner/work/foo/foo
|
||||||
RUNNER_WORKSPACE=/home/runner/work/foo
|
RUNNER_WORKSPACE=/home/runner/work/foo
|
||||||
```
|
```
|
||||||
|
|
||||||
V2 introduces a new constraint on the checkout path. The location must now be under `github.workspace`. Whereas the checkout@v1 constraint was one level up, under `runner.workspace`.
|
V2 introduces a new contraint on the checkout path. The location must now be under `github.workspace`. Whereas the checkout@v1 constraint was one level up, under `runner.workspace`.
|
||||||
|
|
||||||
V2 no longer changes `github.workspace` to follow wherever the self repo is checked-out.
|
V2 no longer changes `github.workspace` to follow wherever the self repo is checked-out.
|
||||||
|
|
||||||
|
@ -277,7 +277,7 @@ Note:
|
||||||
### Branching strategy and release tags
|
### Branching strategy and release tags
|
||||||
|
|
||||||
- Create a servicing branch for V1: `releases/v1`
|
- Create a servicing branch for V1: `releases/v1`
|
||||||
- Merge the changes into the default branch
|
- Merge the changes into `master`
|
||||||
- Release using a new tag `preview`
|
- Release using a new tag `preview`
|
||||||
- When stable, release using a new tag `v2`
|
- When stable, release using a new tag `v2`
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
35
package.json
35
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "checkout",
|
"name": "checkout",
|
||||||
"version": "4.0.0",
|
"version": "2.0.2",
|
||||||
"description": "checkout action",
|
"description": "checkout action",
|
||||||
"main": "lib/main.js",
|
"main": "lib/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -8,9 +8,7 @@
|
||||||
"format": "prettier --write '**/*.ts'",
|
"format": "prettier --write '**/*.ts'",
|
||||||
"format-check": "prettier --check '**/*.ts'",
|
"format-check": "prettier --check '**/*.ts'",
|
||||||
"lint": "eslint src/**/*.ts",
|
"lint": "eslint src/**/*.ts",
|
||||||
"test": "jest",
|
"test": "jest"
|
||||||
"licensed-check": "src/misc/licensed-check.sh",
|
|
||||||
"licensed-generate": "src/misc/licensed-generate.sh"
|
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -28,28 +26,27 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/actions/checkout#readme",
|
"homepage": "https://github.com/actions/checkout#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.1.3",
|
||||||
"@actions/exec": "^1.0.1",
|
"@actions/exec": "^1.0.1",
|
||||||
"@actions/github": "^5.0.0",
|
"@actions/github": "^2.2.0",
|
||||||
"@actions/io": "^1.1.3",
|
"@actions/io": "^1.0.1",
|
||||||
"@actions/tool-cache": "^1.1.2",
|
"@actions/tool-cache": "^1.1.2",
|
||||||
"uuid": "^3.3.3"
|
"uuid": "^3.3.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^27.0.2",
|
"@types/jest": "^24.0.23",
|
||||||
"@types/node": "^20.5.3",
|
"@types/node": "^12.7.12",
|
||||||
"@types/uuid": "^3.4.6",
|
"@types/uuid": "^3.4.6",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
"@typescript-eslint/parser": "^2.8.0",
|
||||||
"@typescript-eslint/parser": "^5.45.0",
|
"@zeit/ncc": "^0.20.5",
|
||||||
"@vercel/ncc": "^0.36.1",
|
"eslint": "^5.16.0",
|
||||||
"eslint": "^7.32.0",
|
"eslint-plugin-github": "^2.0.0",
|
||||||
"eslint-plugin-github": "^4.3.2",
|
"eslint-plugin-jest": "^22.21.0",
|
||||||
"eslint-plugin-jest": "^25.7.0",
|
"jest": "^24.9.0",
|
||||||
"jest": "^27.3.0",
|
"jest-circus": "^24.9.0",
|
||||||
"jest-circus": "^27.3.0",
|
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^1.19.1",
|
||||||
"ts-jest": "^27.0.7",
|
"ts-jest": "^24.2.0",
|
||||||
"typescript": "^4.4.4"
|
"typescript": "^3.6.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,7 +9,7 @@ export function directoryExistsSync(path: string, required?: boolean): boolean {
|
||||||
try {
|
try {
|
||||||
stats = fs.statSync(path)
|
stats = fs.statSync(path)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if ((error as any)?.code === 'ENOENT') {
|
if (error.code === 'ENOENT') {
|
||||||
if (!required) {
|
if (!required) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,7 @@ export function directoryExistsSync(path: string, required?: boolean): boolean {
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
`Encountered an error when checking whether path '${path}' exists: ${error.message}`
|
||||||
?.message ?? error}`
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,13 +39,12 @@ export function existsSync(path: string): boolean {
|
||||||
try {
|
try {
|
||||||
fs.statSync(path)
|
fs.statSync(path)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if ((error as any)?.code === 'ENOENT') {
|
if (error.code === 'ENOENT') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
`Encountered an error when checking whether path '${path}' exists: ${error.message}`
|
||||||
?.message ?? error}`
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,13 +60,12 @@ export function fileExistsSync(path: string): boolean {
|
||||||
try {
|
try {
|
||||||
stats = fs.statSync(path)
|
stats = fs.statSync(path)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if ((error as any)?.code === 'ENOENT') {
|
if (error.code === 'ENOENT') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
`Encountered an error when checking whether path '${path}' exists: ${error.message}`
|
||||||
?.message ?? error}`
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,8 @@ export interface IGitAuthHelper {
|
||||||
configureAuth(): Promise<void>
|
configureAuth(): Promise<void>
|
||||||
configureGlobalAuth(): Promise<void>
|
configureGlobalAuth(): Promise<void>
|
||||||
configureSubmoduleAuth(): Promise<void>
|
configureSubmoduleAuth(): Promise<void>
|
||||||
configureTempGlobalConfig(): Promise<string>
|
|
||||||
removeAuth(): Promise<void>
|
removeAuth(): Promise<void>
|
||||||
removeGlobalConfig(): Promise<void>
|
removeGlobalAuth(): Promise<void>
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createAuthHelper(
|
export function createAuthHelper(
|
||||||
|
@ -38,7 +37,7 @@ class GitAuthHelper {
|
||||||
private readonly tokenConfigValue: string
|
private readonly tokenConfigValue: string
|
||||||
private readonly tokenPlaceholderConfigValue: string
|
private readonly tokenPlaceholderConfigValue: string
|
||||||
private readonly insteadOfKey: string
|
private readonly insteadOfKey: string
|
||||||
private readonly insteadOfValues: string[] = []
|
private readonly insteadOfValue: string
|
||||||
private sshCommand = ''
|
private sshCommand = ''
|
||||||
private sshKeyPath = ''
|
private sshKeyPath = ''
|
||||||
private sshKnownHostsPath = ''
|
private sshKnownHostsPath = ''
|
||||||
|
@ -46,13 +45,13 @@ class GitAuthHelper {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
gitCommandManager: IGitCommandManager,
|
gitCommandManager: IGitCommandManager,
|
||||||
gitSourceSettings: IGitSourceSettings | undefined
|
gitSourceSettings?: IGitSourceSettings
|
||||||
) {
|
) {
|
||||||
this.git = gitCommandManager
|
this.git = gitCommandManager
|
||||||
this.settings = gitSourceSettings || (({} as unknown) as IGitSourceSettings)
|
this.settings = gitSourceSettings || (({} as unknown) as IGitSourceSettings)
|
||||||
|
|
||||||
// Token auth header
|
// Token auth header
|
||||||
const serverUrl = urlHelper.getServerUrl(this.settings.githubServerUrl)
|
const serverUrl = urlHelper.getServerUrl()
|
||||||
this.tokenConfigKey = `http.${serverUrl.origin}/.extraheader` // "origin" is SCHEME://HOSTNAME[:PORT]
|
this.tokenConfigKey = `http.${serverUrl.origin}/.extraheader` // "origin" is SCHEME://HOSTNAME[:PORT]
|
||||||
const basicCredential = Buffer.from(
|
const basicCredential = Buffer.from(
|
||||||
`x-access-token:${this.settings.authToken}`,
|
`x-access-token:${this.settings.authToken}`,
|
||||||
|
@ -64,12 +63,7 @@ class GitAuthHelper {
|
||||||
|
|
||||||
// Instead of SSH URL
|
// Instead of SSH URL
|
||||||
this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf` // "origin" is SCHEME://HOSTNAME[:PORT]
|
this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf` // "origin" is SCHEME://HOSTNAME[:PORT]
|
||||||
this.insteadOfValues.push(`git@${serverUrl.hostname}:`)
|
this.insteadOfValue = `git@${serverUrl.hostname}:`
|
||||||
if (this.settings.workflowOrganizationId) {
|
|
||||||
this.insteadOfValues.push(
|
|
||||||
`org-${this.settings.workflowOrganizationId}@github.com:`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async configureAuth(): Promise<void> {
|
async configureAuth(): Promise<void> {
|
||||||
|
@ -81,11 +75,7 @@ class GitAuthHelper {
|
||||||
await this.configureToken()
|
await this.configureToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
async configureTempGlobalConfig(): Promise<string> {
|
async configureGlobalAuth(): Promise<void> {
|
||||||
// Already setup global config
|
|
||||||
if (this.temporaryHomePath?.length > 0) {
|
|
||||||
return path.join(this.temporaryHomePath, '.gitconfig')
|
|
||||||
}
|
|
||||||
// Create a temp home directory
|
// Create a temp home directory
|
||||||
const runnerTemp = process.env['RUNNER_TEMP'] || ''
|
const runnerTemp = process.env['RUNNER_TEMP'] || ''
|
||||||
assert.ok(runnerTemp, 'RUNNER_TEMP is not defined')
|
assert.ok(runnerTemp, 'RUNNER_TEMP is not defined')
|
||||||
|
@ -104,7 +94,7 @@ class GitAuthHelper {
|
||||||
await fs.promises.stat(gitConfigPath)
|
await fs.promises.stat(gitConfigPath)
|
||||||
configExists = true
|
configExists = true
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,28 +105,20 @@ class GitAuthHelper {
|
||||||
await fs.promises.writeFile(newGitConfigPath, '')
|
await fs.promises.writeFile(newGitConfigPath, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override HOME
|
|
||||||
core.info(
|
|
||||||
`Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes`
|
|
||||||
)
|
|
||||||
this.git.setEnvironmentVariable('HOME', this.temporaryHomePath)
|
|
||||||
|
|
||||||
return newGitConfigPath
|
|
||||||
}
|
|
||||||
|
|
||||||
async configureGlobalAuth(): Promise<void> {
|
|
||||||
// 'configureTempGlobalConfig' noops if already set, just returns the path
|
|
||||||
const newGitConfigPath = await this.configureTempGlobalConfig()
|
|
||||||
try {
|
try {
|
||||||
|
// Override HOME
|
||||||
|
core.info(
|
||||||
|
`Temporarily overriding HOME='${this.temporaryHomePath}' before making global git config changes`
|
||||||
|
)
|
||||||
|
this.git.setEnvironmentVariable('HOME', this.temporaryHomePath)
|
||||||
|
|
||||||
// Configure the token
|
// Configure the token
|
||||||
await this.configureToken(newGitConfigPath, true)
|
await this.configureToken(newGitConfigPath, true)
|
||||||
|
|
||||||
// Configure HTTPS instead of SSH
|
// Configure HTTPS instead of SSH
|
||||||
await this.git.tryConfigUnset(this.insteadOfKey, true)
|
await this.git.tryConfigUnset(this.insteadOfKey, true)
|
||||||
if (!this.settings.sshKey) {
|
if (!this.settings.sshKey) {
|
||||||
for (const insteadOfValue of this.insteadOfValues) {
|
await this.git.config(this.insteadOfKey, this.insteadOfValue, true)
|
||||||
await this.git.config(this.insteadOfKey, insteadOfValue, true, true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Unset in case somehow written to the real global config
|
// Unset in case somehow written to the real global config
|
||||||
|
@ -157,8 +139,7 @@ class GitAuthHelper {
|
||||||
// by process creation audit events, which are commonly logged. For more information,
|
// by process creation audit events, which are commonly logged. For more information,
|
||||||
// refer to https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
|
// refer to https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
|
||||||
const output = await this.git.submoduleForeach(
|
const output = await this.git.submoduleForeach(
|
||||||
// wrap the pipeline in quotes to make sure it's handled properly by submoduleForeach, rather than just the first part of the pipeline
|
`git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url`,
|
||||||
`sh -c "git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url"`,
|
|
||||||
this.settings.nestedSubmodules
|
this.settings.nestedSubmodules
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -167,7 +148,7 @@ class GitAuthHelper {
|
||||||
output.match(/(?<=(^|\n)file:)[^\t]+(?=\tremote\.origin\.url)/g) || []
|
output.match(/(?<=(^|\n)file:)[^\t]+(?=\tremote\.origin\.url)/g) || []
|
||||||
for (const configPath of configPaths) {
|
for (const configPath of configPaths) {
|
||||||
core.debug(`Replacing token placeholder in '${configPath}'`)
|
core.debug(`Replacing token placeholder in '${configPath}'`)
|
||||||
await this.replaceTokenPlaceholder(configPath)
|
this.replaceTokenPlaceholder(configPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.settings.sshKey) {
|
if (this.settings.sshKey) {
|
||||||
|
@ -178,12 +159,10 @@ class GitAuthHelper {
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// Configure HTTPS instead of SSH
|
// Configure HTTPS instead of SSH
|
||||||
for (const insteadOfValue of this.insteadOfValues) {
|
await this.git.submoduleForeach(
|
||||||
await this.git.submoduleForeach(
|
`git config --local '${this.insteadOfKey}' '${this.insteadOfValue}'`,
|
||||||
`git config --local --add '${this.insteadOfKey}' '${insteadOfValue}'`,
|
this.settings.nestedSubmodules
|
||||||
this.settings.nestedSubmodules
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -193,12 +172,10 @@ class GitAuthHelper {
|
||||||
await this.removeToken()
|
await this.removeToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
async removeGlobalConfig(): Promise<void> {
|
async removeGlobalAuth(): Promise<void> {
|
||||||
if (this.temporaryHomePath?.length > 0) {
|
core.debug(`Unsetting HOME override`)
|
||||||
core.debug(`Unsetting HOME override`)
|
this.git.removeEnvironmentVariable('HOME')
|
||||||
this.git.removeEnvironmentVariable('HOME')
|
await io.rmRF(this.temporaryHomePath)
|
||||||
await io.rmRF(this.temporaryHomePath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async configureSsh(): Promise<void> {
|
private async configureSsh(): Promise<void> {
|
||||||
|
@ -236,7 +213,7 @@ class GitAuthHelper {
|
||||||
await fs.promises.readFile(userKnownHostsPath)
|
await fs.promises.readFile(userKnownHostsPath)
|
||||||
).toString()
|
).toString()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if ((err as any)?.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -247,7 +224,7 @@ class GitAuthHelper {
|
||||||
if (this.settings.sshKnownHosts) {
|
if (this.settings.sshKnownHosts) {
|
||||||
knownHosts += `# Begin from input known hosts\n${this.settings.sshKnownHosts}\n# end from input known hosts\n`
|
knownHosts += `# Begin from input known hosts\n${this.settings.sshKnownHosts}\n# end from input known hosts\n`
|
||||||
}
|
}
|
||||||
knownHosts += `# Begin implicitly added github.com\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n# End implicitly added github.com\n`
|
knownHosts += `# Begin implicitly added github.com\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n# End implicitly added github.com\n`
|
||||||
this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`)
|
this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`)
|
||||||
stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath)
|
stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath)
|
||||||
await fs.promises.writeFile(this.sshKnownHostsPath, knownHosts)
|
await fs.promises.writeFile(this.sshKnownHostsPath, knownHosts)
|
||||||
|
@ -325,7 +302,7 @@ class GitAuthHelper {
|
||||||
try {
|
try {
|
||||||
await io.rmRF(keyPath)
|
await io.rmRF(keyPath)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.debug(`${(err as any)?.message ?? err}`)
|
core.debug(err.message)
|
||||||
core.warning(`Failed to remove SSH key '${keyPath}'`)
|
core.warning(`Failed to remove SSH key '${keyPath}'`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -366,8 +343,7 @@ class GitAuthHelper {
|
||||||
|
|
||||||
const pattern = regexpHelper.escape(configKey)
|
const pattern = regexpHelper.escape(configKey)
|
||||||
await this.git.submoduleForeach(
|
await this.git.submoduleForeach(
|
||||||
// wrap the pipeline in quotes to make sure it's handled properly by submoduleForeach, rather than just the first part of the pipeline
|
`git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || :`,
|
||||||
`sh -c "git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || :"`,
|
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as exec from '@actions/exec'
|
import * as exec from '@actions/exec'
|
||||||
import * as fs from 'fs'
|
|
||||||
import * as fshelper from './fs-helper'
|
import * as fshelper from './fs-helper'
|
||||||
import * as io from '@actions/io'
|
import * as io from '@actions/io'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
|
@ -17,33 +16,22 @@ export interface IGitCommandManager {
|
||||||
branchDelete(remote: boolean, branch: string): Promise<void>
|
branchDelete(remote: boolean, branch: string): Promise<void>
|
||||||
branchExists(remote: boolean, pattern: string): Promise<boolean>
|
branchExists(remote: boolean, pattern: string): Promise<boolean>
|
||||||
branchList(remote: boolean): Promise<string[]>
|
branchList(remote: boolean): Promise<string[]>
|
||||||
sparseCheckout(sparseCheckout: string[]): Promise<void>
|
|
||||||
sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise<void>
|
|
||||||
checkout(ref: string, startPoint: string): Promise<void>
|
checkout(ref: string, startPoint: string): Promise<void>
|
||||||
checkoutDetach(): Promise<void>
|
checkoutDetach(): Promise<void>
|
||||||
config(
|
config(
|
||||||
configKey: string,
|
configKey: string,
|
||||||
configValue: string,
|
configValue: string,
|
||||||
globalConfig?: boolean,
|
globalConfig?: boolean
|
||||||
add?: boolean
|
|
||||||
): Promise<void>
|
): Promise<void>
|
||||||
configExists(configKey: string, globalConfig?: boolean): Promise<boolean>
|
configExists(configKey: string, globalConfig?: boolean): Promise<boolean>
|
||||||
fetch(
|
fetch(refSpec: string[], fetchDepth?: number): Promise<void>
|
||||||
refSpec: string[],
|
|
||||||
options: {
|
|
||||||
filter?: string
|
|
||||||
fetchDepth?: number
|
|
||||||
fetchTags?: boolean
|
|
||||||
showProgress?: boolean
|
|
||||||
}
|
|
||||||
): Promise<void>
|
|
||||||
getDefaultBranch(repositoryUrl: string): Promise<string>
|
getDefaultBranch(repositoryUrl: string): Promise<string>
|
||||||
getWorkingDirectory(): string
|
getWorkingDirectory(): string
|
||||||
init(): Promise<void>
|
init(): Promise<void>
|
||||||
isDetached(): Promise<boolean>
|
isDetached(): Promise<boolean>
|
||||||
lfsFetch(ref: string): Promise<void>
|
lfsFetch(ref: string): Promise<void>
|
||||||
lfsInstall(): Promise<void>
|
lfsInstall(): Promise<void>
|
||||||
log1(format?: string): Promise<string>
|
log1(): Promise<string>
|
||||||
remoteAdd(remoteName: string, remoteUrl: string): Promise<void>
|
remoteAdd(remoteName: string, remoteUrl: string): Promise<void>
|
||||||
removeEnvironmentVariable(name: string): void
|
removeEnvironmentVariable(name: string): void
|
||||||
revParse(ref: string): Promise<string>
|
revParse(ref: string): Promise<string>
|
||||||
|
@ -52,7 +40,6 @@ export interface IGitCommandManager {
|
||||||
submoduleForeach(command: string, recursive: boolean): Promise<string>
|
submoduleForeach(command: string, recursive: boolean): Promise<string>
|
||||||
submoduleSync(recursive: boolean): Promise<void>
|
submoduleSync(recursive: boolean): Promise<void>
|
||||||
submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void>
|
submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void>
|
||||||
submoduleStatus(): Promise<boolean>
|
|
||||||
tagExists(pattern: string): Promise<boolean>
|
tagExists(pattern: string): Promise<boolean>
|
||||||
tryClean(): Promise<boolean>
|
tryClean(): Promise<boolean>
|
||||||
tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean>
|
tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean>
|
||||||
|
@ -63,14 +50,9 @@ export interface IGitCommandManager {
|
||||||
|
|
||||||
export async function createCommandManager(
|
export async function createCommandManager(
|
||||||
workingDirectory: string,
|
workingDirectory: string,
|
||||||
lfs: boolean,
|
lfs: boolean
|
||||||
doSparseCheckout: boolean
|
|
||||||
): Promise<IGitCommandManager> {
|
): Promise<IGitCommandManager> {
|
||||||
return await GitCommandManager.createCommandManager(
|
return await GitCommandManager.createCommandManager(workingDirectory, lfs)
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GitCommandManager {
|
class GitCommandManager {
|
||||||
|
@ -80,7 +62,6 @@ class GitCommandManager {
|
||||||
}
|
}
|
||||||
private gitPath = ''
|
private gitPath = ''
|
||||||
private lfs = false
|
private lfs = false
|
||||||
private doSparseCheckout = false
|
|
||||||
private workingDirectory = ''
|
private workingDirectory = ''
|
||||||
|
|
||||||
// Private constructor; use createCommandManager()
|
// Private constructor; use createCommandManager()
|
||||||
|
@ -112,11 +93,8 @@ class GitCommandManager {
|
||||||
|
|
||||||
// Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
|
// Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
|
||||||
// "branch --list" is more difficult when in a detached HEAD state.
|
// "branch --list" is more difficult when in a detached HEAD state.
|
||||||
|
// Note, this implementation uses "rev-parse --symbolic-full-name" because there is a bug
|
||||||
// TODO(https://github.com/actions/checkout/issues/786): this implementation uses
|
// in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names.
|
||||||
// "rev-parse --symbolic-full-name" because there is a bug
|
|
||||||
// in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names. When
|
|
||||||
// 2.18 is no longer supported, we can switch back to --symbolic.
|
|
||||||
|
|
||||||
const args = ['rev-parse', '--symbolic-full-name']
|
const args = ['rev-parse', '--symbolic-full-name']
|
||||||
if (remote) {
|
if (remote) {
|
||||||
|
@ -125,73 +103,24 @@ class GitCommandManager {
|
||||||
args.push('--branches')
|
args.push('--branches')
|
||||||
}
|
}
|
||||||
|
|
||||||
const stderr: string[] = []
|
const output = await this.execGit(args)
|
||||||
const errline: string[] = []
|
|
||||||
const stdout: string[] = []
|
|
||||||
const stdline: string[] = []
|
|
||||||
|
|
||||||
const listeners = {
|
for (let branch of output.stdout.trim().split('\n')) {
|
||||||
stderr: (data: Buffer) => {
|
|
||||||
stderr.push(data.toString())
|
|
||||||
},
|
|
||||||
errline: (data: Buffer) => {
|
|
||||||
errline.push(data.toString())
|
|
||||||
},
|
|
||||||
stdout: (data: Buffer) => {
|
|
||||||
stdout.push(data.toString())
|
|
||||||
},
|
|
||||||
stdline: (data: Buffer) => {
|
|
||||||
stdline.push(data.toString())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Suppress the output in order to avoid flooding annotations with innocuous errors.
|
|
||||||
await this.execGit(args, false, true, listeners)
|
|
||||||
|
|
||||||
core.debug(`stderr callback is: ${stderr}`)
|
|
||||||
core.debug(`errline callback is: ${errline}`)
|
|
||||||
core.debug(`stdout callback is: ${stdout}`)
|
|
||||||
core.debug(`stdline callback is: ${stdline}`)
|
|
||||||
|
|
||||||
for (let branch of stdline) {
|
|
||||||
branch = branch.trim()
|
branch = branch.trim()
|
||||||
if (!branch) {
|
if (branch) {
|
||||||
continue
|
if (branch.startsWith('refs/heads/')) {
|
||||||
}
|
branch = branch.substr('refs/heads/'.length)
|
||||||
|
} else if (branch.startsWith('refs/remotes/')) {
|
||||||
|
branch = branch.substr('refs/remotes/'.length)
|
||||||
|
}
|
||||||
|
|
||||||
if (branch.startsWith('refs/heads/')) {
|
result.push(branch)
|
||||||
branch = branch.substring('refs/heads/'.length)
|
|
||||||
} else if (branch.startsWith('refs/remotes/')) {
|
|
||||||
branch = branch.substring('refs/remotes/'.length)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result.push(branch)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
async sparseCheckout(sparseCheckout: string[]): Promise<void> {
|
|
||||||
await this.execGit(['sparse-checkout', 'set', ...sparseCheckout])
|
|
||||||
}
|
|
||||||
|
|
||||||
async sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise<void> {
|
|
||||||
await this.execGit(['config', 'core.sparseCheckout', 'true'])
|
|
||||||
const output = await this.execGit([
|
|
||||||
'rev-parse',
|
|
||||||
'--git-path',
|
|
||||||
'info/sparse-checkout'
|
|
||||||
])
|
|
||||||
const sparseCheckoutPath = path.join(
|
|
||||||
this.workingDirectory,
|
|
||||||
output.stdout.trimRight()
|
|
||||||
)
|
|
||||||
await fs.promises.appendFile(
|
|
||||||
sparseCheckoutPath,
|
|
||||||
`\n${sparseCheckout.join('\n')}\n`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
async checkout(ref: string, startPoint: string): Promise<void> {
|
async checkout(ref: string, startPoint: string): Promise<void> {
|
||||||
const args = ['checkout', '--progress', '--force']
|
const args = ['checkout', '--progress', '--force']
|
||||||
if (startPoint) {
|
if (startPoint) {
|
||||||
|
@ -211,15 +140,14 @@ class GitCommandManager {
|
||||||
async config(
|
async config(
|
||||||
configKey: string,
|
configKey: string,
|
||||||
configValue: string,
|
configValue: string,
|
||||||
globalConfig?: boolean,
|
globalConfig?: boolean
|
||||||
add?: boolean
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const args: string[] = ['config', globalConfig ? '--global' : '--local']
|
await this.execGit([
|
||||||
if (add) {
|
'config',
|
||||||
args.push('--add')
|
globalConfig ? '--global' : '--local',
|
||||||
}
|
configKey,
|
||||||
args.push(...[configKey, configValue])
|
configValue
|
||||||
await this.execGit(args)
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
async configExists(
|
async configExists(
|
||||||
|
@ -240,31 +168,15 @@ class GitCommandManager {
|
||||||
return output.exitCode === 0
|
return output.exitCode === 0
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetch(
|
async fetch(refSpec: string[], fetchDepth?: number): Promise<void> {
|
||||||
refSpec: string[],
|
|
||||||
options: {
|
|
||||||
filter?: string
|
|
||||||
fetchDepth?: number
|
|
||||||
fetchTags?: boolean
|
|
||||||
showProgress?: boolean
|
|
||||||
}
|
|
||||||
): Promise<void> {
|
|
||||||
const args = ['-c', 'protocol.version=2', 'fetch']
|
const args = ['-c', 'protocol.version=2', 'fetch']
|
||||||
if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) {
|
if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {
|
||||||
args.push('--no-tags')
|
args.push('--no-tags')
|
||||||
}
|
}
|
||||||
|
|
||||||
args.push('--prune', '--no-recurse-submodules')
|
args.push('--prune', '--progress', '--no-recurse-submodules')
|
||||||
if (options.showProgress) {
|
if (fetchDepth && fetchDepth > 0) {
|
||||||
args.push('--progress')
|
args.push(`--depth=${fetchDepth}`)
|
||||||
}
|
|
||||||
|
|
||||||
if (options.filter) {
|
|
||||||
args.push(`--filter=${options.filter}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.fetchDepth && options.fetchDepth > 0) {
|
|
||||||
args.push(`--depth=${options.fetchDepth}`)
|
|
||||||
} else if (
|
} else if (
|
||||||
fshelper.fileExistsSync(
|
fshelper.fileExistsSync(
|
||||||
path.join(this.workingDirectory, '.git', 'shallow')
|
path.join(this.workingDirectory, '.git', 'shallow')
|
||||||
|
@ -342,10 +254,8 @@ class GitCommandManager {
|
||||||
await this.execGit(['lfs', 'install', '--local'])
|
await this.execGit(['lfs', 'install', '--local'])
|
||||||
}
|
}
|
||||||
|
|
||||||
async log1(format?: string): Promise<string> {
|
async log1(): Promise<string> {
|
||||||
const args = format ? ['log', '-1', format] : ['log', '-1']
|
const output = await this.execGit(['log', '-1'])
|
||||||
const silent = format ? false : true
|
|
||||||
const output = await this.execGit(args, false, silent)
|
|
||||||
return output.stdout
|
return output.stdout
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,7 +270,7 @@ class GitCommandManager {
|
||||||
/**
|
/**
|
||||||
* Resolves a ref to a SHA. For a branch or lightweight tag, the commit SHA is returned.
|
* Resolves a ref to a SHA. For a branch or lightweight tag, the commit SHA is returned.
|
||||||
* For an annotated tag, the tag SHA is returned.
|
* For an annotated tag, the tag SHA is returned.
|
||||||
* @param {string} ref For example: 'refs/heads/main' or '/refs/tags/v1'
|
* @param {string} ref For example: 'refs/heads/master' or '/refs/tags/v1'
|
||||||
* @returns {Promise<string>}
|
* @returns {Promise<string>}
|
||||||
*/
|
*/
|
||||||
async revParse(ref: string): Promise<string> {
|
async revParse(ref: string): Promise<string> {
|
||||||
|
@ -412,12 +322,6 @@ class GitCommandManager {
|
||||||
await this.execGit(args)
|
await this.execGit(args)
|
||||||
}
|
}
|
||||||
|
|
||||||
async submoduleStatus(): Promise<boolean> {
|
|
||||||
const output = await this.execGit(['submodule', 'status'], true)
|
|
||||||
core.debug(output.stdout)
|
|
||||||
return output.exitCode === 0
|
|
||||||
}
|
|
||||||
|
|
||||||
async tagExists(pattern: string): Promise<boolean> {
|
async tagExists(pattern: string): Promise<boolean> {
|
||||||
const output = await this.execGit(['tag', '--list', pattern])
|
const output = await this.execGit(['tag', '--list', pattern])
|
||||||
return !!output.stdout.trim()
|
return !!output.stdout.trim()
|
||||||
|
@ -477,23 +381,16 @@ class GitCommandManager {
|
||||||
|
|
||||||
static async createCommandManager(
|
static async createCommandManager(
|
||||||
workingDirectory: string,
|
workingDirectory: string,
|
||||||
lfs: boolean,
|
lfs: boolean
|
||||||
doSparseCheckout: boolean
|
|
||||||
): Promise<GitCommandManager> {
|
): Promise<GitCommandManager> {
|
||||||
const result = new GitCommandManager()
|
const result = new GitCommandManager()
|
||||||
await result.initializeCommandManager(
|
await result.initializeCommandManager(workingDirectory, lfs)
|
||||||
workingDirectory,
|
|
||||||
lfs,
|
|
||||||
doSparseCheckout
|
|
||||||
)
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private async execGit(
|
private async execGit(
|
||||||
args: string[],
|
args: string[],
|
||||||
allowAllExitCodes = false,
|
allowAllExitCodes = false
|
||||||
silent = false,
|
|
||||||
customListeners = {}
|
|
||||||
): Promise<GitOutput> {
|
): Promise<GitOutput> {
|
||||||
fshelper.directoryExistsSync(this.workingDirectory, true)
|
fshelper.directoryExistsSync(this.workingDirectory, true)
|
||||||
|
|
||||||
|
@ -507,36 +404,27 @@ class GitCommandManager {
|
||||||
env[key] = this.gitEnv[key]
|
env[key] = this.gitEnv[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultListener = {
|
|
||||||
stdout: (data: Buffer) => {
|
|
||||||
stdout.push(data.toString())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const mergedListeners = {...defaultListener, ...customListeners}
|
|
||||||
|
|
||||||
const stdout: string[] = []
|
const stdout: string[] = []
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
cwd: this.workingDirectory,
|
cwd: this.workingDirectory,
|
||||||
env,
|
env,
|
||||||
silent,
|
|
||||||
ignoreReturnCode: allowAllExitCodes,
|
ignoreReturnCode: allowAllExitCodes,
|
||||||
listeners: mergedListeners
|
listeners: {
|
||||||
|
stdout: (data: Buffer) => {
|
||||||
|
stdout.push(data.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.exitCode = await exec.exec(`"${this.gitPath}"`, args, options)
|
result.exitCode = await exec.exec(`"${this.gitPath}"`, args, options)
|
||||||
result.stdout = stdout.join('')
|
result.stdout = stdout.join('')
|
||||||
|
|
||||||
core.debug(result.exitCode.toString())
|
|
||||||
core.debug(result.stdout)
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private async initializeCommandManager(
|
private async initializeCommandManager(
|
||||||
workingDirectory: string,
|
workingDirectory: string,
|
||||||
lfs: boolean,
|
lfs: boolean
|
||||||
doSparseCheckout: boolean
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
this.workingDirectory = workingDirectory
|
this.workingDirectory = workingDirectory
|
||||||
|
|
||||||
|
@ -599,16 +487,6 @@ class GitCommandManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.doSparseCheckout = doSparseCheckout
|
|
||||||
if (this.doSparseCheckout) {
|
|
||||||
// The `git sparse-checkout` command was introduced in Git v2.25.0
|
|
||||||
const minimumGitSparseCheckoutVersion = new GitVersion('2.25')
|
|
||||||
if (!gitVersion.checkMinimum(minimumGitSparseCheckoutVersion)) {
|
|
||||||
throw new Error(
|
|
||||||
`Minimum Git version required for sparse checkout is ${minimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Set the user agent
|
// Set the user agent
|
||||||
const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`
|
const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`
|
||||||
core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
|
core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
|
||||||
|
|
|
@ -39,9 +39,7 @@ export async function prepareExistingDirectory(
|
||||||
try {
|
try {
|
||||||
await io.rmRF(lockPath)
|
await io.rmRF(lockPath)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.debug(
|
core.debug(`Unable to delete '${lockPath}'. ${error.message}`)
|
||||||
`Unable to delete '${lockPath}'. ${(error as any)?.message ?? error}`
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,18 +79,12 @@ export async function prepareExistingDirectory(
|
||||||
}
|
}
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
// Check for submodules and delete any existing files if submodules are present
|
|
||||||
if (!(await git.submoduleStatus())) {
|
|
||||||
remove = true
|
|
||||||
core.info('Bad Submodules found, removing existing files')
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clean
|
// Clean
|
||||||
if (clean) {
|
if (clean) {
|
||||||
core.startGroup('Cleaning the repository')
|
core.startGroup('Cleaning the repository')
|
||||||
if (!(await git.tryClean())) {
|
if (!(await git.tryClean())) {
|
||||||
core.debug(
|
core.debug(
|
||||||
`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For further investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`
|
`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For futher investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`
|
||||||
)
|
)
|
||||||
remove = true
|
remove = true
|
||||||
} else if (!(await git.tryReset())) {
|
} else if (!(await git.tryReset())) {
|
||||||
|
|
|
@ -36,95 +36,68 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
const git = await getGitCommandManager(settings)
|
const git = await getGitCommandManager(settings)
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
let authHelper: gitAuthHelper.IGitAuthHelper | null = null
|
// Prepare existing directory, otherwise recreate
|
||||||
try {
|
if (isExisting) {
|
||||||
if (git) {
|
await gitDirectoryHelper.prepareExistingDirectory(
|
||||||
authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
git,
|
||||||
if (settings.setSafeDirectory) {
|
settings.repositoryPath,
|
||||||
// Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
|
repositoryUrl,
|
||||||
// Otherwise all git commands we run in a container fail
|
settings.clean,
|
||||||
await authHelper.configureTempGlobalConfig()
|
settings.ref
|
||||||
core.info(
|
)
|
||||||
`Adding repository directory to the temporary git global config as a safe directory`
|
}
|
||||||
)
|
|
||||||
|
|
||||||
await git
|
if (!git) {
|
||||||
.config('safe.directory', settings.repositoryPath, true, true)
|
// Downloading using REST API
|
||||||
.catch(error => {
|
core.info(`The repository will be downloaded using the GitHub REST API`)
|
||||||
core.info(
|
core.info(
|
||||||
`Failed to initialize safe directory with error: ${error}`
|
`To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`
|
||||||
)
|
)
|
||||||
})
|
if (settings.submodules) {
|
||||||
|
throw new Error(
|
||||||
stateHelper.setSafeDirectory()
|
`Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`
|
||||||
}
|
)
|
||||||
}
|
} else if (settings.sshKey) {
|
||||||
|
throw new Error(
|
||||||
// Prepare existing directory, otherwise recreate
|
`Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`
|
||||||
if (isExisting) {
|
|
||||||
await gitDirectoryHelper.prepareExistingDirectory(
|
|
||||||
git,
|
|
||||||
settings.repositoryPath,
|
|
||||||
repositoryUrl,
|
|
||||||
settings.clean,
|
|
||||||
settings.ref
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!git) {
|
await githubApiHelper.downloadRepository(
|
||||||
// Downloading using REST API
|
settings.authToken,
|
||||||
core.info(`The repository will be downloaded using the GitHub REST API`)
|
settings.repositoryOwner,
|
||||||
core.info(
|
settings.repositoryName,
|
||||||
`To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`
|
settings.ref,
|
||||||
)
|
settings.commit,
|
||||||
if (settings.submodules) {
|
settings.repositoryPath
|
||||||
throw new Error(
|
)
|
||||||
`Input 'submodules' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`
|
return
|
||||||
)
|
}
|
||||||
} else if (settings.sshKey) {
|
|
||||||
throw new Error(
|
|
||||||
`Input 'ssh-key' not supported when falling back to download using the GitHub REST API. To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH.`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
await githubApiHelper.downloadRepository(
|
// Save state for POST action
|
||||||
settings.authToken,
|
stateHelper.setRepositoryPath(settings.repositoryPath)
|
||||||
settings.repositoryOwner,
|
|
||||||
settings.repositoryName,
|
|
||||||
settings.ref,
|
|
||||||
settings.commit,
|
|
||||||
settings.repositoryPath,
|
|
||||||
settings.githubServerUrl
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save state for POST action
|
// Initialize the repository
|
||||||
stateHelper.setRepositoryPath(settings.repositoryPath)
|
if (
|
||||||
|
!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))
|
||||||
// Initialize the repository
|
) {
|
||||||
if (
|
core.startGroup('Initializing the repository')
|
||||||
!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))
|
await git.init()
|
||||||
) {
|
await git.remoteAdd('origin', repositoryUrl)
|
||||||
core.startGroup('Initializing the repository')
|
|
||||||
await git.init()
|
|
||||||
await git.remoteAdd('origin', repositoryUrl)
|
|
||||||
core.endGroup()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable automatic garbage collection
|
|
||||||
core.startGroup('Disabling automatic garbage collection')
|
|
||||||
if (!(await git.tryDisableAutomaticGarbageCollection())) {
|
|
||||||
core.warning(
|
|
||||||
`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
}
|
||||||
|
|
||||||
// If we didn't initialize it above, do it now
|
// Disable automatic garbage collection
|
||||||
if (!authHelper) {
|
core.startGroup('Disabling automatic garbage collection')
|
||||||
authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
if (!(await git.tryDisableAutomaticGarbageCollection())) {
|
||||||
}
|
core.warning(
|
||||||
|
`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
core.endGroup()
|
||||||
|
|
||||||
|
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
||||||
|
try {
|
||||||
// Configure auth
|
// Configure auth
|
||||||
core.startGroup('Setting up auth')
|
core.startGroup('Setting up auth')
|
||||||
await authHelper.configureAuth()
|
await authHelper.configureAuth()
|
||||||
|
@ -139,8 +112,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
settings.ref = await githubApiHelper.getDefaultBranch(
|
settings.ref = await githubApiHelper.getDefaultBranch(
|
||||||
settings.authToken,
|
settings.authToken,
|
||||||
settings.repositoryOwner,
|
settings.repositoryOwner,
|
||||||
settings.repositoryName,
|
settings.repositoryName
|
||||||
settings.githubServerUrl
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
@ -153,33 +125,23 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
|
|
||||||
// Fetch
|
// Fetch
|
||||||
core.startGroup('Fetching the repository')
|
core.startGroup('Fetching the repository')
|
||||||
const fetchOptions: {
|
|
||||||
filter?: string
|
|
||||||
fetchDepth?: number
|
|
||||||
fetchTags?: boolean
|
|
||||||
showProgress?: boolean
|
|
||||||
} = {}
|
|
||||||
if (settings.sparseCheckout) fetchOptions.filter = 'blob:none'
|
|
||||||
if (settings.fetchDepth <= 0) {
|
if (settings.fetchDepth <= 0) {
|
||||||
// Fetch all branches and tags
|
// Fetch all branches and tags
|
||||||
let refSpec = refHelper.getRefSpecForAllHistory(
|
let refSpec = refHelper.getRefSpecForAllHistory(
|
||||||
settings.ref,
|
settings.ref,
|
||||||
settings.commit
|
settings.commit
|
||||||
)
|
)
|
||||||
await git.fetch(refSpec, fetchOptions)
|
await git.fetch(refSpec)
|
||||||
|
|
||||||
// When all history is fetched, the ref we're interested in may have moved to a different
|
// When all history is fetched, the ref we're interested in may have moved to a different
|
||||||
// commit (push or force push). If so, fetch again with a targeted refspec.
|
// commit (push or force push). If so, fetch again with a targeted refspec.
|
||||||
if (!(await refHelper.testRef(git, settings.ref, settings.commit))) {
|
if (!(await refHelper.testRef(git, settings.ref, settings.commit))) {
|
||||||
refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
||||||
await git.fetch(refSpec, fetchOptions)
|
await git.fetch(refSpec)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fetchOptions.fetchDepth = settings.fetchDepth
|
|
||||||
fetchOptions.fetchTags = settings.fetchTags
|
|
||||||
fetchOptions.showProgress = settings.showProgress
|
|
||||||
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
||||||
await git.fetch(refSpec, fetchOptions)
|
await git.fetch(refSpec, settings.fetchDepth)
|
||||||
}
|
}
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
|
@ -195,24 +157,12 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
// LFS fetch
|
// LFS fetch
|
||||||
// Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
|
// Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
|
||||||
// Explicit lfs fetch will fetch lfs objects in parallel.
|
// Explicit lfs fetch will fetch lfs objects in parallel.
|
||||||
// For sparse checkouts, let `checkout` fetch the needed objects lazily.
|
if (settings.lfs) {
|
||||||
if (settings.lfs && !settings.sparseCheckout) {
|
|
||||||
core.startGroup('Fetching LFS objects')
|
core.startGroup('Fetching LFS objects')
|
||||||
await git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref)
|
await git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref)
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sparse checkout
|
|
||||||
if (settings.sparseCheckout) {
|
|
||||||
core.startGroup('Setting up sparse checkout')
|
|
||||||
if (settings.sparseCheckoutConeMode) {
|
|
||||||
await git.sparseCheckout(settings.sparseCheckout)
|
|
||||||
} else {
|
|
||||||
await git.sparseCheckoutNonConeMode(settings.sparseCheckout)
|
|
||||||
}
|
|
||||||
core.endGroup()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Checkout
|
// Checkout
|
||||||
core.startGroup('Checking out the ref')
|
core.startGroup('Checking out the ref')
|
||||||
await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint)
|
await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint)
|
||||||
|
@ -220,35 +170,40 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
|
|
||||||
// Submodules
|
// Submodules
|
||||||
if (settings.submodules) {
|
if (settings.submodules) {
|
||||||
// Temporarily override global config
|
try {
|
||||||
core.startGroup('Setting up auth for fetching submodules')
|
// Temporarily override global config
|
||||||
await authHelper.configureGlobalAuth()
|
core.startGroup('Setting up auth for fetching submodules')
|
||||||
core.endGroup()
|
await authHelper.configureGlobalAuth()
|
||||||
|
|
||||||
// Checkout submodules
|
|
||||||
core.startGroup('Fetching submodules')
|
|
||||||
await git.submoduleSync(settings.nestedSubmodules)
|
|
||||||
await git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules)
|
|
||||||
await git.submoduleForeach(
|
|
||||||
'git config --local gc.auto 0',
|
|
||||||
settings.nestedSubmodules
|
|
||||||
)
|
|
||||||
core.endGroup()
|
|
||||||
|
|
||||||
// Persist credentials
|
|
||||||
if (settings.persistCredentials) {
|
|
||||||
core.startGroup('Persisting credentials for submodules')
|
|
||||||
await authHelper.configureSubmoduleAuth()
|
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
|
// Checkout submodules
|
||||||
|
core.startGroup('Fetching submodules')
|
||||||
|
await git.submoduleSync(settings.nestedSubmodules)
|
||||||
|
await git.submoduleUpdate(
|
||||||
|
settings.fetchDepth,
|
||||||
|
settings.nestedSubmodules
|
||||||
|
)
|
||||||
|
await git.submoduleForeach(
|
||||||
|
'git config --local gc.auto 0',
|
||||||
|
settings.nestedSubmodules
|
||||||
|
)
|
||||||
|
core.endGroup()
|
||||||
|
|
||||||
|
// Persist credentials
|
||||||
|
if (settings.persistCredentials) {
|
||||||
|
core.startGroup('Persisting credentials for submodules')
|
||||||
|
await authHelper.configureSubmoduleAuth()
|
||||||
|
core.endGroup()
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
// Remove temporary global config override
|
||||||
|
await authHelper.removeGlobalAuth()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get commit information
|
// Dump some info about the checked out commit
|
||||||
const commitInfo = await git.log1()
|
const commitInfo = await git.log1()
|
||||||
|
|
||||||
// Log commit sha
|
|
||||||
await git.log1("--format='%H'")
|
|
||||||
|
|
||||||
// Check for incorrect pull request merge commit
|
// Check for incorrect pull request merge commit
|
||||||
await refHelper.checkCommitInfo(
|
await refHelper.checkCommitInfo(
|
||||||
settings.authToken,
|
settings.authToken,
|
||||||
|
@ -256,18 +211,14 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||||
settings.repositoryOwner,
|
settings.repositoryOwner,
|
||||||
settings.repositoryName,
|
settings.repositoryName,
|
||||||
settings.ref,
|
settings.ref,
|
||||||
settings.commit,
|
settings.commit
|
||||||
settings.githubServerUrl
|
|
||||||
)
|
)
|
||||||
} finally {
|
} finally {
|
||||||
// Remove auth
|
// Remove auth
|
||||||
if (authHelper) {
|
if (!settings.persistCredentials) {
|
||||||
if (!settings.persistCredentials) {
|
core.startGroup('Removing auth')
|
||||||
core.startGroup('Removing auth')
|
await authHelper.removeAuth()
|
||||||
await authHelper.removeAuth()
|
core.endGroup()
|
||||||
core.endGroup()
|
|
||||||
}
|
|
||||||
authHelper.removeGlobalConfig()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -283,37 +234,14 @@ export async function cleanup(repositoryPath: string): Promise<void> {
|
||||||
|
|
||||||
let git: IGitCommandManager
|
let git: IGitCommandManager
|
||||||
try {
|
try {
|
||||||
git = await gitCommandManager.createCommandManager(
|
git = await gitCommandManager.createCommandManager(repositoryPath, false)
|
||||||
repositoryPath,
|
|
||||||
false,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
} catch {
|
} catch {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove auth
|
// Remove auth
|
||||||
const authHelper = gitAuthHelper.createAuthHelper(git)
|
const authHelper = gitAuthHelper.createAuthHelper(git)
|
||||||
try {
|
await authHelper.removeAuth()
|
||||||
if (stateHelper.PostSetSafeDirectory) {
|
|
||||||
// Setup the repository path as a safe directory, so if we pass this into a container job with a different user it doesn't fail
|
|
||||||
// Otherwise all git commands we run in a container fail
|
|
||||||
await authHelper.configureTempGlobalConfig()
|
|
||||||
core.info(
|
|
||||||
`Adding repository directory to the temporary git global config as a safe directory`
|
|
||||||
)
|
|
||||||
|
|
||||||
await git
|
|
||||||
.config('safe.directory', repositoryPath, true, true)
|
|
||||||
.catch(error => {
|
|
||||||
core.info(`Failed to initialize safe directory with error: ${error}`)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
await authHelper.removeAuth()
|
|
||||||
} finally {
|
|
||||||
await authHelper.removeGlobalConfig()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getGitCommandManager(
|
async function getGitCommandManager(
|
||||||
|
@ -323,8 +251,7 @@ async function getGitCommandManager(
|
||||||
try {
|
try {
|
||||||
return await gitCommandManager.createCommandManager(
|
return await gitCommandManager.createCommandManager(
|
||||||
settings.repositoryPath,
|
settings.repositoryPath,
|
||||||
settings.lfs,
|
settings.lfs
|
||||||
settings.sparseCheckout != null
|
|
||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Git is required for LFS
|
// Git is required for LFS
|
||||||
|
|
|
@ -29,31 +29,11 @@ export interface IGitSourceSettings {
|
||||||
*/
|
*/
|
||||||
clean: boolean
|
clean: boolean
|
||||||
|
|
||||||
/**
|
|
||||||
* The array of folders to make the sparse checkout
|
|
||||||
*/
|
|
||||||
sparseCheckout: string[]
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether to use cone mode in the sparse checkout (if any)
|
|
||||||
*/
|
|
||||||
sparseCheckoutConeMode: boolean
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The depth when fetching
|
* The depth when fetching
|
||||||
*/
|
*/
|
||||||
fetchDepth: number
|
fetchDepth: number
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch tags, even if fetchDepth > 0 (default: false)
|
|
||||||
*/
|
|
||||||
fetchTags: boolean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether to use the --progress option when fetching
|
|
||||||
*/
|
|
||||||
showProgress: boolean
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether to fetch LFS objects
|
* Indicates whether to fetch LFS objects
|
||||||
*/
|
*/
|
||||||
|
@ -93,19 +73,4 @@ export interface IGitSourceSettings {
|
||||||
* Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
|
* Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
|
||||||
*/
|
*/
|
||||||
persistCredentials: boolean
|
persistCredentials: boolean
|
||||||
|
|
||||||
/**
|
|
||||||
* Organization ID for the currently running workflow (used for auth settings)
|
|
||||||
*/
|
|
||||||
workflowOrganizationId: number | undefined
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether to add repositoryPath as safe.directory in git global config
|
|
||||||
*/
|
|
||||||
setSafeDirectory: boolean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User override on the GitHub Server/Host URL that hosts the repository to be cloned
|
|
||||||
*/
|
|
||||||
githubServerUrl: string | undefined
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import * as path from 'path'
|
||||||
import * as retryHelper from './retry-helper'
|
import * as retryHelper from './retry-helper'
|
||||||
import * as toolCache from '@actions/tool-cache'
|
import * as toolCache from '@actions/tool-cache'
|
||||||
import {default as uuid} from 'uuid/v4'
|
import {default as uuid} from 'uuid/v4'
|
||||||
import {getServerApiUrl} from './url-helper'
|
import {Octokit} from '@octokit/rest'
|
||||||
|
|
||||||
const IS_WINDOWS = process.platform === 'win32'
|
const IS_WINDOWS = process.platform === 'win32'
|
||||||
|
|
||||||
|
@ -17,19 +17,18 @@ export async function downloadRepository(
|
||||||
repo: string,
|
repo: string,
|
||||||
ref: string,
|
ref: string,
|
||||||
commit: string,
|
commit: string,
|
||||||
repositoryPath: string,
|
repositoryPath: string
|
||||||
baseUrl?: string
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
// Determine the default branch
|
// Determine the default branch
|
||||||
if (!ref && !commit) {
|
if (!ref && !commit) {
|
||||||
core.info('Determining the default branch')
|
core.info('Determining the default branch')
|
||||||
ref = await getDefaultBranch(authToken, owner, repo, baseUrl)
|
ref = await getDefaultBranch(authToken, owner, repo)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download the archive
|
// Download the archive
|
||||||
let archiveData = await retryHelper.execute(async () => {
|
let archiveData = await retryHelper.execute(async () => {
|
||||||
core.info('Downloading the archive')
|
core.info('Downloading the archive')
|
||||||
return await downloadArchive(authToken, owner, repo, ref, commit, baseUrl)
|
return await downloadArchive(authToken, owner, repo, ref, commit)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Write archive to disk
|
// Write archive to disk
|
||||||
|
@ -48,7 +47,7 @@ export async function downloadRepository(
|
||||||
} else {
|
} else {
|
||||||
await toolCache.extractTar(archivePath, extractPath)
|
await toolCache.extractTar(archivePath, extractPath)
|
||||||
}
|
}
|
||||||
await io.rmRF(archivePath)
|
io.rmRF(archivePath)
|
||||||
|
|
||||||
// Determine the path of the repository content. The archive contains
|
// Determine the path of the repository content. The archive contains
|
||||||
// a top-level folder and the repository content is inside.
|
// a top-level folder and the repository content is inside.
|
||||||
|
@ -71,7 +70,7 @@ export async function downloadRepository(
|
||||||
await io.mv(sourcePath, targetPath)
|
await io.mv(sourcePath, targetPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await io.rmRF(extractPath)
|
io.rmRF(extractPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,26 +79,20 @@ export async function downloadRepository(
|
||||||
export async function getDefaultBranch(
|
export async function getDefaultBranch(
|
||||||
authToken: string,
|
authToken: string,
|
||||||
owner: string,
|
owner: string,
|
||||||
repo: string,
|
repo: string
|
||||||
baseUrl?: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
return await retryHelper.execute(async () => {
|
return await retryHelper.execute(async () => {
|
||||||
core.info('Retrieving the default branch name')
|
core.info('Retrieving the default branch name')
|
||||||
const octokit = github.getOctokit(authToken, {
|
const octokit = new github.GitHub(authToken)
|
||||||
baseUrl: getServerApiUrl(baseUrl)
|
|
||||||
})
|
|
||||||
let result: string
|
let result: string
|
||||||
try {
|
try {
|
||||||
// Get the default branch from the repo info
|
// Get the default branch from the repo info
|
||||||
const response = await octokit.rest.repos.get({owner, repo})
|
const response = await octokit.repos.get({owner, repo})
|
||||||
result = response.data.default_branch
|
result = response.data.default_branch
|
||||||
assert.ok(result, 'default_branch cannot be empty')
|
assert.ok(result, 'default_branch cannot be empty')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Handle .wiki repo
|
// Handle .wiki repo
|
||||||
if (
|
if (err['status'] === 404 && repo.toUpperCase().endsWith('.WIKI')) {
|
||||||
(err as any)?.status === 404 &&
|
|
||||||
repo.toUpperCase().endsWith('.WIKI')
|
|
||||||
) {
|
|
||||||
result = 'master'
|
result = 'master'
|
||||||
}
|
}
|
||||||
// Otherwise error
|
// Otherwise error
|
||||||
|
@ -125,19 +118,21 @@ async function downloadArchive(
|
||||||
owner: string,
|
owner: string,
|
||||||
repo: string,
|
repo: string,
|
||||||
ref: string,
|
ref: string,
|
||||||
commit: string,
|
commit: string
|
||||||
baseUrl?: string
|
|
||||||
): Promise<Buffer> {
|
): Promise<Buffer> {
|
||||||
const octokit = github.getOctokit(authToken, {
|
const octokit = new github.GitHub(authToken)
|
||||||
baseUrl: getServerApiUrl(baseUrl)
|
const params: Octokit.ReposGetArchiveLinkParams = {
|
||||||
})
|
|
||||||
const download = IS_WINDOWS
|
|
||||||
? octokit.rest.repos.downloadZipballArchive
|
|
||||||
: octokit.rest.repos.downloadTarballArchive
|
|
||||||
const response = await download({
|
|
||||||
owner: owner,
|
owner: owner,
|
||||||
repo: repo,
|
repo: repo,
|
||||||
|
archive_format: IS_WINDOWS ? 'zipball' : 'tarball',
|
||||||
ref: commit || ref
|
ref: commit || ref
|
||||||
})
|
}
|
||||||
return Buffer.from(response.data as ArrayBuffer) // response.data is ArrayBuffer
|
const response = await octokit.repos.getArchiveLink(params)
|
||||||
|
if (response.status != 200) {
|
||||||
|
throw new Error(
|
||||||
|
`Unexpected response from GitHub API. Status: ${response.status}, Data: ${response.data}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Buffer.from(response.data) // response.data is ArrayBuffer
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,9 @@ import * as core from '@actions/core'
|
||||||
import * as fsHelper from './fs-helper'
|
import * as fsHelper from './fs-helper'
|
||||||
import * as github from '@actions/github'
|
import * as github from '@actions/github'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import * as workflowContextHelper from './workflow-context-helper'
|
|
||||||
import {IGitSourceSettings} from './git-source-settings'
|
import {IGitSourceSettings} from './git-source-settings'
|
||||||
|
|
||||||
export async function getInputs(): Promise<IGitSourceSettings> {
|
export function getInputs(): IGitSourceSettings {
|
||||||
const result = ({} as unknown) as IGitSourceSettings
|
const result = ({} as unknown) as IGitSourceSettings
|
||||||
|
|
||||||
// GitHub workspace
|
// GitHub workspace
|
||||||
|
@ -64,7 +63,7 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||||
result.commit = github.context.sha
|
result.commit = github.context.sha
|
||||||
|
|
||||||
// Some events have an unqualifed ref. For example when a PR is merged (pull_request closed event),
|
// Some events have an unqualifed ref. For example when a PR is merged (pull_request closed event),
|
||||||
// the ref is unqualifed like "main" instead of "refs/heads/main".
|
// the ref is unqualifed like "master" instead of "refs/heads/master".
|
||||||
if (result.commit && result.ref && !result.ref.startsWith('refs/')) {
|
if (result.commit && result.ref && !result.ref.startsWith('refs/')) {
|
||||||
result.ref = `refs/heads/${result.ref}`
|
result.ref = `refs/heads/${result.ref}`
|
||||||
}
|
}
|
||||||
|
@ -82,17 +81,6 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||||
result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
|
result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
|
||||||
core.debug(`clean = ${result.clean}`)
|
core.debug(`clean = ${result.clean}`)
|
||||||
|
|
||||||
// Sparse checkout
|
|
||||||
const sparseCheckout = core.getMultilineInput('sparse-checkout')
|
|
||||||
if (sparseCheckout.length) {
|
|
||||||
result.sparseCheckout = sparseCheckout
|
|
||||||
core.debug(`sparse checkout = ${result.sparseCheckout}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
result.sparseCheckoutConeMode =
|
|
||||||
(core.getInput('sparse-checkout-cone-mode') || 'true').toUpperCase() ===
|
|
||||||
'TRUE'
|
|
||||||
|
|
||||||
// Fetch depth
|
// Fetch depth
|
||||||
result.fetchDepth = Math.floor(Number(core.getInput('fetch-depth') || '1'))
|
result.fetchDepth = Math.floor(Number(core.getInput('fetch-depth') || '1'))
|
||||||
if (isNaN(result.fetchDepth) || result.fetchDepth < 0) {
|
if (isNaN(result.fetchDepth) || result.fetchDepth < 0) {
|
||||||
|
@ -100,16 +88,6 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||||
}
|
}
|
||||||
core.debug(`fetch depth = ${result.fetchDepth}`)
|
core.debug(`fetch depth = ${result.fetchDepth}`)
|
||||||
|
|
||||||
// Fetch tags
|
|
||||||
result.fetchTags =
|
|
||||||
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'
|
|
||||||
core.debug(`fetch tags = ${result.fetchTags}`)
|
|
||||||
|
|
||||||
// Show fetch progress
|
|
||||||
result.showProgress =
|
|
||||||
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'
|
|
||||||
core.debug(`show progress = ${result.showProgress}`)
|
|
||||||
|
|
||||||
// LFS
|
// LFS
|
||||||
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
|
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
|
||||||
core.debug(`lfs = ${result.lfs}`)
|
core.debug(`lfs = ${result.lfs}`)
|
||||||
|
@ -140,16 +118,5 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||||
result.persistCredentials =
|
result.persistCredentials =
|
||||||
(core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'
|
(core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'
|
||||||
|
|
||||||
// Workflow organization ID
|
|
||||||
result.workflowOrganizationId = await workflowContextHelper.getOrganizationId()
|
|
||||||
|
|
||||||
// Set safe.directory in git global config.
|
|
||||||
result.setSafeDirectory =
|
|
||||||
(core.getInput('set-safe-directory') || 'true').toUpperCase() === 'TRUE'
|
|
||||||
|
|
||||||
// Determine the GitHub URL that the repository is being hosted from
|
|
||||||
result.githubServerUrl = core.getInput('github-server-url')
|
|
||||||
core.debug(`GitHub Host URL = ${result.githubServerUrl}`)
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import * as stateHelper from './state-helper'
|
||||||
|
|
||||||
async function run(): Promise<void> {
|
async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const sourceSettings = await inputHelper.getInputs()
|
const sourceSettings = inputHelper.getInputs()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Register problem matcher
|
// Register problem matcher
|
||||||
|
@ -24,7 +24,7 @@ async function run(): Promise<void> {
|
||||||
coreCommand.issueCommand('remove-matcher', {owner: 'checkout-git'}, '')
|
coreCommand.issueCommand('remove-matcher', {owner: 'checkout-git'}, '')
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`${(error as any)?.message ?? error}`)
|
core.setFailed(error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ async function cleanup(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
await gitSourceProvider.cleanup(stateHelper.RepositoryPath)
|
await gitSourceProvider.cleanup(stateHelper.RepositoryPath)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.warning(`${(error as any)?.message ?? error}`)
|
core.warning(error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ import * as yaml from 'js-yaml'
|
||||||
|
|
||||||
function updateUsage(
|
function updateUsage(
|
||||||
actionReference: string,
|
actionReference: string,
|
||||||
actionYamlPath = 'action.yml',
|
actionYamlPath: string = 'action.yml',
|
||||||
readmePath = 'README.md',
|
readmePath: string = 'README.md',
|
||||||
startToken = '<!-- start usage -->',
|
startToken: string = '<!-- start usage -->',
|
||||||
endToken = '<!-- end usage -->'
|
endToken: string = '<!-- end usage -->'
|
||||||
): void {
|
): void {
|
||||||
if (!actionReference) {
|
if (!actionReference) {
|
||||||
throw new Error('Parameter actionReference must not be empty')
|
throw new Error('Parameter actionReference must not be empty')
|
||||||
|
@ -120,7 +120,7 @@ function updateUsage(
|
||||||
}
|
}
|
||||||
|
|
||||||
updateUsage(
|
updateUsage(
|
||||||
'actions/checkout@v4',
|
'actions/checkout@v2',
|
||||||
path.join(__dirname, '..', '..', 'action.yml'),
|
path.join(__dirname, '..', '..', 'action.yml'),
|
||||||
path.join(__dirname, '..', '..', 'README.md')
|
path.join(__dirname, '..', '..', 'README.md')
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
src/misc/licensed-download.sh
|
|
||||||
|
|
||||||
echo 'Running: licensed cached'
|
|
||||||
_temp/licensed-3.6.0/licensed status
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ ! -f _temp/licensed-3.6.0.done ]; then
|
|
||||||
echo 'Clearing temp'
|
|
||||||
rm -rf _temp/licensed-3.6.0 || true
|
|
||||||
|
|
||||||
echo 'Downloading licensed'
|
|
||||||
mkdir -p _temp/licensed-3.6.0
|
|
||||||
pushd _temp/licensed-3.6.0
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.6.0/licensed-3.6.0-darwin-x64.tar.gz
|
|
||||||
else
|
|
||||||
curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.6.0/licensed-3.6.0-linux-x64.tar.gz
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'Extracting licenesed'
|
|
||||||
tar -xzf licensed.tar.gz
|
|
||||||
popd
|
|
||||||
touch _temp/licensed-3.6.0.done
|
|
||||||
else
|
|
||||||
echo 'Licensed already downloaded'
|
|
||||||
fi
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
src/misc/licensed-download.sh
|
|
||||||
|
|
||||||
echo 'Running: licensed cached'
|
|
||||||
_temp/licensed-3.6.0/licensed cache
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
import {URL} from 'url'
|
||||||
import {IGitCommandManager} from './git-command-manager'
|
import {IGitCommandManager} from './git-command-manager'
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as github from '@actions/github'
|
import * as github from '@actions/github'
|
||||||
import {getServerApiUrl, isGhes} from './url-helper'
|
|
||||||
|
|
||||||
export const tagsRefSpec = '+refs/tags/*:refs/tags/*'
|
export const tagsRefSpec = '+refs/tags/*:refs/tags/*'
|
||||||
|
|
||||||
|
@ -183,12 +183,11 @@ export async function checkCommitInfo(
|
||||||
repositoryOwner: string,
|
repositoryOwner: string,
|
||||||
repositoryName: string,
|
repositoryName: string,
|
||||||
ref: string,
|
ref: string,
|
||||||
commit: string,
|
commit: string
|
||||||
baseUrl?: string
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
try {
|
try {
|
||||||
// GHES?
|
// GHES?
|
||||||
if (isGhes(baseUrl)) {
|
if (isGhes()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,23 +243,17 @@ export async function checkCommitInfo(
|
||||||
core.debug(
|
core.debug(
|
||||||
`Expected head sha ${expectedHeadSha}; actual head sha ${actualHeadSha}`
|
`Expected head sha ${expectedHeadSha}; actual head sha ${actualHeadSha}`
|
||||||
)
|
)
|
||||||
const octokit = github.getOctokit(token, {
|
const octokit = new github.GitHub(token, {
|
||||||
baseUrl: getServerApiUrl(baseUrl),
|
|
||||||
userAgent: `actions-checkout-tracepoint/1.0 (code=STALE_MERGE;owner=${repositoryOwner};repo=${repositoryName};pr=${fromPayload(
|
userAgent: `actions-checkout-tracepoint/1.0 (code=STALE_MERGE;owner=${repositoryOwner};repo=${repositoryName};pr=${fromPayload(
|
||||||
'number'
|
'number'
|
||||||
)};run_id=${
|
)};run_id=${
|
||||||
process.env['GITHUB_RUN_ID']
|
process.env['GITHUB_RUN_ID']
|
||||||
};expected_head_sha=${expectedHeadSha};actual_head_sha=${actualHeadSha})`
|
};expected_head_sha=${expectedHeadSha};actual_head_sha=${actualHeadSha})`
|
||||||
})
|
})
|
||||||
await octokit.rest.repos.get({
|
await octokit.repos.get({owner: repositoryOwner, repo: repositoryName})
|
||||||
owner: repositoryOwner,
|
|
||||||
repo: repositoryName
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.debug(
|
core.debug(`Error when validating commit info: ${err.stack}`)
|
||||||
`Error when validating commit info: ${(err as any)?.stack ?? err}`
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,3 +274,10 @@ function select(obj: any, path: string): any {
|
||||||
const key = path.substr(0, i)
|
const key = path.substr(0, i)
|
||||||
return select(obj[key], path.substr(i + 1))
|
return select(obj[key], path.substr(i + 1))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isGhes(): boolean {
|
||||||
|
const ghUrl = new URL(
|
||||||
|
process.env['GITHUB_SERVER_URL'] || 'https://github.com'
|
||||||
|
)
|
||||||
|
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
|
||||||
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ export class RetryHelper {
|
||||||
try {
|
try {
|
||||||
return await action()
|
return await action()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.info((err as any)?.message)
|
core.info(err.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sleep
|
// Sleep
|
||||||
|
|
|
@ -1,60 +1,58 @@
|
||||||
import * as core from '@actions/core'
|
import * as coreCommand from '@actions/core/lib/command'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether the POST action is running
|
* Indicates whether the POST action is running
|
||||||
*/
|
*/
|
||||||
export const IsPost = !!core.getState('isPost')
|
export const IsPost = !!process.env['STATE_isPost']
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The repository path for the POST action. The value is empty during the MAIN action.
|
* The repository path for the POST action. The value is empty during the MAIN action.
|
||||||
*/
|
*/
|
||||||
export const RepositoryPath = core.getState('repositoryPath')
|
export const RepositoryPath =
|
||||||
|
(process.env['STATE_repositoryPath'] as string) || ''
|
||||||
/**
|
|
||||||
* The set-safe-directory for the POST action. The value is set if input: 'safe-directory' is set during the MAIN action.
|
|
||||||
*/
|
|
||||||
export const PostSetSafeDirectory = core.getState('setSafeDirectory') === 'true'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The SSH key path for the POST action. The value is empty during the MAIN action.
|
* The SSH key path for the POST action. The value is empty during the MAIN action.
|
||||||
*/
|
*/
|
||||||
export const SshKeyPath = core.getState('sshKeyPath')
|
export const SshKeyPath = (process.env['STATE_sshKeyPath'] as string) || ''
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The SSH known hosts path for the POST action. The value is empty during the MAIN action.
|
* The SSH known hosts path for the POST action. The value is empty during the MAIN action.
|
||||||
*/
|
*/
|
||||||
export const SshKnownHostsPath = core.getState('sshKnownHostsPath')
|
export const SshKnownHostsPath =
|
||||||
|
(process.env['STATE_sshKnownHostsPath'] as string) || ''
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the repository path so the POST action can retrieve the value.
|
* Save the repository path so the POST action can retrieve the value.
|
||||||
*/
|
*/
|
||||||
export function setRepositoryPath(repositoryPath: string) {
|
export function setRepositoryPath(repositoryPath: string) {
|
||||||
core.saveState('repositoryPath', repositoryPath)
|
coreCommand.issueCommand(
|
||||||
|
'save-state',
|
||||||
|
{name: 'repositoryPath'},
|
||||||
|
repositoryPath
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the SSH key path so the POST action can retrieve the value.
|
* Save the SSH key path so the POST action can retrieve the value.
|
||||||
*/
|
*/
|
||||||
export function setSshKeyPath(sshKeyPath: string) {
|
export function setSshKeyPath(sshKeyPath: string) {
|
||||||
core.saveState('sshKeyPath', sshKeyPath)
|
coreCommand.issueCommand('save-state', {name: 'sshKeyPath'}, sshKeyPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the SSH known hosts path so the POST action can retrieve the value.
|
* Save the SSH known hosts path so the POST action can retrieve the value.
|
||||||
*/
|
*/
|
||||||
export function setSshKnownHostsPath(sshKnownHostsPath: string) {
|
export function setSshKnownHostsPath(sshKnownHostsPath: string) {
|
||||||
core.saveState('sshKnownHostsPath', sshKnownHostsPath)
|
coreCommand.issueCommand(
|
||||||
}
|
'save-state',
|
||||||
|
{name: 'sshKnownHostsPath'},
|
||||||
/**
|
sshKnownHostsPath
|
||||||
* Save the set-safe-directory input so the POST action can retrieve the value.
|
)
|
||||||
*/
|
|
||||||
export function setSafeDirectory() {
|
|
||||||
core.saveState('setSafeDirectory', 'true')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
|
// Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
|
||||||
// This is necessary since we don't have a separate entry point.
|
// This is necessary since we don't have a separate entry point.
|
||||||
if (!IsPost) {
|
if (!IsPost) {
|
||||||
core.saveState('isPost', 'true')
|
coreCommand.issueCommand('save-state', {name: 'isPost'}, 'true')
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import * as assert from 'assert'
|
import * as assert from 'assert'
|
||||||
import {URL} from 'url'
|
|
||||||
import {IGitSourceSettings} from './git-source-settings'
|
import {IGitSourceSettings} from './git-source-settings'
|
||||||
|
import {URL} from 'url'
|
||||||
|
|
||||||
export function getFetchUrl(settings: IGitSourceSettings): string {
|
export function getFetchUrl(settings: IGitSourceSettings): string {
|
||||||
assert.ok(
|
assert.ok(
|
||||||
|
@ -8,7 +8,7 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
|
||||||
'settings.repositoryOwner must be defined'
|
'settings.repositoryOwner must be defined'
|
||||||
)
|
)
|
||||||
assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
|
assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
|
||||||
const serviceUrl = getServerUrl(settings.githubServerUrl)
|
const serviceUrl = getServerUrl()
|
||||||
const encodedOwner = encodeURIComponent(settings.repositoryOwner)
|
const encodedOwner = encodeURIComponent(settings.repositoryOwner)
|
||||||
const encodedName = encodeURIComponent(settings.repositoryName)
|
const encodedName = encodeURIComponent(settings.repositoryName)
|
||||||
if (settings.sshKey) {
|
if (settings.sshKey) {
|
||||||
|
@ -19,27 +19,11 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
|
||||||
return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`
|
return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getServerUrl(url?: string): URL {
|
export function getServerUrl(): URL {
|
||||||
let urlValue =
|
// todo: remove GITHUB_URL after support for GHES Alpha is no longer needed
|
||||||
url && url.trim().length > 0
|
return new URL(
|
||||||
? url
|
process.env['GITHUB_SERVER_URL'] ||
|
||||||
: process.env['GITHUB_SERVER_URL'] || 'https://github.com'
|
process.env['GITHUB_URL'] ||
|
||||||
return new URL(urlValue)
|
'https://github.com'
|
||||||
}
|
)
|
||||||
|
|
||||||
export function getServerApiUrl(url?: string): string {
|
|
||||||
let apiUrl = 'https://api.github.com'
|
|
||||||
|
|
||||||
if (isGhes(url)) {
|
|
||||||
const serverUrl = getServerUrl(url)
|
|
||||||
apiUrl = new URL(`${serverUrl.origin}/api/v3`).toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
return apiUrl
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isGhes(url?: string): boolean {
|
|
||||||
const ghUrl = getServerUrl(url)
|
|
||||||
|
|
||||||
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
import * as core from '@actions/core'
|
|
||||||
import * as fs from 'fs'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the organization ID of the running workflow or undefined if the value cannot be loaded from the GITHUB_EVENT_PATH
|
|
||||||
*/
|
|
||||||
export async function getOrganizationId(): Promise<number | undefined> {
|
|
||||||
try {
|
|
||||||
const eventPath = process.env.GITHUB_EVENT_PATH
|
|
||||||
if (!eventPath) {
|
|
||||||
core.debug(`GITHUB_EVENT_PATH is not defined`)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const content = await fs.promises.readFile(eventPath, {encoding: 'utf8'})
|
|
||||||
const event = JSON.parse(content)
|
|
||||||
const id = event?.repository?.owner?.id
|
|
||||||
if (typeof id !== 'number') {
|
|
||||||
core.debug('Repository owner ID not found within GITHUB event info')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return id as number
|
|
||||||
} catch (err) {
|
|
||||||
core.debug(
|
|
||||||
`Unable to load organization ID from GITHUB_EVENT_PATH: ${(err as any)
|
|
||||||
.message || err}`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -10,8 +10,7 @@
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true
|
||||||
"skipLibCheck": true
|
|
||||||
},
|
},
|
||||||
"exclude": ["__test__", "lib", "node_modules"]
|
"exclude": ["__test__", "lib", "node_modules"]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue