diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 6de9a76..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,3 +0,0 @@
-dist/
-lib/
-node_modules/
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index 02c79de..0000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "plugins": ["jest", "@typescript-eslint"],
- "extends": ["plugin:github/es6"],
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": 9,
- "sourceType": "module",
- "project": "./tsconfig.json"
- },
- "rules": {
- "eslint-comments/no-use": "off",
- "import/no-namespace": "off",
- "no-unused-vars": "off",
- "@typescript-eslint/no-unused-vars": "error",
- "@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
- "@typescript-eslint/no-require-imports": "error",
- "@typescript-eslint/array-type": "error",
- "@typescript-eslint/await-thenable": "error",
- "@typescript-eslint/ban-ts-ignore": "error",
- "camelcase": "off",
- "@typescript-eslint/camelcase": "error",
- "@typescript-eslint/class-name-casing": "error",
- "@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
- "@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-empty-interface": "error",
- "@typescript-eslint/no-explicit-any": "error",
- "@typescript-eslint/no-extraneous-class": "error",
- "@typescript-eslint/no-for-in-array": "error",
- "@typescript-eslint/no-inferrable-types": "error",
- "@typescript-eslint/no-misused-new": "error",
- "@typescript-eslint/no-namespace": "error",
- "@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-type-assertion": "error",
- "@typescript-eslint/no-useless-constructor": "error",
- "@typescript-eslint/no-var-requires": "error",
- "@typescript-eslint/prefer-for-of": "warn",
- "@typescript-eslint/prefer-function-type": "warn",
- "@typescript-eslint/prefer-includes": "error",
- "@typescript-eslint/prefer-interface": "error",
- "@typescript-eslint/prefer-string-starts-ends-with": "error",
- "@typescript-eslint/promise-function-async": "error",
- "@typescript-eslint/require-array-sort-compare": "error",
- "@typescript-eslint/restrict-plus-operands": "error",
- "semi": "off",
- "@typescript-eslint/semi": ["error", "never"],
- "@typescript-eslint/type-annotation-spacing": "error",
- "@typescript-eslint/unbound-method": "error"
- },
- "env": {
- "node": true,
- "es6": true,
- "jest/globals": true
- }
-}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
deleted file mode 100644
index 9515999..0000000
--- a/.github/workflows/test.yml
+++ /dev/null
@@ -1,207 +0,0 @@
-name: Build and Test
-
-on:
- pull_request:
- push:
- branches:
- - master
- - releases/*
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/setup-node@v1
- with:
- node-version: 12.x
- - uses: actions/checkout@v2
- - run: npm ci
- - run: npm run build
- - run: npm run format-check
- - run: npm run lint
- - run: npm test
- - name: Verify no unstaged changes
- run: __test__/verify-no-unstaged-changes.sh
-
- test:
- strategy:
- matrix:
- runs-on: [ubuntu-latest, macos-latest, windows-latest]
- runs-on: ${{ matrix.runs-on }}
-
- steps:
- # Clone this repo
- - name: Checkout
- uses: actions/checkout@v2
-
- # Basic checkout
- - name: Checkout basic
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- shell: bash
- run: __test__/verify-basic.sh
-
- # Clean
- - name: Modify work tree
- shell: bash
- run: __test__/modify-work-tree.sh
- - name: Checkout clean
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify clean
- shell: bash
- run: __test__/verify-clean.sh
-
- # Side by side
- - name: Checkout side by side 1
- uses: ./
- with:
- ref: test-data/v2/side-by-side-1
- path: side-by-side-1
- - name: Checkout side by side 2
- uses: ./
- with:
- ref: test-data/v2/side-by-side-2
- path: side-by-side-2
- - name: Verify side by side
- shell: bash
- run: __test__/verify-side-by-side.sh
-
- # LFS
- - name: Checkout LFS
- uses: ./
- with:
- repository: actions/checkout # hardcoded, otherwise doesn't work from a fork
- ref: test-data/v2/lfs
- path: lfs
- lfs: true
- - name: Verify LFS
- shell: bash
- run: __test__/verify-lfs.sh
-
- # Submodules false
- - name: Checkout submodules false
- uses: ./
- with:
- ref: test-data/v2/submodule-ssh-url
- path: submodules-false
- - name: Verify submodules false
- run: __test__/verify-submodules-false.sh
-
- # Submodules one level
- - name: Checkout submodules true
- uses: ./
- with:
- ref: test-data/v2/submodule-ssh-url
- path: submodules-true
- submodules: true
- - name: Verify submodules true
- run: __test__/verify-submodules-true.sh
-
- # Submodules recursive
- - name: Checkout submodules recursive
- uses: ./
- with:
- ref: test-data/v2/submodule-ssh-url
- path: submodules-recursive
- submodules: recursive
- - name: Verify submodules recursive
- run: __test__/verify-submodules-recursive.sh
-
- # Basic checkout using REST API
- - name: Remove basic
- if: runner.os != 'windows'
- run: rm -rf basic
- - name: Remove basic (Windows)
- if: runner.os == 'windows'
- shell: cmd
- run: rmdir /s /q basic
- - name: Override git version
- if: runner.os != 'windows'
- run: __test__/override-git-version.sh
- - name: Override git version (Windows)
- if: runner.os == 'windows'
- run: __test__\\override-git-version.cmd
- - name: Checkout basic using REST API
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- run: __test__/verify-basic.sh --archive
-
- test-proxy:
- runs-on: ubuntu-latest
- container:
- image: alpine/git:latest
- options: --dns 127.0.0.1
- services:
- squid-proxy:
- image: datadog/squid:latest
- ports:
- - 3128:3128
- env:
- https_proxy: http://squid-proxy:3128
- steps:
- # Clone this repo
- - name: Checkout
- uses: actions/checkout@v2
-
- # Basic checkout using git
- - name: Checkout basic
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- run: __test__/verify-basic.sh
-
- # Basic checkout using REST API
- - name: Remove basic
- run: rm -rf basic
- - name: Override git version
- run: __test__/override-git-version.sh
- - name: Basic checkout using REST API
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- run: __test__/verify-basic.sh --archive
-
- test-bypass-proxy:
- runs-on: ubuntu-latest
- env:
- https_proxy: http://no-such-proxy:3128
- no_proxy: api.github.com,github.com
- steps:
- # Clone this repo
- - name: Checkout
- uses: actions/checkout@v2
-
- # Basic checkout using git
- - name: Checkout basic
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- run: __test__/verify-basic.sh
- - name: Remove basic
- run: rm -rf basic
-
- # Basic checkout using REST API
- - name: Override git version
- run: __test__/override-git-version.sh
- - name: Checkout basic using REST API
- uses: ./
- with:
- ref: test-data/v2/basic
- path: basic
- - name: Verify basic
- run: __test__/verify-basic.sh --archive
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 2f909c0..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-__test__/_temp
-lib/
-node_modules/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..970dec9
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "submodule-level-1"]
+ path = submodule-level-1
+ url = ./
+ branch = test-data/v2/submodule-level-1
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 2186947..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,3 +0,0 @@
-dist/
-lib/
-node_modules/
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
deleted file mode 100644
index 386485a..0000000
--- a/.prettierrc.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "printWidth": 80,
- "tabWidth": 2,
- "useTabs": false,
- "semi": false,
- "singleQuote": true,
- "trailingComma": "none",
- "bracketSpacing": false,
- "arrowParens": "avoid",
- "parser": "typescript"
-}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 6f40def..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Changelog
-
-## v2.3.1
-
-- [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284)
-
-
-## v2.3.0
-
-- [Fallback to the default branch](https://github.com/actions/checkout/pull/278)
-
-## v2.2.0
-
-- [Fetch all history for all tags and branches when fetch-depth=0](https://github.com/actions/checkout/pull/258)
-
-## v2.1.1
-
-- Changes to support GHES ([here](https://github.com/actions/checkout/pull/236) and [here](https://github.com/actions/checkout/pull/248))
-
-## v2.1.0
-
-- [Group output](https://github.com/actions/checkout/pull/191)
-- [Changes to support GHES alpha release](https://github.com/actions/checkout/pull/199)
-- [Persist core.sshCommand for submodules](https://github.com/actions/checkout/pull/184)
-- [Add support ssh](https://github.com/actions/checkout/pull/163)
-- [Convert submodule SSH URL to HTTPS, when not using SSH](https://github.com/actions/checkout/pull/179)
-- [Add submodule support](https://github.com/actions/checkout/pull/157)
-- [Follow proxy settings](https://github.com/actions/checkout/pull/144)
-- [Fix ref for pr closed event when a pr is merged](https://github.com/actions/checkout/pull/141)
-- [Fix issue checking detached when git less than 2.22](https://github.com/actions/checkout/pull/128)
-
-## v2.0.0
-
-- [Do not pass cred on command line](https://github.com/actions/checkout/pull/108)
-- [Add input persist-credentials](https://github.com/actions/checkout/pull/107)
-- [Fallback to REST API to download repo](https://github.com/actions/checkout/pull/104)
-
-## v2 (beta)
-
-- Improved fetch performance
- - The default behavior now fetches only the SHA being checked-out
-- Script authenticated git commands
- - Persists `with.token` in the local git config
- - Enables your scripts to run authenticated git commands
- - Post-job cleanup removes the token
- - Coming soon: Opt out by setting `with.persist-credentials` to `false`
-- Creates a local branch
- - No longer detached HEAD when checking out a branch
- - A local branch is created with the corresponding upstream branch set
-- Improved layout
- - `with.path` is always relative to `github.workspace`
- - Aligns better with container actions, where `github.workspace` gets mapped in
-- Removed input `submodules`
-
-
-## v1
-
-Refer [here](https://github.com/actions/checkout/blob/v1/CHANGELOG.md) for the V1 changelog
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index a67dca8..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2018 GitHub, Inc. and contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index c2bd069..0000000
--- a/README.md
+++ /dev/null
@@ -1,218 +0,0 @@
-
-
-
-
-# Checkout V2
-
-This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it.
-
-Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set `fetch-depth: 0` to fetch all history for all branches and tags. Refer [here](https://help.github.com/en/articles/events-that-trigger-workflows) to learn which commit `$GITHUB_SHA` points to for different events.
-
-The auth token is persisted in the local git config. This enables your scripts to run authenticated git commands. The token is removed during post-job cleanup. Set `persist-credentials: false` to opt-out.
-
-When Git 2.18 or higher is not in your PATH, falls back to the REST API to download the files.
-
-# What's new
-
-- Improved performance
- - Fetches only a single commit by default
-- 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
-
-
-```yaml
-- uses: actions/checkout@v2
- with:
- # Repository name with owner. For example, actions/checkout
- # Default: ${{ github.repository }}
- repository: ''
-
- # 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 event.
- # Otherwise, uses the default branch.
- ref: ''
-
- # Personal access token (PAT) used to fetch the repository. The PAT is configured
- # with the local git config, which enables your scripts to run authenticated git
- # commands. The post-job step removes the PAT.
- #
- # We recommend using a service account with the least permissions necessary. Also
- # when generating a new PAT, select the least scopes necessary.
- #
- # [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- #
- # Default: ${{ github.token }}
- token: ''
-
- # SSH key used to fetch the repository. The SSH key is configured with the local
- # git config, which enables your scripts to run authenticated git commands. The
- # post-job step removes the SSH key.
- #
- # We recommend using a service account with the least permissions necessary.
- #
- # [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- ssh-key: ''
-
- # Known hosts in addition to the user and global host key database. The public SSH
- # keys for a host may be obtained using the utility `ssh-keyscan`. For example,
- # `ssh-keyscan github.com`. The public key for github.com is always implicitly
- # added.
- ssh-known-hosts: ''
-
- # Whether to perform strict host key checking. When true, adds the options
- # `StrictHostKeyChecking=yes` and `CheckHostIP=no` to the SSH command line. Use
- # the input `ssh-known-hosts` to configure additional hosts.
- # Default: true
- ssh-strict: ''
-
- # Whether to configure the token or SSH key with the local git config
- # Default: true
- persist-credentials: ''
-
- # Relative path under $GITHUB_WORKSPACE to place the repository
- path: ''
-
- # Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching
- # Default: true
- clean: ''
-
- # Number of commits to fetch. 0 indicates all history for all branches and tags.
- # Default: 1
- fetch-depth: ''
-
- # Whether to download Git-LFS files
- # Default: false
- lfs: ''
-
- # Whether to checkout submodules: `true` to checkout submodules or `recursive` to
- # recursively checkout submodules.
- #
- # When the `ssh-key` input is not provided, SSH URLs beginning with
- # `git@github.com:` are converted to HTTPS.
- #
- # Default: false
- submodules: ''
-```
-
-
-# Scenarios
-
-- [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 HEAD^](#Checkout-HEAD)
-- [Checkout multiple repos (side by side)](#Checkout-multiple-repos-side-by-side)
-- [Checkout multiple repos (nested)](#Checkout-multiple-repos-nested)
-- [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 on closed event](#Checkout-pull-request-on-closed-event)
-
-## Fetch all history for all tags and branches
-
-```yaml
-- uses: actions/checkout@v2
- with:
- fetch-depth: 0
-```
-
-## Checkout a different branch
-
-```yaml
-- uses: actions/checkout@v2
- with:
- ref: my-branch
-```
-
-## Checkout HEAD^
-
-```yaml
-- uses: actions/checkout@v2
- with:
- fetch-depth: 2
-- run: git checkout HEAD^
-```
-
-## Checkout multiple repos (side by side)
-
-```yaml
-- name: Checkout
- uses: actions/checkout@v2
- with:
- path: main
-
-- name: Checkout tools repo
- uses: actions/checkout@v2
- with:
- repository: my-org/my-tools
- path: my-tools
-```
-
-## Checkout multiple repos (nested)
-
-```yaml
-- name: Checkout
- uses: actions/checkout@v2
-
-- name: Checkout tools repo
- uses: actions/checkout@v2
- with:
- repository: my-org/my-tools
- path: my-tools
-```
-
-## Checkout multiple repos (private)
-
-```yaml
-- name: Checkout
- uses: actions/checkout@v2
- with:
- path: main
-
-- name: Checkout private tools
- uses: actions/checkout@v2
- with:
- repository: my-org/my-private-tools
- token: ${{ secrets.GitHub_PAT }} # `GitHub_PAT` is a secret that contains your PAT
- path: my-tools
-```
-
-> - `${{ github.token }}` is scoped to the current repository, so if you want to checkout a different repository that is private you will need to provide your own [PAT](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line).
-
-
-## Checkout pull request HEAD commit instead of merge commit
-
-```yaml
-- uses: actions/checkout@v2
- with:
- ref: ${{ github.event.pull_request.head.sha }}
-```
-
-## Checkout pull request on closed event
-
-```yaml
-on:
- pull_request:
- branches: [master]
- types: [opened, synchronize, closed]
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-```
-
-# License
-
-The scripts and documentation in this project are released under the [MIT License](LICENSE)
diff --git a/__test__/git-auth-helper.test.ts b/__test__/git-auth-helper.test.ts
deleted file mode 100644
index e4e640c..0000000
--- a/__test__/git-auth-helper.test.ts
+++ /dev/null
@@ -1,802 +0,0 @@
-import * as core from '@actions/core'
-import * as fs from 'fs'
-import * as gitAuthHelper from '../lib/git-auth-helper'
-import * as io from '@actions/io'
-import * as os from 'os'
-import * as path from 'path'
-import * as stateHelper from '../lib/state-helper'
-import {IGitCommandManager} from '../lib/git-command-manager'
-import {IGitSourceSettings} from '../lib/git-source-settings'
-
-const isWindows = process.platform === 'win32'
-const testWorkspace = path.join(__dirname, '_temp', 'git-auth-helper')
-const originalRunnerTemp = process.env['RUNNER_TEMP']
-const originalHome = process.env['HOME']
-let workspace: string
-let localGitConfigPath: string
-let globalGitConfigPath: string
-let runnerTemp: string
-let tempHomedir: string
-let git: IGitCommandManager & {env: {[key: string]: string}}
-let settings: IGitSourceSettings
-let sshPath: string
-
-describe('git-auth-helper tests', () => {
- beforeAll(async () => {
- // SSH
- sshPath = await io.which('ssh')
-
- // Clear test workspace
- await io.rmRF(testWorkspace)
- })
-
- beforeEach(() => {
- // Mock setSecret
- jest.spyOn(core, 'setSecret').mockImplementation((secret: string) => {})
-
- // Mock error/warning/info/debug
- jest.spyOn(core, 'error').mockImplementation(jest.fn())
- jest.spyOn(core, 'warning').mockImplementation(jest.fn())
- jest.spyOn(core, 'info').mockImplementation(jest.fn())
- jest.spyOn(core, 'debug').mockImplementation(jest.fn())
-
- // Mock state helper
- jest.spyOn(stateHelper, 'setSshKeyPath').mockImplementation(jest.fn())
- jest
- .spyOn(stateHelper, 'setSshKnownHostsPath')
- .mockImplementation(jest.fn())
- })
-
- afterEach(() => {
- // Unregister mocks
- jest.restoreAllMocks()
-
- // Restore HOME
- if (originalHome) {
- process.env['HOME'] = originalHome
- } else {
- delete process.env['HOME']
- }
- })
-
- afterAll(() => {
- // Restore RUNNER_TEMP
- delete process.env['RUNNER_TEMP']
- if (originalRunnerTemp) {
- process.env['RUNNER_TEMP'] = originalRunnerTemp
- }
- })
-
- const configureAuth_configuresAuthHeader =
- 'configureAuth configures auth header'
- it(configureAuth_configuresAuthHeader, async () => {
- // Arrange
- await setup(configureAuth_configuresAuthHeader)
- expect(settings.authToken).toBeTruthy() // sanity check
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert config
- const configContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- const basicCredential = Buffer.from(
- `x-access-token:${settings.authToken}`,
- 'utf8'
- ).toString('base64')
- expect(
- configContent.indexOf(
- `http.https://github.com/.extraheader AUTHORIZATION: basic ${basicCredential}`
- )
- ).toBeGreaterThanOrEqual(0)
- })
-
- const configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse =
- 'configureAuth configures auth header even when persist credentials false'
- it(
- configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse,
- async () => {
- // Arrange
- await setup(
- configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse
- )
- expect(settings.authToken).toBeTruthy() // sanity check
- settings.persistCredentials = false
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert config
- const configContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- expect(
- configContent.indexOf(
- `http.https://github.com/.extraheader AUTHORIZATION`
- )
- ).toBeGreaterThanOrEqual(0)
- }
- )
-
- const configureAuth_copiesUserKnownHosts =
- 'configureAuth copies user known hosts'
- it(configureAuth_copiesUserKnownHosts, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureAuth_copiesUserKnownHosts}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arange
- await setup(configureAuth_copiesUserKnownHosts)
- expect(settings.sshKey).toBeTruthy() // sanity check
-
- // Mock fs.promises.readFile
- const realReadFile = fs.promises.readFile
- jest.spyOn(fs.promises, 'readFile').mockImplementation(
- async (file: any, options: any): Promise => {
- const userKnownHostsPath = path.join(
- os.homedir(),
- '.ssh',
- 'known_hosts'
- )
- if (file === userKnownHostsPath) {
- return Buffer.from('some-domain.com ssh-rsa ABCDEF')
- }
-
- return await realReadFile(file, options)
- }
- )
-
- // Act
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
-
- // Assert known hosts
- const actualSshKnownHostsPath = await getActualSshKnownHostsPath()
- const actualSshKnownHostsContent = (
- await fs.promises.readFile(actualSshKnownHostsPath)
- ).toString()
- expect(actualSshKnownHostsContent).toMatch(
- /some-domain\.com ssh-rsa ABCDEF/
- )
- expect(actualSshKnownHostsContent).toMatch(/github\.com ssh-rsa AAAAB3N/)
- })
-
- const configureAuth_registersBasicCredentialAsSecret =
- 'configureAuth registers basic credential as secret'
- it(configureAuth_registersBasicCredentialAsSecret, async () => {
- // Arrange
- await setup(configureAuth_registersBasicCredentialAsSecret)
- expect(settings.authToken).toBeTruthy() // sanity check
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert secret
- const setSecretSpy = core.setSecret as jest.Mock
- expect(setSecretSpy).toHaveBeenCalledTimes(1)
- const expectedSecret = Buffer.from(
- `x-access-token:${settings.authToken}`,
- 'utf8'
- ).toString('base64')
- expect(setSecretSpy).toHaveBeenCalledWith(expectedSecret)
- })
-
- const setsSshCommandEnvVarWhenPersistCredentialsFalse =
- 'sets SSH command env var when persist-credentials false'
- it(setsSshCommandEnvVarWhenPersistCredentialsFalse, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${setsSshCommandEnvVarWhenPersistCredentialsFalse}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(setsSshCommandEnvVarWhenPersistCredentialsFalse)
- settings.persistCredentials = false
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert git env var
- const actualKeyPath = await getActualSshKeyPath()
- const actualKnownHostsPath = await getActualSshKnownHostsPath()
- const expectedSshCommand = `"${sshPath}" -i "$RUNNER_TEMP/${path.basename(
- actualKeyPath
- )}" -o StrictHostKeyChecking=yes -o CheckHostIP=no -o "UserKnownHostsFile=$RUNNER_TEMP/${path.basename(
- actualKnownHostsPath
- )}"`
- expect(git.setEnvironmentVariable).toHaveBeenCalledWith(
- 'GIT_SSH_COMMAND',
- expectedSshCommand
- )
-
- // Asserty git config
- const gitConfigLines = (await fs.promises.readFile(localGitConfigPath))
- .toString()
- .split('\n')
- .filter(x => x)
- expect(gitConfigLines).toHaveLength(1)
- expect(gitConfigLines[0]).toMatch(/^http\./)
- })
-
- const configureAuth_setsSshCommandWhenPersistCredentialsTrue =
- 'sets SSH command when persist-credentials true'
- it(configureAuth_setsSshCommandWhenPersistCredentialsTrue, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureAuth_setsSshCommandWhenPersistCredentialsTrue}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(configureAuth_setsSshCommandWhenPersistCredentialsTrue)
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert git env var
- const actualKeyPath = await getActualSshKeyPath()
- const actualKnownHostsPath = await getActualSshKnownHostsPath()
- const expectedSshCommand = `"${sshPath}" -i "$RUNNER_TEMP/${path.basename(
- actualKeyPath
- )}" -o StrictHostKeyChecking=yes -o CheckHostIP=no -o "UserKnownHostsFile=$RUNNER_TEMP/${path.basename(
- actualKnownHostsPath
- )}"`
- expect(git.setEnvironmentVariable).toHaveBeenCalledWith(
- 'GIT_SSH_COMMAND',
- expectedSshCommand
- )
-
- // Asserty git config
- expect(git.config).toHaveBeenCalledWith(
- 'core.sshCommand',
- expectedSshCommand
- )
- })
-
- const configureAuth_writesExplicitKnownHosts = 'writes explicit known hosts'
- it(configureAuth_writesExplicitKnownHosts, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureAuth_writesExplicitKnownHosts}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(configureAuth_writesExplicitKnownHosts)
- expect(settings.sshKey).toBeTruthy() // sanity check
- settings.sshKnownHosts = 'my-custom-host.com ssh-rsa ABC123'
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert known hosts
- const actualSshKnownHostsPath = await getActualSshKnownHostsPath()
- const actualSshKnownHostsContent = (
- await fs.promises.readFile(actualSshKnownHostsPath)
- ).toString()
- expect(actualSshKnownHostsContent).toMatch(
- /my-custom-host\.com ssh-rsa ABC123/
- )
- expect(actualSshKnownHostsContent).toMatch(/github\.com ssh-rsa AAAAB3N/)
- })
-
- const configureAuth_writesSshKeyAndImplicitKnownHosts =
- 'writes SSH key and implicit known hosts'
- it(configureAuth_writesSshKeyAndImplicitKnownHosts, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureAuth_writesSshKeyAndImplicitKnownHosts}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(configureAuth_writesSshKeyAndImplicitKnownHosts)
- expect(settings.sshKey).toBeTruthy() // sanity check
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
-
- // Assert SSH key
- const actualSshKeyPath = await getActualSshKeyPath()
- expect(actualSshKeyPath).toBeTruthy()
- const actualSshKeyContent = (
- await fs.promises.readFile(actualSshKeyPath)
- ).toString()
- expect(actualSshKeyContent).toBe(settings.sshKey + '\n')
- if (!isWindows) {
- // Assert read/write for user, not group or others.
- // Otherwise SSH client will error.
- expect((await fs.promises.stat(actualSshKeyPath)).mode & 0o777).toBe(
- 0o600
- )
- }
-
- // Assert known hosts
- const actualSshKnownHostsPath = await getActualSshKnownHostsPath()
- const actualSshKnownHostsContent = (
- await fs.promises.readFile(actualSshKnownHostsPath)
- ).toString()
- expect(actualSshKnownHostsContent).toMatch(/github\.com ssh-rsa AAAAB3N/)
- })
-
- const configureGlobalAuth_configuresUrlInsteadOfWhenSshKeyNotSet =
- 'configureGlobalAuth configures URL insteadOf when SSH key not set'
- it(configureGlobalAuth_configuresUrlInsteadOfWhenSshKeyNotSet, async () => {
- // Arrange
- await setup(configureGlobalAuth_configuresUrlInsteadOfWhenSshKeyNotSet)
- settings.sshKey = ''
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
- await authHelper.configureGlobalAuth()
-
- // Assert temporary global config
- expect(git.env['HOME']).toBeTruthy()
- const configContent = (
- await fs.promises.readFile(path.join(git.env['HOME'], '.gitconfig'))
- ).toString()
- expect(
- configContent.indexOf(`url.https://github.com/.insteadOf git@github.com`)
- ).toBeGreaterThanOrEqual(0)
- })
-
- const configureGlobalAuth_copiesGlobalGitConfig =
- 'configureGlobalAuth copies global git config'
- it(configureGlobalAuth_copiesGlobalGitConfig, async () => {
- // Arrange
- await setup(configureGlobalAuth_copiesGlobalGitConfig)
- await fs.promises.writeFile(globalGitConfigPath, 'value-from-global-config')
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
- await authHelper.configureGlobalAuth()
-
- // Assert original global config not altered
- let configContent = (
- await fs.promises.readFile(globalGitConfigPath)
- ).toString()
- expect(configContent).toBe('value-from-global-config')
-
- // Assert temporary global config
- expect(git.env['HOME']).toBeTruthy()
- const basicCredential = Buffer.from(
- `x-access-token:${settings.authToken}`,
- 'utf8'
- ).toString('base64')
- configContent = (
- await fs.promises.readFile(path.join(git.env['HOME'], '.gitconfig'))
- ).toString()
- expect(
- configContent.indexOf('value-from-global-config')
- ).toBeGreaterThanOrEqual(0)
- expect(
- configContent.indexOf(
- `http.https://github.com/.extraheader AUTHORIZATION: basic ${basicCredential}`
- )
- ).toBeGreaterThanOrEqual(0)
- })
-
- const configureGlobalAuth_createsNewGlobalGitConfigWhenGlobalDoesNotExist =
- 'configureGlobalAuth creates new git config when global does not exist'
- it(
- configureGlobalAuth_createsNewGlobalGitConfigWhenGlobalDoesNotExist,
- async () => {
- // Arrange
- await setup(
- configureGlobalAuth_createsNewGlobalGitConfigWhenGlobalDoesNotExist
- )
- await io.rmRF(globalGitConfigPath)
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
-
- // Act
- await authHelper.configureAuth()
- await authHelper.configureGlobalAuth()
-
- // Assert original global config not recreated
- try {
- await fs.promises.stat(globalGitConfigPath)
- throw new Error(
- `Did not expect file to exist: '${globalGitConfigPath}'`
- )
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
-
- // Assert temporary global config
- expect(git.env['HOME']).toBeTruthy()
- const basicCredential = Buffer.from(
- `x-access-token:${settings.authToken}`,
- 'utf8'
- ).toString('base64')
- const configContent = (
- await fs.promises.readFile(path.join(git.env['HOME'], '.gitconfig'))
- ).toString()
- expect(
- configContent.indexOf(
- `http.https://github.com/.extraheader AUTHORIZATION: basic ${basicCredential}`
- )
- ).toBeGreaterThanOrEqual(0)
- }
- )
-
- const configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeyNotSet =
- 'configureSubmoduleAuth configures submodules when persist credentials false and SSH key not set'
- it(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeyNotSet,
- async () => {
- // Arrange
- await setup(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeyNotSet
- )
- settings.persistCredentials = false
- settings.sshKey = ''
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- const mockSubmoduleForeach = git.submoduleForeach as jest.Mock
- mockSubmoduleForeach.mockClear() // reset calls
-
- // Act
- await authHelper.configureSubmoduleAuth()
-
- // Assert
- expect(mockSubmoduleForeach).toBeCalledTimes(1)
- expect(mockSubmoduleForeach.mock.calls[0][0] as string).toMatch(
- /unset-all.*insteadOf/
- )
- }
- )
-
- const configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeySet =
- 'configureSubmoduleAuth configures submodules when persist credentials false and SSH key set'
- it(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeySet,
- async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeySet}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsFalseAndSshKeySet
- )
- settings.persistCredentials = false
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- const mockSubmoduleForeach = git.submoduleForeach as jest.Mock
- mockSubmoduleForeach.mockClear() // reset calls
-
- // Act
- await authHelper.configureSubmoduleAuth()
-
- // Assert
- expect(mockSubmoduleForeach).toHaveBeenCalledTimes(1)
- expect(mockSubmoduleForeach.mock.calls[0][0]).toMatch(
- /unset-all.*insteadOf/
- )
- }
- )
-
- const configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeyNotSet =
- 'configureSubmoduleAuth configures submodules when persist credentials true and SSH key not set'
- it(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeyNotSet,
- async () => {
- // Arrange
- await setup(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeyNotSet
- )
- settings.sshKey = ''
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- const mockSubmoduleForeach = git.submoduleForeach as jest.Mock
- mockSubmoduleForeach.mockClear() // reset calls
-
- // Act
- await authHelper.configureSubmoduleAuth()
-
- // Assert
- expect(mockSubmoduleForeach).toHaveBeenCalledTimes(3)
- expect(mockSubmoduleForeach.mock.calls[0][0]).toMatch(
- /unset-all.*insteadOf/
- )
- expect(mockSubmoduleForeach.mock.calls[1][0]).toMatch(/http.*extraheader/)
- expect(mockSubmoduleForeach.mock.calls[2][0]).toMatch(/url.*insteadOf/)
- }
- )
-
- const configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeySet =
- 'configureSubmoduleAuth configures submodules when persist credentials true and SSH key set'
- it(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeySet,
- async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeySet}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(
- configureSubmoduleAuth_configuresSubmodulesWhenPersistCredentialsTrueAndSshKeySet
- )
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- const mockSubmoduleForeach = git.submoduleForeach as jest.Mock
- mockSubmoduleForeach.mockClear() // reset calls
-
- // Act
- await authHelper.configureSubmoduleAuth()
-
- // Assert
- expect(mockSubmoduleForeach).toHaveBeenCalledTimes(3)
- expect(mockSubmoduleForeach.mock.calls[0][0]).toMatch(
- /unset-all.*insteadOf/
- )
- expect(mockSubmoduleForeach.mock.calls[1][0]).toMatch(/http.*extraheader/)
- expect(mockSubmoduleForeach.mock.calls[2][0]).toMatch(/core\.sshCommand/)
- }
- )
-
- const removeAuth_removesSshCommand = 'removeAuth removes SSH command'
- it(removeAuth_removesSshCommand, async () => {
- if (!sshPath) {
- process.stdout.write(
- `Skipped test "${removeAuth_removesSshCommand}". Executable 'ssh' not found in the PATH.\n`
- )
- return
- }
-
- // Arrange
- await setup(removeAuth_removesSshCommand)
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- let gitConfigContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- expect(gitConfigContent.indexOf('core.sshCommand')).toBeGreaterThanOrEqual(
- 0
- ) // sanity check
- const actualKeyPath = await getActualSshKeyPath()
- expect(actualKeyPath).toBeTruthy()
- await fs.promises.stat(actualKeyPath)
- const actualKnownHostsPath = await getActualSshKnownHostsPath()
- expect(actualKnownHostsPath).toBeTruthy()
- await fs.promises.stat(actualKnownHostsPath)
-
- // Act
- await authHelper.removeAuth()
-
- // Assert git config
- gitConfigContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- expect(gitConfigContent.indexOf('core.sshCommand')).toBeLessThan(0)
-
- // Assert SSH key file
- try {
- await fs.promises.stat(actualKeyPath)
- throw new Error('SSH key should have been deleted')
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
-
- // Assert known hosts file
- try {
- await fs.promises.stat(actualKnownHostsPath)
- throw new Error('SSH known hosts should have been deleted')
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
- })
-
- const removeAuth_removesToken = 'removeAuth removes token'
- it(removeAuth_removesToken, async () => {
- // Arrange
- await setup(removeAuth_removesToken)
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- let gitConfigContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- expect(gitConfigContent.indexOf('http.')).toBeGreaterThanOrEqual(0) // sanity check
-
- // Act
- await authHelper.removeAuth()
-
- // Assert git config
- gitConfigContent = (
- await fs.promises.readFile(localGitConfigPath)
- ).toString()
- expect(gitConfigContent.indexOf('http.')).toBeLessThan(0)
- })
-
- const removeGlobalAuth_removesOverride = 'removeGlobalAuth removes override'
- it(removeGlobalAuth_removesOverride, async () => {
- // Arrange
- await setup(removeGlobalAuth_removesOverride)
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- await authHelper.configureAuth()
- await authHelper.configureGlobalAuth()
- const homeOverride = git.env['HOME'] // Sanity check
- expect(homeOverride).toBeTruthy()
- await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig'))
-
- // Act
- await authHelper.removeGlobalAuth()
-
- // Assert
- expect(git.env['HOME']).toBeUndefined()
- try {
- await fs.promises.stat(homeOverride)
- throw new Error(`Should have been deleted '${homeOverride}'`)
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
- })
-})
-
-async function setup(testName: string): Promise {
- testName = testName.replace(/[^a-zA-Z0-9_]+/g, '-')
-
- // Directories
- workspace = path.join(testWorkspace, testName, 'workspace')
- runnerTemp = path.join(testWorkspace, testName, 'runner-temp')
- tempHomedir = path.join(testWorkspace, testName, 'home-dir')
- await fs.promises.mkdir(workspace, {recursive: true})
- await fs.promises.mkdir(runnerTemp, {recursive: true})
- await fs.promises.mkdir(tempHomedir, {recursive: true})
- process.env['RUNNER_TEMP'] = runnerTemp
- process.env['HOME'] = tempHomedir
-
- // Create git config
- globalGitConfigPath = path.join(tempHomedir, '.gitconfig')
- await fs.promises.writeFile(globalGitConfigPath, '')
- localGitConfigPath = path.join(workspace, '.git', 'config')
- await fs.promises.mkdir(path.dirname(localGitConfigPath), {recursive: true})
- await fs.promises.writeFile(localGitConfigPath, '')
-
- git = {
- branchDelete: jest.fn(),
- branchExists: jest.fn(),
- branchList: jest.fn(),
- checkout: jest.fn(),
- checkoutDetach: jest.fn(),
- config: jest.fn(
- async (key: string, value: string, globalConfig?: boolean) => {
- const configPath = globalConfig
- ? path.join(git.env['HOME'] || tempHomedir, '.gitconfig')
- : localGitConfigPath
- await fs.promises.appendFile(configPath, `\n${key} ${value}`)
- }
- ),
- configExists: jest.fn(
- async (key: string, globalConfig?: boolean): Promise => {
- const configPath = globalConfig
- ? path.join(git.env['HOME'] || tempHomedir, '.gitconfig')
- : localGitConfigPath
- const content = await fs.promises.readFile(configPath)
- const lines = content
- .toString()
- .split('\n')
- .filter(x => x)
- return lines.some(x => x.startsWith(key))
- }
- ),
- env: {},
- fetch: jest.fn(),
- getDefaultBranch: jest.fn(),
- getWorkingDirectory: jest.fn(() => workspace),
- init: jest.fn(),
- isDetached: jest.fn(),
- lfsFetch: jest.fn(),
- lfsInstall: jest.fn(),
- log1: jest.fn(),
- remoteAdd: jest.fn(),
- removeEnvironmentVariable: jest.fn((name: string) => delete git.env[name]),
- revParse: jest.fn(),
- setEnvironmentVariable: jest.fn((name: string, value: string) => {
- git.env[name] = value
- }),
- shaExists: jest.fn(),
- submoduleForeach: jest.fn(async () => {
- return ''
- }),
- submoduleSync: jest.fn(),
- submoduleUpdate: jest.fn(),
- tagExists: jest.fn(),
- tryClean: jest.fn(),
- tryConfigUnset: jest.fn(
- async (key: string, globalConfig?: boolean): Promise => {
- const configPath = globalConfig
- ? path.join(git.env['HOME'] || tempHomedir, '.gitconfig')
- : localGitConfigPath
- let content = await fs.promises.readFile(configPath)
- let lines = content
- .toString()
- .split('\n')
- .filter(x => x)
- .filter(x => !x.startsWith(key))
- await fs.promises.writeFile(configPath, lines.join('\n'))
- return true
- }
- ),
- tryDisableAutomaticGarbageCollection: jest.fn(),
- tryGetFetchUrl: jest.fn(),
- tryReset: jest.fn()
- }
-
- settings = {
- authToken: 'some auth token',
- clean: true,
- commit: '',
- fetchDepth: 1,
- lfs: false,
- submodules: false,
- nestedSubmodules: false,
- persistCredentials: true,
- ref: 'refs/heads/master',
- repositoryName: 'my-repo',
- repositoryOwner: 'my-org',
- repositoryPath: '',
- sshKey: sshPath ? 'some ssh private key' : '',
- sshKnownHosts: '',
- sshStrict: true
- }
-}
-
-async function getActualSshKeyPath(): Promise {
- let actualTempFiles = (await fs.promises.readdir(runnerTemp))
- .sort()
- .map(x => path.join(runnerTemp, x))
- if (actualTempFiles.length === 0) {
- return ''
- }
-
- expect(actualTempFiles).toHaveLength(2)
- expect(actualTempFiles[0].endsWith('_known_hosts')).toBeFalsy()
- return actualTempFiles[0]
-}
-
-async function getActualSshKnownHostsPath(): Promise {
- let actualTempFiles = (await fs.promises.readdir(runnerTemp))
- .sort()
- .map(x => path.join(runnerTemp, x))
- if (actualTempFiles.length === 0) {
- return ''
- }
-
- expect(actualTempFiles).toHaveLength(2)
- expect(actualTempFiles[1].endsWith('_known_hosts')).toBeTruthy()
- expect(actualTempFiles[1].startsWith(actualTempFiles[0])).toBeTruthy()
- return actualTempFiles[1]
-}
diff --git a/__test__/git-directory-helper.test.ts b/__test__/git-directory-helper.test.ts
deleted file mode 100644
index 70849b5..0000000
--- a/__test__/git-directory-helper.test.ts
+++ /dev/null
@@ -1,441 +0,0 @@
-import * as core from '@actions/core'
-import * as fs from 'fs'
-import * as gitDirectoryHelper from '../lib/git-directory-helper'
-import * as io from '@actions/io'
-import * as path from 'path'
-import {IGitCommandManager} from '../lib/git-command-manager'
-
-const testWorkspace = path.join(__dirname, '_temp', 'git-directory-helper')
-let repositoryPath: string
-let repositoryUrl: string
-let clean: boolean
-let ref: string
-let git: IGitCommandManager
-
-describe('git-directory-helper tests', () => {
- beforeAll(async () => {
- // Clear test workspace
- await io.rmRF(testWorkspace)
- })
-
- beforeEach(() => {
- // Mock error/warning/info/debug
- jest.spyOn(core, 'error').mockImplementation(jest.fn())
- jest.spyOn(core, 'warning').mockImplementation(jest.fn())
- jest.spyOn(core, 'info').mockImplementation(jest.fn())
- jest.spyOn(core, 'debug').mockImplementation(jest.fn())
- })
-
- afterEach(() => {
- // Unregister mocks
- jest.restoreAllMocks()
- })
-
- const cleansWhenCleanTrue = 'cleans when clean true'
- it(cleansWhenCleanTrue, async () => {
- // Arrange
- await setup(cleansWhenCleanTrue)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // 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()
- expect(git.tryReset).toHaveBeenCalled()
- expect(core.warning).not.toHaveBeenCalled()
- })
-
- const checkoutDetachWhenNotDetached = 'checkout detach when not detached'
- it(checkoutDetachWhenNotDetached, async () => {
- // Arrange
- await setup(checkoutDetachWhenNotDetached)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // 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.checkoutDetach).toHaveBeenCalled()
- })
-
- const doesNotCheckoutDetachWhenNotAlreadyDetached =
- 'does not checkout detach when already detached'
- it(doesNotCheckoutDetachWhenNotAlreadyDetached, async () => {
- // Arrange
- await setup(doesNotCheckoutDetachWhenNotAlreadyDetached)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- const mockIsDetached = git.isDetached as jest.Mock
- mockIsDetached.mockImplementation(async () => {
- 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.checkoutDetach).not.toHaveBeenCalled()
- })
-
- const doesNotCleanWhenCleanFalse = 'does not clean when clean false'
- it(doesNotCleanWhenCleanFalse, async () => {
- // Arrange
- await setup(doesNotCleanWhenCleanFalse)
- clean = false
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // 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.isDetached).toHaveBeenCalled()
- expect(git.branchList).toHaveBeenCalled()
- expect(core.warning).not.toHaveBeenCalled()
- expect(git.tryClean).not.toHaveBeenCalled()
- expect(git.tryReset).not.toHaveBeenCalled()
- })
-
- const removesContentsWhenCleanFails = 'removes contents when clean fails'
- it(removesContentsWhenCleanFails, async () => {
- // Arrange
- await setup(removesContentsWhenCleanFails)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- let mockTryClean = git.tryClean as jest.Mock
- mockTryClean.mockImplementation(async () => {
- 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()
- expect(core.warning).toHaveBeenCalled()
- expect(git.tryReset).not.toHaveBeenCalled()
- })
-
- const removesContentsWhenDifferentRepositoryUrl =
- 'removes contents when different repository url'
- it(removesContentsWhenDifferentRepositoryUrl, async () => {
- // Arrange
- await setup(removesContentsWhenDifferentRepositoryUrl)
- clean = false
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- const differentRepositoryUrl =
- 'https://github.com/my-different-org/my-different-repo'
-
- // Act
- await gitDirectoryHelper.prepareExistingDirectory(
- git,
- repositoryPath,
- differentRepositoryUrl,
- clean,
- ref
- )
-
- // Assert
- const files = await fs.promises.readdir(repositoryPath)
- expect(files).toHaveLength(0)
- expect(core.warning).not.toHaveBeenCalled()
- expect(git.isDetached).not.toHaveBeenCalled()
- })
-
- const removesContentsWhenNoGitDirectory =
- 'removes contents when no git directory'
- it(removesContentsWhenNoGitDirectory, async () => {
- // Arrange
- await setup(removesContentsWhenNoGitDirectory)
- clean = false
- await io.rmRF(path.join(repositoryPath, '.git'))
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // Act
- await gitDirectoryHelper.prepareExistingDirectory(
- git,
- repositoryPath,
- repositoryUrl,
- clean,
- ref
- )
-
- // Assert
- const files = await fs.promises.readdir(repositoryPath)
- expect(files).toHaveLength(0)
- expect(core.warning).not.toHaveBeenCalled()
- expect(git.isDetached).not.toHaveBeenCalled()
- })
-
- const removesContentsWhenResetFails = 'removes contents when reset fails'
- it(removesContentsWhenResetFails, async () => {
- // Arrange
- await setup(removesContentsWhenResetFails)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- let mockTryReset = git.tryReset as jest.Mock
- mockTryReset.mockImplementation(async () => {
- 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()
- expect(git.tryReset).toHaveBeenCalled()
- expect(core.warning).toHaveBeenCalled()
- })
-
- const removesContentsWhenUndefinedGitCommandManager =
- 'removes contents when undefined git command manager'
- it(removesContentsWhenUndefinedGitCommandManager, async () => {
- // Arrange
- await setup(removesContentsWhenUndefinedGitCommandManager)
- clean = false
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // Act
- await gitDirectoryHelper.prepareExistingDirectory(
- undefined,
- repositoryPath,
- repositoryUrl,
- clean,
- ref
- )
-
- // Assert
- const files = await fs.promises.readdir(repositoryPath)
- expect(files).toHaveLength(0)
- expect(core.warning).not.toHaveBeenCalled()
- })
-
- const removesLocalBranches = 'removes local branches'
- it(removesLocalBranches, async () => {
- // Arrange
- await setup(removesLocalBranches)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- const mockBranchList = git.branchList as jest.Mock
- mockBranchList.mockImplementation(async (remote: boolean) => {
- return remote ? [] : ['local-branch-1', 'local-branch-2']
- })
-
- // 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.branchDelete).toHaveBeenCalledWith(false, 'local-branch-1')
- expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
- })
-
- const removesLockFiles = 'removes lock files'
- it(removesLockFiles, async () => {
- // Arrange
- await setup(removesLockFiles)
- clean = false
- await fs.promises.writeFile(
- path.join(repositoryPath, '.git', 'index.lock'),
- ''
- )
- await fs.promises.writeFile(
- path.join(repositoryPath, '.git', 'shallow.lock'),
- ''
- )
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
-
- // Act
- await gitDirectoryHelper.prepareExistingDirectory(
- git,
- repositoryPath,
- repositoryUrl,
- clean,
- ref
- )
-
- // Assert
- let files = await fs.promises.readdir(path.join(repositoryPath, '.git'))
- expect(files).toHaveLength(0)
- files = await fs.promises.readdir(repositoryPath)
- expect(files.sort()).toEqual(['.git', 'my-file'])
- expect(git.isDetached).toHaveBeenCalled()
- expect(git.branchList).toHaveBeenCalled()
- expect(core.warning).not.toHaveBeenCalled()
- expect(git.tryClean).not.toHaveBeenCalled()
- expect(git.tryReset).not.toHaveBeenCalled()
- })
-
- const removesAncestorRemoteBranch = 'removes ancestor remote branch'
- it(removesAncestorRemoteBranch, async () => {
- // Arrange
- await setup(removesAncestorRemoteBranch)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- const mockBranchList = git.branchList as jest.Mock
- mockBranchList.mockImplementation(async (remote: boolean) => {
- return remote ? ['origin/remote-branch-1', 'origin/remote-branch-2'] : []
- })
- ref = 'remote-branch-1/conflict'
-
- // 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.branchDelete).toHaveBeenCalledTimes(1)
- expect(git.branchDelete).toHaveBeenCalledWith(
- true,
- 'origin/remote-branch-1'
- )
- })
-
- const removesDescendantRemoteBranches = 'removes descendant remote branch'
- it(removesDescendantRemoteBranches, async () => {
- // Arrange
- await setup(removesDescendantRemoteBranches)
- await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
- const mockBranchList = git.branchList as jest.Mock
- mockBranchList.mockImplementation(async (remote: boolean) => {
- return remote
- ? ['origin/remote-branch-1/conflict', 'origin/remote-branch-2']
- : []
- })
- ref = 'remote-branch-1'
-
- // 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.branchDelete).toHaveBeenCalledTimes(1)
- expect(git.branchDelete).toHaveBeenCalledWith(
- true,
- 'origin/remote-branch-1/conflict'
- )
- })
-})
-
-async function setup(testName: string): Promise {
- testName = testName.replace(/[^a-zA-Z0-9_]+/g, '-')
-
- // Repository directory
- repositoryPath = path.join(testWorkspace, testName)
- await fs.promises.mkdir(path.join(repositoryPath, '.git'), {recursive: true})
-
- // Repository URL
- repositoryUrl = 'https://github.com/my-org/my-repo'
-
- // Clean
- clean = true
-
- // Ref
- ref = ''
-
- // Git command manager
- git = {
- branchDelete: jest.fn(),
- branchExists: jest.fn(),
- branchList: jest.fn(async () => {
- return []
- }),
- checkout: jest.fn(),
- checkoutDetach: jest.fn(),
- config: jest.fn(),
- configExists: jest.fn(),
- fetch: jest.fn(),
- getDefaultBranch: jest.fn(),
- getWorkingDirectory: jest.fn(() => repositoryPath),
- init: jest.fn(),
- isDetached: jest.fn(),
- lfsFetch: jest.fn(),
- lfsInstall: jest.fn(),
- log1: jest.fn(),
- remoteAdd: jest.fn(),
- removeEnvironmentVariable: jest.fn(),
- revParse: jest.fn(),
- setEnvironmentVariable: jest.fn(),
- shaExists: jest.fn(),
- submoduleForeach: jest.fn(),
- submoduleSync: jest.fn(),
- submoduleUpdate: jest.fn(),
- tagExists: jest.fn(),
- tryClean: jest.fn(async () => {
- return true
- }),
- tryConfigUnset: jest.fn(),
- tryDisableAutomaticGarbageCollection: jest.fn(),
- tryGetFetchUrl: jest.fn(async () => {
- // Sanity check - this function shouldn't be called when the .git directory doesn't exist
- await fs.promises.stat(path.join(repositoryPath, '.git'))
- return repositoryUrl
- }),
- tryReset: jest.fn(async () => {
- return true
- })
- }
-}
diff --git a/__test__/git-version.test.ts b/__test__/git-version.test.ts
deleted file mode 100644
index aa3ae4b..0000000
--- a/__test__/git-version.test.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {GitVersion} from '../lib/git-version'
-
-describe('git-version tests', () => {
- it('basics', async () => {
- let version = new GitVersion('')
- expect(version.isValid()).toBeFalsy()
-
- version = new GitVersion('asdf')
- expect(version.isValid()).toBeFalsy()
-
- version = new GitVersion('1.2')
- expect(version.isValid()).toBeTruthy()
- expect(version.toString()).toBe('1.2')
-
- version = new GitVersion('1.2.3')
- expect(version.isValid()).toBeTruthy()
- expect(version.toString()).toBe('1.2.3')
- })
-
- it('check minimum', async () => {
- let version = new GitVersion('4.5')
- expect(version.checkMinimum(new GitVersion('3.6'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('3.6.7'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.4'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5.0'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.6'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('4.6.0'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('5.1'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('5.1.2'))).toBeFalsy()
-
- version = new GitVersion('4.5.6')
- expect(version.checkMinimum(new GitVersion('3.6'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('3.6.7'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.4'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5.5'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5.6'))).toBeTruthy()
- expect(version.checkMinimum(new GitVersion('4.5.7'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('4.6'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('4.6.0'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('5.1'))).toBeFalsy()
- expect(version.checkMinimum(new GitVersion('5.1.2'))).toBeFalsy()
- })
-})
diff --git a/__test__/input-helper.test.ts b/__test__/input-helper.test.ts
deleted file mode 100644
index 920bc8e..0000000
--- a/__test__/input-helper.test.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import * as assert from 'assert'
-import * as core from '@actions/core'
-import * as fsHelper from '../lib/fs-helper'
-import * as github from '@actions/github'
-import * as inputHelper from '../lib/input-helper'
-import * as path from 'path'
-import {IGitSourceSettings} from '../lib/git-source-settings'
-
-const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE']
-const gitHubWorkspace = path.resolve('/checkout-tests/workspace')
-
-// Inputs for mock @actions/core
-let inputs = {} as any
-
-// Shallow clone original @actions/github context
-let originalContext = {...github.context}
-
-describe('input-helper tests', () => {
- beforeAll(() => {
- // Mock getInput
- jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
- return inputs[name]
- })
-
- // Mock error/warning/info/debug
- jest.spyOn(core, 'error').mockImplementation(jest.fn())
- jest.spyOn(core, 'warning').mockImplementation(jest.fn())
- jest.spyOn(core, 'info').mockImplementation(jest.fn())
- jest.spyOn(core, 'debug').mockImplementation(jest.fn())
-
- // Mock github context
- jest.spyOn(github.context, 'repo', 'get').mockImplementation(() => {
- return {
- owner: 'some-owner',
- repo: 'some-repo'
- }
- })
- github.context.ref = 'refs/heads/some-ref'
- github.context.sha = '1234567890123456789012345678901234567890'
-
- // Mock ./fs-helper directoryExistsSync()
- jest
- .spyOn(fsHelper, 'directoryExistsSync')
- .mockImplementation((path: string) => path == gitHubWorkspace)
-
- // GitHub workspace
- process.env['GITHUB_WORKSPACE'] = gitHubWorkspace
- })
-
- beforeEach(() => {
- // Reset inputs
- inputs = {}
- })
-
- afterAll(() => {
- // Restore GitHub workspace
- delete process.env['GITHUB_WORKSPACE']
- if (originalGitHubWorkspace) {
- process.env['GITHUB_WORKSPACE'] = originalGitHubWorkspace
- }
-
- // Restore @actions/github context
- github.context.ref = originalContext.ref
- github.context.sha = originalContext.sha
-
- // Restore
- jest.restoreAllMocks()
- })
-
- it('sets defaults', () => {
- const settings: IGitSourceSettings = inputHelper.getInputs()
- expect(settings).toBeTruthy()
- expect(settings.authToken).toBeFalsy()
- expect(settings.clean).toBe(true)
- expect(settings.commit).toBeTruthy()
- expect(settings.commit).toBe('1234567890123456789012345678901234567890')
- expect(settings.fetchDepth).toBe(1)
- expect(settings.lfs).toBe(false)
- expect(settings.ref).toBe('refs/heads/some-ref')
- expect(settings.repositoryName).toBe('some-repo')
- expect(settings.repositoryOwner).toBe('some-owner')
- expect(settings.repositoryPath).toBe(gitHubWorkspace)
- })
-
- it('qualifies ref', () => {
- let originalRef = github.context.ref
- try {
- github.context.ref = 'some-unqualified-ref'
- const settings: IGitSourceSettings = inputHelper.getInputs()
- expect(settings).toBeTruthy()
- expect(settings.commit).toBe('1234567890123456789012345678901234567890')
- expect(settings.ref).toBe('refs/heads/some-unqualified-ref')
- } finally {
- github.context.ref = originalRef
- }
- })
-
- it('requires qualified repo', () => {
- inputs.repository = 'some-unqualified-repo'
- assert.throws(() => {
- inputHelper.getInputs()
- }, /Invalid repository 'some-unqualified-repo'/)
- })
-
- it('roots path', () => {
- inputs.path = 'some-directory/some-subdirectory'
- const settings: IGitSourceSettings = inputHelper.getInputs()
- expect(settings.repositoryPath).toBe(
- path.join(gitHubWorkspace, 'some-directory', 'some-subdirectory')
- )
- })
-
- it('sets ref to empty when explicit sha', () => {
- inputs.ref = '1111111111222222222233333333334444444444'
- const settings: IGitSourceSettings = inputHelper.getInputs()
- expect(settings.ref).toBeFalsy()
- expect(settings.commit).toBe('1111111111222222222233333333334444444444')
- })
-
- it('sets sha to empty when explicit ref', () => {
- inputs.ref = 'refs/heads/some-other-ref'
- const settings: IGitSourceSettings = inputHelper.getInputs()
- expect(settings.ref).toBe('refs/heads/some-other-ref')
- expect(settings.commit).toBeFalsy()
- })
-})
diff --git a/__test__/modify-work-tree.sh b/__test__/modify-work-tree.sh
deleted file mode 100755
index 89447eb..0000000
--- a/__test__/modify-work-tree.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./basic/basic-file.txt" ]; then
- echo "Expected basic file does not exist"
- exit 1
-fi
-
-echo hello >> ./basic/basic-file.txt
-echo hello >> ./basic/new-file.txt
-git -C ./basic status
\ No newline at end of file
diff --git a/__test__/override-git-version.cmd b/__test__/override-git-version.cmd
deleted file mode 100755
index 413bc41..0000000
--- a/__test__/override-git-version.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-
-mkdir override-git-version
-cd override-git-version
-echo @echo override git version 1.2.3 > git.cmd
-echo ::add-path::%CD%
-cd ..
diff --git a/__test__/override-git-version.sh b/__test__/override-git-version.sh
deleted file mode 100755
index 25898e6..0000000
--- a/__test__/override-git-version.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-mkdir override-git-version
-cd override-git-version
-echo "#!/bin/sh" > git
-echo "echo override git version 1.2.3" >> git
-chmod +x git
-echo "::add-path::$(pwd)"
-cd ..
diff --git a/__test__/ref-helper.test.ts b/__test__/ref-helper.test.ts
deleted file mode 100644
index 9911eff..0000000
--- a/__test__/ref-helper.test.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import * as assert from 'assert'
-import * as refHelper from '../lib/ref-helper'
-import {IGitCommandManager} from '../lib/git-command-manager'
-
-const commit = '1234567890123456789012345678901234567890'
-let git: IGitCommandManager
-
-describe('ref-helper tests', () => {
- beforeEach(() => {
- git = ({} as unknown) as IGitCommandManager
- })
-
- it('getCheckoutInfo requires git', async () => {
- const git = (null as unknown) as IGitCommandManager
- try {
- await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit)
- throw new Error('Should not reach here')
- } catch (err) {
- expect(err.message).toBe('Arg git cannot be empty')
- }
- })
-
- it('getCheckoutInfo requires ref or commit', async () => {
- try {
- await refHelper.getCheckoutInfo(git, '', '')
- throw new Error('Should not reach here')
- } catch (err) {
- expect(err.message).toBe('Args ref and commit cannot both be empty')
- }
- })
-
- it('getCheckoutInfo sha only', async () => {
- const checkoutInfo = await refHelper.getCheckoutInfo(git, '', commit)
- expect(checkoutInfo.ref).toBe(commit)
- expect(checkoutInfo.startPoint).toBeFalsy()
- })
-
- it('getCheckoutInfo refs/heads/', async () => {
- const checkoutInfo = await refHelper.getCheckoutInfo(
- git,
- 'refs/heads/my/branch',
- commit
- )
- expect(checkoutInfo.ref).toBe('my/branch')
- expect(checkoutInfo.startPoint).toBe('refs/remotes/origin/my/branch')
- })
-
- it('getCheckoutInfo refs/pull/', async () => {
- const checkoutInfo = await refHelper.getCheckoutInfo(
- git,
- 'refs/pull/123/merge',
- commit
- )
- expect(checkoutInfo.ref).toBe('refs/remotes/pull/123/merge')
- expect(checkoutInfo.startPoint).toBeFalsy()
- })
-
- it('getCheckoutInfo refs/tags/', async () => {
- const checkoutInfo = await refHelper.getCheckoutInfo(
- git,
- 'refs/tags/my-tag',
- commit
- )
- expect(checkoutInfo.ref).toBe('refs/tags/my-tag')
- expect(checkoutInfo.startPoint).toBeFalsy()
- })
-
- it('getCheckoutInfo unqualified branch only', async () => {
- git.branchExists = jest.fn(async (remote: boolean, pattern: string) => {
- return true
- })
-
- const checkoutInfo = await refHelper.getCheckoutInfo(git, 'my/branch', '')
-
- expect(checkoutInfo.ref).toBe('my/branch')
- expect(checkoutInfo.startPoint).toBe('refs/remotes/origin/my/branch')
- })
-
- it('getCheckoutInfo unqualified tag only', async () => {
- git.branchExists = jest.fn(async (remote: boolean, pattern: string) => {
- return false
- })
- git.tagExists = jest.fn(async (pattern: string) => {
- return true
- })
-
- const checkoutInfo = await refHelper.getCheckoutInfo(git, 'my-tag', '')
-
- expect(checkoutInfo.ref).toBe('refs/tags/my-tag')
- expect(checkoutInfo.startPoint).toBeFalsy()
- })
-
- it('getCheckoutInfo unqualified ref only, not a branch or tag', async () => {
- git.branchExists = jest.fn(async (remote: boolean, pattern: string) => {
- return false
- })
- git.tagExists = jest.fn(async (pattern: string) => {
- return false
- })
-
- try {
- await refHelper.getCheckoutInfo(git, 'my-ref', '')
- throw new Error('Should not reach here')
- } catch (err) {
- expect(err.message).toBe(
- "A branch or tag with the name 'my-ref' could not be found"
- )
- }
- })
-
- it('getRefSpec requires ref or commit', async () => {
- assert.throws(
- () => refHelper.getRefSpec('', ''),
- /Args ref and commit cannot both be empty/
- )
- })
-
- it('getRefSpec sha + refs/heads/', async () => {
- const refSpec = refHelper.getRefSpec('refs/heads/my/branch', commit)
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe(`+${commit}:refs/remotes/origin/my/branch`)
- })
-
- it('getRefSpec sha + refs/pull/', async () => {
- const refSpec = refHelper.getRefSpec('refs/pull/123/merge', commit)
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe(`+${commit}:refs/remotes/pull/123/merge`)
- })
-
- it('getRefSpec sha + refs/tags/', async () => {
- const refSpec = refHelper.getRefSpec('refs/tags/my-tag', commit)
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe(`+${commit}:refs/tags/my-tag`)
- })
-
- it('getRefSpec sha only', async () => {
- const refSpec = refHelper.getRefSpec('', commit)
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe(commit)
- })
-
- it('getRefSpec unqualified ref only', async () => {
- const refSpec = refHelper.getRefSpec('my-ref', '')
- expect(refSpec.length).toBe(2)
- expect(refSpec[0]).toBe('+refs/heads/my-ref*:refs/remotes/origin/my-ref*')
- expect(refSpec[1]).toBe('+refs/tags/my-ref*:refs/tags/my-ref*')
- })
-
- it('getRefSpec refs/heads/ only', async () => {
- const refSpec = refHelper.getRefSpec('refs/heads/my/branch', '')
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe(
- '+refs/heads/my/branch:refs/remotes/origin/my/branch'
- )
- })
-
- it('getRefSpec refs/pull/ only', async () => {
- const refSpec = refHelper.getRefSpec('refs/pull/123/merge', '')
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe('+refs/pull/123/merge:refs/remotes/pull/123/merge')
- })
-
- it('getRefSpec refs/tags/ only', async () => {
- const refSpec = refHelper.getRefSpec('refs/tags/my-tag', '')
- expect(refSpec.length).toBe(1)
- expect(refSpec[0]).toBe('+refs/tags/my-tag:refs/tags/my-tag')
- })
-})
diff --git a/__test__/retry-helper.test.ts b/__test__/retry-helper.test.ts
deleted file mode 100644
index 6f8e027..0000000
--- a/__test__/retry-helper.test.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import * as core from '@actions/core'
-import {RetryHelper} from '../lib/retry-helper'
-
-let info: string[]
-let retryHelper: any
-
-describe('retry-helper tests', () => {
- beforeAll(() => {
- // Mock @actions/core info()
- jest.spyOn(core, 'info').mockImplementation((message: string) => {
- info.push(message)
- })
-
- retryHelper = new RetryHelper(3, 0, 0)
- })
-
- beforeEach(() => {
- // Reset info
- info = []
- })
-
- afterAll(() => {
- // Restore
- jest.restoreAllMocks()
- })
-
- it('first attempt succeeds', async () => {
- const actual = await retryHelper.execute(async () => {
- return 'some result'
- })
- expect(actual).toBe('some result')
- expect(info).toHaveLength(0)
- })
-
- it('second attempt succeeds', async () => {
- let attempts = 0
- const actual = await retryHelper.execute(() => {
- if (++attempts == 1) {
- throw new Error('some error')
- }
-
- return Promise.resolve('some result')
- })
- expect(attempts).toBe(2)
- expect(actual).toBe('some result')
- expect(info).toHaveLength(2)
- expect(info[0]).toBe('some error')
- expect(info[1]).toMatch(/Waiting .+ seconds before trying again/)
- })
-
- it('third attempt succeeds', async () => {
- let attempts = 0
- const actual = await retryHelper.execute(() => {
- if (++attempts < 3) {
- throw new Error(`some error ${attempts}`)
- }
-
- return Promise.resolve('some result')
- })
- expect(attempts).toBe(3)
- expect(actual).toBe('some result')
- expect(info).toHaveLength(4)
- expect(info[0]).toBe('some error 1')
- expect(info[1]).toMatch(/Waiting .+ seconds before trying again/)
- expect(info[2]).toBe('some error 2')
- expect(info[3]).toMatch(/Waiting .+ seconds before trying again/)
- })
-
- it('all attempts fail succeeds', async () => {
- let attempts = 0
- let error: Error = (null as unknown) as Error
- try {
- await retryHelper.execute(() => {
- throw new Error(`some error ${++attempts}`)
- })
- } catch (err) {
- error = err
- }
- expect(error.message).toBe('some error 3')
- expect(attempts).toBe(3)
- expect(info).toHaveLength(4)
- expect(info[0]).toBe('some error 1')
- expect(info[1]).toMatch(/Waiting .+ seconds before trying again/)
- expect(info[2]).toBe('some error 2')
- expect(info[3]).toMatch(/Waiting .+ seconds before trying again/)
- })
-})
diff --git a/__test__/verify-basic.sh b/__test__/verify-basic.sh
deleted file mode 100755
index aedd66d..0000000
--- a/__test__/verify-basic.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-if [ ! -f "./basic/basic-file.txt" ]; then
- echo "Expected basic file does not exist"
- exit 1
-fi
-
-if [ "$1" = "--archive" ]; then
- # Verify no .git folder
- if [ -d "./basic/.git" ]; then
- echo "Did not expect ./basic/.git folder to exist"
- exit 1
- fi
-else
- # Verify .git folder
- if [ ! -d "./basic/.git" ]; then
- echo "Expected ./basic/.git folder to exist"
- exit 1
- fi
-
- # Verify auth token
- cd basic
- git fetch --no-tags --depth=1 origin +refs/heads/master:refs/remotes/origin/master
-fi
diff --git a/__test__/verify-clean.sh b/__test__/verify-clean.sh
deleted file mode 100755
index 86bf9d6..0000000
--- a/__test__/verify-clean.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-if [[ "$(git -C ./basic status --porcelain)" != "" ]]; then
- echo ----------------------------------------
- echo git status
- echo ----------------------------------------
- git status
- echo ----------------------------------------
- echo git diff
- echo ----------------------------------------
- git diff
- exit 1
-fi
diff --git a/__test__/verify-lfs.sh b/__test__/verify-lfs.sh
deleted file mode 100755
index b0463f1..0000000
--- a/__test__/verify-lfs.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./lfs/regular-file.txt" ]; then
- echo "Expected regular file does not exist"
- exit 1
-fi
-
-if [ ! -f "./lfs/lfs-file.bin" ]; then
- echo "Expected lfs file does not exist"
- exit 1
-fi
diff --git a/__test__/verify-no-unstaged-changes.sh b/__test__/verify-no-unstaged-changes.sh
deleted file mode 100755
index 9b30471..0000000
--- a/__test__/verify-no-unstaged-changes.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-if [[ "$(git status --porcelain)" != "" ]]; then
- echo ----------------------------------------
- echo git status
- echo ----------------------------------------
- git status
- echo ----------------------------------------
- echo git diff
- echo ----------------------------------------
- git diff
- echo ----------------------------------------
- echo Troubleshooting
- echo ----------------------------------------
- echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && npm ci && npm run format && npm run build"
- exit 1
-fi
diff --git a/__test__/verify-side-by-side.sh b/__test__/verify-side-by-side.sh
deleted file mode 100755
index 35de29a..0000000
--- a/__test__/verify-side-by-side.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./side-by-side-1/side-by-side-test-file-1.txt" ]; then
- echo "Expected file 1 does not exist"
- exit 1
-fi
-
-if [ ! -f "./side-by-side-2/side-by-side-test-file-2.txt" ]; then
- echo "Expected file 2 does not exist"
- exit 1
-fi
diff --git a/__test__/verify-submodules-false.sh b/__test__/verify-submodules-false.sh
deleted file mode 100755
index 733e247..0000000
--- a/__test__/verify-submodules-false.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./submodules-false/regular-file.txt" ]; then
- echo "Expected regular file does not exist"
- exit 1
-fi
-
-if [ -f "./submodules-false/submodule-level-1/submodule-file.txt" ]; then
- echo "Unexpected submodule file exists"
- exit 1
-fi
\ No newline at end of file
diff --git a/__test__/verify-submodules-recursive.sh b/__test__/verify-submodules-recursive.sh
deleted file mode 100755
index 1b68f9b..0000000
--- a/__test__/verify-submodules-recursive.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./submodules-recursive/regular-file.txt" ]; then
- echo "Expected regular file does not exist"
- exit 1
-fi
-
-if [ ! -f "./submodules-recursive/submodule-level-1/submodule-file.txt" ]; then
- echo "Expected submodule file does not exist"
- exit 1
-fi
-
-if [ ! -f "./submodules-recursive/submodule-level-1/submodule-level-2/nested-submodule-file.txt" ]; then
- echo "Expected nested submodule file does not exists"
- exit 1
-fi
-
-echo "Testing persisted credential"
-pushd ./submodules-recursive/submodule-level-1/submodule-level-2
-git config --local --name-only --get-regexp http.+extraheader && git fetch
-if [ "$?" != "0" ]; then
- echo "Failed to validate persisted credential"
- popd
- exit 1
-fi
-popd
diff --git a/__test__/verify-submodules-true.sh b/__test__/verify-submodules-true.sh
deleted file mode 100755
index 43769fe..0000000
--- a/__test__/verify-submodules-true.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "./submodules-true/regular-file.txt" ]; then
- echo "Expected regular file does not exist"
- exit 1
-fi
-
-if [ ! -f "./submodules-true/submodule-level-1/submodule-file.txt" ]; then
- echo "Expected submodule file does not exist"
- exit 1
-fi
-
-if [ -f "./submodules-true/submodule-level-1/submodule-level-2/nested-submodule-file.txt" ]; then
- echo "Unexpected nested submodule file exists"
- exit 1
-fi
-
-echo "Testing persisted credential"
-pushd ./submodules-true/submodule-level-1
-git config --local --name-only --get-regexp http.+extraheader && git fetch
-if [ "$?" != "0" ]; then
- echo "Failed to validate persisted credential"
- popd
- exit 1
-fi
-popd
diff --git a/action.yml b/action.yml
deleted file mode 100644
index 91d3982..0000000
--- a/action.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-name: 'Checkout'
-description: 'Checkout a Git repository at a particular version'
-inputs:
- repository:
- description: 'Repository name with owner. For example, actions/checkout'
- default: ${{ github.repository }}
- ref:
- description: >
- 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
- event. Otherwise, uses the default branch.
- token:
- description: >
- Personal access token (PAT) used to fetch the repository. The PAT is configured
- with the local git config, which enables your scripts to run authenticated git
- commands. The post-job step removes the PAT.
-
-
- We recommend using a service account with the least permissions necessary.
- Also when generating a new PAT, select the least scopes necessary.
-
-
- [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- default: ${{ github.token }}
- ssh-key:
- description: >
- SSH key used to fetch the repository. The SSH key is configured with the local
- git config, which enables your scripts to run authenticated git commands.
- The post-job step removes the SSH key.
-
-
- We recommend using a service account with the least permissions necessary.
-
-
- [Learn more about creating and using
- encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- ssh-known-hosts:
- description: >
- Known hosts in addition to the user and global host key database. The public
- SSH keys for a host may be obtained using the utility `ssh-keyscan`. For example,
- `ssh-keyscan github.com`. The public key for github.com is always implicitly added.
- ssh-strict:
- description: >
- Whether to perform strict host key checking. When true, adds the options `StrictHostKeyChecking=yes`
- and `CheckHostIP=no` to the SSH command line. Use the input `ssh-known-hosts` to
- configure additional hosts.
- default: true
- persist-credentials:
- description: 'Whether to configure the token or SSH key with the local git config'
- default: true
- path:
- description: 'Relative path under $GITHUB_WORKSPACE to place the repository'
- clean:
- description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
- default: true
- fetch-depth:
- description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
- default: 1
- lfs:
- description: 'Whether to download Git-LFS files'
- default: false
- submodules:
- description: >
- Whether to checkout submodules: `true` to checkout submodules or `recursive` to
- recursively checkout submodules.
-
-
- When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
- converted to HTTPS.
- default: false
-runs:
- using: node12
- main: dist/index.js
- post: dist/index.js
diff --git a/adrs/0153-checkout-v2.md b/adrs/0153-checkout-v2.md
deleted file mode 100644
index f174b1a..0000000
--- a/adrs/0153-checkout-v2.md
+++ /dev/null
@@ -1,290 +0,0 @@
-# ADR 0153: Checkout v2
-
-**Date**: 2019-10-21
-
-**Status**: Accepted
-
-## Context
-
-This ADR details the behavior for `actions/checkout@v2`.
-
-The new action will be written in typescript. We are moving away from runner-plugin actions.
-
-We want to take this opportunity to make behavioral changes, from v1. This document is scoped to those differences.
-
-## Decision
-
-### Inputs
-
-```yaml
- repository:
- description: 'Repository name with owner. For example, actions/checkout'
- default: ${{ github.repository }}
- ref:
- description: >
- 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
- event. Otherwise, defaults to `master`.
- token:
- description: >
- Personal access token (PAT) used to fetch the repository. The PAT is configured
- with the local git config, which enables your scripts to run authenticated git
- commands. The post-job step removes the PAT.
-
-
- We recommend using a service account with the least permissions necessary.
- Also when generating a new PAT, select the least scopes necessary.
-
-
- [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- default: ${{ github.token }}
- ssh-key:
- description: >
- SSH key used to fetch the repository. The SSH key is configured with the local
- git config, which enables your scripts to run authenticated git commands.
- The post-job step removes the SSH key.
-
-
- We recommend using a service account with the least permissions necessary.
-
-
- [Learn more about creating and using
- encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
- ssh-known-hosts:
- description: >
- Known hosts in addition to the user and global host key database. The public
- SSH keys for a host may be obtained using the utility `ssh-keyscan`. For example,
- `ssh-keyscan github.com`. The public key for github.com is always implicitly added.
- ssh-strict:
- description: >
- Whether to perform strict host key checking. When true, adds the options `StrictHostKeyChecking=yes`
- and `CheckHostIP=no` to the SSH command line. Use the input `ssh-known-hosts` to
- configure additional hosts.
- default: true
- persist-credentials:
- description: 'Whether to configure the token or SSH key with the local git config'
- default: true
- path:
- description: 'Relative path under $GITHUB_WORKSPACE to place the repository'
- clean:
- description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
- default: true
- fetch-depth:
- description: 'Number of commits to fetch. 0 indicates all history for all tags and branches.'
- default: 1
- lfs:
- description: 'Whether to download Git-LFS files'
- default: false
- submodules:
- description: >
- Whether to checkout submodules: `true` to checkout submodules or `recursive` to
- recursively checkout submodules.
-
-
- When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
- converted to HTTPS.
- default: false
-```
-
-Note:
-- SSH support is new
-- `persist-credentials` is new
-- `path` behavior is different (refer [below](#path) for details)
-
-### Fallback to GitHub API
-
-When a sufficient version of git is not in the PATH, fallback to the [web API](https://developer.github.com/v3/repos/contents/#get-archive-link) to download a tarball/zipball.
-
-Note:
-- LFS files are not included in the archive. Therefore fail if LFS is set to true.
-- Submodules are also not included in the archive.
-
-### Persist credentials
-
-The credentials will be persisted on disk. This will allow users to script authenticated git commands, like `git fetch`.
-
-A post script will remove the credentials (cleanup for self-hosted).
-
-Users may opt-out by specifying `persist-credentials: false`
-
-Note:
-- Users scripting `git commit` may need to set the username and email. The service does not provide any reasonable default value. Users can add `git config user.name ` and `git config user.email `. We will document this guidance.
-
-#### PAT
-
-When using the `${{github.token}}` or a PAT, the token will be persisted in the local git config. The config key `http.https://github.com/.extraheader` enables an auth header to be specified on all authenticated commands `AUTHORIZATION: basic `.
-
-Note:
-- The auth header is scoped to all of github `http.https://github.com/.extraheader`
- - Additional public remotes also just work.
- - If users want to authenticate to an additional private remote, they should provide the `token` input.
-
-#### SSH key
-
-The SSH key will be written to disk under the `$RUNNER_TEMP` directory. The SSH key will
-be removed by the action's post-job hook. Additionally, RUNNER_TEMP is cleared by the
-runner between jobs.
-
-The SSH key must be written with strict file permissions. The SSH client requires the file
-to be read/write for the user, and not accessible by others.
-
-The user host key database (`~/.ssh/known_hosts`) will be copied to a unique file under
-`$RUNNER_TEMP`. And values from the input `ssh-known-hosts` will be added to the file.
-
-The SSH command will be overridden for the local git config:
-
-```sh
-git config core.sshCommand 'ssh -i "$RUNNER_TEMP/path-to-ssh-key" -o StrictHostKeyChecking=yes -o CheckHostIP=no -o "UserKnownHostsFile=$RUNNER_TEMP/path-to-known-hosts"'
-```
-
-When the input `ssh-strict` is set to `false`, the options `CheckHostIP` and `StrictHostKeyChecking` will not be overridden.
-
-Note:
-- When `ssh-strict` is set to `true` (default), the SSH option `CheckHostIP` can safely be disabled.
- Strict host checking verifies the server's public key. Therefore, IP verification is unnecessary
- and noisy. For example:
- > Warning: Permanently added the RSA host key for IP address '140.82.113.4' to the list of known hosts.
-- Since GIT_SSH_COMMAND overrides core.sshCommand, temporarily set the env var when fetching the repo. When creds
- are persisted, core.sshCommand is leveraged to avoid multiple checkout steps stomping over each other.
-- Modify actions/runner to mount RUNNER_TEMP to enable scripting authenticated git commands from a container action.
-- Refer [here](https://linux.die.net/man/5/ssh_config) for SSH config details.
-
-### Fetch behavior
-
-Fetch only the SHA being built and set depth=1. This significantly reduces the fetch time for large repos.
-
-If a SHA isn't available (e.g. multi repo), then fetch only the specified ref with depth=1.
-
-The input `fetch-depth` can be used to control the depth.
-
-Note:
-- Fetching a single commit is supported by Git wire protocol version 2. The git client uses protocol version 0 by default. The desired protocol version can be overridden in the git config or on the fetch command line invocation (`-c protocol.version=2`). We will override on the fetch command line, for transparency.
-- Git client version 2.18+ (released June 2018) is required for wire protocol version 2.
-
-### Checkout behavior
-
-For CI, checkout will create a local ref with the upstream set. This allows users to script git as they normally would.
-
-For PR, continue to checkout detached head. The PR branch is special - the branch and merge commit are created by the server. It doesn't match a users' local workflow.
-
-Note:
-- Consider deleting all local refs during cleanup if that helps avoid collisions. More testing required.
-
-### Path
-
-For the mainline scenario, the disk-layout behavior remains the same.
-
-Remember, given the repo `johndoe/foo`, the mainline disk layout looks like:
-
-```
-GITHUB_WORKSPACE=/home/runner/work/foo/foo
-RUNNER_WORKSPACE=/home/runner/work/foo
-```
-
-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.
-
-These behavioral changes align better with container actions. The [documented filesystem contract](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#docker-container-filesystem) is:
-
-- `/github/home`
-- `/github/workspace` - Note: GitHub Actions must be run by the default Docker user (root). Ensure your Dockerfile does not set the USER instruction, otherwise you will not be able to access `GITHUB_WORKSPACE`.
-- `/github/workflow`
-
-Note:
-- The tracking config will not be updated to reflect the path of the workflow repo.
-- Any existing workflow repo will not be moved when the checkout path changes. In fact some customers want to checkout the workflow repo twice, side by side against different branches.
-- Actions that need to operate only against the root of the self repo, should expose a `path` input.
-
-#### Default value for `path` input
-
-The `path` input will default to `./` which is rooted against `github.workspace`.
-
-This default fits the mainline scenario well: single checkout
-
-For multi-checkout, users must specify the `path` input for at least one of the repositories.
-
-Note:
-- An alternative is for the self repo to default to `./` and other repos default to ``. However nested layout is an atypical git layout and therefore is not a good default. Users should supply the path info.
-
-#### Example - Nested layout
-
-The following example checks-out two repositories and creates a nested layout.
-
-```yaml
-# Self repo - Checkout to $GITHUB_WORKSPACE
-- uses: checkout@v2
-
-# Other repo - Checkout to $GITHUB_WORKSPACE/myscripts
-- uses: checkout@v2
- with:
- repository: myorg/myscripts
- path: myscripts
-```
-
-#### Example - Side by side layout
-
-The following example checks-out two repositories and creates a side-by-side layout.
-
-```yaml
-# Self repo - Checkout to $GITHUB_WORKSPACE/foo
-- uses: checkout@v2
- with:
- path: foo
-
-# Other repo - Checkout to $GITHUB_WORKSPACE/myscripts
-- uses: checkout@v2
- with:
- repository: myorg/myscripts
- path: myscripts
-```
-
-#### Path impact to problem matchers
-
-Problem matchers associate the source files with annotations.
-
-Today the runner verifies the source file is under the `github.workspace`. Otherwise the source file property is dropped.
-
-Multi-checkout complicates the matter. However even today submodules may cause this heuristic to be inaccurate.
-
-A better solution is:
-
-Given a source file path, walk up the directories until the first `.git/config` is found. Check if it matches the self repo (`url = https://github.com/OWNER/REPO`). If not, drop the source file path.
-
-### Submodules
-
-With both PAT and SSH key support, we should be able to provide frictionless support for
-submodules scenarios: recursive, non-recursive, relative submodule paths.
-
-When fetching submodules, follow the `fetch-depth` settings.
-
-Also when fetching submodules, if the `ssh-key` input is not provided then convert SSH URLs to HTTPS: `-c url."https://github.com/".insteadOf "git@github.com:"`
-
-Credentials will be persisted in the submodules local git config too.
-
-### Port to typescript
-
-The checkout action should be a typescript action on the GitHub graph, for the following reasons:
-- Enables customers to fork the checkout repo and modify
-- Serves as an example for customers
-- Demystifies the checkout action manifest
-- Simplifies the runner
-- Reduce the amount of runner code to port (if we ever do)
-
-Note:
-- This means job-container images will need git in the PATH, for checkout.
-
-### Branching strategy and release tags
-
-- Create a servicing branch for V1: `releases/v1`
-- Merge the changes into `master`
-- Release using a new tag `preview`
-- When stable, release using a new tag `v2`
-
-## Consequences
-
-- Update the checkout action and readme
-- Update samples to consume `actions/checkout@v2`
-- Job containers now require git in the PATH for checkout, otherwise fallback to REST API
-- Minimum git version 2.18
-- Update problem matcher logic regarding source file verification (runner)
\ No newline at end of file
diff --git a/dist/index.js b/dist/index.js
deleted file mode 100644
index e0d0238..0000000
--- a/dist/index.js
+++ /dev/null
@@ -1,31294 +0,0 @@
-module.exports =
-/******/ (function(modules, runtime) { // webpackBootstrap
-/******/ "use strict";
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ __webpack_require__.ab = __dirname + "/";
-/******/
-/******/ // the startup function
-/******/ function startup() {
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(198);
-/******/ };
-/******/
-/******/ // run startup
-/******/ return startup();
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-const { requestLog } = __webpack_require__(916);
-const {
- restEndpointMethods
-} = __webpack_require__(842);
-
-const Core = __webpack_require__(529);
-
-const CORE_PLUGINS = [
- __webpack_require__(190),
- __webpack_require__(19), // deprecated: remove in v17
- requestLog,
- __webpack_require__(148),
- restEndpointMethods,
- __webpack_require__(430),
-
- __webpack_require__(850) // deprecated: remove in v17
-];
-
-const OctokitRest = Core.plugin(CORE_PLUGINS);
-
-function DeprecatedOctokit(options) {
- const warn =
- options && options.log && options.log.warn
- ? options.log.warn
- : console.warn;
- warn(
- '[@octokit/rest] `const Octokit = require("@octokit/rest")` is deprecated. Use `const { Octokit } = require("@octokit/rest")` instead'
- );
- return new OctokitRest(options);
-}
-
-const Octokit = Object.assign(DeprecatedOctokit, {
- Octokit: OctokitRest
-});
-
-Object.keys(OctokitRest).forEach(key => {
- /* istanbul ignore else */
- if (OctokitRest.hasOwnProperty(key)) {
- Octokit[key] = OctokitRest[key];
- }
-});
-
-module.exports = Octokit;
-
-
-/***/ }),
-
-/***/ 1:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const childProcess = __webpack_require__(129);
-const path = __webpack_require__(622);
-const util_1 = __webpack_require__(669);
-const ioUtil = __webpack_require__(672);
-const exec = util_1.promisify(childProcess.exec);
-/**
- * Copies a file or folder.
- * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
- *
- * @param source source path
- * @param dest destination path
- * @param options optional. See CopyOptions.
- */
-function cp(source, dest, options = {}) {
- return __awaiter(this, void 0, void 0, function* () {
- const { force, recursive } = readCopyOptions(options);
- const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
- // Dest is an existing file, but not forcing
- if (destStat && destStat.isFile() && !force) {
- return;
- }
- // If dest is an existing directory, should copy inside.
- const newDest = destStat && destStat.isDirectory()
- ? path.join(dest, path.basename(source))
- : dest;
- if (!(yield ioUtil.exists(source))) {
- throw new Error(`no such file or directory: ${source}`);
- }
- const sourceStat = yield ioUtil.stat(source);
- if (sourceStat.isDirectory()) {
- if (!recursive) {
- throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
- }
- else {
- yield cpDirRecursive(source, newDest, 0, force);
- }
- }
- else {
- if (path.relative(source, newDest) === '') {
- // a file cannot be copied to itself
- throw new Error(`'${newDest}' and '${source}' are the same file`);
- }
- yield copyFile(source, newDest, force);
- }
- });
-}
-exports.cp = cp;
-/**
- * Moves a path.
- *
- * @param source source path
- * @param dest destination path
- * @param options optional. See MoveOptions.
- */
-function mv(source, dest, options = {}) {
- return __awaiter(this, void 0, void 0, function* () {
- if (yield ioUtil.exists(dest)) {
- let destExists = true;
- if (yield ioUtil.isDirectory(dest)) {
- // If dest is directory copy src into dest
- dest = path.join(dest, path.basename(source));
- destExists = yield ioUtil.exists(dest);
- }
- if (destExists) {
- if (options.force == null || options.force) {
- yield rmRF(dest);
- }
- else {
- throw new Error('Destination already exists');
- }
- }
- }
- yield mkdirP(path.dirname(dest));
- yield ioUtil.rename(source, dest);
- });
-}
-exports.mv = mv;
-/**
- * Remove a path recursively with force
- *
- * @param inputPath path to remove
- */
-function rmRF(inputPath) {
- return __awaiter(this, void 0, void 0, function* () {
- if (ioUtil.IS_WINDOWS) {
- // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
- // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
- try {
- if (yield ioUtil.isDirectory(inputPath, true)) {
- yield exec(`rd /s /q "${inputPath}"`);
- }
- else {
- yield exec(`del /f /a "${inputPath}"`);
- }
- }
- catch (err) {
- // if you try to delete a file that doesn't exist, desired result is achieved
- // other errors are valid
- if (err.code !== 'ENOENT')
- throw err;
- }
- // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
- try {
- yield ioUtil.unlink(inputPath);
- }
- catch (err) {
- // if you try to delete a file that doesn't exist, desired result is achieved
- // other errors are valid
- if (err.code !== 'ENOENT')
- throw err;
- }
- }
- else {
- let isDir = false;
- try {
- isDir = yield ioUtil.isDirectory(inputPath);
- }
- catch (err) {
- // if you try to delete a file that doesn't exist, desired result is achieved
- // other errors are valid
- if (err.code !== 'ENOENT')
- throw err;
- return;
- }
- if (isDir) {
- yield exec(`rm -rf "${inputPath}"`);
- }
- else {
- yield ioUtil.unlink(inputPath);
- }
- }
- });
-}
-exports.rmRF = rmRF;
-/**
- * Make a directory. Creates the full path with folders in between
- * Will throw if it fails
- *
- * @param fsPath path to create
- * @returns Promise
- */
-function mkdirP(fsPath) {
- return __awaiter(this, void 0, void 0, function* () {
- yield ioUtil.mkdirP(fsPath);
- });
-}
-exports.mkdirP = mkdirP;
-/**
- * Returns path of a tool had the tool actually been invoked. Resolves via paths.
- * If you check and the tool does not exist, it will throw.
- *
- * @param tool name of the tool
- * @param check whether to check if tool exists
- * @returns Promise path to tool
- */
-function which(tool, check) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!tool) {
- throw new Error("parameter 'tool' is required");
- }
- // recursive when check=true
- if (check) {
- const result = yield which(tool, false);
- if (!result) {
- if (ioUtil.IS_WINDOWS) {
- throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
- }
- else {
- throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
- }
- }
- }
- try {
- // build the list of extensions to try
- const extensions = [];
- if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
- for (const extension of process.env.PATHEXT.split(path.delimiter)) {
- if (extension) {
- extensions.push(extension);
- }
- }
- }
- // if it's rooted, return it if exists. otherwise return empty.
- if (ioUtil.isRooted(tool)) {
- const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
- if (filePath) {
- return filePath;
- }
- return '';
- }
- // if any path separators, return empty
- if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
- return '';
- }
- // build the list of directories
- //
- // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
- // it feels like we should not do this. Checking the current directory seems like more of a use
- // case of a shell, and the which() function exposed by the toolkit should strive for consistency
- // across platforms.
- const directories = [];
- if (process.env.PATH) {
- for (const p of process.env.PATH.split(path.delimiter)) {
- if (p) {
- directories.push(p);
- }
- }
- }
- // return the first match
- for (const directory of directories) {
- const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
- if (filePath) {
- return filePath;
- }
- }
- return '';
- }
- catch (err) {
- throw new Error(`which failed with message ${err.message}`);
- }
- });
-}
-exports.which = which;
-function readCopyOptions(options) {
- const force = options.force == null ? true : options.force;
- const recursive = Boolean(options.recursive);
- return { force, recursive };
-}
-function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
- return __awaiter(this, void 0, void 0, function* () {
- // Ensure there is not a run away recursive copy
- if (currentDepth >= 255)
- return;
- currentDepth++;
- yield mkdirP(destDir);
- const files = yield ioUtil.readdir(sourceDir);
- for (const fileName of files) {
- const srcFile = `${sourceDir}/${fileName}`;
- const destFile = `${destDir}/${fileName}`;
- const srcFileStat = yield ioUtil.lstat(srcFile);
- if (srcFileStat.isDirectory()) {
- // Recurse
- yield cpDirRecursive(srcFile, destFile, currentDepth, force);
- }
- else {
- yield copyFile(srcFile, destFile, force);
- }
- }
- // Change the mode for the newly created directory
- yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
- });
-}
-// Buffered file copy
-function copyFile(srcFile, destFile, force) {
- return __awaiter(this, void 0, void 0, function* () {
- if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
- // unlink/re-link it
- try {
- yield ioUtil.lstat(destFile);
- yield ioUtil.unlink(destFile);
- }
- catch (e) {
- // Try to override file permission
- if (e.code === 'EPERM') {
- yield ioUtil.chmod(destFile, '0666');
- yield ioUtil.unlink(destFile);
- }
- // other errors = it doesn't exist, no work to do
- }
- // Copy over symlink
- const symlinkFull = yield ioUtil.readlink(srcFile);
- yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
- }
- else if (!(yield ioUtil.exists(destFile)) || force) {
- yield ioUtil.copyFile(srcFile, destFile);
- }
- });
-}
-//# sourceMappingURL=io.js.map
-
-/***/ }),
-
-/***/ 2:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const os = __webpack_require__(87);
-const macosRelease = __webpack_require__(118);
-const winRelease = __webpack_require__(49);
-
-const osName = (platform, release) => {
- if (!platform && release) {
- throw new Error('You can\'t specify a `release` without specifying `platform`');
- }
-
- platform = platform || os.platform();
-
- let id;
-
- if (platform === 'darwin') {
- if (!release && os.platform() === 'darwin') {
- release = os.release();
- }
-
- const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
- id = release ? macosRelease(release).name : '';
- return prefix + (id ? ' ' + id : '');
- }
-
- if (platform === 'linux') {
- if (!release && os.platform() === 'linux') {
- release = os.release();
- }
-
- id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
- return 'Linux' + (id ? ' ' + id : '');
- }
-
- if (platform === 'win32') {
- if (!release && os.platform() === 'win32') {
- release = os.release();
- }
-
- id = release ? winRelease(release) : '';
- return 'Windows' + (id ? ' ' + id : '');
- }
-
- return platform;
-};
-
-module.exports = osName;
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var once = __webpack_require__(969);
-
-var noop = function() {};
-
-var isRequest = function(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-};
-
-var isChildProcess = function(stream) {
- return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
-};
-
-var eos = function(stream, opts, callback) {
- if (typeof opts === 'function') return eos(stream, null, opts);
- if (!opts) opts = {};
-
- callback = once(callback || noop);
-
- var ws = stream._writableState;
- var rs = stream._readableState;
- var readable = opts.readable || (opts.readable !== false && stream.readable);
- var writable = opts.writable || (opts.writable !== false && stream.writable);
- var cancelled = false;
-
- var onlegacyfinish = function() {
- if (!stream.writable) onfinish();
- };
-
- var onfinish = function() {
- writable = false;
- if (!readable) callback.call(stream);
- };
-
- var onend = function() {
- readable = false;
- if (!writable) callback.call(stream);
- };
-
- var onexit = function(exitCode) {
- callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
- };
-
- var onerror = function(err) {
- callback.call(stream, err);
- };
-
- var onclose = function() {
- process.nextTick(onclosenexttick);
- };
-
- var onclosenexttick = function() {
- if (cancelled) return;
- if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));
- if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));
- };
-
- var onrequest = function() {
- stream.req.on('finish', onfinish);
- };
-
- if (isRequest(stream)) {
- stream.on('complete', onfinish);
- stream.on('abort', onclose);
- if (stream.req) onrequest();
- else stream.on('request', onrequest);
- } else if (writable && !ws) { // legacy streams
- stream.on('end', onlegacyfinish);
- stream.on('close', onlegacyfinish);
- }
-
- if (isChildProcess(stream)) stream.on('exit', onexit);
-
- stream.on('end', onend);
- stream.on('finish', onfinish);
- if (opts.error !== false) stream.on('error', onerror);
- stream.on('close', onclose);
-
- return function() {
- cancelled = true;
- stream.removeListener('complete', onfinish);
- stream.removeListener('abort', onclose);
- stream.removeListener('request', onrequest);
- if (stream.req) stream.req.removeListener('finish', onfinish);
- stream.removeListener('end', onlegacyfinish);
- stream.removeListener('close', onlegacyfinish);
- stream.removeListener('finish', onfinish);
- stream.removeListener('exit', onexit);
- stream.removeListener('end', onend);
- stream.removeListener('error', onerror);
- stream.removeListener('close', onclose);
- };
-};
-
-module.exports = eos;
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const os = __webpack_require__(87);
-const events = __webpack_require__(614);
-const child = __webpack_require__(129);
-/* eslint-disable @typescript-eslint/unbound-method */
-const IS_WINDOWS = process.platform === 'win32';
-/*
- * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.
- */
-class ToolRunner extends events.EventEmitter {
- constructor(toolPath, args, options) {
- super();
- if (!toolPath) {
- throw new Error("Parameter 'toolPath' cannot be null or empty.");
- }
- this.toolPath = toolPath;
- this.args = args || [];
- this.options = options || {};
- }
- _debug(message) {
- if (this.options.listeners && this.options.listeners.debug) {
- this.options.listeners.debug(message);
- }
- }
- _getCommandString(options, noPrefix) {
- const toolPath = this._getSpawnFileName();
- const args = this._getSpawnArgs(options);
- let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool
- if (IS_WINDOWS) {
- // Windows + cmd file
- if (this._isCmdFile()) {
- cmd += toolPath;
- for (const a of args) {
- cmd += ` ${a}`;
- }
- }
- // Windows + verbatim
- else if (options.windowsVerbatimArguments) {
- cmd += `"${toolPath}"`;
- for (const a of args) {
- cmd += ` ${a}`;
- }
- }
- // Windows (regular)
- else {
- cmd += this._windowsQuoteCmdArg(toolPath);
- for (const a of args) {
- cmd += ` ${this._windowsQuoteCmdArg(a)}`;
- }
- }
- }
- else {
- // OSX/Linux - this can likely be improved with some form of quoting.
- // creating processes on Unix is fundamentally different than Windows.
- // on Unix, execvp() takes an arg array.
- cmd += toolPath;
- for (const a of args) {
- cmd += ` ${a}`;
- }
- }
- return cmd;
- }
- _processLineBuffer(data, strBuffer, onLine) {
- try {
- let s = strBuffer + data.toString();
- let n = s.indexOf(os.EOL);
- while (n > -1) {
- const line = s.substring(0, n);
- onLine(line);
- // the rest of the string ...
- s = s.substring(n + os.EOL.length);
- n = s.indexOf(os.EOL);
- }
- strBuffer = s;
- }
- catch (err) {
- // streaming lines to console is best effort. Don't fail a build.
- this._debug(`error processing line. Failed with error ${err}`);
- }
- }
- _getSpawnFileName() {
- if (IS_WINDOWS) {
- if (this._isCmdFile()) {
- return process.env['COMSPEC'] || 'cmd.exe';
- }
- }
- return this.toolPath;
- }
- _getSpawnArgs(options) {
- if (IS_WINDOWS) {
- if (this._isCmdFile()) {
- let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;
- for (const a of this.args) {
- argline += ' ';
- argline += options.windowsVerbatimArguments
- ? a
- : this._windowsQuoteCmdArg(a);
- }
- argline += '"';
- return [argline];
- }
- }
- return this.args;
- }
- _endsWith(str, end) {
- return str.endsWith(end);
- }
- _isCmdFile() {
- const upperToolPath = this.toolPath.toUpperCase();
- return (this._endsWith(upperToolPath, '.CMD') ||
- this._endsWith(upperToolPath, '.BAT'));
- }
- _windowsQuoteCmdArg(arg) {
- // for .exe, apply the normal quoting rules that libuv applies
- if (!this._isCmdFile()) {
- return this._uvQuoteCmdArg(arg);
- }
- // otherwise apply quoting rules specific to the cmd.exe command line parser.
- // the libuv rules are generic and are not designed specifically for cmd.exe
- // command line parser.
- //
- // for a detailed description of the cmd.exe command line parser, refer to
- // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
- // need quotes for empty arg
- if (!arg) {
- return '""';
- }
- // determine whether the arg needs to be quoted
- const cmdSpecialChars = [
- ' ',
- '\t',
- '&',
- '(',
- ')',
- '[',
- ']',
- '{',
- '}',
- '^',
- '=',
- ';',
- '!',
- "'",
- '+',
- ',',
- '`',
- '~',
- '|',
- '<',
- '>',
- '"'
- ];
- let needsQuotes = false;
- for (const char of arg) {
- if (cmdSpecialChars.some(x => x === char)) {
- needsQuotes = true;
- break;
- }
- }
- // short-circuit if quotes not needed
- if (!needsQuotes) {
- return arg;
- }
- // the following quoting rules are very similar to the rules that by libuv applies.
- //
- // 1) wrap the string in quotes
- //
- // 2) double-up quotes - i.e. " => ""
- //
- // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
- // doesn't work well with a cmd.exe command line.
- //
- // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
- // for example, the command line:
- // foo.exe "myarg:""my val"""
- // is parsed by a .NET console app into an arg array:
- // [ "myarg:\"my val\"" ]
- // which is the same end result when applying libuv quoting rules. although the actual
- // command line from libuv quoting rules would look like:
- // foo.exe "myarg:\"my val\""
- //
- // 3) double-up slashes that precede a quote,
- // e.g. hello \world => "hello \world"
- // hello\"world => "hello\\""world"
- // hello\\"world => "hello\\\\""world"
- // hello world\ => "hello world\\"
- //
- // technically this is not required for a cmd.exe command line, or the batch argument parser.
- // the reasons for including this as a .cmd quoting rule are:
- //
- // a) this is optimized for the scenario where the argument is passed from the .cmd file to an
- // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
- //
- // b) it's what we've been doing previously (by deferring to node default behavior) and we
- // haven't heard any complaints about that aspect.
- //
- // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
- // escaped when used on the command line directly - even though within a .cmd file % can be escaped
- // by using %%.
- //
- // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
- // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
- //
- // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
- // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
- // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
- // to an external program.
- //
- // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
- // % can be escaped within a .cmd file.
- let reverse = '"';
- let quoteHit = true;
- for (let i = arg.length; i > 0; i--) {
- // walk the string in reverse
- reverse += arg[i - 1];
- if (quoteHit && arg[i - 1] === '\\') {
- reverse += '\\'; // double the slash
- }
- else if (arg[i - 1] === '"') {
- quoteHit = true;
- reverse += '"'; // double the quote
- }
- else {
- quoteHit = false;
- }
- }
- reverse += '"';
- return reverse
- .split('')
- .reverse()
- .join('');
- }
- _uvQuoteCmdArg(arg) {
- // Tool runner wraps child_process.spawn() and needs to apply the same quoting as
- // Node in certain cases where the undocumented spawn option windowsVerbatimArguments
- // is used.
- //
- // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
- // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
- // pasting copyright notice from Node within this function:
- //
- // Copyright Joyent, Inc. and other Node contributors. All rights reserved.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- if (!arg) {
- // Need double quotation for empty argument
- return '""';
- }
- if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) {
- // No quotation needed
- return arg;
- }
- if (!arg.includes('"') && !arg.includes('\\')) {
- // No embedded double quotes or backslashes, so I can just wrap
- // quote marks around the whole thing.
- return `"${arg}"`;
- }
- // Expected input/output:
- // input : hello"world
- // output: "hello\"world"
- // input : hello""world
- // output: "hello\"\"world"
- // input : hello\world
- // output: hello\world
- // input : hello\\world
- // output: hello\\world
- // input : hello\"world
- // output: "hello\\\"world"
- // input : hello\\"world
- // output: "hello\\\\\"world"
- // input : hello world\
- // output: "hello world\\" - note the comment in libuv actually reads "hello world\"
- // but it appears the comment is wrong, it should be "hello world\\"
- let reverse = '"';
- let quoteHit = true;
- for (let i = arg.length; i > 0; i--) {
- // walk the string in reverse
- reverse += arg[i - 1];
- if (quoteHit && arg[i - 1] === '\\') {
- reverse += '\\';
- }
- else if (arg[i - 1] === '"') {
- quoteHit = true;
- reverse += '\\';
- }
- else {
- quoteHit = false;
- }
- }
- reverse += '"';
- return reverse
- .split('')
- .reverse()
- .join('');
- }
- _cloneExecOptions(options) {
- options = options || {};
- const result = {
- cwd: options.cwd || process.cwd(),
- env: options.env || process.env,
- silent: options.silent || false,
- windowsVerbatimArguments: options.windowsVerbatimArguments || false,
- failOnStdErr: options.failOnStdErr || false,
- ignoreReturnCode: options.ignoreReturnCode || false,
- delay: options.delay || 10000
- };
- result.outStream = options.outStream || process.stdout;
- result.errStream = options.errStream || process.stderr;
- return result;
- }
- _getSpawnOptions(options, toolPath) {
- options = options || {};
- const result = {};
- result.cwd = options.cwd;
- result.env = options.env;
- result['windowsVerbatimArguments'] =
- options.windowsVerbatimArguments || this._isCmdFile();
- if (options.windowsVerbatimArguments) {
- result.argv0 = `"${toolPath}"`;
- }
- return result;
- }
- /**
- * Exec a tool.
- * Output will be streamed to the live console.
- * Returns promise with return code
- *
- * @param tool path to tool to exec
- * @param options optional exec options. See ExecOptions
- * @returns number
- */
- exec() {
- return __awaiter(this, void 0, void 0, function* () {
- return new Promise((resolve, reject) => {
- this._debug(`exec tool: ${this.toolPath}`);
- this._debug('arguments:');
- for (const arg of this.args) {
- this._debug(` ${arg}`);
- }
- const optionsNonNull = this._cloneExecOptions(this.options);
- if (!optionsNonNull.silent && optionsNonNull.outStream) {
- optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);
- }
- const state = new ExecState(optionsNonNull, this.toolPath);
- state.on('debug', (message) => {
- this._debug(message);
- });
- const fileName = this._getSpawnFileName();
- const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
- const stdbuffer = '';
- if (cp.stdout) {
- cp.stdout.on('data', (data) => {
- if (this.options.listeners && this.options.listeners.stdout) {
- this.options.listeners.stdout(data);
- }
- if (!optionsNonNull.silent && optionsNonNull.outStream) {
- optionsNonNull.outStream.write(data);
- }
- this._processLineBuffer(data, stdbuffer, (line) => {
- if (this.options.listeners && this.options.listeners.stdline) {
- this.options.listeners.stdline(line);
- }
- });
- });
- }
- const errbuffer = '';
- if (cp.stderr) {
- cp.stderr.on('data', (data) => {
- state.processStderr = true;
- if (this.options.listeners && this.options.listeners.stderr) {
- this.options.listeners.stderr(data);
- }
- if (!optionsNonNull.silent &&
- optionsNonNull.errStream &&
- optionsNonNull.outStream) {
- const s = optionsNonNull.failOnStdErr
- ? optionsNonNull.errStream
- : optionsNonNull.outStream;
- s.write(data);
- }
- this._processLineBuffer(data, errbuffer, (line) => {
- if (this.options.listeners && this.options.listeners.errline) {
- this.options.listeners.errline(line);
- }
- });
- });
- }
- cp.on('error', (err) => {
- state.processError = err.message;
- state.processExited = true;
- state.processClosed = true;
- state.CheckComplete();
- });
- cp.on('exit', (code) => {
- state.processExitCode = code;
- state.processExited = true;
- this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);
- state.CheckComplete();
- });
- cp.on('close', (code) => {
- state.processExitCode = code;
- state.processExited = true;
- state.processClosed = true;
- this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);
- state.CheckComplete();
- });
- state.on('done', (error, exitCode) => {
- if (stdbuffer.length > 0) {
- this.emit('stdline', stdbuffer);
- }
- if (errbuffer.length > 0) {
- this.emit('errline', errbuffer);
- }
- cp.removeAllListeners();
- if (error) {
- reject(error);
- }
- else {
- resolve(exitCode);
- }
- });
- });
- });
- }
-}
-exports.ToolRunner = ToolRunner;
-/**
- * Convert an arg string to an array of args. Handles escaping
- *
- * @param argString string of arguments
- * @returns string[] array of arguments
- */
-function argStringToArray(argString) {
- const args = [];
- let inQuotes = false;
- let escaped = false;
- let arg = '';
- function append(c) {
- // we only escape double quotes.
- if (escaped && c !== '"') {
- arg += '\\';
- }
- arg += c;
- escaped = false;
- }
- for (let i = 0; i < argString.length; i++) {
- const c = argString.charAt(i);
- if (c === '"') {
- if (!escaped) {
- inQuotes = !inQuotes;
- }
- else {
- append(c);
- }
- continue;
- }
- if (c === '\\' && escaped) {
- append(c);
- continue;
- }
- if (c === '\\' && inQuotes) {
- escaped = true;
- continue;
- }
- if (c === ' ' && !inQuotes) {
- if (arg.length > 0) {
- args.push(arg);
- arg = '';
- }
- continue;
- }
- append(c);
- }
- if (arg.length > 0) {
- args.push(arg.trim());
- }
- return args;
-}
-exports.argStringToArray = argStringToArray;
-class ExecState extends events.EventEmitter {
- constructor(options, toolPath) {
- super();
- this.processClosed = false; // tracks whether the process has exited and stdio is closed
- this.processError = '';
- this.processExitCode = 0;
- this.processExited = false; // tracks whether the process has exited
- this.processStderr = false; // tracks whether stderr was written to
- this.delay = 10000; // 10 seconds
- this.done = false;
- this.timeout = null;
- if (!toolPath) {
- throw new Error('toolPath must not be empty');
- }
- this.options = options;
- this.toolPath = toolPath;
- if (options.delay) {
- this.delay = options.delay;
- }
- }
- CheckComplete() {
- if (this.done) {
- return;
- }
- if (this.processClosed) {
- this._setResult();
- }
- else if (this.processExited) {
- this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
- }
- }
- _debug(message) {
- this.emit('debug', message);
- }
- _setResult() {
- // determine whether there is an error
- let error;
- if (this.processExited) {
- if (this.processError) {
- error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);
- }
- else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {
- error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
- }
- else if (this.processStderr && this.options.failOnStdErr) {
- error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);
- }
- }
- // clear the timeout
- if (this.timeout) {
- clearTimeout(this.timeout);
- this.timeout = null;
- }
- this.done = true;
- this.emit('done', error, this.processExitCode);
- }
- static HandleTimeout(state) {
- if (state.done) {
- return;
- }
- if (!state.processClosed && state.processExited) {
- const message = `The STDIO streams did not close within ${state.delay /
- 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;
- state._debug(message);
- }
- state._setResult();
- }
-}
-//# sourceMappingURL=toolrunner.js.map
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module) {
-
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
-
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
-
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
-
- return wrapper
-
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
-
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module) {
-
-module.exports = require("tls");
-
-/***/ }),
-
-/***/ 18:
-/***/ (function() {
-
-eval("require")("encoding");
-
-
-/***/ }),
-
-/***/ 19:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationPlugin;
-
-const { Deprecation } = __webpack_require__(692);
-const once = __webpack_require__(969);
-
-const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
-
-const authenticate = __webpack_require__(674);
-const beforeRequest = __webpack_require__(471);
-const requestError = __webpack_require__(349);
-
-function authenticationPlugin(octokit, options) {
- if (options.auth) {
- octokit.authenticate = () => {
- deprecateAuthenticate(
- octokit.log,
- new Deprecation(
- '[@octokit/rest] octokit.authenticate() is deprecated and has no effect when "auth" option is set on Octokit constructor'
- )
- );
- };
- return;
- }
- const state = {
- octokit,
- auth: false
- };
- octokit.authenticate = authenticate.bind(null, state);
- octokit.hook.before("request", beforeRequest.bind(null, state));
- octokit.hook.error("request", requestError.bind(null, state));
-}
-
-
-/***/ }),
-
-/***/ 20:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-
-const cp = __webpack_require__(129);
-const parse = __webpack_require__(568);
-const enoent = __webpack_require__(881);
-
-function spawn(command, args, options) {
- // Parse the arguments
- const parsed = parse(command, args, options);
-
- // Spawn the child process
- const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
-
- // Hook into child process "exit" event to emit an error if the command
- // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- enoent.hookChildProcess(spawned, parsed);
-
- return spawned;
-}
-
-function spawnSync(command, args, options) {
- // Parse the arguments
- const parsed = parse(command, args, options);
-
- // Spawn the child process
- const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
-
- // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
-
- return result;
-}
-
-module.exports = spawn;
-module.exports.spawn = spawn;
-module.exports.sync = spawnSync;
-
-module.exports._parse = parse;
-module.exports._enoent = enoent;
-
-
-/***/ }),
-
-/***/ 34:
-/***/ (function(module) {
-
-module.exports = require("https");
-
-/***/ }),
-
-/***/ 39:
-/***/ (function(module) {
-
-"use strict";
-
-module.exports = opts => {
- opts = opts || {};
-
- const env = opts.env || process.env;
- const platform = opts.platform || process.platform;
-
- if (platform !== 'win32') {
- return 'PATH';
- }
-
- return Object.keys(env).find(x => x.toUpperCase() === 'PATH') || 'Path';
-};
-
-
-/***/ }),
-
-/***/ 47:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = factory;
-
-const Octokit = __webpack_require__(402);
-const registerPlugin = __webpack_require__(855);
-
-function factory(plugins) {
- const Api = Octokit.bind(null, plugins || []);
- Api.plugin = registerPlugin.bind(null, plugins || []);
- return Api;
-}
-
-
-/***/ }),
-
-/***/ 49:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const os = __webpack_require__(87);
-const execa = __webpack_require__(955);
-
-// Reference: https://www.gaijin.at/en/lstwinver.php
-const names = new Map([
- ['10.0', '10'],
- ['6.3', '8.1'],
- ['6.2', '8'],
- ['6.1', '7'],
- ['6.0', 'Vista'],
- ['5.2', 'Server 2003'],
- ['5.1', 'XP'],
- ['5.0', '2000'],
- ['4.9', 'ME'],
- ['4.1', '98'],
- ['4.0', '95']
-]);
-
-const windowsRelease = release => {
- const version = /\d+\.\d/.exec(release || os.release());
-
- if (release && !version) {
- throw new Error('`release` argument doesn\'t match `n.n`');
- }
-
- const ver = (version || [])[0];
-
- // Server 2008, 2012, 2016, and 2019 versions are ambiguous with desktop versions and must be detected at runtime.
- // If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version
- // then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
- // If `wmic` is obsoloete (later versions of Windows 10), use PowerShell instead.
- // If the resulting caption contains the year 2008, 2012, 2016 or 2019, it is a server version, so return a server OS name.
- if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) {
- let stdout;
- try {
- stdout = execa.sync('powershell', ['(Get-CimInstance -ClassName Win32_OperatingSystem).caption']).stdout || '';
- } catch (_) {
- stdout = execa.sync('wmic', ['os', 'get', 'Caption']).stdout || '';
- }
-
- const year = (stdout.match(/2008|2012|2016|2019/) || [])[0];
-
- if (year) {
- return `Server ${year}`;
- }
- }
-
- return names.get(ver);
-};
-
-module.exports = windowsRelease;
-
-
-/***/ }),
-
-/***/ 81:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __importStar(__webpack_require__(357));
-const url_1 = __webpack_require__(835);
-function getFetchUrl(settings) {
- assert.ok(settings.repositoryOwner, 'settings.repositoryOwner must be defined');
- assert.ok(settings.repositoryName, 'settings.repositoryName must be defined');
- const serviceUrl = getServerUrl();
- const encodedOwner = encodeURIComponent(settings.repositoryOwner);
- const encodedName = encodeURIComponent(settings.repositoryName);
- if (settings.sshKey) {
- return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`;
- }
- // "origin" is SCHEME://HOSTNAME[:PORT]
- return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`;
-}
-exports.getFetchUrl = getFetchUrl;
-function getServerUrl() {
- // todo: remove GITHUB_URL after support for GHES Alpha is no longer needed
- return new url_1.URL(process.env['GITHUB_SERVER_URL'] ||
- process.env['GITHUB_URL'] ||
- 'https://github.com');
-}
-exports.getServerUrl = getServerUrl;
-
-
-/***/ }),
-
-/***/ 87:
-/***/ (function(module) {
-
-module.exports = require("os");
-
-/***/ }),
-
-/***/ 118:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const os = __webpack_require__(87);
-
-const nameMap = new Map([
- [19, 'Catalina'],
- [18, 'Mojave'],
- [17, 'High Sierra'],
- [16, 'Sierra'],
- [15, 'El Capitan'],
- [14, 'Yosemite'],
- [13, 'Mavericks'],
- [12, 'Mountain Lion'],
- [11, 'Lion'],
- [10, 'Snow Leopard'],
- [9, 'Leopard'],
- [8, 'Tiger'],
- [7, 'Panther'],
- [6, 'Jaguar'],
- [5, 'Puma']
-]);
-
-const macosRelease = release => {
- release = Number((release || os.release()).split('.')[0]);
- return {
- name: nameMap.get(release),
- version: '10.' + (release - 4)
- };
-};
-
-module.exports = macosRelease;
-// TODO: remove this in the next major version
-module.exports.default = macosRelease;
-
-
-/***/ }),
-
-/***/ 126:
-/***/ (function(module) {
-
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- var length = array ? array.length : 0;
- return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array ? array.length : 0;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return baseFindIndex(array, baseIsNaN, fromIndex);
- }
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-/**
- * Checks if a cache value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- Set = getNative(root, 'Set'),
- nativeCreate = getNative(Object, 'create');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values ? values.length : 0;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
-};
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each
- * element is kept.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
-function uniq(array) {
- return (array && array.length)
- ? baseUniq(array)
- : [];
-}
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
- // No operation performed.
-}
-
-module.exports = uniq;
-
-
-/***/ }),
-
-/***/ 129:
-/***/ (function(module) {
-
-module.exports = require("child_process");
-
-/***/ }),
-
-/***/ 139:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-// Unique ID creation requires a high quality random # generator. In node.js
-// this is pretty straight-forward - we use the crypto API.
-
-var crypto = __webpack_require__(417);
-
-module.exports = function nodeRNG() {
- return crypto.randomBytes(16);
-};
-
-
-/***/ }),
-
-/***/ 141:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-var net = __webpack_require__(631);
-var tls = __webpack_require__(16);
-var http = __webpack_require__(605);
-var https = __webpack_require__(34);
-var events = __webpack_require__(614);
-var assert = __webpack_require__(357);
-var util = __webpack_require__(669);
-
-
-exports.httpOverHttp = httpOverHttp;
-exports.httpsOverHttp = httpsOverHttp;
-exports.httpOverHttps = httpOverHttps;
-exports.httpsOverHttps = httpsOverHttps;
-
-
-function httpOverHttp(options) {
- var agent = new TunnelingAgent(options);
- agent.request = http.request;
- return agent;
-}
-
-function httpsOverHttp(options) {
- var agent = new TunnelingAgent(options);
- agent.request = http.request;
- agent.createSocket = createSecureSocket;
- return agent;
-}
-
-function httpOverHttps(options) {
- var agent = new TunnelingAgent(options);
- agent.request = https.request;
- return agent;
-}
-
-function httpsOverHttps(options) {
- var agent = new TunnelingAgent(options);
- agent.request = https.request;
- agent.createSocket = createSecureSocket;
- return agent;
-}
-
-
-function TunnelingAgent(options) {
- var self = this;
- self.options = options || {};
- self.proxyOptions = self.options.proxy || {};
- self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
- self.requests = [];
- self.sockets = [];
-
- self.on('free', function onFree(socket, host, port, localAddress) {
- var options = toOptions(host, port, localAddress);
- for (var i = 0, len = self.requests.length; i < len; ++i) {
- var pending = self.requests[i];
- if (pending.host === options.host && pending.port === options.port) {
- // Detect the request to connect same origin server,
- // reuse the connection.
- self.requests.splice(i, 1);
- pending.request.onSocket(socket);
- return;
- }
- }
- socket.destroy();
- self.removeSocket(socket);
- });
-}
-util.inherits(TunnelingAgent, events.EventEmitter);
-
-TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
- var self = this;
- var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
-
- if (self.sockets.length >= this.maxSockets) {
- // We are over limit so we'll add it to the queue.
- self.requests.push(options);
- return;
- }
-
- // If we are under maxSockets create a new one.
- self.createSocket(options, function(socket) {
- socket.on('free', onFree);
- socket.on('close', onCloseOrRemove);
- socket.on('agentRemove', onCloseOrRemove);
- req.onSocket(socket);
-
- function onFree() {
- self.emit('free', socket, options);
- }
-
- function onCloseOrRemove(err) {
- self.removeSocket(socket);
- socket.removeListener('free', onFree);
- socket.removeListener('close', onCloseOrRemove);
- socket.removeListener('agentRemove', onCloseOrRemove);
- }
- });
-};
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
- var self = this;
- var placeholder = {};
- self.sockets.push(placeholder);
-
- var connectOptions = mergeOptions({}, self.proxyOptions, {
- method: 'CONNECT',
- path: options.host + ':' + options.port,
- agent: false
- });
- if (connectOptions.proxyAuth) {
- connectOptions.headers = connectOptions.headers || {};
- connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
- new Buffer(connectOptions.proxyAuth).toString('base64');
- }
-
- debug('making CONNECT request');
- var connectReq = self.request(connectOptions);
- connectReq.useChunkedEncodingByDefault = false; // for v0.6
- connectReq.once('response', onResponse); // for v0.6
- connectReq.once('upgrade', onUpgrade); // for v0.6
- connectReq.once('connect', onConnect); // for v0.7 or later
- connectReq.once('error', onError);
- connectReq.end();
-
- function onResponse(res) {
- // Very hacky. This is necessary to avoid http-parser leaks.
- res.upgrade = true;
- }
-
- function onUpgrade(res, socket, head) {
- // Hacky.
- process.nextTick(function() {
- onConnect(res, socket, head);
- });
- }
-
- function onConnect(res, socket, head) {
- connectReq.removeAllListeners();
- socket.removeAllListeners();
-
- if (res.statusCode === 200) {
- assert.equal(head.length, 0);
- debug('tunneling connection has established');
- self.sockets[self.sockets.indexOf(placeholder)] = socket;
- cb(socket);
- } else {
- debug('tunneling socket could not be established, statusCode=%d',
- res.statusCode);
- var error = new Error('tunneling socket could not be established, ' +
- 'statusCode=' + res.statusCode);
- error.code = 'ECONNRESET';
- options.request.emit('error', error);
- self.removeSocket(placeholder);
- }
- }
-
- function onError(cause) {
- connectReq.removeAllListeners();
-
- debug('tunneling socket could not be established, cause=%s\n',
- cause.message, cause.stack);
- var error = new Error('tunneling socket could not be established, ' +
- 'cause=' + cause.message);
- error.code = 'ECONNRESET';
- options.request.emit('error', error);
- self.removeSocket(placeholder);
- }
-};
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
- var pos = this.sockets.indexOf(socket)
- if (pos === -1) {
- return;
- }
- this.sockets.splice(pos, 1);
-
- var pending = this.requests.shift();
- if (pending) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createSocket(pending, function(socket) {
- pending.request.onSocket(socket);
- });
- }
-};
-
-function createSecureSocket(options, cb) {
- var self = this;
- TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
- var hostHeader = options.request.getHeader('host');
- var tlsOptions = mergeOptions({}, self.options, {
- socket: socket,
- servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
- });
-
- // 0 is dummy port for v0.6
- var secureSocket = tls.connect(0, tlsOptions);
- self.sockets[self.sockets.indexOf(socket)] = secureSocket;
- cb(secureSocket);
- });
-}
-
-
-function toOptions(host, port, localAddress) {
- if (typeof host === 'string') { // since v0.10
- return {
- host: host,
- port: port,
- localAddress: localAddress
- };
- }
- return host; // for v0.11 or later
-}
-
-function mergeOptions(target) {
- for (var i = 1, len = arguments.length; i < len; ++i) {
- var overrides = arguments[i];
- if (typeof overrides === 'object') {
- var keys = Object.keys(overrides);
- for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
- var k = keys[j];
- if (overrides[k] !== undefined) {
- target[k] = overrides[k];
- }
- }
- }
- }
- return target;
-}
-
-
-var debug;
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
- debug = function() {
- var args = Array.prototype.slice.call(arguments);
- if (typeof args[0] === 'string') {
- args[0] = 'TUNNEL: ' + args[0];
- } else {
- args.unshift('TUNNEL:');
- }
- console.error.apply(console, args);
- }
-} else {
- debug = function() {};
-}
-exports.debug = debug; // for test
-
-
-/***/ }),
-
-/***/ 143:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = withAuthorizationPrefix;
-
-const atob = __webpack_require__(368);
-
-const REGEX_IS_BASIC_AUTH = /^[\w-]+:/;
-
-function withAuthorizationPrefix(authorization) {
- if (/^(basic|bearer|token) /i.test(authorization)) {
- return authorization;
- }
-
- try {
- if (REGEX_IS_BASIC_AUTH.test(atob(authorization))) {
- return `basic ${authorization}`;
- }
- } catch (error) {}
-
- if (authorization.split(/\./).length === 3) {
- return `bearer ${authorization}`;
- }
-
- return `token ${authorization}`;
-}
-
-
-/***/ }),
-
-/***/ 145:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const pump = __webpack_require__(453);
-const bufferStream = __webpack_require__(966);
-
-class MaxBufferError extends Error {
- constructor() {
- super('maxBuffer exceeded');
- this.name = 'MaxBufferError';
- }
-}
-
-function getStream(inputStream, options) {
- if (!inputStream) {
- return Promise.reject(new Error('Expected a stream'));
- }
-
- options = Object.assign({maxBuffer: Infinity}, options);
-
- const {maxBuffer} = options;
-
- let stream;
- return new Promise((resolve, reject) => {
- const rejectPromise = error => {
- if (error) { // A null check
- error.bufferedData = stream.getBufferedValue();
- }
- reject(error);
- };
-
- stream = pump(inputStream, bufferStream(options), error => {
- if (error) {
- rejectPromise(error);
- return;
- }
-
- resolve();
- });
-
- stream.on('data', () => {
- if (stream.getBufferedLength() > maxBuffer) {
- rejectPromise(new MaxBufferError());
- }
- });
- }).then(() => stream.getBufferedValue());
-}
-
-module.exports = getStream;
-module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
-module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
-module.exports.MaxBufferError = MaxBufferError;
-
-
-/***/ }),
-
-/***/ 148:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = paginatePlugin;
-
-const { paginateRest } = __webpack_require__(299);
-
-function paginatePlugin(octokit) {
- Object.assign(octokit, paginateRest(octokit));
-}
-
-
-/***/ }),
-
-/***/ 153:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const coreCommand = __importStar(__webpack_require__(431));
-/**
- * Indicates whether the POST action is running
- */
-exports.IsPost = !!process.env['STATE_isPost'];
-/**
- * The repository path for the POST action. The value is empty during the MAIN action.
- */
-exports.RepositoryPath = process.env['STATE_repositoryPath'] || '';
-/**
- * The SSH key path for the POST action. The value is empty during the MAIN action.
- */
-exports.SshKeyPath = process.env['STATE_sshKeyPath'] || '';
-/**
- * The SSH known hosts path for the POST action. The value is empty during the MAIN action.
- */
-exports.SshKnownHostsPath = process.env['STATE_sshKnownHostsPath'] || '';
-/**
- * Save the repository path so the POST action can retrieve the value.
- */
-function setRepositoryPath(repositoryPath) {
- coreCommand.issueCommand('save-state', { name: 'repositoryPath' }, repositoryPath);
-}
-exports.setRepositoryPath = setRepositoryPath;
-/**
- * Save the SSH key path so the POST action can retrieve the value.
- */
-function setSshKeyPath(sshKeyPath) {
- coreCommand.issueCommand('save-state', { name: 'sshKeyPath' }, sshKeyPath);
-}
-exports.setSshKeyPath = setSshKeyPath;
-/**
- * Save the SSH known hosts path so the POST action can retrieve the value.
- */
-function setSshKnownHostsPath(sshKnownHostsPath) {
- coreCommand.issueCommand('save-state', { name: 'sshKnownHostsPath' }, sshKnownHostsPath);
-}
-exports.setSshKnownHostsPath = setSshKnownHostsPath;
-// 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.
-if (!exports.IsPost) {
- coreCommand.issueCommand('save-state', { name: 'isPost' }, 'true');
-}
-
-
-/***/ }),
-
-/***/ 168:
-/***/ (function(module) {
-
-"use strict";
-
-const alias = ['stdin', 'stdout', 'stderr'];
-
-const hasAlias = opts => alias.some(x => Boolean(opts[x]));
-
-module.exports = opts => {
- if (!opts) {
- return null;
- }
-
- if (opts.stdio && hasAlias(opts)) {
- throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`);
- }
-
- if (typeof opts.stdio === 'string') {
- return opts.stdio;
- }
-
- const stdio = opts.stdio || [];
-
- if (!Array.isArray(stdio)) {
- throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
- }
-
- const result = [];
- const len = Math.max(stdio.length, alias.length);
-
- for (let i = 0; i < len; i++) {
- let value = null;
-
- if (stdio[i] !== undefined) {
- value = stdio[i];
- } else if (opts[alias[i]] !== undefined) {
- value = opts[alias[i]];
- }
-
- result[i] = value;
- }
-
- return result;
-};
-
-
-/***/ }),
-
-/***/ 179:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-var net = __webpack_require__(631);
-var tls = __webpack_require__(16);
-var http = __webpack_require__(605);
-var https = __webpack_require__(34);
-var events = __webpack_require__(614);
-var assert = __webpack_require__(357);
-var util = __webpack_require__(669);
-
-
-exports.httpOverHttp = httpOverHttp;
-exports.httpsOverHttp = httpsOverHttp;
-exports.httpOverHttps = httpOverHttps;
-exports.httpsOverHttps = httpsOverHttps;
-
-
-function httpOverHttp(options) {
- var agent = new TunnelingAgent(options);
- agent.request = http.request;
- return agent;
-}
-
-function httpsOverHttp(options) {
- var agent = new TunnelingAgent(options);
- agent.request = http.request;
- agent.createSocket = createSecureSocket;
- agent.defaultPort = 443;
- return agent;
-}
-
-function httpOverHttps(options) {
- var agent = new TunnelingAgent(options);
- agent.request = https.request;
- return agent;
-}
-
-function httpsOverHttps(options) {
- var agent = new TunnelingAgent(options);
- agent.request = https.request;
- agent.createSocket = createSecureSocket;
- agent.defaultPort = 443;
- return agent;
-}
-
-
-function TunnelingAgent(options) {
- var self = this;
- self.options = options || {};
- self.proxyOptions = self.options.proxy || {};
- self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
- self.requests = [];
- self.sockets = [];
-
- self.on('free', function onFree(socket, host, port, localAddress) {
- var options = toOptions(host, port, localAddress);
- for (var i = 0, len = self.requests.length; i < len; ++i) {
- var pending = self.requests[i];
- if (pending.host === options.host && pending.port === options.port) {
- // Detect the request to connect same origin server,
- // reuse the connection.
- self.requests.splice(i, 1);
- pending.request.onSocket(socket);
- return;
- }
- }
- socket.destroy();
- self.removeSocket(socket);
- });
-}
-util.inherits(TunnelingAgent, events.EventEmitter);
-
-TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
- var self = this;
- var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
-
- if (self.sockets.length >= this.maxSockets) {
- // We are over limit so we'll add it to the queue.
- self.requests.push(options);
- return;
- }
-
- // If we are under maxSockets create a new one.
- self.createSocket(options, function(socket) {
- socket.on('free', onFree);
- socket.on('close', onCloseOrRemove);
- socket.on('agentRemove', onCloseOrRemove);
- req.onSocket(socket);
-
- function onFree() {
- self.emit('free', socket, options);
- }
-
- function onCloseOrRemove(err) {
- self.removeSocket(socket);
- socket.removeListener('free', onFree);
- socket.removeListener('close', onCloseOrRemove);
- socket.removeListener('agentRemove', onCloseOrRemove);
- }
- });
-};
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
- var self = this;
- var placeholder = {};
- self.sockets.push(placeholder);
-
- var connectOptions = mergeOptions({}, self.proxyOptions, {
- method: 'CONNECT',
- path: options.host + ':' + options.port,
- agent: false,
- headers: {
- host: options.host + ':' + options.port
- }
- });
- if (options.localAddress) {
- connectOptions.localAddress = options.localAddress;
- }
- if (connectOptions.proxyAuth) {
- connectOptions.headers = connectOptions.headers || {};
- connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
- new Buffer(connectOptions.proxyAuth).toString('base64');
- }
-
- debug('making CONNECT request');
- var connectReq = self.request(connectOptions);
- connectReq.useChunkedEncodingByDefault = false; // for v0.6
- connectReq.once('response', onResponse); // for v0.6
- connectReq.once('upgrade', onUpgrade); // for v0.6
- connectReq.once('connect', onConnect); // for v0.7 or later
- connectReq.once('error', onError);
- connectReq.end();
-
- function onResponse(res) {
- // Very hacky. This is necessary to avoid http-parser leaks.
- res.upgrade = true;
- }
-
- function onUpgrade(res, socket, head) {
- // Hacky.
- process.nextTick(function() {
- onConnect(res, socket, head);
- });
- }
-
- function onConnect(res, socket, head) {
- connectReq.removeAllListeners();
- socket.removeAllListeners();
-
- if (res.statusCode !== 200) {
- debug('tunneling socket could not be established, statusCode=%d',
- res.statusCode);
- socket.destroy();
- var error = new Error('tunneling socket could not be established, ' +
- 'statusCode=' + res.statusCode);
- error.code = 'ECONNRESET';
- options.request.emit('error', error);
- self.removeSocket(placeholder);
- return;
- }
- if (head.length > 0) {
- debug('got illegal response body from proxy');
- socket.destroy();
- var error = new Error('got illegal response body from proxy');
- error.code = 'ECONNRESET';
- options.request.emit('error', error);
- self.removeSocket(placeholder);
- return;
- }
- debug('tunneling connection has established');
- self.sockets[self.sockets.indexOf(placeholder)] = socket;
- return cb(socket);
- }
-
- function onError(cause) {
- connectReq.removeAllListeners();
-
- debug('tunneling socket could not be established, cause=%s\n',
- cause.message, cause.stack);
- var error = new Error('tunneling socket could not be established, ' +
- 'cause=' + cause.message);
- error.code = 'ECONNRESET';
- options.request.emit('error', error);
- self.removeSocket(placeholder);
- }
-};
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
- var pos = this.sockets.indexOf(socket)
- if (pos === -1) {
- return;
- }
- this.sockets.splice(pos, 1);
-
- var pending = this.requests.shift();
- if (pending) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createSocket(pending, function(socket) {
- pending.request.onSocket(socket);
- });
- }
-};
-
-function createSecureSocket(options, cb) {
- var self = this;
- TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
- var hostHeader = options.request.getHeader('host');
- var tlsOptions = mergeOptions({}, self.options, {
- socket: socket,
- servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
- });
-
- // 0 is dummy port for v0.6
- var secureSocket = tls.connect(0, tlsOptions);
- self.sockets[self.sockets.indexOf(socket)] = secureSocket;
- cb(secureSocket);
- });
-}
-
-
-function toOptions(host, port, localAddress) {
- if (typeof host === 'string') { // since v0.10
- return {
- host: host,
- port: port,
- localAddress: localAddress
- };
- }
- return host; // for v0.11 or later
-}
-
-function mergeOptions(target) {
- for (var i = 1, len = arguments.length; i < len; ++i) {
- var overrides = arguments[i];
- if (typeof overrides === 'object') {
- var keys = Object.keys(overrides);
- for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
- var k = keys[j];
- if (overrides[k] !== undefined) {
- target[k] = overrides[k];
- }
- }
- }
- }
- return target;
-}
-
-
-var debug;
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
- debug = function() {
- var args = Array.prototype.slice.call(arguments);
- if (typeof args[0] === 'string') {
- args[0] = 'TUNNEL: ' + args[0];
- } else {
- args.unshift('TUNNEL:');
- }
- console.error.apply(console, args);
- }
-} else {
- debug = function() {};
-}
-exports.debug = debug; // for test
-
-
-/***/ }),
-
-/***/ 190:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationPlugin;
-
-const { createTokenAuth } = __webpack_require__(813);
-const { Deprecation } = __webpack_require__(692);
-const once = __webpack_require__(969);
-
-const beforeRequest = __webpack_require__(863);
-const requestError = __webpack_require__(991);
-const validate = __webpack_require__(954);
-const withAuthorizationPrefix = __webpack_require__(143);
-
-const deprecateAuthBasic = once((log, deprecation) => log.warn(deprecation));
-const deprecateAuthObject = once((log, deprecation) => log.warn(deprecation));
-
-function authenticationPlugin(octokit, options) {
- // If `options.authStrategy` is set then use it and pass in `options.auth`
- if (options.authStrategy) {
- const auth = options.authStrategy(options.auth);
- octokit.hook.wrap("request", auth.hook);
- octokit.auth = auth;
- return;
- }
-
- // If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
- // is unauthenticated. The `octokit.auth()` method is a no-op and no request hook is registred.
- if (!options.auth) {
- octokit.auth = () =>
- Promise.resolve({
- type: "unauthenticated"
- });
- return;
- }
-
- const isBasicAuthString =
- typeof options.auth === "string" &&
- /^basic/.test(withAuthorizationPrefix(options.auth));
-
- // If only `options.auth` is set to a string, use the default token authentication strategy.
- if (typeof options.auth === "string" && !isBasicAuthString) {
- const auth = createTokenAuth(options.auth);
- octokit.hook.wrap("request", auth.hook);
- octokit.auth = auth;
- return;
- }
-
- // Otherwise log a deprecation message
- const [deprecationMethod, deprecationMessapge] = isBasicAuthString
- ? [
- deprecateAuthBasic,
- 'Setting the "new Octokit({ auth })" option to a Basic Auth string is deprecated. Use https://github.com/octokit/auth-basic.js instead. See (https://octokit.github.io/rest.js/#authentication)'
- ]
- : [
- deprecateAuthObject,
- 'Setting the "new Octokit({ auth })" option to an object without also setting the "authStrategy" option is deprecated and will be removed in v17. See (https://octokit.github.io/rest.js/#authentication)'
- ];
- deprecationMethod(
- octokit.log,
- new Deprecation("[@octokit/rest] " + deprecationMessapge)
- );
-
- octokit.auth = () =>
- Promise.resolve({
- type: "deprecated",
- message: deprecationMessapge
- });
-
- validate(options.auth);
-
- const state = {
- octokit,
- auth: options.auth
- };
-
- octokit.hook.before("request", beforeRequest.bind(null, state));
- octokit.hook.error("request", requestError.bind(null, state));
-}
-
-
-/***/ }),
-
-/***/ 197:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = isexe
-isexe.sync = sync
-
-var fs = __webpack_require__(747)
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), options)
-}
-
-function checkStat (stat, options) {
- return stat.isFile() && checkMode(stat, options)
-}
-
-function checkMode (stat, options) {
- var mod = stat.mode
- var uid = stat.uid
- var gid = stat.gid
-
- var myUid = options.uid !== undefined ?
- options.uid : process.getuid && process.getuid()
- var myGid = options.gid !== undefined ?
- options.gid : process.getgid && process.getgid()
-
- var u = parseInt('100', 8)
- var g = parseInt('010', 8)
- var o = parseInt('001', 8)
- var ug = u | g
-
- var ret = (mod & o) ||
- (mod & g) && gid === myGid ||
- (mod & u) && uid === myUid ||
- (mod & ug) && myUid === 0
-
- return ret
-}
-
-
-/***/ }),
-
-/***/ 198:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __importStar(__webpack_require__(470));
-const coreCommand = __importStar(__webpack_require__(431));
-const gitSourceProvider = __importStar(__webpack_require__(293));
-const inputHelper = __importStar(__webpack_require__(821));
-const path = __importStar(__webpack_require__(622));
-const stateHelper = __importStar(__webpack_require__(153));
-function run() {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- const sourceSettings = inputHelper.getInputs();
- try {
- // Register problem matcher
- coreCommand.issueCommand('add-matcher', {}, path.join(__dirname, 'problem-matcher.json'));
- // Get sources
- yield gitSourceProvider.getSource(sourceSettings);
- }
- finally {
- // Unregister problem matcher
- coreCommand.issueCommand('remove-matcher', { owner: 'checkout-git' }, '');
- }
- }
- catch (error) {
- core.setFailed(error.message);
- }
- });
-}
-function cleanup() {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- yield gitSourceProvider.cleanup(stateHelper.RepositoryPath);
- }
- catch (error) {
- core.warning(error.message);
- }
- });
-}
-// Main
-if (!stateHelper.IsPost) {
- run();
-}
-// Post
-else {
- cleanup();
-}
-
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var osName = _interopDefault(__webpack_require__(2));
-
-function getUserAgent() {
- try {
- return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
- } catch (error) {
- if (/wmic os get Caption/.test(error.message)) {
- return "Windows ";
- }
-
- return "";
- }
-}
-
-exports.getUserAgent = getUserAgent;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 215:
-/***/ (function(module) {
-
-module.exports = {"name":"@octokit/rest","version":"16.43.1","publishConfig":{"access":"public"},"description":"GitHub REST API client for Node.js","keywords":["octokit","github","rest","api-client"],"author":"Gregor Martynus (https://github.com/gr2m)","contributors":[{"name":"Mike de Boer","email":"info@mikedeboer.nl"},{"name":"Fabian Jakobs","email":"fabian@c9.io"},{"name":"Joe Gallo","email":"joe@brassafrax.com"},{"name":"Gregor Martynus","url":"https://github.com/gr2m"}],"repository":"https://github.com/octokit/rest.js","dependencies":{"@octokit/auth-token":"^2.4.0","@octokit/plugin-paginate-rest":"^1.1.1","@octokit/plugin-request-log":"^1.0.0","@octokit/plugin-rest-endpoint-methods":"2.4.0","@octokit/request":"^5.2.0","@octokit/request-error":"^1.0.2","atob-lite":"^2.0.0","before-after-hook":"^2.0.0","btoa-lite":"^1.0.0","deprecation":"^2.0.0","lodash.get":"^4.4.2","lodash.set":"^4.3.2","lodash.uniq":"^4.5.0","octokit-pagination-methods":"^1.1.0","once":"^1.4.0","universal-user-agent":"^4.0.0"},"devDependencies":{"@gimenete/type-writer":"^0.1.3","@octokit/auth":"^1.1.1","@octokit/fixtures-server":"^5.0.6","@octokit/graphql":"^4.2.0","@types/node":"^13.1.0","bundlesize":"^0.18.0","chai":"^4.1.2","compression-webpack-plugin":"^3.1.0","cypress":"^3.0.0","glob":"^7.1.2","http-proxy-agent":"^4.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.1","lodash.upperfirst":"^4.3.1","lolex":"^5.1.2","mkdirp":"^1.0.0","mocha":"^7.0.1","mustache":"^4.0.0","nock":"^11.3.3","npm-run-all":"^4.1.2","nyc":"^15.0.0","prettier":"^1.14.2","proxy":"^1.0.0","semantic-release":"^17.0.0","sinon":"^8.0.0","sinon-chai":"^3.0.0","sort-keys":"^4.0.0","string-to-arraybuffer":"^1.0.0","string-to-jsdoc-comment":"^1.0.0","typescript":"^3.3.1","webpack":"^4.0.0","webpack-bundle-analyzer":"^3.0.0","webpack-cli":"^3.0.0"},"types":"index.d.ts","scripts":{"coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","lint:fix":"prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","pretest":"npm run -s lint","test":"nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"","test:browser":"cypress run --browser chrome","build":"npm-run-all build:*","build:ts":"npm run -s update-endpoints:typescript","prebuild:browser":"mkdirp dist/","build:browser":"npm-run-all build:browser:*","build:browser:development":"webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json","build:browser:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map","generate-bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","update-endpoints":"npm-run-all update-endpoints:*","update-endpoints:fetch-json":"node scripts/update-endpoints/fetch-json","update-endpoints:typescript":"node scripts/update-endpoints/typescript","prevalidate:ts":"npm run -s build:ts","validate:ts":"tsc --target es6 --noImplicitAny index.d.ts","postvalidate:ts":"tsc --noEmit --target es6 test/typescript-validate.ts","start-fixtures-server":"octokit-fixtures-server"},"license":"MIT","files":["index.js","index.d.ts","lib","plugins"],"nyc":{"ignore":["test"]},"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"bundlesize":[{"path":"./dist/octokit-rest.min.js.gz","maxSize":"33 kB"}],"_resolved":"https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz","_integrity":"sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==","_from":"@octokit/rest@16.43.1"};
-
-/***/ }),
-
-/***/ 227:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const url_1 = __webpack_require__(835);
-const core = __importStar(__webpack_require__(470));
-const github = __importStar(__webpack_require__(469));
-exports.tagsRefSpec = '+refs/tags/*:refs/tags/*';
-function getCheckoutInfo(git, ref, commit) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!git) {
- throw new Error('Arg git cannot be empty');
- }
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty');
- }
- const result = {};
- const upperRef = (ref || '').toUpperCase();
- // SHA only
- if (!ref) {
- result.ref = commit;
- }
- // refs/heads/
- else if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length);
- result.ref = branch;
- result.startPoint = `refs/remotes/origin/${branch}`;
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length);
- result.ref = `refs/remotes/pull/${branch}`;
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/')) {
- result.ref = ref;
- }
- // Unqualified ref, check for a matching branch or tag
- else {
- if (yield git.branchExists(true, `origin/${ref}`)) {
- result.ref = ref;
- result.startPoint = `refs/remotes/origin/${ref}`;
- }
- else if (yield git.tagExists(`${ref}`)) {
- result.ref = `refs/tags/${ref}`;
- }
- else {
- throw new Error(`A branch or tag with the name '${ref}' could not be found`);
- }
- }
- return result;
- });
-}
-exports.getCheckoutInfo = getCheckoutInfo;
-function getRefSpecForAllHistory(ref, commit) {
- const result = ['+refs/heads/*:refs/remotes/origin/*', exports.tagsRefSpec];
- if (ref && ref.toUpperCase().startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length);
- result.push(`+${commit || ref}:refs/remotes/pull/${branch}`);
- }
- return result;
-}
-exports.getRefSpecForAllHistory = getRefSpecForAllHistory;
-function getRefSpec(ref, commit) {
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty');
- }
- const upperRef = (ref || '').toUpperCase();
- // SHA
- if (commit) {
- // refs/heads
- if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length);
- return [`+${commit}:refs/remotes/origin/${branch}`];
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length);
- return [`+${commit}:refs/remotes/pull/${branch}`];
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/TAGS/')) {
- return [`+${commit}:${ref}`];
- }
- // Otherwise no destination ref
- else {
- return [commit];
- }
- }
- // Unqualified ref, check for a matching branch or tag
- else if (!upperRef.startsWith('REFS/')) {
- return [
- `+refs/heads/${ref}*:refs/remotes/origin/${ref}*`,
- `+refs/tags/${ref}*:refs/tags/${ref}*`
- ];
- }
- // refs/heads/
- else if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length);
- return [`+${ref}:refs/remotes/origin/${branch}`];
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length);
- return [`+${ref}:refs/remotes/pull/${branch}`];
- }
- // refs/tags/
- else {
- return [`+${ref}:${ref}`];
- }
-}
-exports.getRefSpec = getRefSpec;
-/**
- * Tests whether the initial fetch created the ref at the expected commit
- */
-function testRef(git, ref, commit) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!git) {
- throw new Error('Arg git cannot be empty');
- }
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty');
- }
- // No SHA? Nothing to test
- if (!commit) {
- return true;
- }
- // SHA only?
- else if (!ref) {
- return yield git.shaExists(commit);
- }
- const upperRef = ref.toUpperCase();
- // refs/heads/
- if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length);
- return ((yield git.branchExists(true, `origin/${branch}`)) &&
- commit === (yield git.revParse(`refs/remotes/origin/${branch}`)));
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- // Assume matches because fetched using the commit
- return true;
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/TAGS/')) {
- const tagName = ref.substring('refs/tags/'.length);
- return ((yield git.tagExists(tagName)) && commit === (yield git.revParse(ref)));
- }
- // Unexpected
- else {
- core.debug(`Unexpected ref format '${ref}' when testing ref info`);
- return true;
- }
- });
-}
-exports.testRef = testRef;
-function checkCommitInfo(token, commitInfo, repositoryOwner, repositoryName, ref, commit) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- // GHES?
- if (isGhes()) {
- return;
- }
- // Auth token?
- if (!token) {
- return;
- }
- // Public PR synchronize, for workflow repo?
- if (fromPayload('repository.private') !== false ||
- github.context.eventName !== 'pull_request' ||
- fromPayload('action') !== 'synchronize' ||
- repositoryOwner !== github.context.repo.owner ||
- repositoryName !== github.context.repo.repo ||
- ref !== github.context.ref ||
- !ref.startsWith('refs/pull/') ||
- commit !== github.context.sha) {
- return;
- }
- // Head SHA
- const expectedHeadSha = fromPayload('after');
- if (!expectedHeadSha) {
- core.debug('Unable to determine head sha');
- return;
- }
- // Base SHA
- const expectedBaseSha = fromPayload('pull_request.base.sha');
- if (!expectedBaseSha) {
- core.debug('Unable to determine base sha');
- return;
- }
- // Expected message?
- const expectedMessage = `Merge ${expectedHeadSha} into ${expectedBaseSha}`;
- if (commitInfo.indexOf(expectedMessage) >= 0) {
- return;
- }
- // Extract details from message
- const match = commitInfo.match(/Merge ([0-9a-f]{40}) into ([0-9a-f]{40})/);
- if (!match) {
- core.debug('Unexpected message format');
- return;
- }
- // Post telemetry
- const actualHeadSha = match[1];
- if (actualHeadSha !== expectedHeadSha) {
- core.debug(`Expected head sha ${expectedHeadSha}; actual head sha ${actualHeadSha}`);
- const octokit = new github.GitHub(token, {
- userAgent: `actions-checkout-tracepoint/1.0 (code=STALE_MERGE;owner=${repositoryOwner};repo=${repositoryName};pr=${fromPayload('number')};run_id=${process.env['GITHUB_RUN_ID']};expected_head_sha=${expectedHeadSha};actual_head_sha=${actualHeadSha})`
- });
- yield octokit.repos.get({ owner: repositoryOwner, repo: repositoryName });
- }
- }
- catch (err) {
- core.debug(`Error when validating commit info: ${err.stack}`);
- }
- });
-}
-exports.checkCommitInfo = checkCommitInfo;
-function fromPayload(path) {
- return select(github.context.payload, path);
-}
-function select(obj, path) {
- if (!obj) {
- return undefined;
- }
- const i = path.indexOf('.');
- if (i < 0) {
- return obj[path];
- }
- const key = path.substr(0, i);
- return select(obj[key], path.substr(i + 1));
-}
-function isGhes() {
- const ghUrl = new url_1.URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
- return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
-}
-
-
-/***/ }),
-
-/***/ 260:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-// Note: since nyc uses this module to output coverage, any lines
-// that are in the direct sync flow of nyc's outputCoverage are
-// ignored, since we can never get coverage for them.
-var assert = __webpack_require__(357)
-var signals = __webpack_require__(654)
-
-var EE = __webpack_require__(614)
-/* istanbul ignore if */
-if (typeof EE !== 'function') {
- EE = EE.EventEmitter
-}
-
-var emitter
-if (process.__signal_exit_emitter__) {
- emitter = process.__signal_exit_emitter__
-} else {
- emitter = process.__signal_exit_emitter__ = new EE()
- emitter.count = 0
- emitter.emitted = {}
-}
-
-// Because this emitter is a global, we have to check to see if a
-// previous version of this library failed to enable infinite listeners.
-// I know what you're about to say. But literally everything about
-// signal-exit is a compromise with evil. Get used to it.
-if (!emitter.infinite) {
- emitter.setMaxListeners(Infinity)
- emitter.infinite = true
-}
-
-module.exports = function (cb, opts) {
- assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')
-
- if (loaded === false) {
- load()
- }
-
- var ev = 'exit'
- if (opts && opts.alwaysLast) {
- ev = 'afterexit'
- }
-
- var remove = function () {
- emitter.removeListener(ev, cb)
- if (emitter.listeners('exit').length === 0 &&
- emitter.listeners('afterexit').length === 0) {
- unload()
- }
- }
- emitter.on(ev, cb)
-
- return remove
-}
-
-module.exports.unload = unload
-function unload () {
- if (!loaded) {
- return
- }
- loaded = false
-
- signals.forEach(function (sig) {
- try {
- process.removeListener(sig, sigListeners[sig])
- } catch (er) {}
- })
- process.emit = originalProcessEmit
- process.reallyExit = originalProcessReallyExit
- emitter.count -= 1
-}
-
-function emit (event, code, signal) {
- if (emitter.emitted[event]) {
- return
- }
- emitter.emitted[event] = true
- emitter.emit(event, code, signal)
-}
-
-// { : , ... }
-var sigListeners = {}
-signals.forEach(function (sig) {
- sigListeners[sig] = function listener () {
- // If there are no other listeners, an exit is coming!
- // Simplest way: remove us and then re-send the signal.
- // We know that this will kill the process, so we can
- // safely emit now.
- var listeners = process.listeners(sig)
- if (listeners.length === emitter.count) {
- unload()
- emit('exit', null, sig)
- /* istanbul ignore next */
- emit('afterexit', null, sig)
- /* istanbul ignore next */
- process.kill(process.pid, sig)
- }
- }
-})
-
-module.exports.signals = function () {
- return signals
-}
-
-module.exports.load = load
-
-var loaded = false
-
-function load () {
- if (loaded) {
- return
- }
- loaded = true
-
- // This is the number of onSignalExit's that are in play.
- // It's important so that we can count the correct number of
- // listeners on signals, and don't wait for the other one to
- // handle it instead of us.
- emitter.count += 1
-
- signals = signals.filter(function (sig) {
- try {
- process.on(sig, sigListeners[sig])
- return true
- } catch (er) {
- return false
- }
- })
-
- process.emit = processEmit
- process.reallyExit = processReallyExit
-}
-
-var originalProcessReallyExit = process.reallyExit
-function processReallyExit (code) {
- process.exitCode = code || 0
- emit('exit', process.exitCode, null)
- /* istanbul ignore next */
- emit('afterexit', process.exitCode, null)
- /* istanbul ignore next */
- originalProcessReallyExit.call(process, process.exitCode)
-}
-
-var originalProcessEmit = process.emit
-function processEmit (ev, arg) {
- if (ev === 'exit') {
- if (arg !== undefined) {
- process.exitCode = arg
- }
- var ret = originalProcessEmit.apply(this, arguments)
- emit('exit', process.exitCode, null)
- /* istanbul ignore next */
- emit('afterexit', process.exitCode, null)
- return ret
- } else {
- return originalProcessEmit.apply(this, arguments)
- }
-}
-
-
-/***/ }),
-
-/***/ 262:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs_1 = __webpack_require__(747);
-const os_1 = __webpack_require__(87);
-class Context {
- /**
- * Hydrate the context from the environment
- */
- constructor() {
- this.payload = {};
- if (process.env.GITHUB_EVENT_PATH) {
- if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {
- this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
- }
- else {
- const path = process.env.GITHUB_EVENT_PATH;
- process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);
- }
- }
- this.eventName = process.env.GITHUB_EVENT_NAME;
- this.sha = process.env.GITHUB_SHA;
- this.ref = process.env.GITHUB_REF;
- this.workflow = process.env.GITHUB_WORKFLOW;
- this.action = process.env.GITHUB_ACTION;
- this.actor = process.env.GITHUB_ACTOR;
- }
- get issue() {
- const payload = this.payload;
- return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });
- }
- get repo() {
- if (process.env.GITHUB_REPOSITORY) {
- const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
- return { owner, repo };
- }
- if (this.payload.repository) {
- return {
- owner: this.payload.repository.owner.login,
- repo: this.payload.repository.name
- };
- }
- throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
- }
-}
-exports.Context = Context;
-//# sourceMappingURL=context.js.map
-
-/***/ }),
-
-/***/ 265:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = getPage
-
-const deprecate = __webpack_require__(370)
-const getPageLinks = __webpack_require__(577)
-const HttpError = __webpack_require__(297)
-
-function getPage (octokit, link, which, headers) {
- deprecate(`octokit.get${which.charAt(0).toUpperCase() + which.slice(1)}Page() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
- const url = getPageLinks(link)[which]
-
- if (!url) {
- const urlError = new HttpError(`No ${which} page found`, 404)
- return Promise.reject(urlError)
- }
-
- const requestOptions = {
- url,
- headers: applyAcceptHeader(link, headers)
- }
-
- const promise = octokit.request(requestOptions)
-
- return promise
-}
-
-function applyAcceptHeader (res, headers) {
- const previous = res.headers && res.headers['x-github-media-type']
-
- if (!previous || (headers && headers.accept)) {
- return headers
- }
- headers = headers || {}
- headers.accept = 'application/vnd.' + previous
- .replace('; param=', '.')
- .replace('; format=', '+')
-
- return headers
-}
-
-
-/***/ }),
-
-/***/ 280:
-/***/ (function(module, exports) {
-
-exports = module.exports = SemVer
-
-var debug
-/* istanbul ignore next */
-if (typeof process === 'object' &&
- process.env &&
- process.env.NODE_DEBUG &&
- /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
- debug = function () {
- var args = Array.prototype.slice.call(arguments, 0)
- args.unshift('SEMVER')
- console.log.apply(console, args)
- }
-} else {
- debug = function () {}
-}
-
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0'
-
-var MAX_LENGTH = 256
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
- /* istanbul ignore next */ 9007199254740991
-
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
-
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var R = 0
-
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
-
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-
-var NUMERICIDENTIFIER = R++
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-var NUMERICIDENTIFIERLOOSE = R++
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
-
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
-
-var NONNUMERICIDENTIFIER = R++
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-var MAINVERSION = R++
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')'
-
-var MAINVERSIONLOOSE = R++
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-var PRERELEASEIDENTIFIER = R++
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-var PRERELEASEIDENTIFIERLOOSE = R++
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-var PRERELEASE = R++
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
-
-var PRERELEASELOOSE = R++
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-var BUILDIDENTIFIER = R++
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-var BUILD = R++
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
-
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
-
-var FULL = R++
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?'
-
-src[FULL] = '^' + FULLPLAIN + '$'
-
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
- src[PRERELEASELOOSE] + '?' +
- src[BUILD] + '?'
-
-var LOOSE = R++
-src[LOOSE] = '^' + LOOSEPLAIN + '$'
-
-var GTLT = R++
-src[GTLT] = '((?:<|>)?=?)'
-
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-var XRANGEIDENTIFIER = R++
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
-
-var XRANGEPLAIN = R++
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGEPLAINLOOSE = R++
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGE = R++
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
-var XRANGELOOSE = R++
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
-
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-var COERCE = R++
-src[COERCE] = '(?:^|[^\\d])' +
- '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:$|[^\\d])'
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++
-src[LONETILDE] = '(?:~>?)'
-
-var TILDETRIM = R++
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
-
-var TILDE = R++
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
-var TILDELOOSE = R++
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++
-src[LONECARET] = '(?:\\^)'
-
-var CARETTRIM = R++
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
-
-var CARET = R++
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
-var CARETLOOSE = R++
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-var COMPARATORLOOSE = R++
-src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
-var COMPARATOR = R++
-src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-var COMPARATORTRIM = R++
-src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
- '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
-
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$'
-
-var HYPHENRANGELOOSE = R++
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
-
-// Star ranges basically just allow anything at all.
-var STAR = R++
-src[STAR] = '(<|>)?=?\\s*\\*'
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- debug(i, src[i])
- if (!re[i]) {
- re[i] = new RegExp(src[i])
- }
-}
-
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- if (version.length > MAX_LENGTH) {
- return null
- }
-
- var r = options.loose ? re[LOOSE] : re[FULL]
- if (!r.test(version)) {
- return null
- }
-
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
- }
-}
-
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
-}
-
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
-}
-
-exports.SemVer = SemVer
-
-function SemVer (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
- if (version instanceof SemVer) {
- if (version.loose === options.loose) {
- return version
- } else {
- version = version.version
- }
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
-
- if (!(this instanceof SemVer)) {
- return new SemVer(version, options)
- }
-
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
-
- var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
-
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- this.raw = version
-
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
-
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
-
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
-
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
- }
-
- // numberify any prerelease numeric ids
- if (!m[4]) {
- this.prerelease = []
- } else {
- this.prerelease = m[4].split('.').map(function (id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num
- }
- }
- return id
- })
- }
-
- this.build = m[5] ? m[5].split('.') : []
- this.format()
-}
-
-SemVer.prototype.format = function () {
- this.version = this.major + '.' + this.minor + '.' + this.patch
- if (this.prerelease.length) {
- this.version += '-' + this.prerelease.join('.')
- }
- return this.version
-}
-
-SemVer.prototype.toString = function () {
- return this.version
-}
-
-SemVer.prototype.compare = function (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return this.compareMain(other) || this.comparePre(other)
-}
-
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
-}
-
-SemVer.prototype.comparePre = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length) {
- return -1
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0
- }
-
- var i = 0
- do {
- var a = this.prerelease[i]
- var b = other.prerelease[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
-}
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function (release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier)
- this.inc('pre', identifier)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier)
- }
- this.inc('pre', identifier)
- break
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0) {
- this.prerelease = [0]
- } else {
- var i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- this.prerelease.push(0)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = [identifier, 0]
- }
- } else {
- this.prerelease = [identifier, 0]
- }
- }
- break
-
- default:
- throw new Error('invalid increment argument: ' + release)
- }
- this.format()
- this.raw = this.version
- return this
-}
-
-exports.inc = inc
-function inc (version, release, loose, identifier) {
- if (typeof (loose) === 'string') {
- identifier = loose
- loose = undefined
- }
-
- try {
- return new SemVer(version, loose).inc(release, identifier).version
- } catch (er) {
- return null
- }
-}
-
-exports.diff = diff
-function diff (version1, version2) {
- if (eq(version1, version2)) {
- return null
- } else {
- var v1 = parse(version1)
- var v2 = parse(version2)
- var prefix = ''
- if (v1.prerelease.length || v2.prerelease.length) {
- prefix = 'pre'
- var defaultResult = 'prerelease'
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return prefix + key
- }
- }
- }
- return defaultResult // may be undefined
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers
-
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
-
- if (anum && bnum) {
- a = +a
- b = +b
- }
-
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
-}
-
-exports.rcompareIdentifiers = rcompareIdentifiers
-function rcompareIdentifiers (a, b) {
- return compareIdentifiers(b, a)
-}
-
-exports.major = major
-function major (a, loose) {
- return new SemVer(a, loose).major
-}
-
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
-}
-
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
-
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
-}
-
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
-
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
-
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compare(a, b, loose)
- })
-}
-
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.rcompare(a, b, loose)
- })
-}
-
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
-}
-
-exports.lt = lt
-function lt (a, b, loose) {
- return compare(a, b, loose) < 0
-}
-
-exports.eq = eq
-function eq (a, b, loose) {
- return compare(a, b, loose) === 0
-}
-
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
-
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
-
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
-}
-
-exports.cmp = cmp
-function cmp (a, op, b, loose) {
- switch (op) {
- case '===':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a === b
-
- case '!==':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a !== b
-
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
-
- case '!=':
- return neq(a, b, loose)
-
- case '>':
- return gt(a, b, loose)
-
- case '>=':
- return gte(a, b, loose)
-
- case '<':
- return lt(a, b, loose)
-
- case '<=':
- return lte(a, b, loose)
-
- default:
- throw new TypeError('Invalid operator: ' + op)
- }
-}
-
-exports.Comparator = Comparator
-function Comparator (comp, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
- } else {
- comp = comp.value
- }
- }
-
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
-
- debug('comp', this)
-}
-
-var ANY = {}
-Comparator.prototype.parse = function (comp) {
- var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
-
- this.operator = m[1]
- if (this.operator === '=') {
- this.operator = ''
- }
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
- } else {
- this.semver = new SemVer(m[2], this.options.loose)
- }
-}
-
-Comparator.prototype.toString = function () {
- return this.value
-}
-
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
-
- if (this.semver === ANY) {
- return true
- }
-
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
-
- return cmp(version, this.operator, this.semver, this.options)
-}
-
-Comparator.prototype.intersects = function (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
- }
-
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- var rangeTmp
-
- if (this.operator === '') {
- rangeTmp = new Range(comp.value, options)
- return satisfies(this.value, rangeTmp, options)
- } else if (comp.operator === '') {
- rangeTmp = new Range(this.value, options)
- return satisfies(comp.semver, rangeTmp, options)
- }
-
- var sameDirectionIncreasing =
- (this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '>=' || comp.operator === '>')
- var sameDirectionDecreasing =
- (this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '<=' || comp.operator === '<')
- var sameSemVer = this.semver.version === comp.semver.version
- var differentDirectionsInclusive =
- (this.operator === '>=' || this.operator === '<=') &&
- (comp.operator === '>=' || comp.operator === '<=')
- var oppositeDirectionsLessThan =
- cmp(this.semver, '<', comp.semver, options) &&
- ((this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '<=' || comp.operator === '<'))
- var oppositeDirectionsGreaterThan =
- cmp(this.semver, '>', comp.semver, options) &&
- ((this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '>=' || comp.operator === '>'))
-
- return sameDirectionIncreasing || sameDirectionDecreasing ||
- (sameSemVer && differentDirectionsInclusive) ||
- oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
-}
-
-exports.Range = Range
-function Range (range, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
- }
- }
-
- if (range instanceof Comparator) {
- return new Range(range.value, options)
- }
-
- if (!(this instanceof Range)) {
- return new Range(range, options)
- }
-
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
-
- // First, split based on boolean or ||
- this.raw = range
- this.set = range.split(/\s*\|\|\s*/).map(function (range) {
- return this.parseRange(range.trim())
- }, this).filter(function (c) {
- // throw out any that are not relevant for whatever reason
- return c.length
- })
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range)
- }
-
- this.format()
-}
-
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
-}
-
-Range.prototype.toString = function () {
- return this.range
-}
-
-Range.prototype.parseRange = function (range) {
- var loose = this.options.loose
- range = range.trim()
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]
- range = range.replace(hr, hyphenReplace)
- debug('hyphen replace', range)
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range, re[COMPARATORTRIM])
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace)
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace)
-
- // normalize spaces
- range = range.split(/\s+/).join(' ')
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var set = range.split(' ').map(function (comp) {
- return parseComparator(comp, this.options)
- }, this).join(' ').split(/\s+/)
- if (this.options.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function (comp) {
- return !!comp.match(compRe)
- })
- }
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
-
- return set
-}
-
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
- }
-
- return this.set.some(function (thisComparators) {
- return thisComparators.every(function (thisComparator) {
- return range.set.some(function (rangeComparators) {
- return rangeComparators.every(function (rangeComparator) {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- })
- })
-}
-
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators
-function toComparators (range, options) {
- return new Range(range, options).set.map(function (comp) {
- return comp.map(function (c) {
- return c.value
- }).join(' ').trim().split(' ')
- })
-}
-
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator (comp, options) {
- debug('comp', comp, options)
- comp = replaceCarets(comp, options)
- debug('caret', comp)
- comp = replaceTildes(comp, options)
- debug('tildes', comp)
- comp = replaceXRanges(comp, options)
- debug('xrange', comp)
- comp = replaceStars(comp, options)
- debug('stars', comp)
- return comp
-}
-
-function isX (id) {
- return !id || id.toLowerCase() === 'x' || id === '*'
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceTilde(comp, options)
- }).join(' ')
-}
-
-function replaceTilde (comp, options) {
- var r = options.loose ? re[TILDELOOSE] : re[TILDE]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('tilde', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- // ~1.2 == >=1.2.0 <1.3.0
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else if (pr) {
- debug('replaceTilde pr', pr)
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- } else {
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('tilde return', ret)
- return ret
- })
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceCaret(comp, options)
- }).join(' ')
-}
-
-function replaceCaret (comp, options) {
- debug('caret', comp, options)
- var r = options.loose ? re[CARETLOOSE] : re[CARET]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('caret', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- if (M === '0') {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else {
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
- }
- } else if (pr) {
- debug('replaceCaret pr', pr)
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + (+M + 1) + '.0.0'
- }
- } else {
- debug('no pr')
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0'
- }
- }
-
- debug('caret return', ret)
- return ret
- })
-}
-
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
-}
-
-function replaceXRange (comp, options) {
- comp = comp.trim()
- var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]
- return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
- debug('xRange', comp, ret, gtlt, M, m, p, pr)
- var xM = isX(M)
- var xm = xM || isX(m)
- var xp = xm || isX(p)
- var anyX = xp
-
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
-
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0'
- } else {
- // nothing is forbidden
- ret = '*'
- }
- } else if (gtlt && anyX) {
- // we know patch is an x, because we have any x at all.
- // replace X with 0
- if (xm) {
- m = 0
- }
- p = 0
-
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>='
- if (xm) {
- M = +M + 1
- m = 0
- p = 0
- } else {
- m = +m + 1
- p = 0
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm) {
- M = +M + 1
- } else {
- m = +m + 1
- }
- }
-
- ret = gtlt + M + '.' + m + '.' + p
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('xRange return', ret)
-
- return ret
- })
-}
-
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars (comp, options) {
- debug('replaceStars', comp, options)
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[STAR], '')
-}
-
-// This function is passed to string.replace(re[HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace ($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
- if (isX(fM)) {
- from = ''
- } else if (isX(fm)) {
- from = '>=' + fM + '.0.0'
- } else if (isX(fp)) {
- from = '>=' + fM + '.' + fm + '.0'
- } else {
- from = '>=' + from
- }
-
- if (isX(tM)) {
- to = ''
- } else if (isX(tm)) {
- to = '<' + (+tM + 1) + '.0.0'
- } else if (isX(tp)) {
- to = '<' + tM + '.' + (+tm + 1) + '.0'
- } else if (tpr) {
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
- } else {
- to = '<=' + to
- }
-
- return (from + ' ' + to).trim()
-}
-
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
-
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
-
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
-}
-
-function testSet (set, version, options) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version)) {
- return false
- }
- }
-
- if (version.prerelease.length && !options.includePrerelease) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (i = 0; i < set.length; i++) {
- debug(set[i].semver)
- if (set[i].semver === ANY) {
- continue
- }
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
-}
-
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
- }
- return range.test(version)
-}
-
-exports.maxSatisfying = maxSatisfying
-function maxSatisfying (versions, range, options) {
- var max = null
- var maxSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!max || maxSV.compare(v) === -1) {
- // compare(max, v, true)
- max = v
- maxSV = new SemVer(max, options)
- }
- }
- })
- return max
-}
-
-exports.minSatisfying = minSatisfying
-function minSatisfying (versions, range, options) {
- var min = null
- var minSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!min || minSV.compare(v) === 1) {
- // compare(min, v, true)
- min = v
- minSV = new SemVer(min, options)
- }
- }
- })
- return min
-}
-
-exports.minVersion = minVersion
-function minVersion (range, loose) {
- range = new Range(range, loose)
-
- var minver = new SemVer('0.0.0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = null
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- comparators.forEach(function (comparator) {
- // Clone to avoid manipulating the comparator's semver object.
- var compver = new SemVer(comparator.semver.version)
- switch (comparator.operator) {
- case '>':
- if (compver.prerelease.length === 0) {
- compver.patch++
- } else {
- compver.prerelease.push(0)
- }
- compver.raw = compver.format()
- /* fallthrough */
- case '':
- case '>=':
- if (!minver || gt(minver, compver)) {
- minver = compver
- }
- break
- case '<':
- case '<=':
- /* Ignore maximum versions */
- break
- /* istanbul ignore next */
- default:
- throw new Error('Unexpected operation: ' + comparator.operator)
- }
- })
- }
-
- if (minver && range.test(minver)) {
- return minver
- }
-
- return null
-}
-
-exports.validRange = validRange
-function validRange (range, options) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, options).range || '*'
- } catch (er) {
- return null
- }
-}
-
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr
-function ltr (version, range, options) {
- return outside(version, range, '<', options)
-}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr
-function gtr (version, range, options) {
- return outside(version, range, '>', options)
-}
-
-exports.outside = outside
-function outside (version, range, hilo, options) {
- version = new SemVer(version, options)
- range = new Range(range, options)
-
- var gtfn, ltefn, ltfn, comp, ecomp
- switch (hilo) {
- case '>':
- gtfn = gt
- ltefn = lte
- ltfn = lt
- comp = '>'
- ecomp = '>='
- break
- case '<':
- gtfn = lt
- ltefn = gte
- ltfn = gt
- comp = '<'
- ecomp = '<='
- break
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"')
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- var high = null
- var low = null
-
- comparators.forEach(function (comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator
- low = low || comparator
- if (gtfn(comparator.semver, high.semver, options)) {
- high = comparator
- } else if (ltfn(comparator.semver, low.semver, options)) {
- low = comparator
- }
- })
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false
- }
- }
- return true
-}
-
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
-}
-
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
-}
-
-exports.coerce = coerce
-function coerce (version) {
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- var match = version.match(re[COERCE])
-
- if (match == null) {
- return null
- }
-
- return parse(match[1] +
- '.' + (match[2] || '0') +
- '.' + (match[3] || '0'))
-}
-
-
-/***/ }),
-
-/***/ 287:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __importStar(__webpack_require__(357));
-const core = __importStar(__webpack_require__(470));
-const exec = __importStar(__webpack_require__(986));
-const fs = __importStar(__webpack_require__(747));
-const io = __importStar(__webpack_require__(1));
-const os = __importStar(__webpack_require__(87));
-const path = __importStar(__webpack_require__(622));
-const regexpHelper = __importStar(__webpack_require__(528));
-const stateHelper = __importStar(__webpack_require__(153));
-const urlHelper = __importStar(__webpack_require__(81));
-const v4_1 = __importDefault(__webpack_require__(826));
-const IS_WINDOWS = process.platform === 'win32';
-const SSH_COMMAND_KEY = 'core.sshCommand';
-function createAuthHelper(git, settings) {
- return new GitAuthHelper(git, settings);
-}
-exports.createAuthHelper = createAuthHelper;
-class GitAuthHelper {
- constructor(gitCommandManager, gitSourceSettings) {
- this.sshCommand = '';
- this.sshKeyPath = '';
- this.sshKnownHostsPath = '';
- this.temporaryHomePath = '';
- this.git = gitCommandManager;
- this.settings = gitSourceSettings || {};
- // Token auth header
- const serverUrl = urlHelper.getServerUrl();
- this.tokenConfigKey = `http.${serverUrl.origin}/.extraheader`; // "origin" is SCHEME://HOSTNAME[:PORT]
- const basicCredential = Buffer.from(`x-access-token:${this.settings.authToken}`, 'utf8').toString('base64');
- core.setSecret(basicCredential);
- this.tokenPlaceholderConfigValue = `AUTHORIZATION: basic ***`;
- this.tokenConfigValue = `AUTHORIZATION: basic ${basicCredential}`;
- // Instead of SSH URL
- this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf`; // "origin" is SCHEME://HOSTNAME[:PORT]
- this.insteadOfValue = `git@${serverUrl.hostname}:`;
- }
- configureAuth() {
- return __awaiter(this, void 0, void 0, function* () {
- // Remove possible previous values
- yield this.removeAuth();
- // Configure new values
- yield this.configureSsh();
- yield this.configureToken();
- });
- }
- configureGlobalAuth() {
- return __awaiter(this, void 0, void 0, function* () {
- // Create a temp home directory
- const runnerTemp = process.env['RUNNER_TEMP'] || '';
- assert.ok(runnerTemp, 'RUNNER_TEMP is not defined');
- const uniqueId = v4_1.default();
- this.temporaryHomePath = path.join(runnerTemp, uniqueId);
- yield fs.promises.mkdir(this.temporaryHomePath, { recursive: true });
- // Copy the global git config
- const gitConfigPath = path.join(process.env['HOME'] || os.homedir(), '.gitconfig');
- const newGitConfigPath = path.join(this.temporaryHomePath, '.gitconfig');
- let configExists = false;
- try {
- yield fs.promises.stat(gitConfigPath);
- configExists = true;
- }
- catch (err) {
- if (err.code !== 'ENOENT') {
- throw err;
- }
- }
- if (configExists) {
- core.info(`Copying '${gitConfigPath}' to '${newGitConfigPath}'`);
- yield io.cp(gitConfigPath, newGitConfigPath);
- }
- else {
- yield fs.promises.writeFile(newGitConfigPath, '');
- }
- 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
- yield this.configureToken(newGitConfigPath, true);
- // Configure HTTPS instead of SSH
- yield this.git.tryConfigUnset(this.insteadOfKey, true);
- if (!this.settings.sshKey) {
- yield this.git.config(this.insteadOfKey, this.insteadOfValue, true);
- }
- }
- catch (err) {
- // Unset in case somehow written to the real global config
- core.info('Encountered an error when attempting to configure token. Attempting unconfigure.');
- yield this.git.tryConfigUnset(this.tokenConfigKey, true);
- throw err;
- }
- });
- }
- configureSubmoduleAuth() {
- return __awaiter(this, void 0, void 0, function* () {
- // Remove possible previous HTTPS instead of SSH
- yield this.removeGitConfig(this.insteadOfKey, true);
- if (this.settings.persistCredentials) {
- // Configure a placeholder value. This approach avoids the credential being captured
- // 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
- const output = yield this.git.submoduleForeach(`git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url`, this.settings.nestedSubmodules);
- // Replace the placeholder
- const configPaths = output.match(/(?<=(^|\n)file:)[^\t]+(?=\tremote\.origin\.url)/g) || [];
- for (const configPath of configPaths) {
- core.debug(`Replacing token placeholder in '${configPath}'`);
- this.replaceTokenPlaceholder(configPath);
- }
- if (this.settings.sshKey) {
- // Configure core.sshCommand
- yield this.git.submoduleForeach(`git config --local '${SSH_COMMAND_KEY}' '${this.sshCommand}'`, this.settings.nestedSubmodules);
- }
- else {
- // Configure HTTPS instead of SSH
- yield this.git.submoduleForeach(`git config --local '${this.insteadOfKey}' '${this.insteadOfValue}'`, this.settings.nestedSubmodules);
- }
- }
- });
- }
- removeAuth() {
- return __awaiter(this, void 0, void 0, function* () {
- yield this.removeSsh();
- yield this.removeToken();
- });
- }
- removeGlobalAuth() {
- return __awaiter(this, void 0, void 0, function* () {
- core.debug(`Unsetting HOME override`);
- this.git.removeEnvironmentVariable('HOME');
- yield io.rmRF(this.temporaryHomePath);
- });
- }
- configureSsh() {
- return __awaiter(this, void 0, void 0, function* () {
- if (!this.settings.sshKey) {
- return;
- }
- // Write key
- const runnerTemp = process.env['RUNNER_TEMP'] || '';
- assert.ok(runnerTemp, 'RUNNER_TEMP is not defined');
- const uniqueId = v4_1.default();
- this.sshKeyPath = path.join(runnerTemp, uniqueId);
- stateHelper.setSshKeyPath(this.sshKeyPath);
- yield fs.promises.mkdir(runnerTemp, { recursive: true });
- yield fs.promises.writeFile(this.sshKeyPath, this.settings.sshKey.trim() + '\n', { mode: 0o600 });
- // Remove inherited permissions on Windows
- if (IS_WINDOWS) {
- const icacls = yield io.which('icacls.exe');
- yield exec.exec(`"${icacls}" "${this.sshKeyPath}" /grant:r "${process.env['USERDOMAIN']}\\${process.env['USERNAME']}:F"`);
- yield exec.exec(`"${icacls}" "${this.sshKeyPath}" /inheritance:r`);
- }
- // Write known hosts
- const userKnownHostsPath = path.join(os.homedir(), '.ssh', 'known_hosts');
- let userKnownHosts = '';
- try {
- userKnownHosts = (yield fs.promises.readFile(userKnownHostsPath)).toString();
- }
- catch (err) {
- if (err.code !== 'ENOENT') {
- throw err;
- }
- }
- let knownHosts = '';
- if (userKnownHosts) {
- knownHosts += `# Begin from ${userKnownHostsPath}\n${userKnownHosts}\n# End from ${userKnownHostsPath}\n`;
- }
- if (this.settings.sshKnownHosts) {
- 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 AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n# End implicitly added github.com\n`;
- this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`);
- stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath);
- yield fs.promises.writeFile(this.sshKnownHostsPath, knownHosts);
- // Configure GIT_SSH_COMMAND
- const sshPath = yield io.which('ssh', true);
- this.sshCommand = `"${sshPath}" -i "$RUNNER_TEMP/${path.basename(this.sshKeyPath)}"`;
- if (this.settings.sshStrict) {
- this.sshCommand += ' -o StrictHostKeyChecking=yes -o CheckHostIP=no';
- }
- this.sshCommand += ` -o "UserKnownHostsFile=$RUNNER_TEMP/${path.basename(this.sshKnownHostsPath)}"`;
- core.info(`Temporarily overriding GIT_SSH_COMMAND=${this.sshCommand}`);
- this.git.setEnvironmentVariable('GIT_SSH_COMMAND', this.sshCommand);
- // Configure core.sshCommand
- if (this.settings.persistCredentials) {
- yield this.git.config(SSH_COMMAND_KEY, this.sshCommand);
- }
- });
- }
- configureToken(configPath, globalConfig) {
- return __awaiter(this, void 0, void 0, function* () {
- // Validate args
- assert.ok((configPath && globalConfig) || (!configPath && !globalConfig), 'Unexpected configureToken parameter combinations');
- // Default config path
- if (!configPath && !globalConfig) {
- configPath = path.join(this.git.getWorkingDirectory(), '.git', 'config');
- }
- // Configure a placeholder value. This approach avoids the credential being captured
- // 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
- yield this.git.config(this.tokenConfigKey, this.tokenPlaceholderConfigValue, globalConfig);
- // Replace the placeholder
- yield this.replaceTokenPlaceholder(configPath || '');
- });
- }
- replaceTokenPlaceholder(configPath) {
- return __awaiter(this, void 0, void 0, function* () {
- assert.ok(configPath, 'configPath is not defined');
- let content = (yield fs.promises.readFile(configPath)).toString();
- const placeholderIndex = content.indexOf(this.tokenPlaceholderConfigValue);
- if (placeholderIndex < 0 ||
- placeholderIndex != content.lastIndexOf(this.tokenPlaceholderConfigValue)) {
- throw new Error(`Unable to replace auth placeholder in ${configPath}`);
- }
- assert.ok(this.tokenConfigValue, 'tokenConfigValue is not defined');
- content = content.replace(this.tokenPlaceholderConfigValue, this.tokenConfigValue);
- yield fs.promises.writeFile(configPath, content);
- });
- }
- removeSsh() {
- return __awaiter(this, void 0, void 0, function* () {
- // SSH key
- const keyPath = this.sshKeyPath || stateHelper.SshKeyPath;
- if (keyPath) {
- try {
- yield io.rmRF(keyPath);
- }
- catch (err) {
- core.debug(err.message);
- core.warning(`Failed to remove SSH key '${keyPath}'`);
- }
- }
- // SSH known hosts
- const knownHostsPath = this.sshKnownHostsPath || stateHelper.SshKnownHostsPath;
- if (knownHostsPath) {
- try {
- yield io.rmRF(knownHostsPath);
- }
- catch (_a) {
- // Intentionally empty
- }
- }
- // SSH command
- yield this.removeGitConfig(SSH_COMMAND_KEY);
- });
- }
- removeToken() {
- return __awaiter(this, void 0, void 0, function* () {
- // HTTP extra header
- yield this.removeGitConfig(this.tokenConfigKey);
- });
- }
- removeGitConfig(configKey, submoduleOnly = false) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!submoduleOnly) {
- if ((yield this.git.configExists(configKey)) &&
- !(yield this.git.tryConfigUnset(configKey))) {
- // Load the config contents
- core.warning(`Failed to remove '${configKey}' from the git config`);
- }
- }
- const pattern = regexpHelper.escape(configKey);
- yield this.git.submoduleForeach(`git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || :`, true);
- });
- }
-}
-
-
-/***/ }),
-
-/***/ 289:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __importStar(__webpack_require__(470));
-const exec = __importStar(__webpack_require__(986));
-const fshelper = __importStar(__webpack_require__(618));
-const io = __importStar(__webpack_require__(1));
-const path = __importStar(__webpack_require__(622));
-const refHelper = __importStar(__webpack_require__(227));
-const regexpHelper = __importStar(__webpack_require__(528));
-const retryHelper = __importStar(__webpack_require__(587));
-const git_version_1 = __webpack_require__(559);
-// Auth header not supported before 2.9
-// Wire protocol v2 not supported before 2.18
-exports.MinimumGitVersion = new git_version_1.GitVersion('2.18');
-function createCommandManager(workingDirectory, lfs) {
- return __awaiter(this, void 0, void 0, function* () {
- return yield GitCommandManager.createCommandManager(workingDirectory, lfs);
- });
-}
-exports.createCommandManager = createCommandManager;
-class GitCommandManager {
- // Private constructor; use createCommandManager()
- constructor() {
- this.gitEnv = {
- GIT_TERMINAL_PROMPT: '0',
- GCM_INTERACTIVE: 'Never' // Disable prompting for git credential manager
- };
- this.gitPath = '';
- this.lfs = false;
- this.workingDirectory = '';
- }
- branchDelete(remote, branch) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['branch', '--delete', '--force'];
- if (remote) {
- args.push('--remote');
- }
- args.push(branch);
- yield this.execGit(args);
- });
- }
- branchExists(remote, pattern) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['branch', '--list'];
- if (remote) {
- args.push('--remote');
- }
- args.push(pattern);
- const output = yield this.execGit(args);
- return !!output.stdout.trim();
- });
- }
- branchList(remote) {
- return __awaiter(this, void 0, void 0, function* () {
- const result = [];
- // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
- // "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
- // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names.
- const args = ['rev-parse', '--symbolic-full-name'];
- if (remote) {
- args.push('--remotes=origin');
- }
- else {
- args.push('--branches');
- }
- const output = yield this.execGit(args);
- for (let branch of output.stdout.trim().split('\n')) {
- branch = branch.trim();
- if (branch) {
- if (branch.startsWith('refs/heads/')) {
- branch = branch.substr('refs/heads/'.length);
- }
- else if (branch.startsWith('refs/remotes/')) {
- branch = branch.substr('refs/remotes/'.length);
- }
- result.push(branch);
- }
- }
- return result;
- });
- }
- checkout(ref, startPoint) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['checkout', '--progress', '--force'];
- if (startPoint) {
- args.push('-B', ref, startPoint);
- }
- else {
- args.push(ref);
- }
- yield this.execGit(args);
- });
- }
- checkoutDetach() {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['checkout', '--detach'];
- yield this.execGit(args);
- });
- }
- config(configKey, configValue, globalConfig) {
- return __awaiter(this, void 0, void 0, function* () {
- yield this.execGit([
- 'config',
- globalConfig ? '--global' : '--local',
- configKey,
- configValue
- ]);
- });
- }
- configExists(configKey, globalConfig) {
- return __awaiter(this, void 0, void 0, function* () {
- const pattern = regexpHelper.escape(configKey);
- const output = yield this.execGit([
- 'config',
- globalConfig ? '--global' : '--local',
- '--name-only',
- '--get-regexp',
- pattern
- ], true);
- return output.exitCode === 0;
- });
- }
- fetch(refSpec, fetchDepth) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['-c', 'protocol.version=2', 'fetch'];
- if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {
- args.push('--no-tags');
- }
- args.push('--prune', '--progress', '--no-recurse-submodules');
- if (fetchDepth && fetchDepth > 0) {
- args.push(`--depth=${fetchDepth}`);
- }
- else if (fshelper.fileExistsSync(path.join(this.workingDirectory, '.git', 'shallow'))) {
- args.push('--unshallow');
- }
- args.push('origin');
- for (const arg of refSpec) {
- args.push(arg);
- }
- const that = this;
- yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
- yield that.execGit(args);
- }));
- });
- }
- getDefaultBranch(repositoryUrl) {
- return __awaiter(this, void 0, void 0, function* () {
- let output;
- yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
- output = yield this.execGit([
- 'ls-remote',
- '--quiet',
- '--exit-code',
- '--symref',
- repositoryUrl,
- 'HEAD'
- ]);
- }));
- if (output) {
- // Satisfy compiler, will always be set
- for (let line of output.stdout.trim().split('\n')) {
- line = line.trim();
- if (line.startsWith('ref:') || line.endsWith('HEAD')) {
- return line
- .substr('ref:'.length, line.length - 'ref:'.length - 'HEAD'.length)
- .trim();
- }
- }
- }
- throw new Error('Unexpected output when retrieving default branch');
- });
- }
- getWorkingDirectory() {
- return this.workingDirectory;
- }
- init() {
- return __awaiter(this, void 0, void 0, function* () {
- yield this.execGit(['init', this.workingDirectory]);
- });
- }
- isDetached() {
- return __awaiter(this, void 0, void 0, function* () {
- // Note, "branch --show-current" would be simpler but isn't available until Git 2.22
- const output = yield this.execGit(['rev-parse', '--symbolic-full-name', '--verify', '--quiet', 'HEAD'], true);
- return !output.stdout.trim().startsWith('refs/heads/');
- });
- }
- lfsFetch(ref) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['lfs', 'fetch', 'origin', ref];
- const that = this;
- yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
- yield that.execGit(args);
- }));
- });
- }
- lfsInstall() {
- return __awaiter(this, void 0, void 0, function* () {
- yield this.execGit(['lfs', 'install', '--local']);
- });
- }
- log1() {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['log', '-1']);
- return output.stdout;
- });
- }
- remoteAdd(remoteName, remoteUrl) {
- return __awaiter(this, void 0, void 0, function* () {
- yield this.execGit(['remote', 'add', remoteName, remoteUrl]);
- });
- }
- removeEnvironmentVariable(name) {
- delete this.gitEnv[name];
- }
- /**
- * 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.
- * @param {string} ref For example: 'refs/heads/master' or '/refs/tags/v1'
- * @returns {Promise}
- */
- revParse(ref) {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['rev-parse', ref]);
- return output.stdout.trim();
- });
- }
- setEnvironmentVariable(name, value) {
- this.gitEnv[name] = value;
- }
- shaExists(sha) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['rev-parse', '--verify', '--quiet', `${sha}^{object}`];
- const output = yield this.execGit(args, true);
- return output.exitCode === 0;
- });
- }
- submoduleForeach(command, recursive) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['submodule', 'foreach'];
- if (recursive) {
- args.push('--recursive');
- }
- args.push(command);
- const output = yield this.execGit(args);
- return output.stdout;
- });
- }
- submoduleSync(recursive) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['submodule', 'sync'];
- if (recursive) {
- args.push('--recursive');
- }
- yield this.execGit(args);
- });
- }
- submoduleUpdate(fetchDepth, recursive) {
- return __awaiter(this, void 0, void 0, function* () {
- const args = ['-c', 'protocol.version=2'];
- args.push('submodule', 'update', '--init', '--force');
- if (fetchDepth > 0) {
- args.push(`--depth=${fetchDepth}`);
- }
- if (recursive) {
- args.push('--recursive');
- }
- yield this.execGit(args);
- });
- }
- tagExists(pattern) {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['tag', '--list', pattern]);
- return !!output.stdout.trim();
- });
- }
- tryClean() {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['clean', '-ffdx'], true);
- return output.exitCode === 0;
- });
- }
- tryConfigUnset(configKey, globalConfig) {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit([
- 'config',
- globalConfig ? '--global' : '--local',
- '--unset-all',
- configKey
- ], true);
- return output.exitCode === 0;
- });
- }
- tryDisableAutomaticGarbageCollection() {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['config', '--local', 'gc.auto', '0'], true);
- return output.exitCode === 0;
- });
- }
- tryGetFetchUrl() {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['config', '--local', '--get', 'remote.origin.url'], true);
- if (output.exitCode !== 0) {
- return '';
- }
- const stdout = output.stdout.trim();
- if (stdout.includes('\n')) {
- return '';
- }
- return stdout;
- });
- }
- tryReset() {
- return __awaiter(this, void 0, void 0, function* () {
- const output = yield this.execGit(['reset', '--hard', 'HEAD'], true);
- return output.exitCode === 0;
- });
- }
- static createCommandManager(workingDirectory, lfs) {
- return __awaiter(this, void 0, void 0, function* () {
- const result = new GitCommandManager();
- yield result.initializeCommandManager(workingDirectory, lfs);
- return result;
- });
- }
- execGit(args, allowAllExitCodes = false) {
- return __awaiter(this, void 0, void 0, function* () {
- fshelper.directoryExistsSync(this.workingDirectory, true);
- const result = new GitOutput();
- const env = {};
- for (const key of Object.keys(process.env)) {
- env[key] = process.env[key];
- }
- for (const key of Object.keys(this.gitEnv)) {
- env[key] = this.gitEnv[key];
- }
- const stdout = [];
- const options = {
- cwd: this.workingDirectory,
- env,
- ignoreReturnCode: allowAllExitCodes,
- listeners: {
- stdout: (data) => {
- stdout.push(data.toString());
- }
- }
- };
- result.exitCode = yield exec.exec(`"${this.gitPath}"`, args, options);
- result.stdout = stdout.join('');
- return result;
- });
- }
- initializeCommandManager(workingDirectory, lfs) {
- return __awaiter(this, void 0, void 0, function* () {
- this.workingDirectory = workingDirectory;
- // Git-lfs will try to pull down assets if any of the local/user/system setting exist.
- // If the user didn't enable `LFS` in their pipeline definition, disable LFS fetch/checkout.
- this.lfs = lfs;
- if (!this.lfs) {
- this.gitEnv['GIT_LFS_SKIP_SMUDGE'] = '1';
- }
- this.gitPath = yield io.which('git', true);
- // Git version
- core.debug('Getting git version');
- let gitVersion = new git_version_1.GitVersion();
- let gitOutput = yield this.execGit(['version']);
- let stdout = gitOutput.stdout.trim();
- if (!stdout.includes('\n')) {
- const match = stdout.match(/\d+\.\d+(\.\d+)?/);
- if (match) {
- gitVersion = new git_version_1.GitVersion(match[0]);
- }
- }
- if (!gitVersion.isValid()) {
- throw new Error('Unable to determine git version');
- }
- // Minimum git version
- if (!gitVersion.checkMinimum(exports.MinimumGitVersion)) {
- throw new Error(`Minimum required git version is ${exports.MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`);
- }
- if (this.lfs) {
- // Git-lfs version
- core.debug('Getting git-lfs version');
- let gitLfsVersion = new git_version_1.GitVersion();
- const gitLfsPath = yield io.which('git-lfs', true);
- gitOutput = yield this.execGit(['lfs', 'version']);
- stdout = gitOutput.stdout.trim();
- if (!stdout.includes('\n')) {
- const match = stdout.match(/\d+\.\d+(\.\d+)?/);
- if (match) {
- gitLfsVersion = new git_version_1.GitVersion(match[0]);
- }
- }
- if (!gitLfsVersion.isValid()) {
- throw new Error('Unable to determine git-lfs version');
- }
- // Minimum git-lfs version
- // Note:
- // - Auth header not supported before 2.1
- const minimumGitLfsVersion = new git_version_1.GitVersion('2.1');
- if (!gitLfsVersion.checkMinimum(minimumGitLfsVersion)) {
- throw new Error(`Minimum required git-lfs version is ${minimumGitLfsVersion}. Your git-lfs ('${gitLfsPath}') is ${gitLfsVersion}`);
- }
- }
- // Set the user agent
- const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`;
- core.debug(`Set git useragent to: ${gitHttpUserAgent}`);
- this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent;
- });
- }
-}
-class GitOutput {
- constructor() {
- this.stdout = '';
- this.exitCode = 0;
- }
-}
-
-
-/***/ }),
-
-/***/ 293:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __importStar(__webpack_require__(470));
-const fsHelper = __importStar(__webpack_require__(618));
-const gitAuthHelper = __importStar(__webpack_require__(287));
-const gitCommandManager = __importStar(__webpack_require__(289));
-const gitDirectoryHelper = __importStar(__webpack_require__(438));
-const githubApiHelper = __importStar(__webpack_require__(464));
-const io = __importStar(__webpack_require__(1));
-const path = __importStar(__webpack_require__(622));
-const refHelper = __importStar(__webpack_require__(227));
-const stateHelper = __importStar(__webpack_require__(153));
-const urlHelper = __importStar(__webpack_require__(81));
-function getSource(settings) {
- return __awaiter(this, void 0, void 0, function* () {
- // Repository URL
- core.info(`Syncing repository: ${settings.repositoryOwner}/${settings.repositoryName}`);
- const repositoryUrl = urlHelper.getFetchUrl(settings);
- // Remove conflicting file path
- if (fsHelper.fileExistsSync(settings.repositoryPath)) {
- yield io.rmRF(settings.repositoryPath);
- }
- // Create directory
- let isExisting = true;
- if (!fsHelper.directoryExistsSync(settings.repositoryPath)) {
- isExisting = false;
- yield io.mkdirP(settings.repositoryPath);
- }
- // Git command manager
- core.startGroup('Getting Git version info');
- const git = yield getGitCommandManager(settings);
- core.endGroup();
- // Prepare existing directory, otherwise recreate
- if (isExisting) {
- yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref);
- }
- if (!git) {
- // Downloading using REST API
- core.info(`The repository will be downloaded using the GitHub REST API`);
- core.info(`To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`);
- if (settings.submodules) {
- 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.`);
- }
- 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.`);
- }
- yield githubApiHelper.downloadRepository(settings.authToken, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.repositoryPath);
- return;
- }
- // Save state for POST action
- stateHelper.setRepositoryPath(settings.repositoryPath);
- // Initialize the repository
- if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) {
- core.startGroup('Initializing the repository');
- yield git.init();
- yield git.remoteAdd('origin', repositoryUrl);
- core.endGroup();
- }
- // Disable automatic garbage collection
- core.startGroup('Disabling automatic garbage collection');
- if (!(yield 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
- core.startGroup('Setting up auth');
- yield authHelper.configureAuth();
- core.endGroup();
- // Determine the default branch
- if (!settings.ref && !settings.commit) {
- core.startGroup('Determining the default branch');
- if (settings.sshKey) {
- settings.ref = yield git.getDefaultBranch(repositoryUrl);
- }
- else {
- settings.ref = yield githubApiHelper.getDefaultBranch(settings.authToken, settings.repositoryOwner, settings.repositoryName);
- }
- core.endGroup();
- }
- // LFS install
- if (settings.lfs) {
- yield git.lfsInstall();
- }
- // Fetch
- core.startGroup('Fetching the repository');
- if (settings.fetchDepth <= 0) {
- // Fetch all branches and tags
- let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit);
- yield git.fetch(refSpec);
- // 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.
- if (!(yield refHelper.testRef(git, settings.ref, settings.commit))) {
- refSpec = refHelper.getRefSpec(settings.ref, settings.commit);
- yield git.fetch(refSpec);
- }
- }
- else {
- const refSpec = refHelper.getRefSpec(settings.ref, settings.commit);
- yield git.fetch(refSpec, settings.fetchDepth);
- }
- core.endGroup();
- // Checkout info
- core.startGroup('Determining the checkout info');
- const checkoutInfo = yield refHelper.getCheckoutInfo(git, settings.ref, settings.commit);
- core.endGroup();
- // LFS fetch
- // Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
- // Explicit lfs fetch will fetch lfs objects in parallel.
- if (settings.lfs) {
- core.startGroup('Fetching LFS objects');
- yield git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref);
- core.endGroup();
- }
- // Checkout
- core.startGroup('Checking out the ref');
- yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint);
- core.endGroup();
- // Submodules
- if (settings.submodules) {
- try {
- // Temporarily override global config
- core.startGroup('Setting up auth for fetching submodules');
- yield authHelper.configureGlobalAuth();
- core.endGroup();
- // Checkout submodules
- core.startGroup('Fetching submodules');
- yield git.submoduleSync(settings.nestedSubmodules);
- yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules);
- yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules);
- core.endGroup();
- // Persist credentials
- if (settings.persistCredentials) {
- core.startGroup('Persisting credentials for submodules');
- yield authHelper.configureSubmoduleAuth();
- core.endGroup();
- }
- }
- finally {
- // Remove temporary global config override
- yield authHelper.removeGlobalAuth();
- }
- }
- // Dump some info about the checked out commit
- const commitInfo = yield git.log1();
- // Check for incorrect pull request merge commit
- yield refHelper.checkCommitInfo(settings.authToken, commitInfo, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit);
- }
- finally {
- // Remove auth
- if (!settings.persistCredentials) {
- core.startGroup('Removing auth');
- yield authHelper.removeAuth();
- core.endGroup();
- }
- }
- });
-}
-exports.getSource = getSource;
-function cleanup(repositoryPath) {
- return __awaiter(this, void 0, void 0, function* () {
- // Repo exists?
- if (!repositoryPath ||
- !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))) {
- return;
- }
- let git;
- try {
- git = yield gitCommandManager.createCommandManager(repositoryPath, false);
- }
- catch (_a) {
- return;
- }
- // Remove auth
- const authHelper = gitAuthHelper.createAuthHelper(git);
- yield authHelper.removeAuth();
- });
-}
-exports.cleanup = cleanup;
-function getGitCommandManager(settings) {
- return __awaiter(this, void 0, void 0, function* () {
- core.info(`Working directory is '${settings.repositoryPath}'`);
- try {
- return yield gitCommandManager.createCommandManager(settings.repositoryPath, settings.lfs);
- }
- catch (err) {
- // Git is required for LFS
- if (settings.lfs) {
- throw err;
- }
- // Otherwise fallback to REST API
- return undefined;
- }
- });
-}
-
-
-/***/ }),
-
-/***/ 294:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = parseOptions;
-
-const { Deprecation } = __webpack_require__(692);
-const { getUserAgent } = __webpack_require__(796);
-const once = __webpack_require__(969);
-
-const pkg = __webpack_require__(215);
-
-const deprecateOptionsTimeout = once((log, deprecation) =>
- log.warn(deprecation)
-);
-const deprecateOptionsAgent = once((log, deprecation) => log.warn(deprecation));
-const deprecateOptionsHeaders = once((log, deprecation) =>
- log.warn(deprecation)
-);
-
-function parseOptions(options, log, hook) {
- if (options.headers) {
- options.headers = Object.keys(options.headers).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = options.headers[key];
- return newObj;
- }, {});
- }
-
- const clientDefaults = {
- headers: options.headers || {},
- request: options.request || {},
- mediaType: {
- previews: [],
- format: ""
- }
- };
-
- if (options.baseUrl) {
- clientDefaults.baseUrl = options.baseUrl;
- }
-
- if (options.userAgent) {
- clientDefaults.headers["user-agent"] = options.userAgent;
- }
-
- if (options.previews) {
- clientDefaults.mediaType.previews = options.previews;
- }
-
- if (options.timeZone) {
- clientDefaults.headers["time-zone"] = options.timeZone;
- }
-
- if (options.timeout) {
- deprecateOptionsTimeout(
- log,
- new Deprecation(
- "[@octokit/rest] new Octokit({timeout}) is deprecated. Use {request: {timeout}} instead. See https://github.com/octokit/request.js#request"
- )
- );
- clientDefaults.request.timeout = options.timeout;
- }
-
- if (options.agent) {
- deprecateOptionsAgent(
- log,
- new Deprecation(
- "[@octokit/rest] new Octokit({agent}) is deprecated. Use {request: {agent}} instead. See https://github.com/octokit/request.js#request"
- )
- );
- clientDefaults.request.agent = options.agent;
- }
-
- if (options.headers) {
- deprecateOptionsHeaders(
- log,
- new Deprecation(
- "[@octokit/rest] new Octokit({headers}) is deprecated. Use {userAgent, previews} instead. See https://github.com/octokit/request.js#request"
- )
- );
- }
-
- const userAgentOption = clientDefaults.headers["user-agent"];
- const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`;
-
- clientDefaults.headers["user-agent"] = [userAgentOption, defaultUserAgent]
- .filter(Boolean)
- .join(" ");
-
- clientDefaults.request.hook = hook.bind(null, "request");
-
- return clientDefaults;
-}
-
-
-/***/ }),
-
-/***/ 297:
-/***/ (function(module) {
-
-module.exports = class HttpError extends Error {
- constructor (message, code, headers) {
- super(message)
-
- // Maintains proper stack trace (only available on V8)
- /* istanbul ignore next */
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor)
- }
-
- this.name = 'HttpError'
- this.code = code
- this.headers = headers
- }
-}
-
-
-/***/ }),
-
-/***/ 299:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-const VERSION = "1.1.2";
-
-/**
- * Some “list” response that can be paginated have a different response structure
- *
- * They have a `total_count` key in the response (search also has `incomplete_results`,
- * /installation/repositories also has `repository_selection`), as well as a key with
- * the list of the items which name varies from endpoint to endpoint:
- *
- * - https://developer.github.com/v3/search/#example (key `items`)
- * - https://developer.github.com/v3/checks/runs/#response-3 (key: `check_runs`)
- * - https://developer.github.com/v3/checks/suites/#response-1 (key: `check_suites`)
- * - https://developer.github.com/v3/apps/installations/#list-repositories (key: `repositories`)
- * - https://developer.github.com/v3/apps/installations/#list-installations-for-a-user (key `installations`)
- *
- * Octokit normalizes these responses so that paginated results are always returned following
- * the same structure. One challenge is that if the list response has only one page, no Link
- * header is provided, so this header alone is not sufficient to check wether a response is
- * paginated or not. For the exceptions with the namespace, a fallback check for the route
- * paths has to be added in order to normalize the response. We cannot check for the total_count
- * property because it also exists in the response of Get the combined status for a specific ref.
- */
-const REGEX = [/^\/search\//, /^\/repos\/[^/]+\/[^/]+\/commits\/[^/]+\/(check-runs|check-suites)([^/]|$)/, /^\/installation\/repositories([^/]|$)/, /^\/user\/installations([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/secrets([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/workflows(\/[^/]+\/runs)?([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/runs(\/[^/]+\/(artifacts|jobs))?([^/]|$)/];
-function normalizePaginatedListResponse(octokit, url, response) {
- const path = url.replace(octokit.request.endpoint.DEFAULTS.baseUrl, "");
- const responseNeedsNormalization = REGEX.find(regex => regex.test(path));
- if (!responseNeedsNormalization) return; // keep the additional properties intact as there is currently no other way
- // to retrieve the same information.
-
- const incompleteResults = response.data.incomplete_results;
- const repositorySelection = response.data.repository_selection;
- const totalCount = response.data.total_count;
- delete response.data.incomplete_results;
- delete response.data.repository_selection;
- delete response.data.total_count;
- const namespaceKey = Object.keys(response.data)[0];
- const data = response.data[namespaceKey];
- response.data = data;
-
- if (typeof incompleteResults !== "undefined") {
- response.data.incomplete_results = incompleteResults;
- }
-
- if (typeof repositorySelection !== "undefined") {
- response.data.repository_selection = repositorySelection;
- }
-
- response.data.total_count = totalCount;
- Object.defineProperty(response.data, namespaceKey, {
- get() {
- octokit.log.warn(`[@octokit/paginate-rest] "response.data.${namespaceKey}" is deprecated for "GET ${path}". Get the results directly from "response.data"`);
- return Array.from(data);
- }
-
- });
-}
-
-function iterator(octokit, route, parameters) {
- const options = octokit.request.endpoint(route, parameters);
- const method = options.method;
- const headers = options.headers;
- let url = options.url;
- return {
- [Symbol.asyncIterator]: () => ({
- next() {
- if (!url) {
- return Promise.resolve({
- done: true
- });
- }
-
- return octokit.request({
- method,
- url,
- headers
- }).then(response => {
- normalizePaginatedListResponse(octokit, url, response); // `response.headers.link` format:
- // '; rel="next", ; rel="last"'
- // sets `url` to undefined if "next" URL is not present or `link` header is not set
-
- url = ((response.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
- return {
- value: response
- };
- });
- }
-
- })
- };
-}
-
-function paginate(octokit, route, parameters, mapFn) {
- if (typeof parameters === "function") {
- mapFn = parameters;
- parameters = undefined;
- }
-
- return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
-}
-
-function gather(octokit, results, iterator, mapFn) {
- return iterator.next().then(result => {
- if (result.done) {
- return results;
- }
-
- let earlyExit = false;
-
- function done() {
- earlyExit = true;
- }
-
- results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
-
- if (earlyExit) {
- return results;
- }
-
- return gather(octokit, results, iterator, mapFn);
- });
-}
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function paginateRest(octokit) {
- return {
- paginate: Object.assign(paginate.bind(null, octokit), {
- iterator: iterator.bind(null, octokit)
- })
- };
-}
-paginateRest.VERSION = VERSION;
-
-exports.paginateRest = paginateRest;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 323:
-/***/ (function(module) {
-
-"use strict";
-
-
-var isStream = module.exports = function (stream) {
- return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';
-};
-
-isStream.writable = function (stream) {
- return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';
-};
-
-isStream.readable = function (stream) {
- return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';
-};
-
-isStream.duplex = function (stream) {
- return isStream.writable(stream) && isStream.readable(stream);
-};
-
-isStream.transform = function (stream) {
- return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';
-};
-
-
-/***/ }),
-
-/***/ 335:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = __webpack_require__(179);
-
-
-/***/ }),
-
-/***/ 336:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = hasLastPage
-
-const deprecate = __webpack_require__(370)
-const getPageLinks = __webpack_require__(577)
-
-function hasLastPage (link) {
- deprecate(`octokit.hasLastPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
- return getPageLinks(link).last
-}
-
-
-/***/ }),
-
-/***/ 348:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-
-module.exports = validate;
-
-const { RequestError } = __webpack_require__(497);
-const get = __webpack_require__(854);
-const set = __webpack_require__(883);
-
-function validate(octokit, options) {
- if (!options.request.validate) {
- return;
- }
- const { validate: params } = options.request;
-
- Object.keys(params).forEach(parameterName => {
- const parameter = get(params, parameterName);
-
- const expectedType = parameter.type;
- let parentParameterName;
- let parentValue;
- let parentParamIsPresent = true;
- let parentParameterIsArray = false;
-
- if (/\./.test(parameterName)) {
- parentParameterName = parameterName.replace(/\.[^.]+$/, "");
- parentParameterIsArray = parentParameterName.slice(-2) === "[]";
- if (parentParameterIsArray) {
- parentParameterName = parentParameterName.slice(0, -2);
- }
- parentValue = get(options, parentParameterName);
- parentParamIsPresent =
- parentParameterName === "headers" ||
- (typeof parentValue === "object" && parentValue !== null);
- }
-
- const values = parentParameterIsArray
- ? (get(options, parentParameterName) || []).map(
- value => value[parameterName.split(/\./).pop()]
- )
- : [get(options, parameterName)];
-
- values.forEach((value, i) => {
- const valueIsPresent = typeof value !== "undefined";
- const valueIsNull = value === null;
- const currentParameterName = parentParameterIsArray
- ? parameterName.replace(/\[\]/, `[${i}]`)
- : parameterName;
-
- if (!parameter.required && !valueIsPresent) {
- return;
- }
-
- // if the parent parameter is of type object but allows null
- // then the child parameters can be ignored
- if (!parentParamIsPresent) {
- return;
- }
-
- if (parameter.allowNull && valueIsNull) {
- return;
- }
-
- if (!parameter.allowNull && valueIsNull) {
- throw new RequestError(
- `'${currentParameterName}' cannot be null`,
- 400,
- {
- request: options
- }
- );
- }
-
- if (parameter.required && !valueIsPresent) {
- throw new RequestError(
- `Empty value for parameter '${currentParameterName}': ${JSON.stringify(
- value
- )}`,
- 400,
- {
- request: options
- }
- );
- }
-
- // parse to integer before checking for enum
- // so that string "1" will match enum with number 1
- if (expectedType === "integer") {
- const unparsedValue = value;
- value = parseInt(value, 10);
- if (isNaN(value)) {
- throw new RequestError(
- `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
- unparsedValue
- )} is NaN`,
- 400,
- {
- request: options
- }
- );
- }
- }
-
- if (parameter.enum && parameter.enum.indexOf(String(value)) === -1) {
- throw new RequestError(
- `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
- value
- )}`,
- 400,
- {
- request: options
- }
- );
- }
-
- if (parameter.validation) {
- const regex = new RegExp(parameter.validation);
- if (!regex.test(value)) {
- throw new RequestError(
- `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
- value
- )}`,
- 400,
- {
- request: options
- }
- );
- }
- }
-
- if (expectedType === "object" && typeof value === "string") {
- try {
- value = JSON.parse(value);
- } catch (exception) {
- throw new RequestError(
- `JSON parse error of value for parameter '${currentParameterName}': ${JSON.stringify(
- value
- )}`,
- 400,
- {
- request: options
- }
- );
- }
- }
-
- set(options, parameter.mapTo || currentParameterName, value);
- });
- });
-
- return options;
-}
-
-
-/***/ }),
-
-/***/ 349:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationRequestError;
-
-const { RequestError } = __webpack_require__(497);
-
-function authenticationRequestError(state, error, options) {
- /* istanbul ignore next */
- if (!error.headers) throw error;
-
- const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
- // handle "2FA required" error only
- if (error.status !== 401 || !otpRequired) {
- throw error;
- }
-
- if (
- error.status === 401 &&
- otpRequired &&
- error.request &&
- error.request.headers["x-github-otp"]
- ) {
- throw new RequestError(
- "Invalid one-time password for two-factor authentication",
- 401,
- {
- headers: error.headers,
- request: options
- }
- );
- }
-
- if (typeof state.auth.on2fa !== "function") {
- throw new RequestError(
- "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
- 401,
- {
- headers: error.headers,
- request: options
- }
- );
- }
-
- return Promise.resolve()
- .then(() => {
- return state.auth.on2fa();
- })
- .then(oneTimePassword => {
- const newOptions = Object.assign(options, {
- headers: Object.assign(
- { "x-github-otp": oneTimePassword },
- options.headers
- )
- });
- return state.octokit.request(newOptions);
- });
-}
-
-
-/***/ }),
-
-/***/ 357:
-/***/ (function(module) {
-
-module.exports = require("assert");
-
-/***/ }),
-
-/***/ 363:
-/***/ (function(module) {
-
-module.exports = register
-
-function register (state, name, method, options) {
- if (typeof method !== 'function') {
- throw new Error('method for before hook must be a function')
- }
-
- if (!options) {
- options = {}
- }
-
- if (Array.isArray(name)) {
- return name.reverse().reduce(function (callback, name) {
- return register.bind(null, state, name, callback, options)
- }, method)()
- }
-
- return Promise.resolve()
- .then(function () {
- if (!state.registry[name]) {
- return method(options)
- }
-
- return (state.registry[name]).reduce(function (method, registered) {
- return registered.hook.bind(null, method, options)
- }, method)()
- })
-}
-
-
-/***/ }),
-
-/***/ 368:
-/***/ (function(module) {
-
-module.exports = function atob(str) {
- return Buffer.from(str, 'base64').toString('binary')
-}
-
-
-/***/ }),
-
-/***/ 370:
-/***/ (function(module) {
-
-module.exports = deprecate
-
-const loggedMessages = {}
-
-function deprecate (message) {
- if (loggedMessages[message]) {
- return
- }
-
- console.warn(`DEPRECATED (@octokit/rest): ${message}`)
- loggedMessages[message] = 1
-}
-
-
-/***/ }),
-
-/***/ 385:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var isPlainObject = _interopDefault(__webpack_require__(696));
-var universalUserAgent = __webpack_require__(562);
-
-function lowercaseKeys(object) {
- if (!object) {
- return {};
- }
-
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-
-function mergeDeep(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach(key => {
- if (isPlainObject(options[key])) {
- if (!(key in defaults)) Object.assign(result, {
- [key]: options[key]
- });else result[key] = mergeDeep(defaults[key], options[key]);
- } else {
- Object.assign(result, {
- [key]: options[key]
- });
- }
- });
- return result;
-}
-
-function merge(defaults, route, options) {
- if (typeof route === "string") {
- let [method, url] = route.split(" ");
- options = Object.assign(url ? {
- method,
- url
- } : {
- url: method
- }, options);
- } else {
- options = Object.assign({}, route);
- } // lowercase header names before merging with defaults to avoid duplicates
-
-
- options.headers = lowercaseKeys(options.headers);
- const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten
-
- if (defaults && defaults.mediaType.previews.length) {
- mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
- }
-
- mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, ""));
- return mergedOptions;
-}
-
-function addQueryParameters(url, parameters) {
- const separator = /\?/.test(url) ? "&" : "?";
- const names = Object.keys(parameters);
-
- if (names.length === 0) {
- return url;
- }
-
- return url + separator + names.map(name => {
- if (name === "q") {
- return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
- }
-
- return `${name}=${encodeURIComponent(parameters[name])}`;
- }).join("&");
-}
-
-const urlVariableRegex = /\{[^}]+\}/g;
-
-function removeNonChars(variableName) {
- return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
-}
-
-function extractUrlVariableNames(url) {
- const matches = url.match(urlVariableRegex);
-
- if (!matches) {
- return [];
- }
-
- return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
-}
-
-function omit(object, keysToOmit) {
- return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {
- obj[key] = object[key];
- return obj;
- }, {});
-}
-
-// Based on https://github.com/bramstein/url-template, licensed under BSD
-// TODO: create separate package.
-//
-// Copyright (c) 2012-2014, Bram Stein
-// 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. The name of the author may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 OWNER 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.
-
-/* istanbul ignore file */
-function encodeReserved(str) {
- return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
- if (!/%[0-9A-Fa-f]/.test(part)) {
- part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
- }
-
- return part;
- }).join("");
-}
-
-function encodeUnreserved(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-
-function encodeValue(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
-
- if (key) {
- return encodeUnreserved(key) + "=" + value;
- } else {
- return value;
- }
-}
-
-function isDefined(value) {
- return value !== undefined && value !== null;
-}
-
-function isKeyOperator(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-
-function getValues(context, operator, key, modifier) {
- var value = context[key],
- result = [];
-
- if (isDefined(value) && value !== "") {
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
- value = value.toString();
-
- if (modifier && modifier !== "*") {
- value = value.substring(0, parseInt(modifier, 10));
- }
-
- result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function (value) {
- result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
- });
- } else {
- Object.keys(value).forEach(function (k) {
- if (isDefined(value[k])) {
- result.push(encodeValue(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
-
- if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function (value) {
- tmp.push(encodeValue(operator, value));
- });
- } else {
- Object.keys(value).forEach(function (k) {
- if (isDefined(value[k])) {
- tmp.push(encodeUnreserved(k));
- tmp.push(encodeValue(operator, value[k].toString()));
- }
- });
- }
-
- if (isKeyOperator(operator)) {
- result.push(encodeUnreserved(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined(value)) {
- result.push(encodeUnreserved(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved(key) + "=");
- } else if (value === "") {
- result.push("");
- }
- }
-
- return result;
-}
-
-function parseUrl(template) {
- return {
- expand: expand.bind(null, template)
- };
-}
-
-function expand(template, context) {
- var operators = ["+", "#", ".", "/", ";", "?", "&"];
- return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
- if (expression) {
- let operator = "";
- const values = [];
-
- if (operators.indexOf(expression.charAt(0)) !== -1) {
- operator = expression.charAt(0);
- expression = expression.substr(1);
- }
-
- expression.split(/,/g).forEach(function (variable) {
- var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
- values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
- });
-
- if (operator && operator !== "+") {
- var separator = ",";
-
- if (operator === "?") {
- separator = "&";
- } else if (operator !== "#") {
- separator = operator;
- }
-
- return (values.length !== 0 ? operator : "") + values.join(separator);
- } else {
- return values.join(",");
- }
- } else {
- return encodeReserved(literal);
- }
- });
-}
-
-function parse(options) {
- // https://fetch.spec.whatwg.org/#methods
- let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible
-
- let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
- let headers = Object.assign({}, options.headers);
- let body;
- let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later
-
- const urlVariableNames = extractUrlVariableNames(url);
- url = parseUrl(url).expand(parameters);
-
- if (!/^http/.test(url)) {
- url = options.baseUrl + url;
- }
-
- const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl");
- const remainingParameters = omit(parameters, omittedParameters);
- const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
-
- if (!isBinaryRequset) {
- if (options.mediaType.format) {
- // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
- headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
- }
-
- if (options.mediaType.previews.length) {
- const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
- headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {
- const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
- return `application/vnd.github.${preview}-preview${format}`;
- }).join(",");
- }
- } // for GET/HEAD requests, set URL query parameters from remaining parameters
- // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
-
-
- if (["GET", "HEAD"].includes(method)) {
- url = addQueryParameters(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- } else {
- headers["content-length"] = 0;
- }
- }
- } // default content-type for JSON if body is set
-
-
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
- // fetch does not allow to set `content-length` header, but we can set body to an empty string
-
-
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- } // Only return body/request keys if present
-
-
- return Object.assign({
- method,
- url,
- headers
- }, typeof body !== "undefined" ? {
- body
- } : null, options.request ? {
- request: options.request
- } : null);
-}
-
-function endpointWithDefaults(defaults, route, options) {
- return parse(merge(defaults, route, options));
-}
-
-function withDefaults(oldDefaults, newDefaults) {
- const DEFAULTS = merge(oldDefaults, newDefaults);
- const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
- return Object.assign(endpoint, {
- DEFAULTS,
- defaults: withDefaults.bind(null, DEFAULTS),
- merge: merge.bind(null, DEFAULTS),
- parse
- });
-}
-
-const VERSION = "6.0.1";
-
-const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
-// So we use RequestParameters and add method as additional required property.
-
-const DEFAULTS = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent
- },
- mediaType: {
- format: "",
- previews: []
- }
-};
-
-const endpoint = withDefaults(null, DEFAULTS);
-
-exports.endpoint = endpoint;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 389:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-
-const fs = __webpack_require__(747);
-const shebangCommand = __webpack_require__(866);
-
-function readShebang(command) {
- // Read the first 150 bytes from the file
- const size = 150;
- let buffer;
-
- if (Buffer.alloc) {
- // Node.js v4.5+ / v5.10+
- buffer = Buffer.alloc(size);
- } else {
- // Old Node.js API
- buffer = new Buffer(size);
- buffer.fill(0); // zero-fill
- }
-
- let fd;
-
- try {
- fd = fs.openSync(command, 'r');
- fs.readSync(fd, buffer, 0, size, 0);
- fs.closeSync(fd);
- } catch (e) { /* Empty */ }
-
- // Attempt to extract shebang (null is returned if not a shebang)
- return shebangCommand(buffer.toString());
-}
-
-module.exports = readShebang;
-
-
-/***/ }),
-
-/***/ 402:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = Octokit;
-
-const { request } = __webpack_require__(753);
-const Hook = __webpack_require__(523);
-
-const parseClientOptions = __webpack_require__(294);
-
-function Octokit(plugins, options) {
- options = options || {};
- const hook = new Hook.Collection();
- const log = Object.assign(
- {
- debug: () => {},
- info: () => {},
- warn: console.warn,
- error: console.error
- },
- options && options.log
- );
- const api = {
- hook,
- log,
- request: request.defaults(parseClientOptions(options, log, hook))
- };
-
- plugins.forEach(pluginFunction => pluginFunction(api, options));
-
- return api;
-}
-
-
-/***/ }),
-
-/***/ 413:
-/***/ (function(module) {
-
-module.exports = require("stream");
-
-/***/ }),
-
-/***/ 417:
-/***/ (function(module) {
-
-module.exports = require("crypto");
-
-/***/ }),
-
-/***/ 427:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-// Older verions of Node.js might not have `util.getSystemErrorName()`.
-// In that case, fall back to a deprecated internal.
-const util = __webpack_require__(669);
-
-let uv;
-
-if (typeof util.getSystemErrorName === 'function') {
- module.exports = util.getSystemErrorName;
-} else {
- try {
- uv = process.binding('uv');
-
- if (typeof uv.errname !== 'function') {
- throw new TypeError('uv.errname is not a function');
- }
- } catch (err) {
- console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err);
- uv = null;
- }
-
- module.exports = code => errname(uv, code);
-}
-
-// Used for testing the fallback behavior
-module.exports.__test__ = errname;
-
-function errname(uv, code) {
- if (uv) {
- return uv.errname(code);
- }
-
- if (!(code < 0)) {
- throw new Error('err >= 0');
- }
-
- return `Unknown system error ${code}`;
-}
-
-
-
-/***/ }),
-
-/***/ 430:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = octokitValidate;
-
-const validate = __webpack_require__(348);
-
-function octokitValidate(octokit) {
- octokit.hook.before("request", validate.bind(null, octokit));
-}
-
-
-/***/ }),
-
-/***/ 431:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const os = __webpack_require__(87);
-/**
- * Commands
- *
- * Command Format:
- * ##[name key=value;key=value]message
- *
- * Examples:
- * ##[warning]This is the user warning message
- * ##[set-secret name=mypassword]definitelyNotAPassword!
- */
-function issueCommand(command, properties, message) {
- const cmd = new Command(command, properties, message);
- process.stdout.write(cmd.toString() + os.EOL);
-}
-exports.issueCommand = issueCommand;
-function issue(name, message = '') {
- issueCommand(name, {}, message);
-}
-exports.issue = issue;
-const CMD_STRING = '::';
-class Command {
- constructor(command, properties, message) {
- if (!command) {
- command = 'missing.command';
- }
- this.command = command;
- this.properties = properties;
- this.message = message;
- }
- toString() {
- let cmdStr = CMD_STRING + this.command;
- if (this.properties && Object.keys(this.properties).length > 0) {
- cmdStr += ' ';
- for (const key in this.properties) {
- if (this.properties.hasOwnProperty(key)) {
- const val = this.properties[key];
- if (val) {
- // safely append the val - avoid blowing up when attempting to
- // call .replace() if message is not a string for some reason
- cmdStr += `${key}=${escape(`${val || ''}`)},`;
- }
- }
- }
- }
- cmdStr += CMD_STRING;
- // safely append the message - avoid blowing up when attempting to
- // call .replace() if message is not a string for some reason
- const message = `${this.message || ''}`;
- cmdStr += escapeData(message);
- return cmdStr;
- }
-}
-function escapeData(s) {
- return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A');
-}
-function escape(s) {
- return s
- .replace(/\r/g, '%0D')
- .replace(/\n/g, '%0A')
- .replace(/]/g, '%5D')
- .replace(/;/g, '%3B');
-}
-//# sourceMappingURL=command.js.map
-
-/***/ }),
-
-/***/ 438:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __importStar(__webpack_require__(357));
-const core = __importStar(__webpack_require__(470));
-const fs = __importStar(__webpack_require__(747));
-const fsHelper = __importStar(__webpack_require__(618));
-const io = __importStar(__webpack_require__(1));
-const path = __importStar(__webpack_require__(622));
-function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref) {
- return __awaiter(this, void 0, void 0, function* () {
- assert.ok(repositoryPath, 'Expected repositoryPath to be defined');
- assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined');
- // Indicates whether to delete the directory contents
- let remove = false;
- // Check whether using git or REST API
- if (!git) {
- remove = true;
- }
- // Fetch URL does not match
- else if (!fsHelper.directoryExistsSync(path.join(repositoryPath, '.git')) ||
- repositoryUrl !== (yield git.tryGetFetchUrl())) {
- remove = true;
- }
- else {
- // Delete any index.lock and shallow.lock left by a previously canceled run or crashed git process
- const lockPaths = [
- path.join(repositoryPath, '.git', 'index.lock'),
- path.join(repositoryPath, '.git', 'shallow.lock')
- ];
- for (const lockPath of lockPaths) {
- try {
- yield io.rmRF(lockPath);
- }
- catch (error) {
- core.debug(`Unable to delete '${lockPath}'. ${error.message}`);
- }
- }
- try {
- core.startGroup('Removing previously created refs, to avoid conflicts');
- // Checkout detached HEAD
- if (!(yield git.isDetached())) {
- yield git.checkoutDetach();
- }
- // Remove all refs/heads/*
- let branches = yield git.branchList(false);
- for (const branch of branches) {
- yield git.branchDelete(false, branch);
- }
- // Remove any conflicting refs/remotes/origin/*
- // Example 1: Consider ref is refs/heads/foo and previously fetched refs/remotes/origin/foo/bar
- // Example 2: Consider ref is refs/heads/foo/bar and previously fetched refs/remotes/origin/foo
- if (ref) {
- ref = ref.startsWith('refs/') ? ref : `refs/heads/${ref}`;
- if (ref.startsWith('refs/heads/')) {
- const upperName1 = ref.toUpperCase().substr('REFS/HEADS/'.length);
- const upperName1Slash = `${upperName1}/`;
- branches = yield git.branchList(true);
- for (const branch of branches) {
- const upperName2 = branch.substr('origin/'.length).toUpperCase();
- const upperName2Slash = `${upperName2}/`;
- if (upperName1.startsWith(upperName2Slash) ||
- upperName2.startsWith(upperName1Slash)) {
- yield git.branchDelete(true, branch);
- }
- }
- }
- }
- core.endGroup();
- // Clean
- if (clean) {
- core.startGroup('Cleaning the repository');
- if (!(yield git.tryClean())) {
- core.debug(`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;
- }
- else if (!(yield git.tryReset())) {
- remove = true;
- }
- core.endGroup();
- if (remove) {
- core.warning(`Unable to clean or reset the repository. The repository will be recreated instead.`);
- }
- }
- }
- catch (error) {
- core.warning(`Unable to prepare the existing repository. The repository will be recreated instead.`);
- remove = true;
- }
- }
- if (remove) {
- // Delete the contents of the directory. Don't delete the directory itself
- // since it might be the current working directory.
- core.info(`Deleting the contents of '${repositoryPath}'`);
- for (const file of yield fs.promises.readdir(repositoryPath)) {
- yield io.rmRF(path.join(repositoryPath, file));
- }
- }
- });
-}
-exports.prepareExistingDirectory = prepareExistingDirectory;
-
-
-/***/ }),
-
-/***/ 453:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var once = __webpack_require__(969)
-var eos = __webpack_require__(3)
-var fs = __webpack_require__(747) // we only need fs to get the ReadStream and WriteStream prototypes
-
-var noop = function () {}
-var ancient = /^v?\.0/.test(process.version)
-
-var isFn = function (fn) {
- return typeof fn === 'function'
-}
-
-var isFS = function (stream) {
- if (!ancient) return false // newer node version do not need to care about fs is a special way
- if (!fs) return false // browser
- return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
-}
-
-var isRequest = function (stream) {
- return stream.setHeader && isFn(stream.abort)
-}
-
-var destroyer = function (stream, reading, writing, callback) {
- callback = once(callback)
-
- var closed = false
- stream.on('close', function () {
- closed = true
- })
-
- eos(stream, {readable: reading, writable: writing}, function (err) {
- if (err) return callback(err)
- closed = true
- callback()
- })
-
- var destroyed = false
- return function (err) {
- if (closed) return
- if (destroyed) return
- destroyed = true
-
- if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
- if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
-
- if (isFn(stream.destroy)) return stream.destroy()
-
- callback(err || new Error('stream was destroyed'))
- }
-}
-
-var call = function (fn) {
- fn()
-}
-
-var pipe = function (from, to) {
- return from.pipe(to)
-}
-
-var pump = function () {
- var streams = Array.prototype.slice.call(arguments)
- var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
-
- if (Array.isArray(streams[0])) streams = streams[0]
- if (streams.length < 2) throw new Error('pump requires two streams per minimum')
-
- var error
- var destroys = streams.map(function (stream, i) {
- var reading = i < streams.length - 1
- var writing = i > 0
- return destroyer(stream, reading, writing, function (err) {
- if (!error) error = err
- if (err) destroys.forEach(call)
- if (reading) return
- destroys.forEach(call)
- callback(error)
- })
- })
-
- return streams.reduce(pipe)
-}
-
-module.exports = pump
-
-
-/***/ }),
-
-/***/ 454:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var Stream = _interopDefault(__webpack_require__(413));
-var http = _interopDefault(__webpack_require__(605));
-var Url = _interopDefault(__webpack_require__(835));
-var https = _interopDefault(__webpack_require__(34));
-var zlib = _interopDefault(__webpack_require__(761));
-
-// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
-
-// fix for "Readable" isn't a named export issue
-const Readable = Stream.Readable;
-
-const BUFFER = Symbol('buffer');
-const TYPE = Symbol('type');
-
-class Blob {
- constructor() {
- this[TYPE] = '';
-
- const blobParts = arguments[0];
- const options = arguments[1];
-
- const buffers = [];
- let size = 0;
-
- if (blobParts) {
- const a = blobParts;
- const length = Number(a.length);
- for (let i = 0; i < length; i++) {
- const element = a[i];
- let buffer;
- if (element instanceof Buffer) {
- buffer = element;
- } else if (ArrayBuffer.isView(element)) {
- buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
- } else if (element instanceof ArrayBuffer) {
- buffer = Buffer.from(element);
- } else if (element instanceof Blob) {
- buffer = element[BUFFER];
- } else {
- buffer = Buffer.from(typeof element === 'string' ? element : String(element));
- }
- size += buffer.length;
- buffers.push(buffer);
- }
- }
-
- this[BUFFER] = Buffer.concat(buffers);
-
- let type = options && options.type !== undefined && String(options.type).toLowerCase();
- if (type && !/[^\u0020-\u007E]/.test(type)) {
- this[TYPE] = type;
- }
- }
- get size() {
- return this[BUFFER].length;
- }
- get type() {
- return this[TYPE];
- }
- text() {
- return Promise.resolve(this[BUFFER].toString());
- }
- arrayBuffer() {
- const buf = this[BUFFER];
- const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
- return Promise.resolve(ab);
- }
- stream() {
- const readable = new Readable();
- readable._read = function () {};
- readable.push(this[BUFFER]);
- readable.push(null);
- return readable;
- }
- toString() {
- return '[object Blob]';
- }
- slice() {
- const size = this.size;
-
- const start = arguments[0];
- const end = arguments[1];
- let relativeStart, relativeEnd;
- if (start === undefined) {
- relativeStart = 0;
- } else if (start < 0) {
- relativeStart = Math.max(size + start, 0);
- } else {
- relativeStart = Math.min(start, size);
- }
- if (end === undefined) {
- relativeEnd = size;
- } else if (end < 0) {
- relativeEnd = Math.max(size + end, 0);
- } else {
- relativeEnd = Math.min(end, size);
- }
- const span = Math.max(relativeEnd - relativeStart, 0);
-
- const buffer = this[BUFFER];
- const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
- const blob = new Blob([], { type: arguments[2] });
- blob[BUFFER] = slicedBuffer;
- return blob;
- }
-}
-
-Object.defineProperties(Blob.prototype, {
- size: { enumerable: true },
- type: { enumerable: true },
- slice: { enumerable: true }
-});
-
-Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
- value: 'Blob',
- writable: false,
- enumerable: false,
- configurable: true
-});
-
-/**
- * fetch-error.js
- *
- * FetchError interface for operational errors
- */
-
-/**
- * Create FetchError instance
- *
- * @param String message Error message for human
- * @param String type Error type for machine
- * @param String systemError For Node.js system error
- * @return FetchError
- */
-function FetchError(message, type, systemError) {
- Error.call(this, message);
-
- this.message = message;
- this.type = type;
-
- // when err.type is `system`, err.code contains system error code
- if (systemError) {
- this.code = this.errno = systemError.code;
- }
-
- // hide custom error implementation details from end-users
- Error.captureStackTrace(this, this.constructor);
-}
-
-FetchError.prototype = Object.create(Error.prototype);
-FetchError.prototype.constructor = FetchError;
-FetchError.prototype.name = 'FetchError';
-
-let convert;
-try {
- convert = __webpack_require__(18).convert;
-} catch (e) {}
-
-const INTERNALS = Symbol('Body internals');
-
-// fix an issue where "PassThrough" isn't a named export for node <10
-const PassThrough = Stream.PassThrough;
-
-/**
- * Body mixin
- *
- * Ref: https://fetch.spec.whatwg.org/#body
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-function Body(body) {
- var _this = this;
-
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
- _ref$size = _ref.size;
-
- let size = _ref$size === undefined ? 0 : _ref$size;
- var _ref$timeout = _ref.timeout;
- let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
-
- if (body == null) {
- // body is undefined or null
- body = null;
- } else if (isURLSearchParams(body)) {
- // body is a URLSearchParams
- body = Buffer.from(body.toString());
- } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
- // body is ArrayBuffer
- body = Buffer.from(body);
- } else if (ArrayBuffer.isView(body)) {
- // body is ArrayBufferView
- body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
- } else if (body instanceof Stream) ; else {
- // none of the above
- // coerce to string then buffer
- body = Buffer.from(String(body));
- }
- this[INTERNALS] = {
- body,
- disturbed: false,
- error: null
- };
- this.size = size;
- this.timeout = timeout;
-
- if (body instanceof Stream) {
- body.on('error', function (err) {
- const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
- _this[INTERNALS].error = error;
- });
- }
-}
-
-Body.prototype = {
- get body() {
- return this[INTERNALS].body;
- },
-
- get bodyUsed() {
- return this[INTERNALS].disturbed;
- },
-
- /**
- * Decode response as ArrayBuffer
- *
- * @return Promise
- */
- arrayBuffer() {
- return consumeBody.call(this).then(function (buf) {
- return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
- });
- },
-
- /**
- * Return raw response as Blob
- *
- * @return Promise
- */
- blob() {
- let ct = this.headers && this.headers.get('content-type') || '';
- return consumeBody.call(this).then(function (buf) {
- return Object.assign(
- // Prevent copying
- new Blob([], {
- type: ct.toLowerCase()
- }), {
- [BUFFER]: buf
- });
- });
- },
-
- /**
- * Decode response as json
- *
- * @return Promise
- */
- json() {
- var _this2 = this;
-
- return consumeBody.call(this).then(function (buffer) {
- try {
- return JSON.parse(buffer.toString());
- } catch (err) {
- return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
- }
- });
- },
-
- /**
- * Decode response as text
- *
- * @return Promise
- */
- text() {
- return consumeBody.call(this).then(function (buffer) {
- return buffer.toString();
- });
- },
-
- /**
- * Decode response as buffer (non-spec api)
- *
- * @return Promise
- */
- buffer() {
- return consumeBody.call(this);
- },
-
- /**
- * Decode response as text, while automatically detecting the encoding and
- * trying to decode to UTF-8 (non-spec api)
- *
- * @return Promise
- */
- textConverted() {
- var _this3 = this;
-
- return consumeBody.call(this).then(function (buffer) {
- return convertBody(buffer, _this3.headers);
- });
- }
-};
-
-// In browsers, all properties are enumerable.
-Object.defineProperties(Body.prototype, {
- body: { enumerable: true },
- bodyUsed: { enumerable: true },
- arrayBuffer: { enumerable: true },
- blob: { enumerable: true },
- json: { enumerable: true },
- text: { enumerable: true }
-});
-
-Body.mixIn = function (proto) {
- for (const name of Object.getOwnPropertyNames(Body.prototype)) {
- // istanbul ignore else: future proof
- if (!(name in proto)) {
- const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
- Object.defineProperty(proto, name, desc);
- }
- }
-};
-
-/**
- * Consume and convert an entire Body to a Buffer.
- *
- * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
- *
- * @return Promise
- */
-function consumeBody() {
- var _this4 = this;
-
- if (this[INTERNALS].disturbed) {
- return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
- }
-
- this[INTERNALS].disturbed = true;
-
- if (this[INTERNALS].error) {
- return Body.Promise.reject(this[INTERNALS].error);
- }
-
- let body = this.body;
-
- // body is null
- if (body === null) {
- return Body.Promise.resolve(Buffer.alloc(0));
- }
-
- // body is blob
- if (isBlob(body)) {
- body = body.stream();
- }
-
- // body is buffer
- if (Buffer.isBuffer(body)) {
- return Body.Promise.resolve(body);
- }
-
- // istanbul ignore if: should never happen
- if (!(body instanceof Stream)) {
- return Body.Promise.resolve(Buffer.alloc(0));
- }
-
- // body is stream
- // get ready to actually consume the body
- let accum = [];
- let accumBytes = 0;
- let abort = false;
-
- return new Body.Promise(function (resolve, reject) {
- let resTimeout;
-
- // allow timeout on slow response body
- if (_this4.timeout) {
- resTimeout = setTimeout(function () {
- abort = true;
- reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
- }, _this4.timeout);
- }
-
- // handle stream errors
- body.on('error', function (err) {
- if (err.name === 'AbortError') {
- // if the request was aborted, reject with this Error
- abort = true;
- reject(err);
- } else {
- // other errors, such as incorrect content-encoding
- reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
- }
- });
-
- body.on('data', function (chunk) {
- if (abort || chunk === null) {
- return;
- }
-
- if (_this4.size && accumBytes + chunk.length > _this4.size) {
- abort = true;
- reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
- return;
- }
-
- accumBytes += chunk.length;
- accum.push(chunk);
- });
-
- body.on('end', function () {
- if (abort) {
- return;
- }
-
- clearTimeout(resTimeout);
-
- try {
- resolve(Buffer.concat(accum, accumBytes));
- } catch (err) {
- // handle streams that have accumulated too much data (issue #414)
- reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
- }
- });
- });
-}
-
-/**
- * Detect buffer encoding and convert to target encoding
- * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
- *
- * @param Buffer buffer Incoming buffer
- * @param String encoding Target encoding
- * @return String
- */
-function convertBody(buffer, headers) {
- if (typeof convert !== 'function') {
- throw new Error('The package `encoding` must be installed to use the textConverted() function');
- }
-
- const ct = headers.get('content-type');
- let charset = 'utf-8';
- let res, str;
-
- // header
- if (ct) {
- res = /charset=([^;]*)/i.exec(ct);
- }
-
- // no charset in content type, peek at response body for at most 1024 bytes
- str = buffer.slice(0, 1024).toString();
-
- // html5
- if (!res && str) {
- res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;
-
- this[MAP] = Object.create(null);
-
- if (init instanceof Headers) {
- const rawHeaders = init.raw();
- const headerNames = Object.keys(rawHeaders);
-
- for (const headerName of headerNames) {
- for (const value of rawHeaders[headerName]) {
- this.append(headerName, value);
- }
- }
-
- return;
- }
-
- // We don't worry about converting prop to ByteString here as append()
- // will handle it.
- if (init == null) ; else if (typeof init === 'object') {
- const method = init[Symbol.iterator];
- if (method != null) {
- if (typeof method !== 'function') {
- throw new TypeError('Header pairs must be iterable');
- }
-
- // sequence>
- // Note: per spec we have to first exhaust the lists then process them
- const pairs = [];
- for (const pair of init) {
- if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
- throw new TypeError('Each header pair must be iterable');
- }
- pairs.push(Array.from(pair));
- }
-
- for (const pair of pairs) {
- if (pair.length !== 2) {
- throw new TypeError('Each header pair must be a name/value tuple');
- }
- this.append(pair[0], pair[1]);
- }
- } else {
- // record
- for (const key of Object.keys(init)) {
- const value = init[key];
- this.append(key, value);
- }
- }
- } else {
- throw new TypeError('Provided initializer must be an object');
- }
- }
-
- /**
- * Return combined header value given name
- *
- * @param String name Header name
- * @return Mixed
- */
- get(name) {
- name = `${name}`;
- validateName(name);
- const key = find(this[MAP], name);
- if (key === undefined) {
- return null;
- }
-
- return this[MAP][key].join(', ');
- }
-
- /**
- * Iterate over all headers
- *
- * @param Function callback Executed for each item with parameters (value, name, thisArg)
- * @param Boolean thisArg `this` context for callback function
- * @return Void
- */
- forEach(callback) {
- let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
-
- let pairs = getHeaders(this);
- let i = 0;
- while (i < pairs.length) {
- var _pairs$i = pairs[i];
- const name = _pairs$i[0],
- value = _pairs$i[1];
-
- callback.call(thisArg, value, name, this);
- pairs = getHeaders(this);
- i++;
- }
- }
-
- /**
- * Overwrite header values given name
- *
- * @param String name Header name
- * @param String value Header value
- * @return Void
- */
- set(name, value) {
- name = `${name}`;
- value = `${value}`;
- validateName(name);
- validateValue(value);
- const key = find(this[MAP], name);
- this[MAP][key !== undefined ? key : name] = [value];
- }
-
- /**
- * Append a value onto existing header
- *
- * @param String name Header name
- * @param String value Header value
- * @return Void
- */
- append(name, value) {
- name = `${name}`;
- value = `${value}`;
- validateName(name);
- validateValue(value);
- const key = find(this[MAP], name);
- if (key !== undefined) {
- this[MAP][key].push(value);
- } else {
- this[MAP][name] = [value];
- }
- }
-
- /**
- * Check for header name existence
- *
- * @param String name Header name
- * @return Boolean
- */
- has(name) {
- name = `${name}`;
- validateName(name);
- return find(this[MAP], name) !== undefined;
- }
-
- /**
- * Delete all header values given name
- *
- * @param String name Header name
- * @return Void
- */
- delete(name) {
- name = `${name}`;
- validateName(name);
- const key = find(this[MAP], name);
- if (key !== undefined) {
- delete this[MAP][key];
- }
- }
-
- /**
- * Return raw headers (non-spec api)
- *
- * @return Object
- */
- raw() {
- return this[MAP];
- }
-
- /**
- * Get an iterator on keys.
- *
- * @return Iterator
- */
- keys() {
- return createHeadersIterator(this, 'key');
- }
-
- /**
- * Get an iterator on values.
- *
- * @return Iterator
- */
- values() {
- return createHeadersIterator(this, 'value');
- }
-
- /**
- * Get an iterator on entries.
- *
- * This is the default iterator of the Headers object.
- *
- * @return Iterator
- */
- [Symbol.iterator]() {
- return createHeadersIterator(this, 'key+value');
- }
-}
-Headers.prototype.entries = Headers.prototype[Symbol.iterator];
-
-Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
- value: 'Headers',
- writable: false,
- enumerable: false,
- configurable: true
-});
-
-Object.defineProperties(Headers.prototype, {
- get: { enumerable: true },
- forEach: { enumerable: true },
- set: { enumerable: true },
- append: { enumerable: true },
- has: { enumerable: true },
- delete: { enumerable: true },
- keys: { enumerable: true },
- values: { enumerable: true },
- entries: { enumerable: true }
-});
-
-function getHeaders(headers) {
- let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
-
- const keys = Object.keys(headers[MAP]).sort();
- return keys.map(kind === 'key' ? function (k) {
- return k.toLowerCase();
- } : kind === 'value' ? function (k) {
- return headers[MAP][k].join(', ');
- } : function (k) {
- return [k.toLowerCase(), headers[MAP][k].join(', ')];
- });
-}
-
-const INTERNAL = Symbol('internal');
-
-function createHeadersIterator(target, kind) {
- const iterator = Object.create(HeadersIteratorPrototype);
- iterator[INTERNAL] = {
- target,
- kind,
- index: 0
- };
- return iterator;
-}
-
-const HeadersIteratorPrototype = Object.setPrototypeOf({
- next() {
- // istanbul ignore if
- if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
- throw new TypeError('Value of `this` is not a HeadersIterator');
- }
-
- var _INTERNAL = this[INTERNAL];
- const target = _INTERNAL.target,
- kind = _INTERNAL.kind,
- index = _INTERNAL.index;
-
- const values = getHeaders(target, kind);
- const len = values.length;
- if (index >= len) {
- return {
- value: undefined,
- done: true
- };
- }
-
- this[INTERNAL].index = index + 1;
-
- return {
- value: values[index],
- done: false
- };
- }
-}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
-
-Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
- value: 'HeadersIterator',
- writable: false,
- enumerable: false,
- configurable: true
-});
-
-/**
- * Export the Headers object in a form that Node.js can consume.
- *
- * @param Headers headers
- * @return Object
- */
-function exportNodeCompatibleHeaders(headers) {
- const obj = Object.assign({ __proto__: null }, headers[MAP]);
-
- // http.request() only supports string as Host header. This hack makes
- // specifying custom Host header possible.
- const hostHeaderKey = find(headers[MAP], 'Host');
- if (hostHeaderKey !== undefined) {
- obj[hostHeaderKey] = obj[hostHeaderKey][0];
- }
-
- return obj;
-}
-
-/**
- * Create a Headers object from an object of headers, ignoring those that do
- * not conform to HTTP grammar productions.
- *
- * @param Object obj Object of headers
- * @return Headers
- */
-function createHeadersLenient(obj) {
- const headers = new Headers();
- for (const name of Object.keys(obj)) {
- if (invalidTokenRegex.test(name)) {
- continue;
- }
- if (Array.isArray(obj[name])) {
- for (const val of obj[name]) {
- if (invalidHeaderCharRegex.test(val)) {
- continue;
- }
- if (headers[MAP][name] === undefined) {
- headers[MAP][name] = [val];
- } else {
- headers[MAP][name].push(val);
- }
- }
- } else if (!invalidHeaderCharRegex.test(obj[name])) {
- headers[MAP][name] = [obj[name]];
- }
- }
- return headers;
-}
-
-const INTERNALS$1 = Symbol('Response internals');
-
-// fix an issue where "STATUS_CODES" aren't a named export for node <10
-const STATUS_CODES = http.STATUS_CODES;
-
-/**
- * Response class
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-class Response {
- constructor() {
- let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
- let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- Body.call(this, body, opts);
-
- const status = opts.status || 200;
- const headers = new Headers(opts.headers);
-
- if (body != null && !headers.has('Content-Type')) {
- const contentType = extractContentType(body);
- if (contentType) {
- headers.append('Content-Type', contentType);
- }
- }
-
- this[INTERNALS$1] = {
- url: opts.url,
- status,
- statusText: opts.statusText || STATUS_CODES[status],
- headers,
- counter: opts.counter
- };
- }
-
- get url() {
- return this[INTERNALS$1].url || '';
- }
-
- get status() {
- return this[INTERNALS$1].status;
- }
-
- /**
- * Convenience property representing if the request ended normally
- */
- get ok() {
- return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
- }
-
- get redirected() {
- return this[INTERNALS$1].counter > 0;
- }
-
- get statusText() {
- return this[INTERNALS$1].statusText;
- }
-
- get headers() {
- return this[INTERNALS$1].headers;
- }
-
- /**
- * Clone this response
- *
- * @return Response
- */
- clone() {
- return new Response(clone(this), {
- url: this.url,
- status: this.status,
- statusText: this.statusText,
- headers: this.headers,
- ok: this.ok,
- redirected: this.redirected
- });
- }
-}
-
-Body.mixIn(Response.prototype);
-
-Object.defineProperties(Response.prototype, {
- url: { enumerable: true },
- status: { enumerable: true },
- ok: { enumerable: true },
- redirected: { enumerable: true },
- statusText: { enumerable: true },
- headers: { enumerable: true },
- clone: { enumerable: true }
-});
-
-Object.defineProperty(Response.prototype, Symbol.toStringTag, {
- value: 'Response',
- writable: false,
- enumerable: false,
- configurable: true
-});
-
-const INTERNALS$2 = Symbol('Request internals');
-
-// fix an issue where "format", "parse" aren't a named export for node <10
-const parse_url = Url.parse;
-const format_url = Url.format;
-
-const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
-
-/**
- * Check if a value is an instance of Request.
- *
- * @param Mixed input
- * @return Boolean
- */
-function isRequest(input) {
- return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
-}
-
-function isAbortSignal(signal) {
- const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
- return !!(proto && proto.constructor.name === 'AbortSignal');
-}
-
-/**
- * Request class
- *
- * @param Mixed input Url or Request instance
- * @param Object init Custom options
- * @return Void
- */
-class Request {
- constructor(input) {
- let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- let parsedURL;
-
- // normalize input
- if (!isRequest(input)) {
- if (input && input.href) {
- // in order to support Node.js' Url objects; though WHATWG's URL objects
- // will fall into this branch also (since their `toString()` will return
- // `href` property anyway)
- parsedURL = parse_url(input.href);
- } else {
- // coerce input to a string before attempting to parse
- parsedURL = parse_url(`${input}`);
- }
- input = {};
- } else {
- parsedURL = parse_url(input.url);
- }
-
- let method = init.method || input.method || 'GET';
- method = method.toUpperCase();
-
- if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
- throw new TypeError('Request with GET/HEAD method cannot have body');
- }
-
- let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
-
- Body.call(this, inputBody, {
- timeout: init.timeout || input.timeout || 0,
- size: init.size || input.size || 0
- });
-
- const headers = new Headers(init.headers || input.headers || {});
-
- if (inputBody != null && !headers.has('Content-Type')) {
- const contentType = extractContentType(inputBody);
- if (contentType) {
- headers.append('Content-Type', contentType);
- }
- }
-
- let signal = isRequest(input) ? input.signal : null;
- if ('signal' in init) signal = init.signal;
-
- if (signal != null && !isAbortSignal(signal)) {
- throw new TypeError('Expected signal to be an instanceof AbortSignal');
- }
-
- this[INTERNALS$2] = {
- method,
- redirect: init.redirect || input.redirect || 'follow',
- headers,
- parsedURL,
- signal
- };
-
- // node-fetch-only options
- this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
- this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
- this.counter = init.counter || input.counter || 0;
- this.agent = init.agent || input.agent;
- }
-
- get method() {
- return this[INTERNALS$2].method;
- }
-
- get url() {
- return format_url(this[INTERNALS$2].parsedURL);
- }
-
- get headers() {
- return this[INTERNALS$2].headers;
- }
-
- get redirect() {
- return this[INTERNALS$2].redirect;
- }
-
- get signal() {
- return this[INTERNALS$2].signal;
- }
-
- /**
- * Clone this request
- *
- * @return Request
- */
- clone() {
- return new Request(this);
- }
-}
-
-Body.mixIn(Request.prototype);
-
-Object.defineProperty(Request.prototype, Symbol.toStringTag, {
- value: 'Request',
- writable: false,
- enumerable: false,
- configurable: true
-});
-
-Object.defineProperties(Request.prototype, {
- method: { enumerable: true },
- url: { enumerable: true },
- headers: { enumerable: true },
- redirect: { enumerable: true },
- clone: { enumerable: true },
- signal: { enumerable: true }
-});
-
-/**
- * Convert a Request to Node.js http request options.
- *
- * @param Request A Request instance
- * @return Object The options object to be passed to http.request
- */
-function getNodeRequestOptions(request) {
- const parsedURL = request[INTERNALS$2].parsedURL;
- const headers = new Headers(request[INTERNALS$2].headers);
-
- // fetch step 1.3
- if (!headers.has('Accept')) {
- headers.set('Accept', '*/*');
- }
-
- // Basic fetch
- if (!parsedURL.protocol || !parsedURL.hostname) {
- throw new TypeError('Only absolute URLs are supported');
- }
-
- if (!/^https?:$/.test(parsedURL.protocol)) {
- throw new TypeError('Only HTTP(S) protocols are supported');
- }
-
- if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
- throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
- }
-
- // HTTP-network-or-cache fetch steps 2.4-2.7
- let contentLengthValue = null;
- if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
- contentLengthValue = '0';
- }
- if (request.body != null) {
- const totalBytes = getTotalBytes(request);
- if (typeof totalBytes === 'number') {
- contentLengthValue = String(totalBytes);
- }
- }
- if (contentLengthValue) {
- headers.set('Content-Length', contentLengthValue);
- }
-
- // HTTP-network-or-cache fetch step 2.11
- if (!headers.has('User-Agent')) {
- headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
- }
-
- // HTTP-network-or-cache fetch step 2.15
- if (request.compress && !headers.has('Accept-Encoding')) {
- headers.set('Accept-Encoding', 'gzip,deflate');
- }
-
- let agent = request.agent;
- if (typeof agent === 'function') {
- agent = agent(parsedURL);
- }
-
- if (!headers.has('Connection') && !agent) {
- headers.set('Connection', 'close');
- }
-
- // HTTP-network fetch step 4.2
- // chunked encoding is handled by Node.js
-
- return Object.assign({}, parsedURL, {
- method: request.method,
- headers: exportNodeCompatibleHeaders(headers),
- agent
- });
-}
-
-/**
- * abort-error.js
- *
- * AbortError interface for cancelled requests
- */
-
-/**
- * Create AbortError instance
- *
- * @param String message Error message for human
- * @return AbortError
- */
-function AbortError(message) {
- Error.call(this, message);
-
- this.type = 'aborted';
- this.message = message;
-
- // hide custom error implementation details from end-users
- Error.captureStackTrace(this, this.constructor);
-}
-
-AbortError.prototype = Object.create(Error.prototype);
-AbortError.prototype.constructor = AbortError;
-AbortError.prototype.name = 'AbortError';
-
-// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
-const PassThrough$1 = Stream.PassThrough;
-const resolve_url = Url.resolve;
-
-/**
- * Fetch function
- *
- * @param Mixed url Absolute url or Request instance
- * @param Object opts Fetch options
- * @return Promise
- */
-function fetch(url, opts) {
-
- // allow custom promise
- if (!fetch.Promise) {
- throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
- }
-
- Body.Promise = fetch.Promise;
-
- // wrap http.request into fetch
- return new fetch.Promise(function (resolve, reject) {
- // build request object
- const request = new Request(url, opts);
- const options = getNodeRequestOptions(request);
-
- const send = (options.protocol === 'https:' ? https : http).request;
- const signal = request.signal;
-
- let response = null;
-
- const abort = function abort() {
- let error = new AbortError('The user aborted a request.');
- reject(error);
- if (request.body && request.body instanceof Stream.Readable) {
- request.body.destroy(error);
- }
- if (!response || !response.body) return;
- response.body.emit('error', error);
- };
-
- if (signal && signal.aborted) {
- abort();
- return;
- }
-
- const abortAndFinalize = function abortAndFinalize() {
- abort();
- finalize();
- };
-
- // send request
- const req = send(options);
- let reqTimeout;
-
- if (signal) {
- signal.addEventListener('abort', abortAndFinalize);
- }
-
- function finalize() {
- req.abort();
- if (signal) signal.removeEventListener('abort', abortAndFinalize);
- clearTimeout(reqTimeout);
- }
-
- if (request.timeout) {
- req.once('socket', function (socket) {
- reqTimeout = setTimeout(function () {
- reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
- finalize();
- }, request.timeout);
- });
- }
-
- req.on('error', function (err) {
- reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
- finalize();
- });
-
- req.on('response', function (res) {
- clearTimeout(reqTimeout);
-
- const headers = createHeadersLenient(res.headers);
-
- // HTTP fetch step 5
- if (fetch.isRedirect(res.statusCode)) {
- // HTTP fetch step 5.2
- const location = headers.get('Location');
-
- // HTTP fetch step 5.3
- const locationURL = location === null ? null : resolve_url(request.url, location);
-
- // HTTP fetch step 5.5
- switch (request.redirect) {
- case 'error':
- reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'));
- finalize();
- return;
- case 'manual':
- // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
- if (locationURL !== null) {
- // handle corrupted header
- try {
- headers.set('Location', locationURL);
- } catch (err) {
- // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
- reject(err);
- }
- }
- break;
- case 'follow':
- // HTTP-redirect fetch step 2
- if (locationURL === null) {
- break;
- }
-
- // HTTP-redirect fetch step 5
- if (request.counter >= request.follow) {
- reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
- finalize();
- return;
- }
-
- // HTTP-redirect fetch step 6 (counter increment)
- // Create a new Request object.
- const requestOpts = {
- headers: new Headers(request.headers),
- follow: request.follow,
- counter: request.counter + 1,
- agent: request.agent,
- compress: request.compress,
- method: request.method,
- body: request.body,
- signal: request.signal,
- timeout: request.timeout
- };
-
- // HTTP-redirect fetch step 9
- if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
- reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
- finalize();
- return;
- }
-
- // HTTP-redirect fetch step 11
- if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
- requestOpts.method = 'GET';
- requestOpts.body = undefined;
- requestOpts.headers.delete('content-length');
- }
-
- // HTTP-redirect fetch step 15
- resolve(fetch(new Request(locationURL, requestOpts)));
- finalize();
- return;
- }
- }
-
- // prepare response
- res.once('end', function () {
- if (signal) signal.removeEventListener('abort', abortAndFinalize);
- });
- let body = res.pipe(new PassThrough$1());
-
- const response_options = {
- url: request.url,
- status: res.statusCode,
- statusText: res.statusMessage,
- headers: headers,
- size: request.size,
- timeout: request.timeout,
- counter: request.counter
- };
-
- // HTTP-network fetch step 12.1.1.3
- const codings = headers.get('Content-Encoding');
-
- // HTTP-network fetch step 12.1.1.4: handle content codings
-
- // in following scenarios we ignore compression support
- // 1. compression support is disabled
- // 2. HEAD request
- // 3. no Content-Encoding header
- // 4. no content response (204)
- // 5. content not modified response (304)
- if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
- response = new Response(body, response_options);
- resolve(response);
- return;
- }
-
- // For Node v6+
- // Be less strict when decoding compressed responses, since sometimes
- // servers send slightly invalid responses that are still accepted
- // by common browsers.
- // Always using Z_SYNC_FLUSH is what cURL does.
- const zlibOptions = {
- flush: zlib.Z_SYNC_FLUSH,
- finishFlush: zlib.Z_SYNC_FLUSH
- };
-
- // for gzip
- if (codings == 'gzip' || codings == 'x-gzip') {
- body = body.pipe(zlib.createGunzip(zlibOptions));
- response = new Response(body, response_options);
- resolve(response);
- return;
- }
-
- // for deflate
- if (codings == 'deflate' || codings == 'x-deflate') {
- // handle the infamous raw deflate response from old servers
- // a hack for old IIS and Apache servers
- const raw = res.pipe(new PassThrough$1());
- raw.once('data', function (chunk) {
- // see http://stackoverflow.com/questions/37519828
- if ((chunk[0] & 0x0F) === 0x08) {
- body = body.pipe(zlib.createInflate());
- } else {
- body = body.pipe(zlib.createInflateRaw());
- }
- response = new Response(body, response_options);
- resolve(response);
- });
- return;
- }
-
- // for br
- if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
- body = body.pipe(zlib.createBrotliDecompress());
- response = new Response(body, response_options);
- resolve(response);
- return;
- }
-
- // otherwise, use response as-is
- response = new Response(body, response_options);
- resolve(response);
- });
-
- writeToStream(req, request);
- });
-}
-/**
- * Redirect code matching
- *
- * @param Number code Status code
- * @return Boolean
- */
-fetch.isRedirect = function (code) {
- return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
-};
-
-// expose Promise
-fetch.Promise = global.Promise;
-
-module.exports = exports = fetch;
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.default = exports;
-exports.Headers = Headers;
-exports.Request = Request;
-exports.Response = Response;
-exports.FetchError = FetchError;
-
-
-/***/ }),
-
-/***/ 462:
-/***/ (function(module) {
-
-"use strict";
-
-
-// See http://www.robvanderwoude.com/escapechars.php
-const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
-
-function escapeCommand(arg) {
- // Escape meta chars
- arg = arg.replace(metaCharsRegExp, '^$1');
-
- return arg;
-}
-
-function escapeArgument(arg, doubleEscapeMetaChars) {
- // Convert to string
- arg = `${arg}`;
-
- // Algorithm below is based on https://qntm.org/cmd
-
- // Sequence of backslashes followed by a double quote:
- // double up all the backslashes and escape the double quote
- arg = arg.replace(/(\\*)"/g, '$1$1\\"');
-
- // Sequence of backslashes followed by the end of the string
- // (which will become a double quote later):
- // double up all the backslashes
- arg = arg.replace(/(\\*)$/, '$1$1');
-
- // All other backslashes occur literally
-
- // Quote the whole thing:
- arg = `"${arg}"`;
-
- // Escape meta chars
- arg = arg.replace(metaCharsRegExp, '^$1');
-
- // Double escape meta chars if necessary
- if (doubleEscapeMetaChars) {
- arg = arg.replace(metaCharsRegExp, '^$1');
- }
-
- return arg;
-}
-
-module.exports.command = escapeCommand;
-module.exports.argument = escapeArgument;
-
-
-/***/ }),
-
-/***/ 463:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var deprecation = __webpack_require__(692);
-var once = _interopDefault(__webpack_require__(969));
-
-const logOnce = once(deprecation => console.warn(deprecation));
-/**
- * Error with extra properties to help with debugging
- */
-
-class RequestError extends Error {
- constructor(message, statusCode, options) {
- super(message); // Maintains proper stack trace (only available on V8)
-
- /* istanbul ignore next */
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
-
- this.name = "HttpError";
- this.status = statusCode;
- Object.defineProperty(this, "code", {
- get() {
- logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
- return statusCode;
- }
-
- });
- this.headers = options.headers || {}; // redact request credentials without mutating original request options
-
- const requestCopy = Object.assign({}, options.request);
-
- if (options.request.headers.authorization) {
- requestCopy.headers = Object.assign({}, options.request.headers, {
- authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
- });
- }
-
- requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit
- // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
- .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended
- // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
- .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
- this.request = requestCopy;
- }
-
-}
-
-exports.RequestError = RequestError;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 464:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __importStar(__webpack_require__(357));
-const core = __importStar(__webpack_require__(470));
-const fs = __importStar(__webpack_require__(747));
-const github = __importStar(__webpack_require__(469));
-const io = __importStar(__webpack_require__(1));
-const path = __importStar(__webpack_require__(622));
-const retryHelper = __importStar(__webpack_require__(587));
-const toolCache = __importStar(__webpack_require__(533));
-const v4_1 = __importDefault(__webpack_require__(826));
-const IS_WINDOWS = process.platform === 'win32';
-function downloadRepository(authToken, owner, repo, ref, commit, repositoryPath) {
- return __awaiter(this, void 0, void 0, function* () {
- // Determine the default branch
- if (!ref && !commit) {
- core.info('Determining the default branch');
- ref = yield getDefaultBranch(authToken, owner, repo);
- }
- // Download the archive
- let archiveData = yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
- core.info('Downloading the archive');
- return yield downloadArchive(authToken, owner, repo, ref, commit);
- }));
- // Write archive to disk
- core.info('Writing archive to disk');
- const uniqueId = v4_1.default();
- const archivePath = path.join(repositoryPath, `${uniqueId}.tar.gz`);
- yield fs.promises.writeFile(archivePath, archiveData);
- archiveData = Buffer.from(''); // Free memory
- // Extract archive
- core.info('Extracting the archive');
- const extractPath = path.join(repositoryPath, uniqueId);
- yield io.mkdirP(extractPath);
- if (IS_WINDOWS) {
- yield toolCache.extractZip(archivePath, extractPath);
- }
- else {
- yield toolCache.extractTar(archivePath, extractPath);
- }
- io.rmRF(archivePath);
- // Determine the path of the repository content. The archive contains
- // a top-level folder and the repository content is inside.
- const archiveFileNames = yield fs.promises.readdir(extractPath);
- assert.ok(archiveFileNames.length == 1, 'Expected exactly one directory inside archive');
- const archiveVersion = archiveFileNames[0]; // The top-level folder name includes the short SHA
- core.info(`Resolved version ${archiveVersion}`);
- const tempRepositoryPath = path.join(extractPath, archiveVersion);
- // Move the files
- for (const fileName of yield fs.promises.readdir(tempRepositoryPath)) {
- const sourcePath = path.join(tempRepositoryPath, fileName);
- const targetPath = path.join(repositoryPath, fileName);
- if (IS_WINDOWS) {
- yield io.cp(sourcePath, targetPath, { recursive: true }); // Copy on Windows (Windows Defender may have a lock)
- }
- else {
- yield io.mv(sourcePath, targetPath);
- }
- }
- io.rmRF(extractPath);
- });
-}
-exports.downloadRepository = downloadRepository;
-/**
- * Looks up the default branch name
- */
-function getDefaultBranch(authToken, owner, repo) {
- return __awaiter(this, void 0, void 0, function* () {
- return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
- core.info('Retrieving the default branch name');
- const octokit = new github.GitHub(authToken);
- let result;
- try {
- // Get the default branch from the repo info
- const response = yield octokit.repos.get({ owner, repo });
- result = response.data.default_branch;
- assert.ok(result, 'default_branch cannot be empty');
- }
- catch (err) {
- // Handle .wiki repo
- if (err['status'] === 404 && repo.toUpperCase().endsWith('.WIKI')) {
- result = 'master';
- }
- // Otherwise error
- else {
- throw err;
- }
- }
- // Print the default branch
- core.info(`Default branch '${result}'`);
- // Prefix with 'refs/heads'
- if (!result.startsWith('refs/')) {
- result = `refs/heads/${result}`;
- }
- return result;
- }));
- });
-}
-exports.getDefaultBranch = getDefaultBranch;
-function downloadArchive(authToken, owner, repo, ref, commit) {
- return __awaiter(this, void 0, void 0, function* () {
- const octokit = new github.GitHub(authToken);
- const params = {
- owner: owner,
- repo: repo,
- archive_format: IS_WINDOWS ? 'zipball' : 'tarball',
- ref: commit || ref
- };
- const response = yield 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
- });
-}
-
-
-/***/ }),
-
-/***/ 469:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-// Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/master/src/github.ts
-const graphql_1 = __webpack_require__(898);
-const rest_1 = __webpack_require__(0);
-const Context = __importStar(__webpack_require__(262));
-const httpClient = __importStar(__webpack_require__(539));
-// We need this in order to extend Octokit
-rest_1.Octokit.prototype = new rest_1.Octokit();
-exports.context = new Context.Context();
-class GitHub extends rest_1.Octokit {
- constructor(token, opts) {
- super(GitHub.getOctokitOptions(GitHub.disambiguate(token, opts)));
- this.graphql = GitHub.getGraphQL(GitHub.disambiguate(token, opts));
- }
- /**
- * Disambiguates the constructor overload parameters
- */
- static disambiguate(token, opts) {
- return [
- typeof token === 'string' ? token : '',
- typeof token === 'object' ? token : opts || {}
- ];
- }
- static getOctokitOptions(args) {
- const token = args[0];
- const options = Object.assign({}, args[1]); // Shallow clone - don't mutate the object provided by the caller
- // Base URL - GHES or Dotcom
- options.baseUrl = options.baseUrl || this.getApiBaseUrl();
- // Auth
- const auth = GitHub.getAuthString(token, options);
- if (auth) {
- options.auth = auth;
- }
- // Proxy
- const agent = GitHub.getProxyAgent(options.baseUrl, options);
- if (agent) {
- // Shallow clone - don't mutate the object provided by the caller
- options.request = options.request ? Object.assign({}, options.request) : {};
- // Set the agent
- options.request.agent = agent;
- }
- return options;
- }
- static getGraphQL(args) {
- const defaults = {};
- defaults.baseUrl = this.getGraphQLBaseUrl();
- const token = args[0];
- const options = args[1];
- // Authorization
- const auth = this.getAuthString(token, options);
- if (auth) {
- defaults.headers = {
- authorization: auth
- };
- }
- // Proxy
- const agent = GitHub.getProxyAgent(defaults.baseUrl, options);
- if (agent) {
- defaults.request = { agent };
- }
- return graphql_1.graphql.defaults(defaults);
- }
- static getAuthString(token, options) {
- // Validate args
- if (!token && !options.auth) {
- throw new Error('Parameter token or opts.auth is required');
- }
- else if (token && options.auth) {
- throw new Error('Parameters token and opts.auth may not both be specified');
- }
- return typeof options.auth === 'string' ? options.auth : `token ${token}`;
- }
- static getProxyAgent(destinationUrl, options) {
- var _a;
- if (!((_a = options.request) === null || _a === void 0 ? void 0 : _a.agent)) {
- if (httpClient.getProxyUrl(destinationUrl)) {
- const hc = new httpClient.HttpClient();
- return hc.getAgent(destinationUrl);
- }
- }
- return undefined;
- }
- static getApiBaseUrl() {
- return process.env['GITHUB_API_URL'] || 'https://api.github.com';
- }
- static getGraphQLBaseUrl() {
- let url = process.env['GITHUB_GRAPHQL_URL'] || 'https://api.github.com/graphql';
- // Shouldn't be a trailing slash, but remove if so
- if (url.endsWith('/')) {
- url = url.substr(0, url.length - 1);
- }
- // Remove trailing "/graphql"
- if (url.toUpperCase().endsWith('/GRAPHQL')) {
- url = url.substr(0, url.length - '/graphql'.length);
- }
- return url;
- }
-}
-exports.GitHub = GitHub;
-//# sourceMappingURL=github.js.map
-
-/***/ }),
-
-/***/ 470:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const command_1 = __webpack_require__(431);
-const os = __webpack_require__(87);
-const path = __webpack_require__(622);
-/**
- * The code to exit an action
- */
-var ExitCode;
-(function (ExitCode) {
- /**
- * A code indicating that the action was successful
- */
- ExitCode[ExitCode["Success"] = 0] = "Success";
- /**
- * A code indicating that the action was a failure
- */
- ExitCode[ExitCode["Failure"] = 1] = "Failure";
-})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
-//-----------------------------------------------------------------------
-// Variables
-//-----------------------------------------------------------------------
-/**
- * Sets env variable for this action and future actions in the job
- * @param name the name of the variable to set
- * @param val the value of the variable
- */
-function exportVariable(name, val) {
- process.env[name] = val;
- command_1.issueCommand('set-env', { name }, val);
-}
-exports.exportVariable = exportVariable;
-/**
- * Registers a secret which will get masked from logs
- * @param secret value of the secret
- */
-function setSecret(secret) {
- command_1.issueCommand('add-mask', {}, secret);
-}
-exports.setSecret = setSecret;
-/**
- * Prepends inputPath to the PATH (for this action and future actions)
- * @param inputPath
- */
-function addPath(inputPath) {
- command_1.issueCommand('add-path', {}, inputPath);
- process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
-}
-exports.addPath = addPath;
-/**
- * Gets the value of an input. The value is also trimmed.
- *
- * @param name name of the input to get
- * @param options optional. See InputOptions.
- * @returns string
- */
-function getInput(name, options) {
- const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
- if (options && options.required && !val) {
- throw new Error(`Input required and not supplied: ${name}`);
- }
- return val.trim();
-}
-exports.getInput = getInput;
-/**
- * Sets the value of an output.
- *
- * @param name name of the output to set
- * @param value value to store
- */
-function setOutput(name, value) {
- command_1.issueCommand('set-output', { name }, value);
-}
-exports.setOutput = setOutput;
-//-----------------------------------------------------------------------
-// Results
-//-----------------------------------------------------------------------
-/**
- * Sets the action status to failed.
- * When the action exits it will be with an exit code of 1
- * @param message add error issue message
- */
-function setFailed(message) {
- process.exitCode = ExitCode.Failure;
- error(message);
-}
-exports.setFailed = setFailed;
-//-----------------------------------------------------------------------
-// Logging Commands
-//-----------------------------------------------------------------------
-/**
- * Writes debug message to user log
- * @param message debug message
- */
-function debug(message) {
- command_1.issueCommand('debug', {}, message);
-}
-exports.debug = debug;
-/**
- * Adds an error issue
- * @param message error issue message
- */
-function error(message) {
- command_1.issue('error', message);
-}
-exports.error = error;
-/**
- * Adds an warning issue
- * @param message warning issue message
- */
-function warning(message) {
- command_1.issue('warning', message);
-}
-exports.warning = warning;
-/**
- * Writes info to log with console.log.
- * @param message info message
- */
-function info(message) {
- process.stdout.write(message + os.EOL);
-}
-exports.info = info;
-/**
- * Begin an output group.
- *
- * Output until the next `groupEnd` will be foldable in this group
- *
- * @param name The name of the output group
- */
-function startGroup(name) {
- command_1.issue('group', name);
-}
-exports.startGroup = startGroup;
-/**
- * End an output group.
- */
-function endGroup() {
- command_1.issue('endgroup');
-}
-exports.endGroup = endGroup;
-/**
- * Wrap an asynchronous function call in a group.
- *
- * Returns the same type as the function itself.
- *
- * @param name The name of the group
- * @param fn The function to wrap in the group
- */
-function group(name, fn) {
- return __awaiter(this, void 0, void 0, function* () {
- startGroup(name);
- let result;
- try {
- result = yield fn();
- }
- finally {
- endGroup();
- }
- return result;
- });
-}
-exports.group = group;
-//# sourceMappingURL=core.js.map
-
-/***/ }),
-
-/***/ 471:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationBeforeRequest;
-
-const btoa = __webpack_require__(675);
-const uniq = __webpack_require__(126);
-
-function authenticationBeforeRequest(state, options) {
- if (!state.auth.type) {
- return;
- }
-
- if (state.auth.type === "basic") {
- const hash = btoa(`${state.auth.username}:${state.auth.password}`);
- options.headers.authorization = `Basic ${hash}`;
- return;
- }
-
- if (state.auth.type === "token") {
- options.headers.authorization = `token ${state.auth.token}`;
- return;
- }
-
- if (state.auth.type === "app") {
- options.headers.authorization = `Bearer ${state.auth.token}`;
- const acceptHeaders = options.headers.accept
- .split(",")
- .concat("application/vnd.github.machine-man-preview+json");
- options.headers.accept = uniq(acceptHeaders)
- .filter(Boolean)
- .join(",");
- return;
- }
-
- options.url += options.url.indexOf("?") === -1 ? "?" : "&";
-
- if (state.auth.token) {
- options.url += `access_token=${encodeURIComponent(state.auth.token)}`;
- return;
- }
-
- const key = encodeURIComponent(state.auth.key);
- const secret = encodeURIComponent(state.auth.secret);
- options.url += `client_id=${key}&client_secret=${secret}`;
-}
-
-
-/***/ }),
-
-/***/ 489:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-
-const path = __webpack_require__(622);
-const which = __webpack_require__(814);
-const pathKey = __webpack_require__(39)();
-
-function resolveCommandAttempt(parsed, withoutPathExt) {
- const cwd = process.cwd();
- const hasCustomCwd = parsed.options.cwd != null;
-
- // If a custom `cwd` was specified, we need to change the process cwd
- // because `which` will do stat calls but does not support a custom cwd
- if (hasCustomCwd) {
- try {
- process.chdir(parsed.options.cwd);
- } catch (err) {
- /* Empty */
- }
- }
-
- let resolved;
-
- try {
- resolved = which.sync(parsed.command, {
- path: (parsed.options.env || process.env)[pathKey],
- pathExt: withoutPathExt ? path.delimiter : undefined,
- });
- } catch (e) {
- /* Empty */
- } finally {
- process.chdir(cwd);
- }
-
- // If we successfully resolved, ensure that an absolute path is returned
- // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it
- if (resolved) {
- resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);
- }
-
- return resolved;
-}
-
-function resolveCommand(parsed) {
- return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
-}
-
-module.exports = resolveCommand;
-
-
-/***/ }),
-
-/***/ 497:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var deprecation = __webpack_require__(692);
-var once = _interopDefault(__webpack_require__(969));
-
-const logOnce = once(deprecation => console.warn(deprecation));
-/**
- * Error with extra properties to help with debugging
- */
-
-class RequestError extends Error {
- constructor(message, statusCode, options) {
- super(message); // Maintains proper stack trace (only available on V8)
-
- /* istanbul ignore next */
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
-
- this.name = "HttpError";
- this.status = statusCode;
- Object.defineProperty(this, "code", {
- get() {
- logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
- return statusCode;
- }
-
- });
- this.headers = options.headers || {}; // redact request credentials without mutating original request options
-
- const requestCopy = Object.assign({}, options.request);
-
- if (options.request.headers.authorization) {
- requestCopy.headers = Object.assign({}, options.request.headers, {
- authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
- });
- }
-
- requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit
- // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
- .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended
- // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
- .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
- this.request = requestCopy;
- }
-
-}
-
-exports.RequestError = RequestError;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 510:
-/***/ (function(module) {
-
-module.exports = addHook
-
-function addHook (state, kind, name, hook) {
- var orig = hook
- if (!state.registry[name]) {
- state.registry[name] = []
- }
-
- if (kind === 'before') {
- hook = function (method, options) {
- return Promise.resolve()
- .then(orig.bind(null, options))
- .then(method.bind(null, options))
- }
- }
-
- if (kind === 'after') {
- hook = function (method, options) {
- var result
- return Promise.resolve()
- .then(method.bind(null, options))
- .then(function (result_) {
- result = result_
- return orig(result, options)
- })
- .then(function () {
- return result
- })
- }
- }
-
- if (kind === 'error') {
- hook = function (method, options) {
- return Promise.resolve()
- .then(method.bind(null, options))
- .catch(function (error) {
- return orig(error, options)
- })
- }
- }
-
- state.registry[name].push({
- hook: hook,
- orig: orig
- })
-}
-
-
-/***/ }),
-
-/***/ 523:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var register = __webpack_require__(363)
-var addHook = __webpack_require__(510)
-var removeHook = __webpack_require__(763)
-
-// bind with array of arguments: https://stackoverflow.com/a/21792913
-var bind = Function.bind
-var bindable = bind.bind(bind)
-
-function bindApi (hook, state, name) {
- var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])
- hook.api = { remove: removeHookRef }
- hook.remove = removeHookRef
-
- ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
- var args = name ? [state, kind, name] : [state, kind]
- hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)
- })
-}
-
-function HookSingular () {
- var singularHookName = 'h'
- var singularHookState = {
- registry: {}
- }
- var singularHook = register.bind(null, singularHookState, singularHookName)
- bindApi(singularHook, singularHookState, singularHookName)
- return singularHook
-}
-
-function HookCollection () {
- var state = {
- registry: {}
- }
-
- var hook = register.bind(null, state)
- bindApi(hook, state)
-
- return hook
-}
-
-var collectionHookDeprecationMessageDisplayed = false
-function Hook () {
- if (!collectionHookDeprecationMessageDisplayed) {
- console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4')
- collectionHookDeprecationMessageDisplayed = true
- }
- return HookCollection()
-}
-
-Hook.Singular = HookSingular.bind()
-Hook.Collection = HookCollection.bind()
-
-module.exports = Hook
-// expose constructors as a named property for TypeScript
-module.exports.Hook = Hook
-module.exports.Singular = Hook.Singular
-module.exports.Collection = Hook.Collection
-
-
-/***/ }),
-
-/***/ 528:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-function escape(value) {
- return value.replace(/[^a-zA-Z0-9_]/g, x => {
- return `\\${x}`;
- });
-}
-exports.escape = escape;
-
-
-/***/ }),
-
-/***/ 529:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-const factory = __webpack_require__(47);
-
-module.exports = factory();
-
-
-/***/ }),
-
-/***/ 533:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __webpack_require__(470);
-const io = __webpack_require__(1);
-const fs = __webpack_require__(747);
-const os = __webpack_require__(87);
-const path = __webpack_require__(622);
-const httpm = __webpack_require__(874);
-const semver = __webpack_require__(656);
-const uuidV4 = __webpack_require__(826);
-const exec_1 = __webpack_require__(986);
-const assert_1 = __webpack_require__(357);
-class HTTPError extends Error {
- constructor(httpStatusCode) {
- super(`Unexpected HTTP response: ${httpStatusCode}`);
- this.httpStatusCode = httpStatusCode;
- Object.setPrototypeOf(this, new.target.prototype);
- }
-}
-exports.HTTPError = HTTPError;
-const IS_WINDOWS = process.platform === 'win32';
-const userAgent = 'actions/tool-cache';
-// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this)
-let tempDirectory = process.env['RUNNER_TEMP'] || '';
-let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || '';
-// If directories not found, place them in common temp locations
-if (!tempDirectory || !cacheRoot) {
- let baseLocation;
- if (IS_WINDOWS) {
- // On windows use the USERPROFILE env variable
- baseLocation = process.env['USERPROFILE'] || 'C:\\';
- }
- else {
- if (process.platform === 'darwin') {
- baseLocation = '/Users';
- }
- else {
- baseLocation = '/home';
- }
- }
- if (!tempDirectory) {
- tempDirectory = path.join(baseLocation, 'actions', 'temp');
- }
- if (!cacheRoot) {
- cacheRoot = path.join(baseLocation, 'actions', 'cache');
- }
-}
-/**
- * Download a tool from an url and stream it into a file
- *
- * @param url url of tool to download
- * @returns path to downloaded tool
- */
-function downloadTool(url) {
- return __awaiter(this, void 0, void 0, function* () {
- // Wrap in a promise so that we can resolve from within stream callbacks
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
- try {
- const http = new httpm.HttpClient(userAgent, [], {
- allowRetries: true,
- maxRetries: 3
- });
- const destPath = path.join(tempDirectory, uuidV4());
- yield io.mkdirP(tempDirectory);
- core.debug(`Downloading ${url}`);
- core.debug(`Downloading ${destPath}`);
- if (fs.existsSync(destPath)) {
- throw new Error(`Destination file path ${destPath} already exists`);
- }
- const response = yield http.get(url);
- if (response.message.statusCode !== 200) {
- const err = new HTTPError(response.message.statusCode);
- core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
- throw err;
- }
- const file = fs.createWriteStream(destPath);
- file.on('open', () => __awaiter(this, void 0, void 0, function* () {
- try {
- const stream = response.message.pipe(file);
- stream.on('close', () => {
- core.debug('download complete');
- resolve(destPath);
- });
- }
- catch (err) {
- core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
- reject(err);
- }
- }));
- file.on('error', err => {
- file.end();
- reject(err);
- });
- }
- catch (err) {
- reject(err);
- }
- }));
- });
-}
-exports.downloadTool = downloadTool;
-/**
- * Extract a .7z file
- *
- * @param file path to the .7z file
- * @param dest destination directory. Optional.
- * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
- * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
- * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
- * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
- * interface, it is smaller than the full command line interface, and it does support long paths. At the
- * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
- * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
- * to 7zr.exe can be pass to this function.
- * @returns path to the destination directory
- */
-function extract7z(file, dest, _7zPath) {
- return __awaiter(this, void 0, void 0, function* () {
- assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');
- assert_1.ok(file, 'parameter "file" is required');
- dest = dest || (yield _createExtractFolder(dest));
- const originalCwd = process.cwd();
- process.chdir(dest);
- if (_7zPath) {
- try {
- const args = [
- 'x',
- '-bb1',
- '-bd',
- '-sccUTF-8',
- file
- ];
- const options = {
- silent: true
- };
- yield exec_1.exec(`"${_7zPath}"`, args, options);
- }
- finally {
- process.chdir(originalCwd);
- }
- }
- else {
- const escapedScript = path
- .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')
- .replace(/'/g, "''")
- .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
- const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '');
- const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
- const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;
- const args = [
- '-NoLogo',
- '-Sta',
- '-NoProfile',
- '-NonInteractive',
- '-ExecutionPolicy',
- 'Unrestricted',
- '-Command',
- command
- ];
- const options = {
- silent: true
- };
- try {
- const powershellPath = yield io.which('powershell', true);
- yield exec_1.exec(`"${powershellPath}"`, args, options);
- }
- finally {
- process.chdir(originalCwd);
- }
- }
- return dest;
- });
-}
-exports.extract7z = extract7z;
-/**
- * Extract a tar
- *
- * @param file path to the tar
- * @param dest destination directory. Optional.
- * @param flags flags for the tar. Optional.
- * @returns path to the destination directory
- */
-function extractTar(file, dest, flags = 'xz') {
- return __awaiter(this, void 0, void 0, function* () {
- if (!file) {
- throw new Error("parameter 'file' is required");
- }
- dest = dest || (yield _createExtractFolder(dest));
- const tarPath = yield io.which('tar', true);
- yield exec_1.exec(`"${tarPath}"`, [flags, '-C', dest, '-f', file]);
- return dest;
- });
-}
-exports.extractTar = extractTar;
-/**
- * Extract a zip
- *
- * @param file path to the zip
- * @param dest destination directory. Optional.
- * @returns path to the destination directory
- */
-function extractZip(file, dest) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!file) {
- throw new Error("parameter 'file' is required");
- }
- dest = dest || (yield _createExtractFolder(dest));
- if (IS_WINDOWS) {
- yield extractZipWin(file, dest);
- }
- else {
- yield extractZipNix(file, dest);
- }
- return dest;
- });
-}
-exports.extractZip = extractZip;
-function extractZipWin(file, dest) {
- return __awaiter(this, void 0, void 0, function* () {
- // build the powershell command
- const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
- const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
- const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`;
- // run powershell
- const powershellPath = yield io.which('powershell');
- const args = [
- '-NoLogo',
- '-Sta',
- '-NoProfile',
- '-NonInteractive',
- '-ExecutionPolicy',
- 'Unrestricted',
- '-Command',
- command
- ];
- yield exec_1.exec(`"${powershellPath}"`, args);
- });
-}
-function extractZipNix(file, dest) {
- return __awaiter(this, void 0, void 0, function* () {
- const unzipPath = yield io.which('unzip');
- yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest });
- });
-}
-/**
- * Caches a directory and installs it into the tool cacheDir
- *
- * @param sourceDir the directory to cache into tools
- * @param tool tool name
- * @param version version of the tool. semver format
- * @param arch architecture of the tool. Optional. Defaults to machine architecture
- */
-function cacheDir(sourceDir, tool, version, arch) {
- return __awaiter(this, void 0, void 0, function* () {
- version = semver.clean(version) || version;
- arch = arch || os.arch();
- core.debug(`Caching tool ${tool} ${version} ${arch}`);
- core.debug(`source dir: ${sourceDir}`);
- if (!fs.statSync(sourceDir).isDirectory()) {
- throw new Error('sourceDir is not a directory');
- }
- // Create the tool dir
- const destPath = yield _createToolPath(tool, version, arch);
- // copy each child item. do not move. move can fail on Windows
- // due to anti-virus software having an open handle on a file.
- for (const itemName of fs.readdirSync(sourceDir)) {
- const s = path.join(sourceDir, itemName);
- yield io.cp(s, destPath, { recursive: true });
- }
- // write .complete
- _completeToolPath(tool, version, arch);
- return destPath;
- });
-}
-exports.cacheDir = cacheDir;
-/**
- * Caches a downloaded file (GUID) and installs it
- * into the tool cache with a given targetName
- *
- * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid.
- * @param targetFile the name of the file name in the tools directory
- * @param tool tool name
- * @param version version of the tool. semver format
- * @param arch architecture of the tool. Optional. Defaults to machine architecture
- */
-function cacheFile(sourceFile, targetFile, tool, version, arch) {
- return __awaiter(this, void 0, void 0, function* () {
- version = semver.clean(version) || version;
- arch = arch || os.arch();
- core.debug(`Caching tool ${tool} ${version} ${arch}`);
- core.debug(`source file: ${sourceFile}`);
- if (!fs.statSync(sourceFile).isFile()) {
- throw new Error('sourceFile is not a file');
- }
- // create the tool dir
- const destFolder = yield _createToolPath(tool, version, arch);
- // copy instead of move. move can fail on Windows due to
- // anti-virus software having an open handle on a file.
- const destPath = path.join(destFolder, targetFile);
- core.debug(`destination file ${destPath}`);
- yield io.cp(sourceFile, destPath);
- // write .complete
- _completeToolPath(tool, version, arch);
- return destFolder;
- });
-}
-exports.cacheFile = cacheFile;
-/**
- * Finds the path to a tool version in the local installed tool cache
- *
- * @param toolName name of the tool
- * @param versionSpec version of the tool
- * @param arch optional arch. defaults to arch of computer
- */
-function find(toolName, versionSpec, arch) {
- if (!toolName) {
- throw new Error('toolName parameter is required');
- }
- if (!versionSpec) {
- throw new Error('versionSpec parameter is required');
- }
- arch = arch || os.arch();
- // attempt to resolve an explicit version
- if (!_isExplicitVersion(versionSpec)) {
- const localVersions = findAllVersions(toolName, arch);
- const match = _evaluateVersions(localVersions, versionSpec);
- versionSpec = match;
- }
- // check for the explicit version in the cache
- let toolPath = '';
- if (versionSpec) {
- versionSpec = semver.clean(versionSpec) || '';
- const cachePath = path.join(cacheRoot, toolName, versionSpec, arch);
- core.debug(`checking cache: ${cachePath}`);
- if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {
- core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);
- toolPath = cachePath;
- }
- else {
- core.debug('not found');
- }
- }
- return toolPath;
-}
-exports.find = find;
-/**
- * Finds the paths to all versions of a tool that are installed in the local tool cache
- *
- * @param toolName name of the tool
- * @param arch optional arch. defaults to arch of computer
- */
-function findAllVersions(toolName, arch) {
- const versions = [];
- arch = arch || os.arch();
- const toolPath = path.join(cacheRoot, toolName);
- if (fs.existsSync(toolPath)) {
- const children = fs.readdirSync(toolPath);
- for (const child of children) {
- if (_isExplicitVersion(child)) {
- const fullPath = path.join(toolPath, child, arch || '');
- if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
- versions.push(child);
- }
- }
- }
- }
- return versions;
-}
-exports.findAllVersions = findAllVersions;
-function _createExtractFolder(dest) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!dest) {
- // create a temp dir
- dest = path.join(tempDirectory, uuidV4());
- }
- yield io.mkdirP(dest);
- return dest;
- });
-}
-function _createToolPath(tool, version, arch) {
- return __awaiter(this, void 0, void 0, function* () {
- const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || '');
- core.debug(`destination ${folderPath}`);
- const markerPath = `${folderPath}.complete`;
- yield io.rmRF(folderPath);
- yield io.rmRF(markerPath);
- yield io.mkdirP(folderPath);
- return folderPath;
- });
-}
-function _completeToolPath(tool, version, arch) {
- const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || '');
- const markerPath = `${folderPath}.complete`;
- fs.writeFileSync(markerPath, '');
- core.debug('finished caching tool');
-}
-function _isExplicitVersion(versionSpec) {
- const c = semver.clean(versionSpec) || '';
- core.debug(`isExplicit: ${c}`);
- const valid = semver.valid(c) != null;
- core.debug(`explicit? ${valid}`);
- return valid;
-}
-function _evaluateVersions(versions, versionSpec) {
- let version = '';
- core.debug(`evaluating ${versions.length} versions`);
- versions = versions.sort((a, b) => {
- if (semver.gt(a, b)) {
- return 1;
- }
- return -1;
- });
- for (let i = versions.length - 1; i >= 0; i--) {
- const potential = versions[i];
- const satisfied = semver.satisfies(potential, versionSpec);
- if (satisfied) {
- version = potential;
- break;
- }
- }
- if (version) {
- core.debug(`matched: ${version}`);
- }
- else {
- core.debug('match not found');
- }
- return version;
-}
-//# sourceMappingURL=tool-cache.js.map
-
-/***/ }),
-
-/***/ 536:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = hasFirstPage
-
-const deprecate = __webpack_require__(370)
-const getPageLinks = __webpack_require__(577)
-
-function hasFirstPage (link) {
- deprecate(`octokit.hasFirstPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
- return getPageLinks(link).first
-}
-
-
-/***/ }),
-
-/***/ 539:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const url = __webpack_require__(835);
-const http = __webpack_require__(605);
-const https = __webpack_require__(34);
-const pm = __webpack_require__(950);
-let tunnel;
-var HttpCodes;
-(function (HttpCodes) {
- HttpCodes[HttpCodes["OK"] = 200] = "OK";
- HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
- HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
- HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
- HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
- HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
- HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
- HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
- HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
- HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
- HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
- HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
- HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
- HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
- HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
- HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
- HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
- HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
- HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
- HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
- HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
- HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
- HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
- HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
- HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
- HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
- HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
-})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
-var Headers;
-(function (Headers) {
- Headers["Accept"] = "accept";
- Headers["ContentType"] = "content-type";
-})(Headers = exports.Headers || (exports.Headers = {}));
-var MediaTypes;
-(function (MediaTypes) {
- MediaTypes["ApplicationJson"] = "application/json";
-})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
-/**
- * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
- * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
- */
-function getProxyUrl(serverUrl) {
- let proxyUrl = pm.getProxyUrl(url.parse(serverUrl));
- return proxyUrl ? proxyUrl.href : '';
-}
-exports.getProxyUrl = getProxyUrl;
-const HttpRedirectCodes = [
- HttpCodes.MovedPermanently,
- HttpCodes.ResourceMoved,
- HttpCodes.SeeOther,
- HttpCodes.TemporaryRedirect,
- HttpCodes.PermanentRedirect
-];
-const HttpResponseRetryCodes = [
- HttpCodes.BadGateway,
- HttpCodes.ServiceUnavailable,
- HttpCodes.GatewayTimeout
-];
-const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
-const ExponentialBackoffCeiling = 10;
-const ExponentialBackoffTimeSlice = 5;
-class HttpClientResponse {
- constructor(message) {
- this.message = message;
- }
- readBody() {
- return new Promise(async (resolve, reject) => {
- let output = Buffer.alloc(0);
- this.message.on('data', (chunk) => {
- output = Buffer.concat([output, chunk]);
- });
- this.message.on('end', () => {
- resolve(output.toString());
- });
- });
- }
-}
-exports.HttpClientResponse = HttpClientResponse;
-function isHttps(requestUrl) {
- let parsedUrl = url.parse(requestUrl);
- return parsedUrl.protocol === 'https:';
-}
-exports.isHttps = isHttps;
-class HttpClient {
- constructor(userAgent, handlers, requestOptions) {
- this._ignoreSslError = false;
- this._allowRedirects = true;
- this._allowRedirectDowngrade = false;
- this._maxRedirects = 50;
- this._allowRetries = false;
- this._maxRetries = 1;
- this._keepAlive = false;
- this._disposed = false;
- this.userAgent = userAgent;
- this.handlers = handlers || [];
- this.requestOptions = requestOptions;
- if (requestOptions) {
- if (requestOptions.ignoreSslError != null) {
- this._ignoreSslError = requestOptions.ignoreSslError;
- }
- this._socketTimeout = requestOptions.socketTimeout;
- if (requestOptions.allowRedirects != null) {
- this._allowRedirects = requestOptions.allowRedirects;
- }
- if (requestOptions.allowRedirectDowngrade != null) {
- this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
- }
- if (requestOptions.maxRedirects != null) {
- this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
- }
- if (requestOptions.keepAlive != null) {
- this._keepAlive = requestOptions.keepAlive;
- }
- if (requestOptions.allowRetries != null) {
- this._allowRetries = requestOptions.allowRetries;
- }
- if (requestOptions.maxRetries != null) {
- this._maxRetries = requestOptions.maxRetries;
- }
- }
- }
- options(requestUrl, additionalHeaders) {
- return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
- }
- get(requestUrl, additionalHeaders) {
- return this.request('GET', requestUrl, null, additionalHeaders || {});
- }
- del(requestUrl, additionalHeaders) {
- return this.request('DELETE', requestUrl, null, additionalHeaders || {});
- }
- post(requestUrl, data, additionalHeaders) {
- return this.request('POST', requestUrl, data, additionalHeaders || {});
- }
- patch(requestUrl, data, additionalHeaders) {
- return this.request('PATCH', requestUrl, data, additionalHeaders || {});
- }
- put(requestUrl, data, additionalHeaders) {
- return this.request('PUT', requestUrl, data, additionalHeaders || {});
- }
- head(requestUrl, additionalHeaders) {
- return this.request('HEAD', requestUrl, null, additionalHeaders || {});
- }
- sendStream(verb, requestUrl, stream, additionalHeaders) {
- return this.request(verb, requestUrl, stream, additionalHeaders);
- }
- /**
- * Gets a typed object from an endpoint
- * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
- */
- async getJson(requestUrl, additionalHeaders = {}) {
- additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
- let res = await this.get(requestUrl, additionalHeaders);
- return this._processResponse(res, this.requestOptions);
- }
- async postJson(requestUrl, obj, additionalHeaders = {}) {
- let data = JSON.stringify(obj, null, 2);
- additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
- additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
- let res = await this.post(requestUrl, data, additionalHeaders);
- return this._processResponse(res, this.requestOptions);
- }
- async putJson(requestUrl, obj, additionalHeaders = {}) {
- let data = JSON.stringify(obj, null, 2);
- additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
- additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
- let res = await this.put(requestUrl, data, additionalHeaders);
- return this._processResponse(res, this.requestOptions);
- }
- async patchJson(requestUrl, obj, additionalHeaders = {}) {
- let data = JSON.stringify(obj, null, 2);
- additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
- additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
- let res = await this.patch(requestUrl, data, additionalHeaders);
- return this._processResponse(res, this.requestOptions);
- }
- /**
- * Makes a raw http request.
- * All other methods such as get, post, patch, and request ultimately call this.
- * Prefer get, del, post and patch
- */
- async request(verb, requestUrl, data, headers) {
- if (this._disposed) {
- throw new Error('Client has already been disposed.');
- }
- let parsedUrl = url.parse(requestUrl);
- let info = this._prepareRequest(verb, parsedUrl, headers);
- // Only perform retries on reads since writes may not be idempotent.
- let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1
- ? this._maxRetries + 1
- : 1;
- let numTries = 0;
- let response;
- while (numTries < maxTries) {
- response = await this.requestRaw(info, data);
- // Check if it's an authentication challenge
- if (response &&
- response.message &&
- response.message.statusCode === HttpCodes.Unauthorized) {
- let authenticationHandler;
- for (let i = 0; i < this.handlers.length; i++) {
- if (this.handlers[i].canHandleAuthentication(response)) {
- authenticationHandler = this.handlers[i];
- break;
- }
- }
- if (authenticationHandler) {
- return authenticationHandler.handleAuthentication(this, info, data);
- }
- else {
- // We have received an unauthorized response but have no handlers to handle it.
- // Let the response return to the caller.
- return response;
- }
- }
- let redirectsRemaining = this._maxRedirects;
- while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&
- this._allowRedirects &&
- redirectsRemaining > 0) {
- const redirectUrl = response.message.headers['location'];
- if (!redirectUrl) {
- // if there's no location to redirect to, we won't
- break;
- }
- let parsedRedirectUrl = url.parse(redirectUrl);
- if (parsedUrl.protocol == 'https:' &&
- parsedUrl.protocol != parsedRedirectUrl.protocol &&
- !this._allowRedirectDowngrade) {
- throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
- }
- // we need to finish reading the response before reassigning response
- // which will leak the open socket.
- await response.readBody();
- // strip authorization header if redirected to a different hostname
- if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
- for (let header in headers) {
- // header names are case insensitive
- if (header.toLowerCase() === 'authorization') {
- delete headers[header];
- }
- }
- }
- // let's make the request with the new redirectUrl
- info = this._prepareRequest(verb, parsedRedirectUrl, headers);
- response = await this.requestRaw(info, data);
- redirectsRemaining--;
- }
- if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
- // If not a retry code, return immediately instead of retrying
- return response;
- }
- numTries += 1;
- if (numTries < maxTries) {
- await response.readBody();
- await this._performExponentialBackoff(numTries);
- }
- }
- return response;
- }
- /**
- * Needs to be called if keepAlive is set to true in request options.
- */
- dispose() {
- if (this._agent) {
- this._agent.destroy();
- }
- this._disposed = true;
- }
- /**
- * Raw request.
- * @param info
- * @param data
- */
- requestRaw(info, data) {
- return new Promise((resolve, reject) => {
- let callbackForResult = function (err, res) {
- if (err) {
- reject(err);
- }
- resolve(res);
- };
- this.requestRawWithCallback(info, data, callbackForResult);
- });
- }
- /**
- * Raw request with callback.
- * @param info
- * @param data
- * @param onResult
- */
- requestRawWithCallback(info, data, onResult) {
- let socket;
- if (typeof data === 'string') {
- info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
- }
- let callbackCalled = false;
- let handleResult = (err, res) => {
- if (!callbackCalled) {
- callbackCalled = true;
- onResult(err, res);
- }
- };
- let req = info.httpModule.request(info.options, (msg) => {
- let res = new HttpClientResponse(msg);
- handleResult(null, res);
- });
- req.on('socket', sock => {
- socket = sock;
- });
- // If we ever get disconnected, we want the socket to timeout eventually
- req.setTimeout(this._socketTimeout || 3 * 60000, () => {
- if (socket) {
- socket.end();
- }
- handleResult(new Error('Request timeout: ' + info.options.path), null);
- });
- req.on('error', function (err) {
- // err has statusCode property
- // res should have headers
- handleResult(err, null);
- });
- if (data && typeof data === 'string') {
- req.write(data, 'utf8');
- }
- if (data && typeof data !== 'string') {
- data.on('close', function () {
- req.end();
- });
- data.pipe(req);
- }
- else {
- req.end();
- }
- }
- /**
- * Gets an http agent. This function is useful when you need an http agent that handles
- * routing through a proxy server - depending upon the url and proxy environment variables.
- * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
- */
- getAgent(serverUrl) {
- let parsedUrl = url.parse(serverUrl);
- return this._getAgent(parsedUrl);
- }
- _prepareRequest(method, requestUrl, headers) {
- const info = {};
- info.parsedUrl = requestUrl;
- const usingSsl = info.parsedUrl.protocol === 'https:';
- info.httpModule = usingSsl ? https : http;
- const defaultPort = usingSsl ? 443 : 80;
- info.options = {};
- info.options.host = info.parsedUrl.hostname;
- info.options.port = info.parsedUrl.port
- ? parseInt(info.parsedUrl.port)
- : defaultPort;
- info.options.path =
- (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
- info.options.method = method;
- info.options.headers = this._mergeHeaders(headers);
- if (this.userAgent != null) {
- info.options.headers['user-agent'] = this.userAgent;
- }
- info.options.agent = this._getAgent(info.parsedUrl);
- // gives handlers an opportunity to participate
- if (this.handlers) {
- this.handlers.forEach(handler => {
- handler.prepareRequest(info.options);
- });
- }
- return info;
- }
- _mergeHeaders(headers) {
- const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
- if (this.requestOptions && this.requestOptions.headers) {
- return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
- }
- return lowercaseKeys(headers || {});
- }
- _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
- const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
- let clientHeader;
- if (this.requestOptions && this.requestOptions.headers) {
- clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
- }
- return additionalHeaders[header] || clientHeader || _default;
- }
- _getAgent(parsedUrl) {
- let agent;
- let proxyUrl = pm.getProxyUrl(parsedUrl);
- let useProxy = proxyUrl && proxyUrl.hostname;
- if (this._keepAlive && useProxy) {
- agent = this._proxyAgent;
- }
- if (this._keepAlive && !useProxy) {
- agent = this._agent;
- }
- // if agent is already assigned use that agent.
- if (!!agent) {
- return agent;
- }
- const usingSsl = parsedUrl.protocol === 'https:';
- let maxSockets = 100;
- if (!!this.requestOptions) {
- maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
- }
- if (useProxy) {
- // If using proxy, need tunnel
- if (!tunnel) {
- tunnel = __webpack_require__(335);
- }
- const agentOptions = {
- maxSockets: maxSockets,
- keepAlive: this._keepAlive,
- proxy: {
- proxyAuth: proxyUrl.auth,
- host: proxyUrl.hostname,
- port: proxyUrl.port
- }
- };
- let tunnelAgent;
- const overHttps = proxyUrl.protocol === 'https:';
- if (usingSsl) {
- tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
- }
- else {
- tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
- }
- agent = tunnelAgent(agentOptions);
- this._proxyAgent = agent;
- }
- // if reusing agent across request and tunneling agent isn't assigned create a new agent
- if (this._keepAlive && !agent) {
- const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
- agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
- this._agent = agent;
- }
- // if not using private agent and tunnel agent isn't setup then use global agent
- if (!agent) {
- agent = usingSsl ? https.globalAgent : http.globalAgent;
- }
- if (usingSsl && this._ignoreSslError) {
- // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
- // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
- // we have to cast it to any and change it directly
- agent.options = Object.assign(agent.options || {}, {
- rejectUnauthorized: false
- });
- }
- return agent;
- }
- _performExponentialBackoff(retryNumber) {
- retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
- const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
- return new Promise(resolve => setTimeout(() => resolve(), ms));
- }
- static dateTimeDeserializer(key, value) {
- if (typeof value === 'string') {
- let a = new Date(value);
- if (!isNaN(a.valueOf())) {
- return a;
- }
- }
- return value;
- }
- async _processResponse(res, options) {
- return new Promise(async (resolve, reject) => {
- const statusCode = res.message.statusCode;
- const response = {
- statusCode: statusCode,
- result: null,
- headers: {}
- };
- // not found leads to null obj returned
- if (statusCode == HttpCodes.NotFound) {
- resolve(response);
- }
- let obj;
- let contents;
- // get the result from the body
- try {
- contents = await res.readBody();
- if (contents && contents.length > 0) {
- if (options && options.deserializeDates) {
- obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
- }
- else {
- obj = JSON.parse(contents);
- }
- response.result = obj;
- }
- response.headers = res.message.headers;
- }
- catch (err) {
- // Invalid resource (contents not json); leaving result obj null
- }
- // note that 3xx redirects are handled by the http layer.
- if (statusCode > 299) {
- let msg;
- // if exception/error in body, attempt to get better error
- if (obj && obj.message) {
- msg = obj.message;
- }
- else if (contents && contents.length > 0) {
- // it may be the case that the exception is in the body message as string
- msg = contents;
- }
- else {
- msg = 'Failed request: (' + statusCode + ')';
- }
- let err = new Error(msg);
- // attach statusCode and body obj (if available) to the error object
- err['statusCode'] = statusCode;
- if (response.result) {
- err['result'] = response.result;
- }
- reject(err);
- }
- else {
- resolve(response);
- }
- });
- }
-}
-exports.HttpClient = HttpClient;
-
-
-/***/ }),
-
-/***/ 550:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = getNextPage
-
-const getPage = __webpack_require__(265)
-
-function getNextPage (octokit, link, headers) {
- return getPage(octokit, link, 'next', headers)
-}
-
-
-/***/ }),
-
-/***/ 558:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = hasPreviousPage
-
-const deprecate = __webpack_require__(370)
-const getPageLinks = __webpack_require__(577)
-
-function hasPreviousPage (link) {
- deprecate(`octokit.hasPreviousPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
- return getPageLinks(link).prev
-}
-
-
-/***/ }),
-
-/***/ 559:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-class GitVersion {
- /**
- * Used for comparing the version of git and git-lfs against the minimum required version
- * @param version the version string, e.g. 1.2 or 1.2.3
- */
- constructor(version) {
- this.major = NaN;
- this.minor = NaN;
- this.patch = NaN;
- if (version) {
- const match = version.match(/^(\d+)\.(\d+)(\.(\d+))?$/);
- if (match) {
- this.major = Number(match[1]);
- this.minor = Number(match[2]);
- if (match[4]) {
- this.patch = Number(match[4]);
- }
- }
- }
- }
- /**
- * Compares the instance against a minimum required version
- * @param minimum Minimum version
- */
- checkMinimum(minimum) {
- if (!minimum.isValid()) {
- throw new Error('Arg minimum is not a valid version');
- }
- // Major is insufficient
- if (this.major < minimum.major) {
- return false;
- }
- // Major is equal
- if (this.major === minimum.major) {
- // Minor is insufficient
- if (this.minor < minimum.minor) {
- return false;
- }
- // Minor is equal
- if (this.minor === minimum.minor) {
- // Patch is insufficient
- if (this.patch && this.patch < (minimum.patch || 0)) {
- return false;
- }
- }
- }
- return true;
- }
- /**
- * Indicates whether the instance was constructed from a valid version string
- */
- isValid() {
- return !isNaN(this.major);
- }
- /**
- * Returns the version as a string, e.g. 1.2 or 1.2.3
- */
- toString() {
- let result = '';
- if (this.isValid()) {
- result = `${this.major}.${this.minor}`;
- if (!isNaN(this.patch)) {
- result += `.${this.patch}`;
- }
- }
- return result;
- }
-}
-exports.GitVersion = GitVersion;
-
-
-/***/ }),
-
-/***/ 562:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var osName = _interopDefault(__webpack_require__(2));
-
-function getUserAgent() {
- try {
- return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
- } catch (error) {
- if (/wmic os get Caption/.test(error.message)) {
- return "Windows ";
- }
-
- return "";
- }
-}
-
-exports.getUserAgent = getUserAgent;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 563:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = getPreviousPage
-
-const getPage = __webpack_require__(265)
-
-function getPreviousPage (octokit, link, headers) {
- return getPage(octokit, link, 'prev', headers)
-}
-
-
-/***/ }),
-
-/***/ 568:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-
-const path = __webpack_require__(622);
-const niceTry = __webpack_require__(948);
-const resolveCommand = __webpack_require__(489);
-const escape = __webpack_require__(462);
-const readShebang = __webpack_require__(389);
-const semver = __webpack_require__(280);
-
-const isWin = process.platform === 'win32';
-const isExecutableRegExp = /\.(?:com|exe)$/i;
-const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
-
-// `options.shell` is supported in Node ^4.8.0, ^5.7.0 and >= 6.0.0
-const supportsShellOption = niceTry(() => semver.satisfies(process.version, '^4.8.0 || ^5.7.0 || >= 6.0.0', true)) || false;
-
-function detectShebang(parsed) {
- parsed.file = resolveCommand(parsed);
-
- const shebang = parsed.file && readShebang(parsed.file);
-
- if (shebang) {
- parsed.args.unshift(parsed.file);
- parsed.command = shebang;
-
- return resolveCommand(parsed);
- }
-
- return parsed.file;
-}
-
-function parseNonShell(parsed) {
- if (!isWin) {
- return parsed;
- }
-
- // Detect & add support for shebangs
- const commandFile = detectShebang(parsed);
-
- // We don't need a shell if the command filename is an executable
- const needsShell = !isExecutableRegExp.test(commandFile);
-
- // If a shell is required, use cmd.exe and take care of escaping everything correctly
- // Note that `forceShell` is an hidden option used only in tests
- if (parsed.options.forceShell || needsShell) {
- // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`
- // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument
- // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,
- // we need to double escape them
- const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
-
- // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar)
- // This is necessary otherwise it will always fail with ENOENT in those cases
- parsed.command = path.normalize(parsed.command);
-
- // Escape command & arguments
- parsed.command = escape.command(parsed.command);
- parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
-
- const shellCommand = [parsed.command].concat(parsed.args).join(' ');
-
- parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
- parsed.command = process.env.comspec || 'cmd.exe';
- parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
- }
-
- return parsed;
-}
-
-function parseShell(parsed) {
- // If node supports the shell option, there's no need to mimic its behavior
- if (supportsShellOption) {
- return parsed;
- }
-
- // Mimic node shell option
- // See https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
- const shellCommand = [parsed.command].concat(parsed.args).join(' ');
-
- if (isWin) {
- parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
- parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
- parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
- } else {
- if (typeof parsed.options.shell === 'string') {
- parsed.command = parsed.options.shell;
- } else if (process.platform === 'android') {
- parsed.command = '/system/bin/sh';
- } else {
- parsed.command = '/bin/sh';
- }
-
- parsed.args = ['-c', shellCommand];
- }
-
- return parsed;
-}
-
-function parse(command, args, options) {
- // Normalize arguments, similar to nodejs
- if (args && !Array.isArray(args)) {
- options = args;
- args = null;
- }
-
- args = args ? args.slice(0) : []; // Clone array to avoid changing the original
- options = Object.assign({}, options); // Clone object to avoid changing the original
-
- // Build our parsed object
- const parsed = {
- command,
- args,
- options,
- file: undefined,
- original: {
- command,
- args,
- },
- };
-
- // Delegate further parsing to shell or non-shell
- return options.shell ? parseShell(parsed) : parseNonShell(parsed);
-}
-
-module.exports = parse;
-
-
-/***/ }),
-
-/***/ 577:
-/***/ (function(module) {
-
-module.exports = getPageLinks
-
-function getPageLinks (link) {
- link = link.link || link.headers.link || ''
-
- const links = {}
-
- // link format:
- // '; rel="next", ; rel="last"'
- link.replace(/<([^>]*)>;\s*rel="([\w]*)"/g, (m, uri, type) => {
- links[type] = uri
- })
-
- return links
-}
-
-
-/***/ }),
-
-/***/ 587:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __importStar(__webpack_require__(470));
-const defaultMaxAttempts = 3;
-const defaultMinSeconds = 10;
-const defaultMaxSeconds = 20;
-class RetryHelper {
- constructor(maxAttempts = defaultMaxAttempts, minSeconds = defaultMinSeconds, maxSeconds = defaultMaxSeconds) {
- this.maxAttempts = maxAttempts;
- this.minSeconds = Math.floor(minSeconds);
- this.maxSeconds = Math.floor(maxSeconds);
- if (this.minSeconds > this.maxSeconds) {
- throw new Error('min seconds should be less than or equal to max seconds');
- }
- }
- execute(action) {
- return __awaiter(this, void 0, void 0, function* () {
- let attempt = 1;
- while (attempt < this.maxAttempts) {
- // Try
- try {
- return yield action();
- }
- catch (err) {
- core.info(err.message);
- }
- // Sleep
- const seconds = this.getSleepAmount();
- core.info(`Waiting ${seconds} seconds before trying again`);
- yield this.sleep(seconds);
- attempt++;
- }
- // Last attempt
- return yield action();
- });
- }
- getSleepAmount() {
- return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +
- this.minSeconds);
- }
- sleep(seconds) {
- return __awaiter(this, void 0, void 0, function* () {
- return new Promise(resolve => setTimeout(resolve, seconds * 1000));
- });
- }
-}
-exports.RetryHelper = RetryHelper;
-function execute(action) {
- return __awaiter(this, void 0, void 0, function* () {
- const retryHelper = new RetryHelper();
- return yield retryHelper.execute(action);
- });
-}
-exports.execute = execute;
-
-
-/***/ }),
-
-/***/ 605:
-/***/ (function(module) {
-
-module.exports = require("http");
-
-/***/ }),
-
-/***/ 614:
-/***/ (function(module) {
-
-module.exports = require("events");
-
-/***/ }),
-
-/***/ 618:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = __importStar(__webpack_require__(747));
-function directoryExistsSync(path, required) {
- if (!path) {
- throw new Error("Arg 'path' must not be empty");
- }
- let stats;
- try {
- stats = fs.statSync(path);
- }
- catch (error) {
- if (error.code === 'ENOENT') {
- if (!required) {
- return false;
- }
- throw new Error(`Directory '${path}' does not exist`);
- }
- throw new Error(`Encountered an error when checking whether path '${path}' exists: ${error.message}`);
- }
- if (stats.isDirectory()) {
- return true;
- }
- else if (!required) {
- return false;
- }
- throw new Error(`Directory '${path}' does not exist`);
-}
-exports.directoryExistsSync = directoryExistsSync;
-function existsSync(path) {
- if (!path) {
- throw new Error("Arg 'path' must not be empty");
- }
- try {
- fs.statSync(path);
- }
- catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
- throw new Error(`Encountered an error when checking whether path '${path}' exists: ${error.message}`);
- }
- return true;
-}
-exports.existsSync = existsSync;
-function fileExistsSync(path) {
- if (!path) {
- throw new Error("Arg 'path' must not be empty");
- }
- let stats;
- try {
- stats = fs.statSync(path);
- }
- catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
- throw new Error(`Encountered an error when checking whether path '${path}' exists: ${error.message}`);
- }
- if (!stats.isDirectory()) {
- return true;
- }
- return false;
-}
-exports.fileExistsSync = fileExistsSync;
-
-
-/***/ }),
-
-/***/ 621:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const path = __webpack_require__(622);
-const pathKey = __webpack_require__(39);
-
-module.exports = opts => {
- opts = Object.assign({
- cwd: process.cwd(),
- path: process.env[pathKey()]
- }, opts);
-
- let prev;
- let pth = path.resolve(opts.cwd);
- const ret = [];
-
- while (prev !== pth) {
- ret.push(path.join(pth, 'node_modules/.bin'));
- prev = pth;
- pth = path.resolve(pth, '..');
- }
-
- // ensure the running `node` binary is used
- ret.push(path.dirname(process.execPath));
-
- return ret.concat(opts.path).join(path.delimiter);
-};
-
-module.exports.env = opts => {
- opts = Object.assign({
- env: process.env
- }, opts);
-
- const env = Object.assign({}, opts.env);
- const path = pathKey({env});
-
- opts.path = env[path];
- env[path] = module.exports(opts);
-
- return env;
-};
-
-
-/***/ }),
-
-/***/ 622:
-/***/ (function(module) {
-
-module.exports = require("path");
-
-/***/ }),
-
-/***/ 631:
-/***/ (function(module) {
-
-module.exports = require("net");
-
-/***/ }),
-
-/***/ 649:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = getLastPage
-
-const getPage = __webpack_require__(265)
-
-function getLastPage (octokit, link, headers) {
- return getPage(octokit, link, 'last', headers)
-}
-
-
-/***/ }),
-
-/***/ 654:
-/***/ (function(module) {
-
-// This is not the set of all possible signals.
-//
-// It IS, however, the set of all signals that trigger
-// an exit on either Linux or BSD systems. Linux is a
-// superset of the signal names supported on BSD, and
-// the unknown signals just fail to register, so we can
-// catch that easily enough.
-//
-// Don't bother with SIGKILL. It's uncatchable, which
-// means that we can't fire any callbacks anyway.
-//
-// If a user does happen to register a handler on a non-
-// fatal signal like SIGWINCH or something, and then
-// exit, it'll end up firing `process.emit('exit')`, so
-// the handler will be fired anyway.
-//
-// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
-// artificially, inherently leave the process in a
-// state from which it is not safe to try and enter JS
-// listeners.
-module.exports = [
- 'SIGABRT',
- 'SIGALRM',
- 'SIGHUP',
- 'SIGINT',
- 'SIGTERM'
-]
-
-if (process.platform !== 'win32') {
- module.exports.push(
- 'SIGVTALRM',
- 'SIGXCPU',
- 'SIGXFSZ',
- 'SIGUSR2',
- 'SIGTRAP',
- 'SIGSYS',
- 'SIGQUIT',
- 'SIGIOT'
- // should detect profiler and enable/disable accordingly.
- // see #21
- // 'SIGPROF'
- )
-}
-
-if (process.platform === 'linux') {
- module.exports.push(
- 'SIGIO',
- 'SIGPOLL',
- 'SIGPWR',
- 'SIGSTKFLT',
- 'SIGUNUSED'
- )
-}
-
-
-/***/ }),
-
-/***/ 656:
-/***/ (function(module, exports) {
-
-exports = module.exports = SemVer
-
-var debug
-/* istanbul ignore next */
-if (typeof process === 'object' &&
- process.env &&
- process.env.NODE_DEBUG &&
- /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
- debug = function () {
- var args = Array.prototype.slice.call(arguments, 0)
- args.unshift('SEMVER')
- console.log.apply(console, args)
- }
-} else {
- debug = function () {}
-}
-
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0'
-
-var MAX_LENGTH = 256
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
- /* istanbul ignore next */ 9007199254740991
-
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
-
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var t = exports.tokens = {}
-var R = 0
-
-function tok (n) {
- t[n] = R++
-}
-
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
-
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-
-tok('NUMERICIDENTIFIER')
-src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-tok('NUMERICIDENTIFIERLOOSE')
-src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
-
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
-
-tok('NONNUMERICIDENTIFIER')
-src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-tok('MAINVERSION')
-src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIER] + ')'
-
-tok('MAINVERSIONLOOSE')
-src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-tok('PRERELEASEIDENTIFIER')
-src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
- '|' + src[t.NONNUMERICIDENTIFIER] + ')'
-
-tok('PRERELEASEIDENTIFIERLOOSE')
-src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
- '|' + src[t.NONNUMERICIDENTIFIER] + ')'
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-tok('PRERELEASE')
-src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
-
-tok('PRERELEASELOOSE')
-src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-tok('BUILDIDENTIFIER')
-src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-tok('BUILD')
-src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
- '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
-
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
-
-tok('FULL')
-tok('FULLPLAIN')
-src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
- src[t.PRERELEASE] + '?' +
- src[t.BUILD] + '?'
-
-src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
-
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-tok('LOOSEPLAIN')
-src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
- src[t.PRERELEASELOOSE] + '?' +
- src[t.BUILD] + '?'
-
-tok('LOOSE')
-src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
-
-tok('GTLT')
-src[t.GTLT] = '((?:<|>)?=?)'
-
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-tok('XRANGEIDENTIFIERLOOSE')
-src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-tok('XRANGEIDENTIFIER')
-src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
-
-tok('XRANGEPLAIN')
-src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:' + src[t.PRERELEASE] + ')?' +
- src[t.BUILD] + '?' +
- ')?)?'
-
-tok('XRANGEPLAINLOOSE')
-src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[t.PRERELEASELOOSE] + ')?' +
- src[t.BUILD] + '?' +
- ')?)?'
-
-tok('XRANGE')
-src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
-tok('XRANGELOOSE')
-src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
-
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-tok('COERCE')
-src[t.COERCE] = '(^|[^\\d])' +
- '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:$|[^\\d])'
-tok('COERCERTL')
-re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-tok('LONETILDE')
-src[t.LONETILDE] = '(?:~>?)'
-
-tok('TILDETRIM')
-src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
-re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
-
-tok('TILDE')
-src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
-tok('TILDELOOSE')
-src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-tok('LONECARET')
-src[t.LONECARET] = '(?:\\^)'
-
-tok('CARETTRIM')
-src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
-re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
-
-tok('CARET')
-src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
-tok('CARETLOOSE')
-src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-tok('COMPARATORLOOSE')
-src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
-tok('COMPARATOR')
-src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-tok('COMPARATORTRIM')
-src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
- '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
-
-// this one has to use the /g flag
-re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-tok('HYPHENRANGE')
-src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[t.XRANGEPLAIN] + ')' +
- '\\s*$'
-
-tok('HYPHENRANGELOOSE')
-src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[t.XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
-
-// Star ranges basically just allow anything at all.
-tok('STAR')
-src[t.STAR] = '(<|>)?=?\\s*\\*'
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- debug(i, src[i])
- if (!re[i]) {
- re[i] = new RegExp(src[i])
- }
-}
-
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- if (version.length > MAX_LENGTH) {
- return null
- }
-
- var r = options.loose ? re[t.LOOSE] : re[t.FULL]
- if (!r.test(version)) {
- return null
- }
-
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
- }
-}
-
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
-}
-
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
-}
-
-exports.SemVer = SemVer
-
-function SemVer (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
- if (version instanceof SemVer) {
- if (version.loose === options.loose) {
- return version
- } else {
- version = version.version
- }
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
-
- if (!(this instanceof SemVer)) {
- return new SemVer(version, options)
- }
-
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
-
- var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
-
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- this.raw = version
-
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
-
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
-
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
-
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
- }
-
- // numberify any prerelease numeric ids
- if (!m[4]) {
- this.prerelease = []
- } else {
- this.prerelease = m[4].split('.').map(function (id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num
- }
- }
- return id
- })
- }
-
- this.build = m[5] ? m[5].split('.') : []
- this.format()
-}
-
-SemVer.prototype.format = function () {
- this.version = this.major + '.' + this.minor + '.' + this.patch
- if (this.prerelease.length) {
- this.version += '-' + this.prerelease.join('.')
- }
- return this.version
-}
-
-SemVer.prototype.toString = function () {
- return this.version
-}
-
-SemVer.prototype.compare = function (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return this.compareMain(other) || this.comparePre(other)
-}
-
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
-}
-
-SemVer.prototype.comparePre = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length) {
- return -1
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0
- }
-
- var i = 0
- do {
- var a = this.prerelease[i]
- var b = other.prerelease[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
-}
-
-SemVer.prototype.compareBuild = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- var i = 0
- do {
- var a = this.build[i]
- var b = other.build[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
-}
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function (release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier)
- this.inc('pre', identifier)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier)
- }
- this.inc('pre', identifier)
- break
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0) {
- this.prerelease = [0]
- } else {
- var i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- this.prerelease.push(0)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = [identifier, 0]
- }
- } else {
- this.prerelease = [identifier, 0]
- }
- }
- break
-
- default:
- throw new Error('invalid increment argument: ' + release)
- }
- this.format()
- this.raw = this.version
- return this
-}
-
-exports.inc = inc
-function inc (version, release, loose, identifier) {
- if (typeof (loose) === 'string') {
- identifier = loose
- loose = undefined
- }
-
- try {
- return new SemVer(version, loose).inc(release, identifier).version
- } catch (er) {
- return null
- }
-}
-
-exports.diff = diff
-function diff (version1, version2) {
- if (eq(version1, version2)) {
- return null
- } else {
- var v1 = parse(version1)
- var v2 = parse(version2)
- var prefix = ''
- if (v1.prerelease.length || v2.prerelease.length) {
- prefix = 'pre'
- var defaultResult = 'prerelease'
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return prefix + key
- }
- }
- }
- return defaultResult // may be undefined
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers
-
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
-
- if (anum && bnum) {
- a = +a
- b = +b
- }
-
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
-}
-
-exports.rcompareIdentifiers = rcompareIdentifiers
-function rcompareIdentifiers (a, b) {
- return compareIdentifiers(b, a)
-}
-
-exports.major = major
-function major (a, loose) {
- return new SemVer(a, loose).major
-}
-
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
-}
-
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
-
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
-}
-
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
-
-exports.compareBuild = compareBuild
-function compareBuild (a, b, loose) {
- var versionA = new SemVer(a, loose)
- var versionB = new SemVer(b, loose)
- return versionA.compare(versionB) || versionA.compareBuild(versionB)
-}
-
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
-
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compareBuild(a, b, loose)
- })
-}
-
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compareBuild(b, a, loose)
- })
-}
-
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
-}
-
-exports.lt = lt
-function lt (a, b, loose) {
- return compare(a, b, loose) < 0
-}
-
-exports.eq = eq
-function eq (a, b, loose) {
- return compare(a, b, loose) === 0
-}
-
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
-
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
-
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
-}
-
-exports.cmp = cmp
-function cmp (a, op, b, loose) {
- switch (op) {
- case '===':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a === b
-
- case '!==':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a !== b
-
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
-
- case '!=':
- return neq(a, b, loose)
-
- case '>':
- return gt(a, b, loose)
-
- case '>=':
- return gte(a, b, loose)
-
- case '<':
- return lt(a, b, loose)
-
- case '<=':
- return lte(a, b, loose)
-
- default:
- throw new TypeError('Invalid operator: ' + op)
- }
-}
-
-exports.Comparator = Comparator
-function Comparator (comp, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
- } else {
- comp = comp.value
- }
- }
-
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
-
- debug('comp', this)
-}
-
-var ANY = {}
-Comparator.prototype.parse = function (comp) {
- var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
-
- this.operator = m[1] !== undefined ? m[1] : ''
- if (this.operator === '=') {
- this.operator = ''
- }
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
- } else {
- this.semver = new SemVer(m[2], this.options.loose)
- }
-}
-
-Comparator.prototype.toString = function () {
- return this.value
-}
-
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
-
- if (this.semver === ANY || version === ANY) {
- return true
- }
-
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
- }
-
- return cmp(version, this.operator, this.semver, this.options)
-}
-
-Comparator.prototype.intersects = function (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
- }
-
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- var rangeTmp
-
- if (this.operator === '') {
- if (this.value === '') {
- return true
- }
- rangeTmp = new Range(comp.value, options)
- return satisfies(this.value, rangeTmp, options)
- } else if (comp.operator === '') {
- if (comp.value === '') {
- return true
- }
- rangeTmp = new Range(this.value, options)
- return satisfies(comp.semver, rangeTmp, options)
- }
-
- var sameDirectionIncreasing =
- (this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '>=' || comp.operator === '>')
- var sameDirectionDecreasing =
- (this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '<=' || comp.operator === '<')
- var sameSemVer = this.semver.version === comp.semver.version
- var differentDirectionsInclusive =
- (this.operator === '>=' || this.operator === '<=') &&
- (comp.operator === '>=' || comp.operator === '<=')
- var oppositeDirectionsLessThan =
- cmp(this.semver, '<', comp.semver, options) &&
- ((this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '<=' || comp.operator === '<'))
- var oppositeDirectionsGreaterThan =
- cmp(this.semver, '>', comp.semver, options) &&
- ((this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '>=' || comp.operator === '>'))
-
- return sameDirectionIncreasing || sameDirectionDecreasing ||
- (sameSemVer && differentDirectionsInclusive) ||
- oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
-}
-
-exports.Range = Range
-function Range (range, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
- }
- }
-
- if (range instanceof Comparator) {
- return new Range(range.value, options)
- }
-
- if (!(this instanceof Range)) {
- return new Range(range, options)
- }
-
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
-
- // First, split based on boolean or ||
- this.raw = range
- this.set = range.split(/\s*\|\|\s*/).map(function (range) {
- return this.parseRange(range.trim())
- }, this).filter(function (c) {
- // throw out any that are not relevant for whatever reason
- return c.length
- })
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range)
- }
-
- this.format()
-}
-
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
-}
-
-Range.prototype.toString = function () {
- return this.range
-}
-
-Range.prototype.parseRange = function (range) {
- var loose = this.options.loose
- range = range.trim()
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
- range = range.replace(hr, hyphenReplace)
- debug('hyphen replace', range)
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range, re[t.COMPARATORTRIM])
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[t.CARETTRIM], caretTrimReplace)
-
- // normalize spaces
- range = range.split(/\s+/).join(' ')
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
- var set = range.split(' ').map(function (comp) {
- return parseComparator(comp, this.options)
- }, this).join(' ').split(/\s+/)
- if (this.options.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function (comp) {
- return !!comp.match(compRe)
- })
- }
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
-
- return set
-}
-
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
- }
-
- return this.set.some(function (thisComparators) {
- return (
- isSatisfiable(thisComparators, options) &&
- range.set.some(function (rangeComparators) {
- return (
- isSatisfiable(rangeComparators, options) &&
- thisComparators.every(function (thisComparator) {
- return rangeComparators.every(function (rangeComparator) {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- )
- })
- )
- })
-}
-
-// take a set of comparators and determine whether there
-// exists a version which can satisfy it
-function isSatisfiable (comparators, options) {
- var result = true
- var remainingComparators = comparators.slice()
- var testComparator = remainingComparators.pop()
-
- while (result && remainingComparators.length) {
- result = remainingComparators.every(function (otherComparator) {
- return testComparator.intersects(otherComparator, options)
- })
-
- testComparator = remainingComparators.pop()
- }
-
- return result
-}
-
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators
-function toComparators (range, options) {
- return new Range(range, options).set.map(function (comp) {
- return comp.map(function (c) {
- return c.value
- }).join(' ').trim().split(' ')
- })
-}
-
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator (comp, options) {
- debug('comp', comp, options)
- comp = replaceCarets(comp, options)
- debug('caret', comp)
- comp = replaceTildes(comp, options)
- debug('tildes', comp)
- comp = replaceXRanges(comp, options)
- debug('xrange', comp)
- comp = replaceStars(comp, options)
- debug('stars', comp)
- return comp
-}
-
-function isX (id) {
- return !id || id.toLowerCase() === 'x' || id === '*'
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceTilde(comp, options)
- }).join(' ')
-}
-
-function replaceTilde (comp, options) {
- var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('tilde', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- // ~1.2 == >=1.2.0 <1.3.0
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else if (pr) {
- debug('replaceTilde pr', pr)
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- } else {
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('tilde return', ret)
- return ret
- })
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceCaret(comp, options)
- }).join(' ')
-}
-
-function replaceCaret (comp, options) {
- debug('caret', comp, options)
- var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('caret', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- if (M === '0') {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else {
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
- }
- } else if (pr) {
- debug('replaceCaret pr', pr)
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + (+M + 1) + '.0.0'
- }
- } else {
- debug('no pr')
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0'
- }
- }
-
- debug('caret return', ret)
- return ret
- })
-}
-
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
-}
-
-function replaceXRange (comp, options) {
- comp = comp.trim()
- var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
- return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
- debug('xRange', comp, ret, gtlt, M, m, p, pr)
- var xM = isX(M)
- var xm = xM || isX(m)
- var xp = xm || isX(p)
- var anyX = xp
-
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
-
- // if we're including prereleases in the match, then we need
- // to fix this to -0, the lowest possible prerelease value
- pr = options.includePrerelease ? '-0' : ''
-
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0-0'
- } else {
- // nothing is forbidden
- ret = '*'
- }
- } else if (gtlt && anyX) {
- // we know patch is an x, because we have any x at all.
- // replace X with 0
- if (xm) {
- m = 0
- }
- p = 0
-
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>='
- if (xm) {
- M = +M + 1
- m = 0
- p = 0
- } else {
- m = +m + 1
- p = 0
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm) {
- M = +M + 1
- } else {
- m = +m + 1
- }
- }
-
- ret = gtlt + M + '.' + m + '.' + p + pr
- } else if (xm) {
- ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0' + pr +
- ' <' + M + '.' + (+m + 1) + '.0' + pr
- }
-
- debug('xRange return', ret)
-
- return ret
- })
-}
-
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars (comp, options) {
- debug('replaceStars', comp, options)
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[t.STAR], '')
-}
-
-// This function is passed to string.replace(re[t.HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace ($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
- if (isX(fM)) {
- from = ''
- } else if (isX(fm)) {
- from = '>=' + fM + '.0.0'
- } else if (isX(fp)) {
- from = '>=' + fM + '.' + fm + '.0'
- } else {
- from = '>=' + from
- }
-
- if (isX(tM)) {
- to = ''
- } else if (isX(tm)) {
- to = '<' + (+tM + 1) + '.0.0'
- } else if (isX(tp)) {
- to = '<' + tM + '.' + (+tm + 1) + '.0'
- } else if (tpr) {
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
- } else {
- to = '<=' + to
- }
-
- return (from + ' ' + to).trim()
-}
-
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
-
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
- }
-
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
-}
-
-function testSet (set, version, options) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version)) {
- return false
- }
- }
-
- if (version.prerelease.length && !options.includePrerelease) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (i = 0; i < set.length; i++) {
- debug(set[i].semver)
- if (set[i].semver === ANY) {
- continue
- }
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
-}
-
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
- }
- return range.test(version)
-}
-
-exports.maxSatisfying = maxSatisfying
-function maxSatisfying (versions, range, options) {
- var max = null
- var maxSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!max || maxSV.compare(v) === -1) {
- // compare(max, v, true)
- max = v
- maxSV = new SemVer(max, options)
- }
- }
- })
- return max
-}
-
-exports.minSatisfying = minSatisfying
-function minSatisfying (versions, range, options) {
- var min = null
- var minSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!min || minSV.compare(v) === 1) {
- // compare(min, v, true)
- min = v
- minSV = new SemVer(min, options)
- }
- }
- })
- return min
-}
-
-exports.minVersion = minVersion
-function minVersion (range, loose) {
- range = new Range(range, loose)
-
- var minver = new SemVer('0.0.0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = null
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- comparators.forEach(function (comparator) {
- // Clone to avoid manipulating the comparator's semver object.
- var compver = new SemVer(comparator.semver.version)
- switch (comparator.operator) {
- case '>':
- if (compver.prerelease.length === 0) {
- compver.patch++
- } else {
- compver.prerelease.push(0)
- }
- compver.raw = compver.format()
- /* fallthrough */
- case '':
- case '>=':
- if (!minver || gt(minver, compver)) {
- minver = compver
- }
- break
- case '<':
- case '<=':
- /* Ignore maximum versions */
- break
- /* istanbul ignore next */
- default:
- throw new Error('Unexpected operation: ' + comparator.operator)
- }
- })
- }
-
- if (minver && range.test(minver)) {
- return minver
- }
-
- return null
-}
-
-exports.validRange = validRange
-function validRange (range, options) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, options).range || '*'
- } catch (er) {
- return null
- }
-}
-
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr
-function ltr (version, range, options) {
- return outside(version, range, '<', options)
-}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr
-function gtr (version, range, options) {
- return outside(version, range, '>', options)
-}
-
-exports.outside = outside
-function outside (version, range, hilo, options) {
- version = new SemVer(version, options)
- range = new Range(range, options)
-
- var gtfn, ltefn, ltfn, comp, ecomp
- switch (hilo) {
- case '>':
- gtfn = gt
- ltefn = lte
- ltfn = lt
- comp = '>'
- ecomp = '>='
- break
- case '<':
- gtfn = lt
- ltefn = gte
- ltfn = gt
- comp = '<'
- ecomp = '<='
- break
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"')
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- var high = null
- var low = null
-
- comparators.forEach(function (comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator
- low = low || comparator
- if (gtfn(comparator.semver, high.semver, options)) {
- high = comparator
- } else if (ltfn(comparator.semver, low.semver, options)) {
- low = comparator
- }
- })
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false
- }
- }
- return true
-}
-
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
-}
-
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
-}
-
-exports.coerce = coerce
-function coerce (version, options) {
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version === 'number') {
- version = String(version)
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- options = options || {}
-
- var match = null
- if (!options.rtl) {
- match = version.match(re[t.COERCE])
- } else {
- // Find the right-most coercible string that does not share
- // a terminus with a more left-ward coercible string.
- // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
- //
- // Walk through the string checking with a /g regexp
- // Manually set the index so as to pick up overlapping matches.
- // Stop when we get a match that ends at the string end, since no
- // coercible string can be more right-ward without the same terminus.
- var next
- while ((next = re[t.COERCERTL].exec(version)) &&
- (!match || match.index + match[0].length !== version.length)
- ) {
- if (!match ||
- next.index + next[0].length !== match.index + match[0].length) {
- match = next
- }
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
- }
- // leave it in a clean state
- re[t.COERCERTL].lastIndex = -1
- }
-
- if (match === null) {
- return null
- }
-
- return parse(match[2] +
- '.' + (match[3] || '0') +
- '.' + (match[4] || '0'), options)
-}
-
-
-/***/ }),
-
-/***/ 669:
-/***/ (function(module) {
-
-module.exports = require("util");
-
-/***/ }),
-
-/***/ 672:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var _a;
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert_1 = __webpack_require__(357);
-const fs = __webpack_require__(747);
-const path = __webpack_require__(622);
-_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
-exports.IS_WINDOWS = process.platform === 'win32';
-function exists(fsPath) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- yield exports.stat(fsPath);
- }
- catch (err) {
- if (err.code === 'ENOENT') {
- return false;
- }
- throw err;
- }
- return true;
- });
-}
-exports.exists = exists;
-function isDirectory(fsPath, useStat = false) {
- return __awaiter(this, void 0, void 0, function* () {
- const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
- return stats.isDirectory();
- });
-}
-exports.isDirectory = isDirectory;
-/**
- * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
- * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
- */
-function isRooted(p) {
- p = normalizeSeparators(p);
- if (!p) {
- throw new Error('isRooted() parameter "p" cannot be empty');
- }
- if (exports.IS_WINDOWS) {
- return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
- ); // e.g. C: or C:\hello
- }
- return p.startsWith('/');
-}
-exports.isRooted = isRooted;
-/**
- * Recursively create a directory at `fsPath`.
- *
- * This implementation is optimistic, meaning it attempts to create the full
- * path first, and backs up the path stack from there.
- *
- * @param fsPath The path to create
- * @param maxDepth The maximum recursion depth
- * @param depth The current recursion depth
- */
-function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
- return __awaiter(this, void 0, void 0, function* () {
- assert_1.ok(fsPath, 'a path argument must be provided');
- fsPath = path.resolve(fsPath);
- if (depth >= maxDepth)
- return exports.mkdir(fsPath);
- try {
- yield exports.mkdir(fsPath);
- return;
- }
- catch (err) {
- switch (err.code) {
- case 'ENOENT': {
- yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
- yield exports.mkdir(fsPath);
- return;
- }
- default: {
- let stats;
- try {
- stats = yield exports.stat(fsPath);
- }
- catch (err2) {
- throw err;
- }
- if (!stats.isDirectory())
- throw err;
- }
- }
- }
- });
-}
-exports.mkdirP = mkdirP;
-/**
- * Best effort attempt to determine whether a file exists and is executable.
- * @param filePath file path to check
- * @param extensions additional file extensions to try
- * @return if file exists and is executable, returns the file path. otherwise empty string.
- */
-function tryGetExecutablePath(filePath, extensions) {
- return __awaiter(this, void 0, void 0, function* () {
- let stats = undefined;
- try {
- // test file exists
- stats = yield exports.stat(filePath);
- }
- catch (err) {
- if (err.code !== 'ENOENT') {
- // eslint-disable-next-line no-console
- console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
- }
- }
- if (stats && stats.isFile()) {
- if (exports.IS_WINDOWS) {
- // on Windows, test for valid extension
- const upperExt = path.extname(filePath).toUpperCase();
- if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
- return filePath;
- }
- }
- else {
- if (isUnixExecutable(stats)) {
- return filePath;
- }
- }
- }
- // try each extension
- const originalFilePath = filePath;
- for (const extension of extensions) {
- filePath = originalFilePath + extension;
- stats = undefined;
- try {
- stats = yield exports.stat(filePath);
- }
- catch (err) {
- if (err.code !== 'ENOENT') {
- // eslint-disable-next-line no-console
- console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
- }
- }
- if (stats && stats.isFile()) {
- if (exports.IS_WINDOWS) {
- // preserve the case of the actual file (since an extension was appended)
- try {
- const directory = path.dirname(filePath);
- const upperName = path.basename(filePath).toUpperCase();
- for (const actualName of yield exports.readdir(directory)) {
- if (upperName === actualName.toUpperCase()) {
- filePath = path.join(directory, actualName);
- break;
- }
- }
- }
- catch (err) {
- // eslint-disable-next-line no-console
- console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
- }
- return filePath;
- }
- else {
- if (isUnixExecutable(stats)) {
- return filePath;
- }
- }
- }
- }
- return '';
- });
-}
-exports.tryGetExecutablePath = tryGetExecutablePath;
-function normalizeSeparators(p) {
- p = p || '';
- if (exports.IS_WINDOWS) {
- // convert slashes on Windows
- p = p.replace(/\//g, '\\');
- // remove redundant slashes
- return p.replace(/\\\\+/g, '\\');
- }
- // remove redundant slashes
- return p.replace(/\/\/+/g, '/');
-}
-// on Mac/Linux, test the execute bit
-// R W X R W X R W X
-// 256 128 64 32 16 8 4 2 1
-function isUnixExecutable(stats) {
- return ((stats.mode & 1) > 0 ||
- ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
- ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
-}
-//# sourceMappingURL=io-util.js.map
-
-/***/ }),
-
-/***/ 674:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticate;
-
-const { Deprecation } = __webpack_require__(692);
-const once = __webpack_require__(969);
-
-const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
-
-function authenticate(state, options) {
- deprecateAuthenticate(
- state.octokit.log,
- new Deprecation(
- '[@octokit/rest] octokit.authenticate() is deprecated. Use "auth" constructor option instead.'
- )
- );
-
- if (!options) {
- state.auth = false;
- return;
- }
-
- switch (options.type) {
- case "basic":
- if (!options.username || !options.password) {
- throw new Error(
- "Basic authentication requires both a username and password to be set"
- );
- }
- break;
-
- case "oauth":
- if (!options.token && !(options.key && options.secret)) {
- throw new Error(
- "OAuth2 authentication requires a token or key & secret to be set"
- );
- }
- break;
-
- case "token":
- case "app":
- if (!options.token) {
- throw new Error("Token authentication requires a token to be set");
- }
- break;
-
- default:
- throw new Error(
- "Invalid authentication type, must be 'basic', 'oauth', 'token' or 'app'"
- );
- }
-
- state.auth = options;
-}
-
-
-/***/ }),
-
-/***/ 675:
-/***/ (function(module) {
-
-module.exports = function btoa(str) {
- return new Buffer(str).toString('base64')
-}
-
-
-/***/ }),
-
-/***/ 692:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-class Deprecation extends Error {
- constructor(message) {
- super(message); // Maintains proper stack trace (only available on V8)
-
- /* istanbul ignore next */
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
-
- this.name = 'Deprecation';
- }
-
-}
-
-exports.Deprecation = Deprecation;
-
-
-/***/ }),
-
-/***/ 696:
-/***/ (function(module) {
-
-"use strict";
-
-
-/*!
- * isobject
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-function isObject(val) {
- return val != null && typeof val === 'object' && Array.isArray(val) === false;
-}
-
-/*!
- * is-plain-object
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-function isObjectObject(o) {
- return isObject(o) === true
- && Object.prototype.toString.call(o) === '[object Object]';
-}
-
-function isPlainObject(o) {
- var ctor,prot;
-
- if (isObjectObject(o) === false) return false;
-
- // If has modified constructor
- ctor = o.constructor;
- if (typeof ctor !== 'function') return false;
-
- // If has modified prototype
- prot = ctor.prototype;
- if (isObjectObject(prot) === false) return false;
-
- // If constructor does not have an Object-specific method
- if (prot.hasOwnProperty('isPrototypeOf') === false) {
- return false;
- }
-
- // Most likely a plain Object
- return true;
-}
-
-module.exports = isPlainObject;
-
-
-/***/ }),
-
-/***/ 697:
-/***/ (function(module) {
-
-"use strict";
-
-module.exports = (promise, onFinally) => {
- onFinally = onFinally || (() => {});
-
- return promise.then(
- val => new Promise(resolve => {
- resolve(onFinally());
- }).then(() => val),
- err => new Promise(resolve => {
- resolve(onFinally());
- }).then(() => {
- throw err;
- })
- );
-};
-
-
-/***/ }),
-
-/***/ 722:
-/***/ (function(module) {
-
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-var byteToHex = [];
-for (var i = 0; i < 256; ++i) {
- byteToHex[i] = (i + 0x100).toString(16).substr(1);
-}
-
-function bytesToUuid(buf, offset) {
- var i = offset || 0;
- var bth = byteToHex;
- // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
- return ([bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]]]).join('');
-}
-
-module.exports = bytesToUuid;
-
-
-/***/ }),
-
-/***/ 742:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var fs = __webpack_require__(747)
-var core
-if (process.platform === 'win32' || global.TESTING_WINDOWS) {
- core = __webpack_require__(818)
-} else {
- core = __webpack_require__(197)
-}
-
-module.exports = isexe
-isexe.sync = sync
-
-function isexe (path, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
-
- if (!cb) {
- if (typeof Promise !== 'function') {
- throw new TypeError('callback not provided')
- }
-
- return new Promise(function (resolve, reject) {
- isexe(path, options || {}, function (er, is) {
- if (er) {
- reject(er)
- } else {
- resolve(is)
- }
- })
- })
- }
-
- core(path, options || {}, function (er, is) {
- // ignore EACCES because that just means we aren't allowed to run it
- if (er) {
- if (er.code === 'EACCES' || options && options.ignoreErrors) {
- er = null
- is = false
- }
- }
- cb(er, is)
- })
-}
-
-function sync (path, options) {
- // my kingdom for a filtered catch
- try {
- return core.sync(path, options || {})
- } catch (er) {
- if (options && options.ignoreErrors || er.code === 'EACCES') {
- return false
- } else {
- throw er
- }
- }
-}
-
-
-/***/ }),
-
-/***/ 747:
-/***/ (function(module) {
-
-module.exports = require("fs");
-
-/***/ }),
-
-/***/ 753:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var endpoint = __webpack_require__(385);
-var universalUserAgent = __webpack_require__(211);
-var isPlainObject = _interopDefault(__webpack_require__(696));
-var nodeFetch = _interopDefault(__webpack_require__(454));
-var requestError = __webpack_require__(463);
-
-const VERSION = "5.4.2";
-
-function getBufferResponse(response) {
- return response.arrayBuffer();
-}
-
-function fetchWrapper(requestOptions) {
- if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
- requestOptions.body = JSON.stringify(requestOptions.body);
- }
-
- let headers = {};
- let status;
- let url;
- const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
- return fetch(requestOptions.url, Object.assign({
- method: requestOptions.method,
- body: requestOptions.body,
- headers: requestOptions.headers,
- redirect: requestOptions.redirect
- }, requestOptions.request)).then(response => {
- url = response.url;
- status = response.status;
-
- for (const keyAndValue of response.headers) {
- headers[keyAndValue[0]] = keyAndValue[1];
- }
-
- if (status === 204 || status === 205) {
- return;
- } // GitHub API returns 200 for HEAD requests
-
-
- if (requestOptions.method === "HEAD") {
- if (status < 400) {
- return;
- }
-
- throw new requestError.RequestError(response.statusText, status, {
- headers,
- request: requestOptions
- });
- }
-
- if (status === 304) {
- throw new requestError.RequestError("Not modified", status, {
- headers,
- request: requestOptions
- });
- }
-
- if (status >= 400) {
- return response.text().then(message => {
- const error = new requestError.RequestError(message, status, {
- headers,
- request: requestOptions
- });
-
- try {
- let responseBody = JSON.parse(error.message);
- Object.assign(error, responseBody);
- let errors = responseBody.errors; // Assumption `errors` would always be in Array format
-
- error.message = error.message + ": " + errors.map(JSON.stringify).join(", ");
- } catch (e) {// ignore, see octokit/rest.js#684
- }
-
- throw error;
- });
- }
-
- const contentType = response.headers.get("content-type");
-
- if (/application\/json/.test(contentType)) {
- return response.json();
- }
-
- if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
- return response.text();
- }
-
- return getBufferResponse(response);
- }).then(data => {
- return {
- status,
- url,
- headers,
- data
- };
- }).catch(error => {
- if (error instanceof requestError.RequestError) {
- throw error;
- }
-
- throw new requestError.RequestError(error.message, 500, {
- headers,
- request: requestOptions
- });
- });
-}
-
-function withDefaults(oldEndpoint, newDefaults) {
- const endpoint = oldEndpoint.defaults(newDefaults);
-
- const newApi = function (route, parameters) {
- const endpointOptions = endpoint.merge(route, parameters);
-
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper(endpoint.parse(endpointOptions));
- }
-
- const request = (route, parameters) => {
- return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
- };
-
- Object.assign(request, {
- endpoint,
- defaults: withDefaults.bind(null, endpoint)
- });
- return endpointOptions.request.hook(request, endpointOptions);
- };
-
- return Object.assign(newApi, {
- endpoint,
- defaults: withDefaults.bind(null, endpoint)
- });
-}
-
-const request = withDefaults(endpoint.endpoint, {
- headers: {
- "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`
- }
-});
-
-exports.request = request;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 761:
-/***/ (function(module) {
-
-module.exports = require("zlib");
-
-/***/ }),
-
-/***/ 763:
-/***/ (function(module) {
-
-module.exports = removeHook
-
-function removeHook (state, name, method) {
- if (!state.registry[name]) {
- return
- }
-
- var index = state.registry[name]
- .map(function (registered) { return registered.orig })
- .indexOf(method)
-
- if (index === -1) {
- return
- }
-
- state.registry[name].splice(index, 1)
-}
-
-
-/***/ }),
-
-/***/ 768:
-/***/ (function(module) {
-
-"use strict";
-
-module.exports = function (x) {
- var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt();
- var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt();
-
- if (x[x.length - 1] === lf) {
- x = x.slice(0, x.length - 1);
- }
-
- if (x[x.length - 1] === cr) {
- x = x.slice(0, x.length - 1);
- }
-
- return x;
-};
-
-
-/***/ }),
-
-/***/ 777:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = getFirstPage
-
-const getPage = __webpack_require__(265)
-
-function getFirstPage (octokit, link, headers) {
- return getPage(octokit, link, 'first', headers)
-}
-
-
-/***/ }),
-
-/***/ 796:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var osName = _interopDefault(__webpack_require__(2));
-
-function getUserAgent() {
- try {
- return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
- } catch (error) {
- if (/wmic os get Caption/.test(error.message)) {
- return "Windows ";
- }
-
- throw error;
- }
-}
-
-exports.getUserAgent = getUserAgent;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 813:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-async function auth(token) {
- const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth";
- return {
- type: "token",
- token: token,
- tokenType
- };
-}
-
-/**
- * Prefix token for usage in the Authorization header
- *
- * @param token OAuth token or JSON Web Token
- */
-function withAuthorizationPrefix(token) {
- if (token.split(/\./).length === 3) {
- return `bearer ${token}`;
- }
-
- return `token ${token}`;
-}
-
-async function hook(token, request, route, parameters) {
- const endpoint = request.endpoint.merge(route, parameters);
- endpoint.headers.authorization = withAuthorizationPrefix(token);
- return request(endpoint);
-}
-
-const createTokenAuth = function createTokenAuth(token) {
- if (!token) {
- throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
- }
-
- if (typeof token !== "string") {
- throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
- }
-
- token = token.replace(/^(token|bearer) +/i, "");
- return Object.assign(auth.bind(null, token), {
- hook: hook.bind(null, token)
- });
-};
-
-exports.createTokenAuth = createTokenAuth;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 814:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = which
-which.sync = whichSync
-
-var isWindows = process.platform === 'win32' ||
- process.env.OSTYPE === 'cygwin' ||
- process.env.OSTYPE === 'msys'
-
-var path = __webpack_require__(622)
-var COLON = isWindows ? ';' : ':'
-var isexe = __webpack_require__(742)
-
-function getNotFoundError (cmd) {
- var er = new Error('not found: ' + cmd)
- er.code = 'ENOENT'
-
- return er
-}
-
-function getPathInfo (cmd, opt) {
- var colon = opt.colon || COLON
- var pathEnv = opt.path || process.env.PATH || ''
- var pathExt = ['']
-
- pathEnv = pathEnv.split(colon)
-
- var pathExtExe = ''
- if (isWindows) {
- pathEnv.unshift(process.cwd())
- pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
- pathExt = pathExtExe.split(colon)
-
-
- // Always test the cmd itself first. isexe will check to make sure
- // it's found in the pathExt set.
- if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
- pathExt.unshift('')
- }
-
- // If it has a slash, then we don't bother searching the pathenv.
- // just check the file itself, and that's it.
- if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
- pathEnv = ['']
-
- return {
- env: pathEnv,
- ext: pathExt,
- extExe: pathExtExe
- }
-}
-
-function which (cmd, opt, cb) {
- if (typeof opt === 'function') {
- cb = opt
- opt = {}
- }
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- ;(function F (i, l) {
- if (i === l) {
- if (opt.all && found.length)
- return cb(null, found)
- else
- return cb(getNotFoundError(cmd))
- }
-
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- ;(function E (ii, ll) {
- if (ii === ll) return F(i + 1, l)
- var ext = pathExt[ii]
- isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
- if (!er && is) {
- if (opt.all)
- found.push(p + ext)
- else
- return cb(null, p + ext)
- }
- return E(ii + 1, ll)
- })
- })(0, pathExt.length)
- })(0, pathEnv.length)
-}
-
-function whichSync (cmd, opt) {
- opt = opt || {}
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- for (var i = 0, l = pathEnv.length; i < l; i ++) {
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && /^\.[\\\/]/.test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- for (var j = 0, ll = pathExt.length; j < ll; j ++) {
- var cur = p + pathExt[j]
- var is
- try {
- is = isexe.sync(cur, { pathExt: pathExtExe })
- if (is) {
- if (opt.all)
- found.push(cur)
- else
- return cur
- }
- } catch (ex) {}
- }
- }
-
- if (opt.all && found.length)
- return found
-
- if (opt.nothrow)
- return null
-
- throw getNotFoundError(cmd)
-}
-
-
-/***/ }),
-
-/***/ 816:
-/***/ (function(module) {
-
-"use strict";
-
-module.exports = /^#!.*/;
-
-
-/***/ }),
-
-/***/ 818:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = isexe
-isexe.sync = sync
-
-var fs = __webpack_require__(747)
-
-function checkPathExt (path, options) {
- var pathext = options.pathExt !== undefined ?
- options.pathExt : process.env.PATHEXT
-
- if (!pathext) {
- return true
- }
-
- pathext = pathext.split(';')
- if (pathext.indexOf('') !== -1) {
- return true
- }
- for (var i = 0; i < pathext.length; i++) {
- var p = pathext[i].toLowerCase()
- if (p && path.substr(-p.length).toLowerCase() === p) {
- return true
- }
- }
- return false
-}
-
-function checkStat (stat, path, options) {
- if (!stat.isSymbolicLink() && !stat.isFile()) {
- return false
- }
- return checkPathExt(path, options)
-}
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, path, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), path, options)
-}
-
-
-/***/ }),
-
-/***/ 821:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
- result["default"] = mod;
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const core = __importStar(__webpack_require__(470));
-const fsHelper = __importStar(__webpack_require__(618));
-const github = __importStar(__webpack_require__(469));
-const path = __importStar(__webpack_require__(622));
-function getInputs() {
- const result = {};
- // GitHub workspace
- let githubWorkspacePath = process.env['GITHUB_WORKSPACE'];
- if (!githubWorkspacePath) {
- throw new Error('GITHUB_WORKSPACE not defined');
- }
- githubWorkspacePath = path.resolve(githubWorkspacePath);
- core.debug(`GITHUB_WORKSPACE = '${githubWorkspacePath}'`);
- fsHelper.directoryExistsSync(githubWorkspacePath, true);
- // Qualified repository
- const qualifiedRepository = core.getInput('repository') ||
- `${github.context.repo.owner}/${github.context.repo.repo}`;
- core.debug(`qualified repository = '${qualifiedRepository}'`);
- const splitRepository = qualifiedRepository.split('/');
- if (splitRepository.length !== 2 ||
- !splitRepository[0] ||
- !splitRepository[1]) {
- throw new Error(`Invalid repository '${qualifiedRepository}'. Expected format {owner}/{repo}.`);
- }
- result.repositoryOwner = splitRepository[0];
- result.repositoryName = splitRepository[1];
- // Repository path
- result.repositoryPath = core.getInput('path') || '.';
- result.repositoryPath = path.resolve(githubWorkspacePath, result.repositoryPath);
- if (!(result.repositoryPath + path.sep).startsWith(githubWorkspacePath + path.sep)) {
- throw new Error(`Repository path '${result.repositoryPath}' is not under '${githubWorkspacePath}'`);
- }
- // Workflow repository?
- const isWorkflowRepository = qualifiedRepository.toUpperCase() ===
- `${github.context.repo.owner}/${github.context.repo.repo}`.toUpperCase();
- // Source branch, source version
- result.ref = core.getInput('ref');
- if (!result.ref) {
- if (isWorkflowRepository) {
- result.ref = github.context.ref;
- result.commit = github.context.sha;
- // Some events have an unqualifed ref. For example when a PR is merged (pull_request closed event),
- // the ref is unqualifed like "master" instead of "refs/heads/master".
- if (result.commit && result.ref && !result.ref.startsWith('refs/')) {
- result.ref = `refs/heads/${result.ref}`;
- }
- }
- }
- // SHA?
- else if (result.ref.match(/^[0-9a-fA-F]{40}$/)) {
- result.commit = result.ref;
- result.ref = '';
- }
- core.debug(`ref = '${result.ref}'`);
- core.debug(`commit = '${result.commit}'`);
- // Clean
- result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE';
- core.debug(`clean = ${result.clean}`);
- // Fetch depth
- result.fetchDepth = Math.floor(Number(core.getInput('fetch-depth') || '1'));
- if (isNaN(result.fetchDepth) || result.fetchDepth < 0) {
- result.fetchDepth = 0;
- }
- core.debug(`fetch depth = ${result.fetchDepth}`);
- // LFS
- result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE';
- core.debug(`lfs = ${result.lfs}`);
- // Submodules
- result.submodules = false;
- result.nestedSubmodules = false;
- const submodulesString = (core.getInput('submodules') || '').toUpperCase();
- if (submodulesString == 'RECURSIVE') {
- result.submodules = true;
- result.nestedSubmodules = true;
- }
- else if (submodulesString == 'TRUE') {
- result.submodules = true;
- }
- core.debug(`submodules = ${result.submodules}`);
- core.debug(`recursive submodules = ${result.nestedSubmodules}`);
- // Auth token
- result.authToken = core.getInput('token', { required: true });
- // SSH
- result.sshKey = core.getInput('ssh-key');
- result.sshKnownHosts = core.getInput('ssh-known-hosts');
- result.sshStrict =
- (core.getInput('ssh-strict') || 'true').toUpperCase() === 'TRUE';
- // Persist credentials
- result.persistCredentials =
- (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE';
- return result;
-}
-exports.getInputs = getInputs;
-
-
-/***/ }),
-
-/***/ 826:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var rng = __webpack_require__(139);
-var bytesToUuid = __webpack_require__(722);
-
-function v4(options, buf, offset) {
- var i = buf && offset || 0;
-
- if (typeof(options) == 'string') {
- buf = options === 'binary' ? new Array(16) : null;
- options = null;
- }
- options = options || {};
-
- var rnds = options.random || (options.rng || rng)();
-
- // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
-
- // Copy bytes to buffer, if provided
- if (buf) {
- for (var ii = 0; ii < 16; ++ii) {
- buf[i + ii] = rnds[ii];
- }
- }
-
- return buf || bytesToUuid(rnds);
-}
-
-module.exports = v4;
-
-
-/***/ }),
-
-/***/ 835:
-/***/ (function(module) {
-
-module.exports = require("url");
-
-/***/ }),
-
-/***/ 842:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-var deprecation = __webpack_require__(692);
-
-var endpointsByScope = {
- actions: {
- cancelWorkflowRun: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id/cancel"
- },
- createOrUpdateSecretForRepo: {
- method: "PUT",
- params: {
- encrypted_value: {
- type: "string"
- },
- key_id: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/secrets/:name"
- },
- createRegistrationToken: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/runners/registration-token"
- },
- createRemoveToken: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/runners/remove-token"
- },
- deleteArtifact: {
- method: "DELETE",
- params: {
- artifact_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/artifacts/:artifact_id"
- },
- deleteSecretFromRepo: {
- method: "DELETE",
- params: {
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/secrets/:name"
- },
- downloadArtifact: {
- method: "GET",
- params: {
- archive_format: {
- required: true,
- type: "string"
- },
- artifact_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/artifacts/:artifact_id/:archive_format"
- },
- getArtifact: {
- method: "GET",
- params: {
- artifact_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/artifacts/:artifact_id"
- },
- getPublicKey: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/secrets/public-key"
- },
- getSecret: {
- method: "GET",
- params: {
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/secrets/:name"
- },
- getSelfHostedRunner: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- runner_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runners/:runner_id"
- },
- getWorkflow: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- workflow_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/workflows/:workflow_id"
- },
- getWorkflowJob: {
- method: "GET",
- params: {
- job_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/jobs/:job_id"
- },
- getWorkflowRun: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id"
- },
- listDownloadsForSelfHostedRunnerApplication: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/runners/downloads"
- },
- listJobsForWorkflowRun: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id/jobs"
- },
- listRepoWorkflowRuns: {
- method: "GET",
- params: {
- actor: {
- type: "string"
- },
- branch: {
- type: "string"
- },
- event: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- status: {
- enum: ["completed", "status", "conclusion"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/runs"
- },
- listRepoWorkflows: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/workflows"
- },
- listSecretsForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/secrets"
- },
- listSelfHostedRunnersForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/runners"
- },
- listWorkflowJobLogs: {
- method: "GET",
- params: {
- job_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/actions/jobs/:job_id/logs"
- },
- listWorkflowRunArtifacts: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id/artifacts"
- },
- listWorkflowRunLogs: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id/logs"
- },
- listWorkflowRuns: {
- method: "GET",
- params: {
- actor: {
- type: "string"
- },
- branch: {
- type: "string"
- },
- event: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- status: {
- enum: ["completed", "status", "conclusion"],
- type: "string"
- },
- workflow_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/workflows/:workflow_id/runs"
- },
- reRunWorkflow: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- run_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runs/:run_id/rerun"
- },
- removeSelfHostedRunner: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- runner_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/actions/runners/:runner_id"
- }
- },
- activity: {
- checkStarringRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/user/starred/:owner/:repo"
- },
- deleteRepoSubscription: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/subscription"
- },
- deleteThreadSubscription: {
- method: "DELETE",
- params: {
- thread_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/notifications/threads/:thread_id/subscription"
- },
- getRepoSubscription: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/subscription"
- },
- getThread: {
- method: "GET",
- params: {
- thread_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/notifications/threads/:thread_id"
- },
- getThreadSubscription: {
- method: "GET",
- params: {
- thread_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/notifications/threads/:thread_id/subscription"
- },
- listEventsForOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/events/orgs/:org"
- },
- listEventsForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/events"
- },
- listFeeds: {
- method: "GET",
- params: {},
- url: "/feeds"
- },
- listNotifications: {
- method: "GET",
- params: {
- all: {
- type: "boolean"
- },
- before: {
- type: "string"
- },
- page: {
- type: "integer"
- },
- participating: {
- type: "boolean"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- }
- },
- url: "/notifications"
- },
- listNotificationsForRepo: {
- method: "GET",
- params: {
- all: {
- type: "boolean"
- },
- before: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- participating: {
- type: "boolean"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/notifications"
- },
- listPublicEvents: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/events"
- },
- listPublicEventsForOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/events"
- },
- listPublicEventsForRepoNetwork: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/networks/:owner/:repo/events"
- },
- listPublicEventsForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/events/public"
- },
- listReceivedEventsForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/received_events"
- },
- listReceivedPublicEventsForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/received_events/public"
- },
- listRepoEvents: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/events"
- },
- listReposStarredByAuthenticatedUser: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/user/starred"
- },
- listReposStarredByUser: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/starred"
- },
- listReposWatchedByUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/subscriptions"
- },
- listStargazersForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stargazers"
- },
- listWatchedReposForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/subscriptions"
- },
- listWatchersForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/subscribers"
- },
- markAsRead: {
- method: "PUT",
- params: {
- last_read_at: {
- type: "string"
- }
- },
- url: "/notifications"
- },
- markNotificationsAsReadForRepo: {
- method: "PUT",
- params: {
- last_read_at: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/notifications"
- },
- markThreadAsRead: {
- method: "PATCH",
- params: {
- thread_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/notifications/threads/:thread_id"
- },
- setRepoSubscription: {
- method: "PUT",
- params: {
- ignored: {
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- subscribed: {
- type: "boolean"
- }
- },
- url: "/repos/:owner/:repo/subscription"
- },
- setThreadSubscription: {
- method: "PUT",
- params: {
- ignored: {
- type: "boolean"
- },
- thread_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/notifications/threads/:thread_id/subscription"
- },
- starRepo: {
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/user/starred/:owner/:repo"
- },
- unstarRepo: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/user/starred/:owner/:repo"
- }
- },
- apps: {
- addRepoToInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "PUT",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- },
- repository_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/installations/:installation_id/repositories/:repository_id"
- },
- checkAccountIsAssociatedWithAny: {
- method: "GET",
- params: {
- account_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/marketplace_listing/accounts/:account_id"
- },
- checkAccountIsAssociatedWithAnyStubbed: {
- method: "GET",
- params: {
- account_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/marketplace_listing/stubbed/accounts/:account_id"
- },
- checkAuthorization: {
- deprecated: "octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization",
- method: "GET",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- checkToken: {
- headers: {
- accept: "application/vnd.github.doctor-strange-preview+json"
- },
- method: "POST",
- params: {
- access_token: {
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/token"
- },
- createContentAttachment: {
- headers: {
- accept: "application/vnd.github.corsair-preview+json"
- },
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- content_reference_id: {
- required: true,
- type: "integer"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/content_references/:content_reference_id/attachments"
- },
- createFromManifest: {
- headers: {
- accept: "application/vnd.github.fury-preview+json"
- },
- method: "POST",
- params: {
- code: {
- required: true,
- type: "string"
- }
- },
- url: "/app-manifests/:code/conversions"
- },
- createInstallationToken: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "POST",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- },
- permissions: {
- type: "object"
- },
- repository_ids: {
- type: "integer[]"
- }
- },
- url: "/app/installations/:installation_id/access_tokens"
- },
- deleteAuthorization: {
- headers: {
- accept: "application/vnd.github.doctor-strange-preview+json"
- },
- method: "DELETE",
- params: {
- access_token: {
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/grant"
- },
- deleteInstallation: {
- headers: {
- accept: "application/vnd.github.gambit-preview+json,application/vnd.github.machine-man-preview+json"
- },
- method: "DELETE",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/app/installations/:installation_id"
- },
- deleteToken: {
- headers: {
- accept: "application/vnd.github.doctor-strange-preview+json"
- },
- method: "DELETE",
- params: {
- access_token: {
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/token"
- },
- findOrgInstallation: {
- deprecated: "octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)",
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/installation"
- },
- findRepoInstallation: {
- deprecated: "octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)",
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/installation"
- },
- findUserInstallation: {
- deprecated: "octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)",
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/installation"
- },
- getAuthenticated: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {},
- url: "/app"
- },
- getBySlug: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- app_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/apps/:app_slug"
- },
- getInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/app/installations/:installation_id"
- },
- getOrgInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/installation"
- },
- getRepoInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/installation"
- },
- getUserInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/installation"
- },
- listAccountsUserOrOrgOnPlan: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- plan_id: {
- required: true,
- type: "integer"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/marketplace_listing/plans/:plan_id/accounts"
- },
- listAccountsUserOrOrgOnPlanStubbed: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- plan_id: {
- required: true,
- type: "integer"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/marketplace_listing/stubbed/plans/:plan_id/accounts"
- },
- listInstallationReposForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/installations/:installation_id/repositories"
- },
- listInstallations: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/app/installations"
- },
- listInstallationsForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/installations"
- },
- listMarketplacePurchasesForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/marketplace_purchases"
- },
- listMarketplacePurchasesForAuthenticatedUserStubbed: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/marketplace_purchases/stubbed"
- },
- listPlans: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/marketplace_listing/plans"
- },
- listPlansStubbed: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/marketplace_listing/stubbed/plans"
- },
- listRepos: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/installation/repositories"
- },
- removeRepoFromInstallation: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "DELETE",
- params: {
- installation_id: {
- required: true,
- type: "integer"
- },
- repository_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/installations/:installation_id/repositories/:repository_id"
- },
- resetAuthorization: {
- deprecated: "octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization",
- method: "POST",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- resetToken: {
- headers: {
- accept: "application/vnd.github.doctor-strange-preview+json"
- },
- method: "PATCH",
- params: {
- access_token: {
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/token"
- },
- revokeAuthorizationForApplication: {
- deprecated: "octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application",
- method: "DELETE",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- revokeGrantForApplication: {
- deprecated: "octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application",
- method: "DELETE",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/grants/:access_token"
- },
- revokeInstallationToken: {
- headers: {
- accept: "application/vnd.github.gambit-preview+json"
- },
- method: "DELETE",
- params: {},
- url: "/installation/token"
- }
- },
- checks: {
- create: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "POST",
- params: {
- actions: {
- type: "object[]"
- },
- "actions[].description": {
- required: true,
- type: "string"
- },
- "actions[].identifier": {
- required: true,
- type: "string"
- },
- "actions[].label": {
- required: true,
- type: "string"
- },
- completed_at: {
- type: "string"
- },
- conclusion: {
- enum: ["success", "failure", "neutral", "cancelled", "timed_out", "action_required"],
- type: "string"
- },
- details_url: {
- type: "string"
- },
- external_id: {
- type: "string"
- },
- head_sha: {
- required: true,
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- output: {
- type: "object"
- },
- "output.annotations": {
- type: "object[]"
- },
- "output.annotations[].annotation_level": {
- enum: ["notice", "warning", "failure"],
- required: true,
- type: "string"
- },
- "output.annotations[].end_column": {
- type: "integer"
- },
- "output.annotations[].end_line": {
- required: true,
- type: "integer"
- },
- "output.annotations[].message": {
- required: true,
- type: "string"
- },
- "output.annotations[].path": {
- required: true,
- type: "string"
- },
- "output.annotations[].raw_details": {
- type: "string"
- },
- "output.annotations[].start_column": {
- type: "integer"
- },
- "output.annotations[].start_line": {
- required: true,
- type: "integer"
- },
- "output.annotations[].title": {
- type: "string"
- },
- "output.images": {
- type: "object[]"
- },
- "output.images[].alt": {
- required: true,
- type: "string"
- },
- "output.images[].caption": {
- type: "string"
- },
- "output.images[].image_url": {
- required: true,
- type: "string"
- },
- "output.summary": {
- required: true,
- type: "string"
- },
- "output.text": {
- type: "string"
- },
- "output.title": {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- started_at: {
- type: "string"
- },
- status: {
- enum: ["queued", "in_progress", "completed"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-runs"
- },
- createSuite: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "POST",
- params: {
- head_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-suites"
- },
- get: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- check_run_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-runs/:check_run_id"
- },
- getSuite: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- check_suite_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-suites/:check_suite_id"
- },
- listAnnotations: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- check_run_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-runs/:check_run_id/annotations"
- },
- listForRef: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- check_name: {
- type: "string"
- },
- filter: {
- enum: ["latest", "all"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- status: {
- enum: ["queued", "in_progress", "completed"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref/check-runs"
- },
- listForSuite: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- check_name: {
- type: "string"
- },
- check_suite_id: {
- required: true,
- type: "integer"
- },
- filter: {
- enum: ["latest", "all"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- status: {
- enum: ["queued", "in_progress", "completed"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-suites/:check_suite_id/check-runs"
- },
- listSuitesForRef: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "GET",
- params: {
- app_id: {
- type: "integer"
- },
- check_name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref/check-suites"
- },
- rerequestSuite: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "POST",
- params: {
- check_suite_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-suites/:check_suite_id/rerequest"
- },
- setSuitesPreferences: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "PATCH",
- params: {
- auto_trigger_checks: {
- type: "object[]"
- },
- "auto_trigger_checks[].app_id": {
- required: true,
- type: "integer"
- },
- "auto_trigger_checks[].setting": {
- required: true,
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-suites/preferences"
- },
- update: {
- headers: {
- accept: "application/vnd.github.antiope-preview+json"
- },
- method: "PATCH",
- params: {
- actions: {
- type: "object[]"
- },
- "actions[].description": {
- required: true,
- type: "string"
- },
- "actions[].identifier": {
- required: true,
- type: "string"
- },
- "actions[].label": {
- required: true,
- type: "string"
- },
- check_run_id: {
- required: true,
- type: "integer"
- },
- completed_at: {
- type: "string"
- },
- conclusion: {
- enum: ["success", "failure", "neutral", "cancelled", "timed_out", "action_required"],
- type: "string"
- },
- details_url: {
- type: "string"
- },
- external_id: {
- type: "string"
- },
- name: {
- type: "string"
- },
- output: {
- type: "object"
- },
- "output.annotations": {
- type: "object[]"
- },
- "output.annotations[].annotation_level": {
- enum: ["notice", "warning", "failure"],
- required: true,
- type: "string"
- },
- "output.annotations[].end_column": {
- type: "integer"
- },
- "output.annotations[].end_line": {
- required: true,
- type: "integer"
- },
- "output.annotations[].message": {
- required: true,
- type: "string"
- },
- "output.annotations[].path": {
- required: true,
- type: "string"
- },
- "output.annotations[].raw_details": {
- type: "string"
- },
- "output.annotations[].start_column": {
- type: "integer"
- },
- "output.annotations[].start_line": {
- required: true,
- type: "integer"
- },
- "output.annotations[].title": {
- type: "string"
- },
- "output.images": {
- type: "object[]"
- },
- "output.images[].alt": {
- required: true,
- type: "string"
- },
- "output.images[].caption": {
- type: "string"
- },
- "output.images[].image_url": {
- required: true,
- type: "string"
- },
- "output.summary": {
- required: true,
- type: "string"
- },
- "output.text": {
- type: "string"
- },
- "output.title": {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- started_at: {
- type: "string"
- },
- status: {
- enum: ["queued", "in_progress", "completed"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/check-runs/:check_run_id"
- }
- },
- codesOfConduct: {
- getConductCode: {
- headers: {
- accept: "application/vnd.github.scarlet-witch-preview+json"
- },
- method: "GET",
- params: {
- key: {
- required: true,
- type: "string"
- }
- },
- url: "/codes_of_conduct/:key"
- },
- getForRepo: {
- headers: {
- accept: "application/vnd.github.scarlet-witch-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/community/code_of_conduct"
- },
- listConductCodes: {
- headers: {
- accept: "application/vnd.github.scarlet-witch-preview+json"
- },
- method: "GET",
- params: {},
- url: "/codes_of_conduct"
- }
- },
- emojis: {
- get: {
- method: "GET",
- params: {},
- url: "/emojis"
- }
- },
- gists: {
- checkIsStarred: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/star"
- },
- create: {
- method: "POST",
- params: {
- description: {
- type: "string"
- },
- files: {
- required: true,
- type: "object"
- },
- "files.content": {
- type: "string"
- },
- public: {
- type: "boolean"
- }
- },
- url: "/gists"
- },
- createComment: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/comments"
- },
- delete: {
- method: "DELETE",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id"
- },
- deleteComment: {
- method: "DELETE",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/comments/:comment_id"
- },
- fork: {
- method: "POST",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/forks"
- },
- get: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id"
- },
- getComment: {
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/comments/:comment_id"
- },
- getRevision: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- },
- sha: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/:sha"
- },
- list: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- }
- },
- url: "/gists"
- },
- listComments: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/gists/:gist_id/comments"
- },
- listCommits: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/gists/:gist_id/commits"
- },
- listForks: {
- method: "GET",
- params: {
- gist_id: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/gists/:gist_id/forks"
- },
- listPublic: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- }
- },
- url: "/gists/public"
- },
- listPublicForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/gists"
- },
- listStarred: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- }
- },
- url: "/gists/starred"
- },
- star: {
- method: "PUT",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/star"
- },
- unstar: {
- method: "DELETE",
- params: {
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/star"
- },
- update: {
- method: "PATCH",
- params: {
- description: {
- type: "string"
- },
- files: {
- type: "object"
- },
- "files.content": {
- type: "string"
- },
- "files.filename": {
- type: "string"
- },
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id"
- },
- updateComment: {
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_id: {
- required: true,
- type: "integer"
- },
- gist_id: {
- required: true,
- type: "string"
- }
- },
- url: "/gists/:gist_id/comments/:comment_id"
- }
- },
- git: {
- createBlob: {
- method: "POST",
- params: {
- content: {
- required: true,
- type: "string"
- },
- encoding: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/blobs"
- },
- createCommit: {
- method: "POST",
- params: {
- author: {
- type: "object"
- },
- "author.date": {
- type: "string"
- },
- "author.email": {
- type: "string"
- },
- "author.name": {
- type: "string"
- },
- committer: {
- type: "object"
- },
- "committer.date": {
- type: "string"
- },
- "committer.email": {
- type: "string"
- },
- "committer.name": {
- type: "string"
- },
- message: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- parents: {
- required: true,
- type: "string[]"
- },
- repo: {
- required: true,
- type: "string"
- },
- signature: {
- type: "string"
- },
- tree: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/commits"
- },
- createRef: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/refs"
- },
- createTag: {
- method: "POST",
- params: {
- message: {
- required: true,
- type: "string"
- },
- object: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- tag: {
- required: true,
- type: "string"
- },
- tagger: {
- type: "object"
- },
- "tagger.date": {
- type: "string"
- },
- "tagger.email": {
- type: "string"
- },
- "tagger.name": {
- type: "string"
- },
- type: {
- enum: ["commit", "tree", "blob"],
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/tags"
- },
- createTree: {
- method: "POST",
- params: {
- base_tree: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- tree: {
- required: true,
- type: "object[]"
- },
- "tree[].content": {
- type: "string"
- },
- "tree[].mode": {
- enum: ["100644", "100755", "040000", "160000", "120000"],
- type: "string"
- },
- "tree[].path": {
- type: "string"
- },
- "tree[].sha": {
- allowNull: true,
- type: "string"
- },
- "tree[].type": {
- enum: ["blob", "tree", "commit"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/trees"
- },
- deleteRef: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/refs/:ref"
- },
- getBlob: {
- method: "GET",
- params: {
- file_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/blobs/:file_sha"
- },
- getCommit: {
- method: "GET",
- params: {
- commit_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/commits/:commit_sha"
- },
- getRef: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/ref/:ref"
- },
- getTag: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- tag_sha: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/tags/:tag_sha"
- },
- getTree: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- recursive: {
- enum: ["1"],
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- tree_sha: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/trees/:tree_sha"
- },
- listMatchingRefs: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/matching-refs/:ref"
- },
- listRefs: {
- method: "GET",
- params: {
- namespace: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/refs/:namespace"
- },
- updateRef: {
- method: "PATCH",
- params: {
- force: {
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/git/refs/:ref"
- }
- },
- gitignore: {
- getTemplate: {
- method: "GET",
- params: {
- name: {
- required: true,
- type: "string"
- }
- },
- url: "/gitignore/templates/:name"
- },
- listTemplates: {
- method: "GET",
- params: {},
- url: "/gitignore/templates"
- }
- },
- interactions: {
- addOrUpdateRestrictionsForOrg: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "PUT",
- params: {
- limit: {
- enum: ["existing_users", "contributors_only", "collaborators_only"],
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/interaction-limits"
- },
- addOrUpdateRestrictionsForRepo: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "PUT",
- params: {
- limit: {
- enum: ["existing_users", "contributors_only", "collaborators_only"],
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/interaction-limits"
- },
- getRestrictionsForOrg: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/interaction-limits"
- },
- getRestrictionsForRepo: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/interaction-limits"
- },
- removeRestrictionsForOrg: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/interaction-limits"
- },
- removeRestrictionsForRepo: {
- headers: {
- accept: "application/vnd.github.sombra-preview+json"
- },
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/interaction-limits"
- }
- },
- issues: {
- addAssignees: {
- method: "POST",
- params: {
- assignees: {
- type: "string[]"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/assignees"
- },
- addLabels: {
- method: "POST",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- labels: {
- required: true,
- type: "string[]"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/labels"
- },
- checkAssignee: {
- method: "GET",
- params: {
- assignee: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/assignees/:assignee"
- },
- create: {
- method: "POST",
- params: {
- assignee: {
- type: "string"
- },
- assignees: {
- type: "string[]"
- },
- body: {
- type: "string"
- },
- labels: {
- type: "string[]"
- },
- milestone: {
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues"
- },
- createComment: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/comments"
- },
- createLabel: {
- method: "POST",
- params: {
- color: {
- required: true,
- type: "string"
- },
- description: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/labels"
- },
- createMilestone: {
- method: "POST",
- params: {
- description: {
- type: "string"
- },
- due_on: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["open", "closed"],
- type: "string"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones"
- },
- deleteComment: {
- method: "DELETE",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments/:comment_id"
- },
- deleteLabel: {
- method: "DELETE",
- params: {
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/labels/:name"
- },
- deleteMilestone: {
- method: "DELETE",
- params: {
- milestone_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "milestone_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones/:milestone_number"
- },
- get: {
- method: "GET",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number"
- },
- getComment: {
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments/:comment_id"
- },
- getEvent: {
- method: "GET",
- params: {
- event_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/events/:event_id"
- },
- getLabel: {
- method: "GET",
- params: {
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/labels/:name"
- },
- getMilestone: {
- method: "GET",
- params: {
- milestone_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "milestone_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones/:milestone_number"
- },
- list: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- filter: {
- enum: ["assigned", "created", "mentioned", "subscribed", "all"],
- type: "string"
- },
- labels: {
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated", "comments"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/issues"
- },
- listAssignees: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/assignees"
- },
- listComments: {
- method: "GET",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/comments"
- },
- listCommentsForRepo: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments"
- },
- listEvents: {
- method: "GET",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/events"
- },
- listEventsForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/events"
- },
- listEventsForTimeline: {
- headers: {
- accept: "application/vnd.github.mockingbird-preview+json"
- },
- method: "GET",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/timeline"
- },
- listForAuthenticatedUser: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- filter: {
- enum: ["assigned", "created", "mentioned", "subscribed", "all"],
- type: "string"
- },
- labels: {
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated", "comments"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/user/issues"
- },
- listForOrg: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- filter: {
- enum: ["assigned", "created", "mentioned", "subscribed", "all"],
- type: "string"
- },
- labels: {
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated", "comments"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/orgs/:org/issues"
- },
- listForRepo: {
- method: "GET",
- params: {
- assignee: {
- type: "string"
- },
- creator: {
- type: "string"
- },
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- labels: {
- type: "string"
- },
- mentioned: {
- type: "string"
- },
- milestone: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated", "comments"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues"
- },
- listLabelsForMilestone: {
- method: "GET",
- params: {
- milestone_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "milestone_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones/:milestone_number/labels"
- },
- listLabelsForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/labels"
- },
- listLabelsOnIssue: {
- method: "GET",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/labels"
- },
- listMilestonesForRepo: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["due_on", "completeness"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones"
- },
- lock: {
- method: "PUT",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- lock_reason: {
- enum: ["off-topic", "too heated", "resolved", "spam"],
- type: "string"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/lock"
- },
- removeAssignees: {
- method: "DELETE",
- params: {
- assignees: {
- type: "string[]"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/assignees"
- },
- removeLabel: {
- method: "DELETE",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- name: {
- required: true,
- type: "string"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/labels/:name"
- },
- removeLabels: {
- method: "DELETE",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/labels"
- },
- replaceLabels: {
- method: "PUT",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- labels: {
- type: "string[]"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/labels"
- },
- unlock: {
- method: "DELETE",
- params: {
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/lock"
- },
- update: {
- method: "PATCH",
- params: {
- assignee: {
- type: "string"
- },
- assignees: {
- type: "string[]"
- },
- body: {
- type: "string"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- labels: {
- type: "string[]"
- },
- milestone: {
- allowNull: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["open", "closed"],
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number"
- },
- updateComment: {
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments/:comment_id"
- },
- updateLabel: {
- method: "PATCH",
- params: {
- color: {
- type: "string"
- },
- current_name: {
- required: true,
- type: "string"
- },
- description: {
- type: "string"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/labels/:current_name"
- },
- updateMilestone: {
- method: "PATCH",
- params: {
- description: {
- type: "string"
- },
- due_on: {
- type: "string"
- },
- milestone_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "milestone_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["open", "closed"],
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/milestones/:milestone_number"
- }
- },
- licenses: {
- get: {
- method: "GET",
- params: {
- license: {
- required: true,
- type: "string"
- }
- },
- url: "/licenses/:license"
- },
- getForRepo: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/license"
- },
- list: {
- deprecated: "octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)",
- method: "GET",
- params: {},
- url: "/licenses"
- },
- listCommonlyUsed: {
- method: "GET",
- params: {},
- url: "/licenses"
- }
- },
- markdown: {
- render: {
- method: "POST",
- params: {
- context: {
- type: "string"
- },
- mode: {
- enum: ["markdown", "gfm"],
- type: "string"
- },
- text: {
- required: true,
- type: "string"
- }
- },
- url: "/markdown"
- },
- renderRaw: {
- headers: {
- "content-type": "text/plain; charset=utf-8"
- },
- method: "POST",
- params: {
- data: {
- mapTo: "data",
- required: true,
- type: "string"
- }
- },
- url: "/markdown/raw"
- }
- },
- meta: {
- get: {
- method: "GET",
- params: {},
- url: "/meta"
- }
- },
- migrations: {
- cancelImport: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import"
- },
- deleteArchiveForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "DELETE",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/migrations/:migration_id/archive"
- },
- deleteArchiveForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "DELETE",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/migrations/:migration_id/archive"
- },
- downloadArchiveForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/migrations/:migration_id/archive"
- },
- getArchiveForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/migrations/:migration_id/archive"
- },
- getArchiveForOrg: {
- deprecated: "octokit.migrations.getArchiveForOrg() has been renamed to octokit.migrations.downloadArchiveForOrg() (2020-01-27)",
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/migrations/:migration_id/archive"
- },
- getCommitAuthors: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import/authors"
- },
- getImportProgress: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import"
- },
- getLargeFiles: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import/large_files"
- },
- getStatusForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/migrations/:migration_id"
- },
- getStatusForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/migrations/:migration_id"
- },
- listForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/migrations"
- },
- listForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/migrations"
- },
- listReposForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/migrations/:migration_id/repositories"
- },
- listReposForUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "GET",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/:migration_id/repositories"
- },
- mapCommitAuthor: {
- method: "PATCH",
- params: {
- author_id: {
- required: true,
- type: "integer"
- },
- email: {
- type: "string"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import/authors/:author_id"
- },
- setLfsPreference: {
- method: "PATCH",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- use_lfs: {
- enum: ["opt_in", "opt_out"],
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import/lfs"
- },
- startForAuthenticatedUser: {
- method: "POST",
- params: {
- exclude_attachments: {
- type: "boolean"
- },
- lock_repositories: {
- type: "boolean"
- },
- repositories: {
- required: true,
- type: "string[]"
- }
- },
- url: "/user/migrations"
- },
- startForOrg: {
- method: "POST",
- params: {
- exclude_attachments: {
- type: "boolean"
- },
- lock_repositories: {
- type: "boolean"
- },
- org: {
- required: true,
- type: "string"
- },
- repositories: {
- required: true,
- type: "string[]"
- }
- },
- url: "/orgs/:org/migrations"
- },
- startImport: {
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- tfvc_project: {
- type: "string"
- },
- vcs: {
- enum: ["subversion", "git", "mercurial", "tfvc"],
- type: "string"
- },
- vcs_password: {
- type: "string"
- },
- vcs_url: {
- required: true,
- type: "string"
- },
- vcs_username: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import"
- },
- unlockRepoForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "DELETE",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- repo_name: {
- required: true,
- type: "string"
- }
- },
- url: "/user/migrations/:migration_id/repos/:repo_name/lock"
- },
- unlockRepoForOrg: {
- headers: {
- accept: "application/vnd.github.wyandotte-preview+json"
- },
- method: "DELETE",
- params: {
- migration_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- repo_name: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/migrations/:migration_id/repos/:repo_name/lock"
- },
- updateImport: {
- method: "PATCH",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- vcs_password: {
- type: "string"
- },
- vcs_username: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/import"
- }
- },
- oauthAuthorizations: {
- checkAuthorization: {
- deprecated: "octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)",
- method: "GET",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- createAuthorization: {
- deprecated: "octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization",
- method: "POST",
- params: {
- client_id: {
- type: "string"
- },
- client_secret: {
- type: "string"
- },
- fingerprint: {
- type: "string"
- },
- note: {
- required: true,
- type: "string"
- },
- note_url: {
- type: "string"
- },
- scopes: {
- type: "string[]"
- }
- },
- url: "/authorizations"
- },
- deleteAuthorization: {
- deprecated: "octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization",
- method: "DELETE",
- params: {
- authorization_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/authorizations/:authorization_id"
- },
- deleteGrant: {
- deprecated: "octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant",
- method: "DELETE",
- params: {
- grant_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/applications/grants/:grant_id"
- },
- getAuthorization: {
- deprecated: "octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization",
- method: "GET",
- params: {
- authorization_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/authorizations/:authorization_id"
- },
- getGrant: {
- deprecated: "octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant",
- method: "GET",
- params: {
- grant_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/applications/grants/:grant_id"
- },
- getOrCreateAuthorizationForApp: {
- deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app",
- method: "PUT",
- params: {
- client_id: {
- required: true,
- type: "string"
- },
- client_secret: {
- required: true,
- type: "string"
- },
- fingerprint: {
- type: "string"
- },
- note: {
- type: "string"
- },
- note_url: {
- type: "string"
- },
- scopes: {
- type: "string[]"
- }
- },
- url: "/authorizations/clients/:client_id"
- },
- getOrCreateAuthorizationForAppAndFingerprint: {
- deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint",
- method: "PUT",
- params: {
- client_id: {
- required: true,
- type: "string"
- },
- client_secret: {
- required: true,
- type: "string"
- },
- fingerprint: {
- required: true,
- type: "string"
- },
- note: {
- type: "string"
- },
- note_url: {
- type: "string"
- },
- scopes: {
- type: "string[]"
- }
- },
- url: "/authorizations/clients/:client_id/:fingerprint"
- },
- getOrCreateAuthorizationForAppFingerprint: {
- deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() has been renamed to octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() (2018-12-27)",
- method: "PUT",
- params: {
- client_id: {
- required: true,
- type: "string"
- },
- client_secret: {
- required: true,
- type: "string"
- },
- fingerprint: {
- required: true,
- type: "string"
- },
- note: {
- type: "string"
- },
- note_url: {
- type: "string"
- },
- scopes: {
- type: "string[]"
- }
- },
- url: "/authorizations/clients/:client_id/:fingerprint"
- },
- listAuthorizations: {
- deprecated: "octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/authorizations"
- },
- listGrants: {
- deprecated: "octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/applications/grants"
- },
- resetAuthorization: {
- deprecated: "octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)",
- method: "POST",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- revokeAuthorizationForApplication: {
- deprecated: "octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)",
- method: "DELETE",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/tokens/:access_token"
- },
- revokeGrantForApplication: {
- deprecated: "octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)",
- method: "DELETE",
- params: {
- access_token: {
- required: true,
- type: "string"
- },
- client_id: {
- required: true,
- type: "string"
- }
- },
- url: "/applications/:client_id/grants/:access_token"
- },
- updateAuthorization: {
- deprecated: "octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization",
- method: "PATCH",
- params: {
- add_scopes: {
- type: "string[]"
- },
- authorization_id: {
- required: true,
- type: "integer"
- },
- fingerprint: {
- type: "string"
- },
- note: {
- type: "string"
- },
- note_url: {
- type: "string"
- },
- remove_scopes: {
- type: "string[]"
- },
- scopes: {
- type: "string[]"
- }
- },
- url: "/authorizations/:authorization_id"
- }
- },
- orgs: {
- addOrUpdateMembership: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- role: {
- enum: ["admin", "member"],
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/memberships/:username"
- },
- blockUser: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/blocks/:username"
- },
- checkBlockedUser: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/blocks/:username"
- },
- checkMembership: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/members/:username"
- },
- checkPublicMembership: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/public_members/:username"
- },
- concealMembership: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/public_members/:username"
- },
- convertMemberToOutsideCollaborator: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/outside_collaborators/:username"
- },
- createHook: {
- method: "POST",
- params: {
- active: {
- type: "boolean"
- },
- config: {
- required: true,
- type: "object"
- },
- "config.content_type": {
- type: "string"
- },
- "config.insecure_ssl": {
- type: "string"
- },
- "config.secret": {
- type: "string"
- },
- "config.url": {
- required: true,
- type: "string"
- },
- events: {
- type: "string[]"
- },
- name: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/hooks"
- },
- createInvitation: {
- method: "POST",
- params: {
- email: {
- type: "string"
- },
- invitee_id: {
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- role: {
- enum: ["admin", "direct_member", "billing_manager"],
- type: "string"
- },
- team_ids: {
- type: "integer[]"
- }
- },
- url: "/orgs/:org/invitations"
- },
- deleteHook: {
- method: "DELETE",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/hooks/:hook_id"
- },
- get: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org"
- },
- getHook: {
- method: "GET",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/hooks/:hook_id"
- },
- getMembership: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/memberships/:username"
- },
- getMembershipForAuthenticatedUser: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/user/memberships/orgs/:org"
- },
- list: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "integer"
- }
- },
- url: "/organizations"
- },
- listBlockedUsers: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/blocks"
- },
- listForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/orgs"
- },
- listForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/orgs"
- },
- listHooks: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/hooks"
- },
- listInstallations: {
- headers: {
- accept: "application/vnd.github.machine-man-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/installations"
- },
- listInvitationTeams: {
- method: "GET",
- params: {
- invitation_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/invitations/:invitation_id/teams"
- },
- listMembers: {
- method: "GET",
- params: {
- filter: {
- enum: ["2fa_disabled", "all"],
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- role: {
- enum: ["all", "admin", "member"],
- type: "string"
- }
- },
- url: "/orgs/:org/members"
- },
- listMemberships: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- state: {
- enum: ["active", "pending"],
- type: "string"
- }
- },
- url: "/user/memberships/orgs"
- },
- listOutsideCollaborators: {
- method: "GET",
- params: {
- filter: {
- enum: ["2fa_disabled", "all"],
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/outside_collaborators"
- },
- listPendingInvitations: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/invitations"
- },
- listPublicMembers: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/public_members"
- },
- pingHook: {
- method: "POST",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/hooks/:hook_id/pings"
- },
- publicizeMembership: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/public_members/:username"
- },
- removeMember: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/members/:username"
- },
- removeMembership: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/memberships/:username"
- },
- removeOutsideCollaborator: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/outside_collaborators/:username"
- },
- unblockUser: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/blocks/:username"
- },
- update: {
- method: "PATCH",
- params: {
- billing_email: {
- type: "string"
- },
- company: {
- type: "string"
- },
- default_repository_permission: {
- enum: ["read", "write", "admin", "none"],
- type: "string"
- },
- description: {
- type: "string"
- },
- email: {
- type: "string"
- },
- has_organization_projects: {
- type: "boolean"
- },
- has_repository_projects: {
- type: "boolean"
- },
- location: {
- type: "string"
- },
- members_allowed_repository_creation_type: {
- enum: ["all", "private", "none"],
- type: "string"
- },
- members_can_create_internal_repositories: {
- type: "boolean"
- },
- members_can_create_private_repositories: {
- type: "boolean"
- },
- members_can_create_public_repositories: {
- type: "boolean"
- },
- members_can_create_repositories: {
- type: "boolean"
- },
- name: {
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org"
- },
- updateHook: {
- method: "PATCH",
- params: {
- active: {
- type: "boolean"
- },
- config: {
- type: "object"
- },
- "config.content_type": {
- type: "string"
- },
- "config.insecure_ssl": {
- type: "string"
- },
- "config.secret": {
- type: "string"
- },
- "config.url": {
- required: true,
- type: "string"
- },
- events: {
- type: "string[]"
- },
- hook_id: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/hooks/:hook_id"
- },
- updateMembership: {
- method: "PATCH",
- params: {
- org: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["active"],
- required: true,
- type: "string"
- }
- },
- url: "/user/memberships/orgs/:org"
- }
- },
- projects: {
- addCollaborator: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PUT",
- params: {
- permission: {
- enum: ["read", "write", "admin"],
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/projects/:project_id/collaborators/:username"
- },
- createCard: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- column_id: {
- required: true,
- type: "integer"
- },
- content_id: {
- type: "integer"
- },
- content_type: {
- type: "string"
- },
- note: {
- type: "string"
- }
- },
- url: "/projects/columns/:column_id/cards"
- },
- createColumn: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- name: {
- required: true,
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/:project_id/columns"
- },
- createForAuthenticatedUser: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- }
- },
- url: "/user/projects"
- },
- createForOrg: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/projects"
- },
- createForRepo: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/projects"
- },
- delete: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "DELETE",
- params: {
- project_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/:project_id"
- },
- deleteCard: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "DELETE",
- params: {
- card_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/columns/cards/:card_id"
- },
- deleteColumn: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "DELETE",
- params: {
- column_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/columns/:column_id"
- },
- get: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- project_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/:project_id"
- },
- getCard: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- card_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/columns/cards/:card_id"
- },
- getColumn: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- column_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/columns/:column_id"
- },
- listCards: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- archived_state: {
- enum: ["all", "archived", "not_archived"],
- type: "string"
- },
- column_id: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/projects/columns/:column_id/cards"
- },
- listCollaborators: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- affiliation: {
- enum: ["outside", "direct", "all"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- project_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/:project_id/collaborators"
- },
- listColumns: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- project_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/projects/:project_id/columns"
- },
- listForOrg: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/orgs/:org/projects"
- },
- listForRepo: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/projects"
- },
- listForUser: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/projects"
- },
- moveCard: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- card_id: {
- required: true,
- type: "integer"
- },
- column_id: {
- type: "integer"
- },
- position: {
- required: true,
- type: "string",
- validation: "^(top|bottom|after:\\d+)$"
- }
- },
- url: "/projects/columns/cards/:card_id/moves"
- },
- moveColumn: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "POST",
- params: {
- column_id: {
- required: true,
- type: "integer"
- },
- position: {
- required: true,
- type: "string",
- validation: "^(first|last|after:\\d+)$"
- }
- },
- url: "/projects/columns/:column_id/moves"
- },
- removeCollaborator: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "DELETE",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/projects/:project_id/collaborators/:username"
- },
- reviewUserPermissionLevel: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/projects/:project_id/collaborators/:username/permission"
- },
- update: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PATCH",
- params: {
- body: {
- type: "string"
- },
- name: {
- type: "string"
- },
- organization_permission: {
- type: "string"
- },
- private: {
- type: "boolean"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- state: {
- enum: ["open", "closed"],
- type: "string"
- }
- },
- url: "/projects/:project_id"
- },
- updateCard: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PATCH",
- params: {
- archived: {
- type: "boolean"
- },
- card_id: {
- required: true,
- type: "integer"
- },
- note: {
- type: "string"
- }
- },
- url: "/projects/columns/cards/:card_id"
- },
- updateColumn: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PATCH",
- params: {
- column_id: {
- required: true,
- type: "integer"
- },
- name: {
- required: true,
- type: "string"
- }
- },
- url: "/projects/columns/:column_id"
- }
- },
- pulls: {
- checkIfMerged: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/merge"
- },
- create: {
- method: "POST",
- params: {
- base: {
- required: true,
- type: "string"
- },
- body: {
- type: "string"
- },
- draft: {
- type: "boolean"
- },
- head: {
- required: true,
- type: "string"
- },
- maintainer_can_modify: {
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls"
- },
- createComment: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- commit_id: {
- required: true,
- type: "string"
- },
- in_reply_to: {
- deprecated: true,
- description: "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
- type: "integer"
- },
- line: {
- type: "integer"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- position: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- side: {
- enum: ["LEFT", "RIGHT"],
- type: "string"
- },
- start_line: {
- type: "integer"
- },
- start_side: {
- enum: ["LEFT", "RIGHT", "side"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/comments"
- },
- createCommentReply: {
- deprecated: "octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)",
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- commit_id: {
- required: true,
- type: "string"
- },
- in_reply_to: {
- deprecated: true,
- description: "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
- type: "integer"
- },
- line: {
- type: "integer"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- position: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- side: {
- enum: ["LEFT", "RIGHT"],
- type: "string"
- },
- start_line: {
- type: "integer"
- },
- start_side: {
- enum: ["LEFT", "RIGHT", "side"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/comments"
- },
- createFromIssue: {
- deprecated: "octokit.pulls.createFromIssue() is deprecated, see https://developer.github.com/v3/pulls/#create-a-pull-request",
- method: "POST",
- params: {
- base: {
- required: true,
- type: "string"
- },
- draft: {
- type: "boolean"
- },
- head: {
- required: true,
- type: "string"
- },
- issue: {
- required: true,
- type: "integer"
- },
- maintainer_can_modify: {
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls"
- },
- createReview: {
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- comments: {
- type: "object[]"
- },
- "comments[].body": {
- required: true,
- type: "string"
- },
- "comments[].path": {
- required: true,
- type: "string"
- },
- "comments[].position": {
- required: true,
- type: "integer"
- },
- commit_id: {
- type: "string"
- },
- event: {
- enum: ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews"
- },
- createReviewCommentReply: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/comments/:comment_id/replies"
- },
- createReviewRequest: {
- method: "POST",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- reviewers: {
- type: "string[]"
- },
- team_reviewers: {
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
- },
- deleteComment: {
- method: "DELETE",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments/:comment_id"
- },
- deletePendingReview: {
- method: "DELETE",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
- },
- deleteReviewRequest: {
- method: "DELETE",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- reviewers: {
- type: "string[]"
- },
- team_reviewers: {
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
- },
- dismissReview: {
- method: "PUT",
- params: {
- message: {
- required: true,
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals"
- },
- get: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number"
- },
- getComment: {
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments/:comment_id"
- },
- getCommentsForReview: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments"
- },
- getReview: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
- },
- list: {
- method: "GET",
- params: {
- base: {
- type: "string"
- },
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- head: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["created", "updated", "popularity", "long-running"],
- type: "string"
- },
- state: {
- enum: ["open", "closed", "all"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls"
- },
- listComments: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/comments"
- },
- listCommentsForRepo: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- since: {
- type: "string"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments"
- },
- listCommits: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/commits"
- },
- listFiles: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/files"
- },
- listReviewRequests: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
- },
- listReviews: {
- method: "GET",
- params: {
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews"
- },
- merge: {
- method: "PUT",
- params: {
- commit_message: {
- type: "string"
- },
- commit_title: {
- type: "string"
- },
- merge_method: {
- enum: ["merge", "squash", "rebase"],
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/merge"
- },
- submitReview: {
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- event: {
- enum: ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
- required: true,
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events"
- },
- update: {
- method: "PATCH",
- params: {
- base: {
- type: "string"
- },
- body: {
- type: "string"
- },
- maintainer_can_modify: {
- type: "boolean"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["open", "closed"],
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number"
- },
- updateBranch: {
- headers: {
- accept: "application/vnd.github.lydian-preview+json"
- },
- method: "PUT",
- params: {
- expected_head_sha: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/update-branch"
- },
- updateComment: {
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments/:comment_id"
- },
- updateReview: {
- method: "PUT",
- params: {
- body: {
- required: true,
- type: "string"
- },
- number: {
- alias: "pull_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- pull_number: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- review_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
- }
- },
- rateLimit: {
- get: {
- method: "GET",
- params: {},
- url: "/rate_limit"
- }
- },
- reactions: {
- createForCommitComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments/:comment_id/reactions"
- },
- createForIssue: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/reactions"
- },
- createForIssueComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments/:comment_id/reactions"
- },
- createForPullRequestReviewComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments/:comment_id/reactions"
- },
- createForTeamDiscussion: {
- deprecated: "octokit.reactions.createForTeamDiscussion() has been renamed to octokit.reactions.createForTeamDiscussionLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/reactions"
- },
- createForTeamDiscussionComment: {
- deprecated: "octokit.reactions.createForTeamDiscussionComment() has been renamed to octokit.reactions.createForTeamDiscussionCommentLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- createForTeamDiscussionCommentInOrg: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- createForTeamDiscussionCommentLegacy: {
- deprecated: "octokit.reactions.createForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- createForTeamDiscussionInOrg: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions"
- },
- createForTeamDiscussionLegacy: {
- deprecated: "octokit.reactions.createForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "POST",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/reactions"
- },
- delete: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "DELETE",
- params: {
- reaction_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/reactions/:reaction_id"
- },
- listForCommitComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments/:comment_id/reactions"
- },
- listForIssue: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- issue_number: {
- required: true,
- type: "integer"
- },
- number: {
- alias: "issue_number",
- deprecated: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/:issue_number/reactions"
- },
- listForIssueComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/issues/comments/:comment_id/reactions"
- },
- listForPullRequestReviewComment: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pulls/comments/:comment_id/reactions"
- },
- listForTeamDiscussion: {
- deprecated: "octokit.reactions.listForTeamDiscussion() has been renamed to octokit.reactions.listForTeamDiscussionLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/reactions"
- },
- listForTeamDiscussionComment: {
- deprecated: "octokit.reactions.listForTeamDiscussionComment() has been renamed to octokit.reactions.listForTeamDiscussionCommentLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- listForTeamDiscussionCommentInOrg: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- listForTeamDiscussionCommentLegacy: {
- deprecated: "octokit.reactions.listForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
- },
- listForTeamDiscussionInOrg: {
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions"
- },
- listForTeamDiscussionLegacy: {
- deprecated: "octokit.reactions.listForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy",
- headers: {
- accept: "application/vnd.github.squirrel-girl-preview+json"
- },
- method: "GET",
- params: {
- content: {
- enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/reactions"
- }
- },
- repos: {
- acceptInvitation: {
- method: "PATCH",
- params: {
- invitation_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/repository_invitations/:invitation_id"
- },
- addCollaborator: {
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/collaborators/:username"
- },
- addDeployKey: {
- method: "POST",
- params: {
- key: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- read_only: {
- type: "boolean"
- },
- repo: {
- required: true,
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/keys"
- },
- addProtectedBranchAdminEnforcement: {
- method: "POST",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
- },
- addProtectedBranchAppRestrictions: {
- method: "POST",
- params: {
- apps: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
- },
- addProtectedBranchRequiredSignatures: {
- headers: {
- accept: "application/vnd.github.zzzax-preview+json"
- },
- method: "POST",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
- },
- addProtectedBranchRequiredStatusChecksContexts: {
- method: "POST",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- contexts: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
- },
- addProtectedBranchTeamRestrictions: {
- method: "POST",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- teams: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- addProtectedBranchUserRestrictions: {
- method: "POST",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- users: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- checkCollaborator: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/collaborators/:username"
- },
- checkVulnerabilityAlerts: {
- headers: {
- accept: "application/vnd.github.dorian-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/vulnerability-alerts"
- },
- compareCommits: {
- method: "GET",
- params: {
- base: {
- required: true,
- type: "string"
- },
- head: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/compare/:base...:head"
- },
- createCommitComment: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- commit_sha: {
- required: true,
- type: "string"
- },
- line: {
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- type: "string"
- },
- position: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- alias: "commit_sha",
- deprecated: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:commit_sha/comments"
- },
- createDeployment: {
- method: "POST",
- params: {
- auto_merge: {
- type: "boolean"
- },
- description: {
- type: "string"
- },
- environment: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- payload: {
- type: "string"
- },
- production_environment: {
- type: "boolean"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- required_contexts: {
- type: "string[]"
- },
- task: {
- type: "string"
- },
- transient_environment: {
- type: "boolean"
- }
- },
- url: "/repos/:owner/:repo/deployments"
- },
- createDeploymentStatus: {
- method: "POST",
- params: {
- auto_inactive: {
- type: "boolean"
- },
- deployment_id: {
- required: true,
- type: "integer"
- },
- description: {
- type: "string"
- },
- environment: {
- enum: ["production", "staging", "qa"],
- type: "string"
- },
- environment_url: {
- type: "string"
- },
- log_url: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["error", "failure", "inactive", "in_progress", "queued", "pending", "success"],
- required: true,
- type: "string"
- },
- target_url: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/deployments/:deployment_id/statuses"
- },
- createDispatchEvent: {
- method: "POST",
- params: {
- client_payload: {
- type: "object"
- },
- event_type: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/dispatches"
- },
- createFile: {
- deprecated: "octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)",
- method: "PUT",
- params: {
- author: {
- type: "object"
- },
- "author.email": {
- required: true,
- type: "string"
- },
- "author.name": {
- required: true,
- type: "string"
- },
- branch: {
- type: "string"
- },
- committer: {
- type: "object"
- },
- "committer.email": {
- required: true,
- type: "string"
- },
- "committer.name": {
- required: true,
- type: "string"
- },
- content: {
- required: true,
- type: "string"
- },
- message: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contents/:path"
- },
- createForAuthenticatedUser: {
- method: "POST",
- params: {
- allow_merge_commit: {
- type: "boolean"
- },
- allow_rebase_merge: {
- type: "boolean"
- },
- allow_squash_merge: {
- type: "boolean"
- },
- auto_init: {
- type: "boolean"
- },
- delete_branch_on_merge: {
- type: "boolean"
- },
- description: {
- type: "string"
- },
- gitignore_template: {
- type: "string"
- },
- has_issues: {
- type: "boolean"
- },
- has_projects: {
- type: "boolean"
- },
- has_wiki: {
- type: "boolean"
- },
- homepage: {
- type: "string"
- },
- is_template: {
- type: "boolean"
- },
- license_template: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- team_id: {
- type: "integer"
- },
- visibility: {
- enum: ["public", "private", "visibility", "internal"],
- type: "string"
- }
- },
- url: "/user/repos"
- },
- createFork: {
- method: "POST",
- params: {
- organization: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/forks"
- },
- createHook: {
- method: "POST",
- params: {
- active: {
- type: "boolean"
- },
- config: {
- required: true,
- type: "object"
- },
- "config.content_type": {
- type: "string"
- },
- "config.insecure_ssl": {
- type: "string"
- },
- "config.secret": {
- type: "string"
- },
- "config.url": {
- required: true,
- type: "string"
- },
- events: {
- type: "string[]"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks"
- },
- createInOrg: {
- method: "POST",
- params: {
- allow_merge_commit: {
- type: "boolean"
- },
- allow_rebase_merge: {
- type: "boolean"
- },
- allow_squash_merge: {
- type: "boolean"
- },
- auto_init: {
- type: "boolean"
- },
- delete_branch_on_merge: {
- type: "boolean"
- },
- description: {
- type: "string"
- },
- gitignore_template: {
- type: "string"
- },
- has_issues: {
- type: "boolean"
- },
- has_projects: {
- type: "boolean"
- },
- has_wiki: {
- type: "boolean"
- },
- homepage: {
- type: "string"
- },
- is_template: {
- type: "boolean"
- },
- license_template: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- team_id: {
- type: "integer"
- },
- visibility: {
- enum: ["public", "private", "visibility", "internal"],
- type: "string"
- }
- },
- url: "/orgs/:org/repos"
- },
- createOrUpdateFile: {
- method: "PUT",
- params: {
- author: {
- type: "object"
- },
- "author.email": {
- required: true,
- type: "string"
- },
- "author.name": {
- required: true,
- type: "string"
- },
- branch: {
- type: "string"
- },
- committer: {
- type: "object"
- },
- "committer.email": {
- required: true,
- type: "string"
- },
- "committer.name": {
- required: true,
- type: "string"
- },
- content: {
- required: true,
- type: "string"
- },
- message: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contents/:path"
- },
- createRelease: {
- method: "POST",
- params: {
- body: {
- type: "string"
- },
- draft: {
- type: "boolean"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- prerelease: {
- type: "boolean"
- },
- repo: {
- required: true,
- type: "string"
- },
- tag_name: {
- required: true,
- type: "string"
- },
- target_commitish: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases"
- },
- createStatus: {
- method: "POST",
- params: {
- context: {
- type: "string"
- },
- description: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- required: true,
- type: "string"
- },
- state: {
- enum: ["error", "failure", "pending", "success"],
- required: true,
- type: "string"
- },
- target_url: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/statuses/:sha"
- },
- createUsingTemplate: {
- headers: {
- accept: "application/vnd.github.baptiste-preview+json"
- },
- method: "POST",
- params: {
- description: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- owner: {
- type: "string"
- },
- private: {
- type: "boolean"
- },
- template_owner: {
- required: true,
- type: "string"
- },
- template_repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:template_owner/:template_repo/generate"
- },
- declineInvitation: {
- method: "DELETE",
- params: {
- invitation_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/repository_invitations/:invitation_id"
- },
- delete: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo"
- },
- deleteCommitComment: {
- method: "DELETE",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments/:comment_id"
- },
- deleteDownload: {
- method: "DELETE",
- params: {
- download_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/downloads/:download_id"
- },
- deleteFile: {
- method: "DELETE",
- params: {
- author: {
- type: "object"
- },
- "author.email": {
- type: "string"
- },
- "author.name": {
- type: "string"
- },
- branch: {
- type: "string"
- },
- committer: {
- type: "object"
- },
- "committer.email": {
- type: "string"
- },
- "committer.name": {
- type: "string"
- },
- message: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contents/:path"
- },
- deleteHook: {
- method: "DELETE",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks/:hook_id"
- },
- deleteInvitation: {
- method: "DELETE",
- params: {
- invitation_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/invitations/:invitation_id"
- },
- deleteRelease: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- release_id: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/:release_id"
- },
- deleteReleaseAsset: {
- method: "DELETE",
- params: {
- asset_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/assets/:asset_id"
- },
- disableAutomatedSecurityFixes: {
- headers: {
- accept: "application/vnd.github.london-preview+json"
- },
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/automated-security-fixes"
- },
- disablePagesSite: {
- headers: {
- accept: "application/vnd.github.switcheroo-preview+json"
- },
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages"
- },
- disableVulnerabilityAlerts: {
- headers: {
- accept: "application/vnd.github.dorian-preview+json"
- },
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/vulnerability-alerts"
- },
- enableAutomatedSecurityFixes: {
- headers: {
- accept: "application/vnd.github.london-preview+json"
- },
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/automated-security-fixes"
- },
- enablePagesSite: {
- headers: {
- accept: "application/vnd.github.switcheroo-preview+json"
- },
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- source: {
- type: "object"
- },
- "source.branch": {
- enum: ["master", "gh-pages"],
- type: "string"
- },
- "source.path": {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages"
- },
- enableVulnerabilityAlerts: {
- headers: {
- accept: "application/vnd.github.dorian-preview+json"
- },
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/vulnerability-alerts"
- },
- get: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo"
- },
- getAppsWithAccessToProtectedBranch: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
- },
- getArchiveLink: {
- method: "GET",
- params: {
- archive_format: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/:archive_format/:ref"
- },
- getBranch: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch"
- },
- getBranchProtection: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection"
- },
- getClones: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- per: {
- enum: ["day", "week"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/traffic/clones"
- },
- getCodeFrequencyStats: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stats/code_frequency"
- },
- getCollaboratorPermissionLevel: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/collaborators/:username/permission"
- },
- getCombinedStatusForRef: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref/status"
- },
- getCommit: {
- method: "GET",
- params: {
- commit_sha: {
- alias: "ref",
- deprecated: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- alias: "ref",
- deprecated: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref"
- },
- getCommitActivityStats: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stats/commit_activity"
- },
- getCommitComment: {
- method: "GET",
- params: {
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments/:comment_id"
- },
- getCommitRefSha: {
- deprecated: "octokit.repos.getCommitRefSha() is deprecated, see https://developer.github.com/v3/repos/commits/#get-a-single-commit",
- headers: {
- accept: "application/vnd.github.v3.sha"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref"
- },
- getContents: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- ref: {
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contents/:path"
- },
- getContributorsStats: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stats/contributors"
- },
- getDeployKey: {
- method: "GET",
- params: {
- key_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/keys/:key_id"
- },
- getDeployment: {
- method: "GET",
- params: {
- deployment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/deployments/:deployment_id"
- },
- getDeploymentStatus: {
- method: "GET",
- params: {
- deployment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- status_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id"
- },
- getDownload: {
- method: "GET",
- params: {
- download_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/downloads/:download_id"
- },
- getHook: {
- method: "GET",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks/:hook_id"
- },
- getLatestPagesBuild: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages/builds/latest"
- },
- getLatestRelease: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/latest"
- },
- getPages: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages"
- },
- getPagesBuild: {
- method: "GET",
- params: {
- build_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages/builds/:build_id"
- },
- getParticipationStats: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stats/participation"
- },
- getProtectedBranchAdminEnforcement: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
- },
- getProtectedBranchPullRequestReviewEnforcement: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
- },
- getProtectedBranchRequiredSignatures: {
- headers: {
- accept: "application/vnd.github.zzzax-preview+json"
- },
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
- },
- getProtectedBranchRequiredStatusChecks: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
- },
- getProtectedBranchRestrictions: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions"
- },
- getPunchCardStats: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/stats/punch_card"
- },
- getReadme: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- ref: {
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/readme"
- },
- getRelease: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- release_id: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/:release_id"
- },
- getReleaseAsset: {
- method: "GET",
- params: {
- asset_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/assets/:asset_id"
- },
- getReleaseByTag: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- tag: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/tags/:tag"
- },
- getTeamsWithAccessToProtectedBranch: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- getTopPaths: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/traffic/popular/paths"
- },
- getTopReferrers: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/traffic/popular/referrers"
- },
- getUsersWithAccessToProtectedBranch: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- getViews: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- per: {
- enum: ["day", "week"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/traffic/views"
- },
- list: {
- method: "GET",
- params: {
- affiliation: {
- type: "string"
- },
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- sort: {
- enum: ["created", "updated", "pushed", "full_name"],
- type: "string"
- },
- type: {
- enum: ["all", "owner", "public", "private", "member"],
- type: "string"
- },
- visibility: {
- enum: ["all", "public", "private"],
- type: "string"
- }
- },
- url: "/user/repos"
- },
- listAppsWithAccessToProtectedBranch: {
- deprecated: "octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)",
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
- },
- listAssetsForRelease: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- release_id: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/:release_id/assets"
- },
- listBranches: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- protected: {
- type: "boolean"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches"
- },
- listBranchesForHeadCommit: {
- headers: {
- accept: "application/vnd.github.groot-preview+json"
- },
- method: "GET",
- params: {
- commit_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:commit_sha/branches-where-head"
- },
- listCollaborators: {
- method: "GET",
- params: {
- affiliation: {
- enum: ["outside", "direct", "all"],
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/collaborators"
- },
- listCommentsForCommit: {
- method: "GET",
- params: {
- commit_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- alias: "commit_sha",
- deprecated: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:commit_sha/comments"
- },
- listCommitComments: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments"
- },
- listCommits: {
- method: "GET",
- params: {
- author: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- path: {
- type: "string"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- },
- since: {
- type: "string"
- },
- until: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits"
- },
- listContributors: {
- method: "GET",
- params: {
- anon: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contributors"
- },
- listDeployKeys: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/keys"
- },
- listDeploymentStatuses: {
- method: "GET",
- params: {
- deployment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/deployments/:deployment_id/statuses"
- },
- listDeployments: {
- method: "GET",
- params: {
- environment: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- },
- task: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/deployments"
- },
- listDownloads: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/downloads"
- },
- listForOrg: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- sort: {
- enum: ["created", "updated", "pushed", "full_name"],
- type: "string"
- },
- type: {
- enum: ["all", "public", "private", "forks", "sources", "member", "internal"],
- type: "string"
- }
- },
- url: "/orgs/:org/repos"
- },
- listForUser: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- sort: {
- enum: ["created", "updated", "pushed", "full_name"],
- type: "string"
- },
- type: {
- enum: ["all", "owner", "member"],
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/repos"
- },
- listForks: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["newest", "oldest", "stargazers"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/forks"
- },
- listHooks: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks"
- },
- listInvitations: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/invitations"
- },
- listInvitationsForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/repository_invitations"
- },
- listLanguages: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/languages"
- },
- listPagesBuilds: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages/builds"
- },
- listProtectedBranchRequiredStatusChecksContexts: {
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
- },
- listProtectedBranchTeamRestrictions: {
- deprecated: "octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)",
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- listProtectedBranchUserRestrictions: {
- deprecated: "octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)",
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- listPublic: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "integer"
- }
- },
- url: "/repositories"
- },
- listPullRequestsAssociatedWithCommit: {
- headers: {
- accept: "application/vnd.github.groot-preview+json"
- },
- method: "GET",
- params: {
- commit_sha: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:commit_sha/pulls"
- },
- listReleases: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases"
- },
- listStatusesForRef: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- ref: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/commits/:ref/statuses"
- },
- listTags: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/tags"
- },
- listTeams: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/teams"
- },
- listTeamsWithAccessToProtectedBranch: {
- deprecated: "octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)",
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- listTopics: {
- headers: {
- accept: "application/vnd.github.mercy-preview+json"
- },
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/topics"
- },
- listUsersWithAccessToProtectedBranch: {
- deprecated: "octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)",
- method: "GET",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- merge: {
- method: "POST",
- params: {
- base: {
- required: true,
- type: "string"
- },
- commit_message: {
- type: "string"
- },
- head: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/merges"
- },
- pingHook: {
- method: "POST",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks/:hook_id/pings"
- },
- removeBranchProtection: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection"
- },
- removeCollaborator: {
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/collaborators/:username"
- },
- removeDeployKey: {
- method: "DELETE",
- params: {
- key_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/keys/:key_id"
- },
- removeProtectedBranchAdminEnforcement: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
- },
- removeProtectedBranchAppRestrictions: {
- method: "DELETE",
- params: {
- apps: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
- },
- removeProtectedBranchPullRequestReviewEnforcement: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
- },
- removeProtectedBranchRequiredSignatures: {
- headers: {
- accept: "application/vnd.github.zzzax-preview+json"
- },
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
- },
- removeProtectedBranchRequiredStatusChecks: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
- },
- removeProtectedBranchRequiredStatusChecksContexts: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- contexts: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
- },
- removeProtectedBranchRestrictions: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions"
- },
- removeProtectedBranchTeamRestrictions: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- teams: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- removeProtectedBranchUserRestrictions: {
- method: "DELETE",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- users: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- replaceProtectedBranchAppRestrictions: {
- method: "PUT",
- params: {
- apps: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
- },
- replaceProtectedBranchRequiredStatusChecksContexts: {
- method: "PUT",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- contexts: {
- mapTo: "data",
- required: true,
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
- },
- replaceProtectedBranchTeamRestrictions: {
- method: "PUT",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- teams: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
- },
- replaceProtectedBranchUserRestrictions: {
- method: "PUT",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- users: {
- mapTo: "data",
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
- },
- replaceTopics: {
- headers: {
- accept: "application/vnd.github.mercy-preview+json"
- },
- method: "PUT",
- params: {
- names: {
- required: true,
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/topics"
- },
- requestPageBuild: {
- method: "POST",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages/builds"
- },
- retrieveCommunityProfileMetrics: {
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/community/profile"
- },
- testPushHook: {
- method: "POST",
- params: {
- hook_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks/:hook_id/tests"
- },
- transfer: {
- method: "POST",
- params: {
- new_owner: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_ids: {
- type: "integer[]"
- }
- },
- url: "/repos/:owner/:repo/transfer"
- },
- update: {
- method: "PATCH",
- params: {
- allow_merge_commit: {
- type: "boolean"
- },
- allow_rebase_merge: {
- type: "boolean"
- },
- allow_squash_merge: {
- type: "boolean"
- },
- archived: {
- type: "boolean"
- },
- default_branch: {
- type: "string"
- },
- delete_branch_on_merge: {
- type: "boolean"
- },
- description: {
- type: "string"
- },
- has_issues: {
- type: "boolean"
- },
- has_projects: {
- type: "boolean"
- },
- has_wiki: {
- type: "boolean"
- },
- homepage: {
- type: "string"
- },
- is_template: {
- type: "boolean"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- repo: {
- required: true,
- type: "string"
- },
- visibility: {
- enum: ["public", "private", "visibility", "internal"],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo"
- },
- updateBranchProtection: {
- method: "PUT",
- params: {
- allow_deletions: {
- type: "boolean"
- },
- allow_force_pushes: {
- allowNull: true,
- type: "boolean"
- },
- branch: {
- required: true,
- type: "string"
- },
- enforce_admins: {
- allowNull: true,
- required: true,
- type: "boolean"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- required_linear_history: {
- type: "boolean"
- },
- required_pull_request_reviews: {
- allowNull: true,
- required: true,
- type: "object"
- },
- "required_pull_request_reviews.dismiss_stale_reviews": {
- type: "boolean"
- },
- "required_pull_request_reviews.dismissal_restrictions": {
- type: "object"
- },
- "required_pull_request_reviews.dismissal_restrictions.teams": {
- type: "string[]"
- },
- "required_pull_request_reviews.dismissal_restrictions.users": {
- type: "string[]"
- },
- "required_pull_request_reviews.require_code_owner_reviews": {
- type: "boolean"
- },
- "required_pull_request_reviews.required_approving_review_count": {
- type: "integer"
- },
- required_status_checks: {
- allowNull: true,
- required: true,
- type: "object"
- },
- "required_status_checks.contexts": {
- required: true,
- type: "string[]"
- },
- "required_status_checks.strict": {
- required: true,
- type: "boolean"
- },
- restrictions: {
- allowNull: true,
- required: true,
- type: "object"
- },
- "restrictions.apps": {
- type: "string[]"
- },
- "restrictions.teams": {
- required: true,
- type: "string[]"
- },
- "restrictions.users": {
- required: true,
- type: "string[]"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection"
- },
- updateCommitComment: {
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/comments/:comment_id"
- },
- updateFile: {
- deprecated: "octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)",
- method: "PUT",
- params: {
- author: {
- type: "object"
- },
- "author.email": {
- required: true,
- type: "string"
- },
- "author.name": {
- required: true,
- type: "string"
- },
- branch: {
- type: "string"
- },
- committer: {
- type: "object"
- },
- "committer.email": {
- required: true,
- type: "string"
- },
- "committer.name": {
- required: true,
- type: "string"
- },
- content: {
- required: true,
- type: "string"
- },
- message: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- path: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- sha: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/contents/:path"
- },
- updateHook: {
- method: "PATCH",
- params: {
- active: {
- type: "boolean"
- },
- add_events: {
- type: "string[]"
- },
- config: {
- type: "object"
- },
- "config.content_type": {
- type: "string"
- },
- "config.insecure_ssl": {
- type: "string"
- },
- "config.secret": {
- type: "string"
- },
- "config.url": {
- required: true,
- type: "string"
- },
- events: {
- type: "string[]"
- },
- hook_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- remove_events: {
- type: "string[]"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/hooks/:hook_id"
- },
- updateInformationAboutPagesSite: {
- method: "PUT",
- params: {
- cname: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- source: {
- enum: ['"gh-pages"', '"master"', '"master /docs"'],
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/pages"
- },
- updateInvitation: {
- method: "PATCH",
- params: {
- invitation_id: {
- required: true,
- type: "integer"
- },
- owner: {
- required: true,
- type: "string"
- },
- permissions: {
- enum: ["read", "write", "admin"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/invitations/:invitation_id"
- },
- updateProtectedBranchPullRequestReviewEnforcement: {
- method: "PATCH",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- dismiss_stale_reviews: {
- type: "boolean"
- },
- dismissal_restrictions: {
- type: "object"
- },
- "dismissal_restrictions.teams": {
- type: "string[]"
- },
- "dismissal_restrictions.users": {
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- require_code_owner_reviews: {
- type: "boolean"
- },
- required_approving_review_count: {
- type: "integer"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
- },
- updateProtectedBranchRequiredStatusChecks: {
- method: "PATCH",
- params: {
- branch: {
- required: true,
- type: "string"
- },
- contexts: {
- type: "string[]"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- strict: {
- type: "boolean"
- }
- },
- url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
- },
- updateRelease: {
- method: "PATCH",
- params: {
- body: {
- type: "string"
- },
- draft: {
- type: "boolean"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- prerelease: {
- type: "boolean"
- },
- release_id: {
- required: true,
- type: "integer"
- },
- repo: {
- required: true,
- type: "string"
- },
- tag_name: {
- type: "string"
- },
- target_commitish: {
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/:release_id"
- },
- updateReleaseAsset: {
- method: "PATCH",
- params: {
- asset_id: {
- required: true,
- type: "integer"
- },
- label: {
- type: "string"
- },
- name: {
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- }
- },
- url: "/repos/:owner/:repo/releases/assets/:asset_id"
- },
- uploadReleaseAsset: {
- method: "POST",
- params: {
- data: {
- mapTo: "data",
- required: true,
- type: "string | object"
- },
- file: {
- alias: "data",
- deprecated: true,
- type: "string | object"
- },
- headers: {
- required: true,
- type: "object"
- },
- "headers.content-length": {
- required: true,
- type: "integer"
- },
- "headers.content-type": {
- required: true,
- type: "string"
- },
- label: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- url: {
- required: true,
- type: "string"
- }
- },
- url: ":url"
- }
- },
- search: {
- code: {
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["indexed"],
- type: "string"
- }
- },
- url: "/search/code"
- },
- commits: {
- headers: {
- accept: "application/vnd.github.cloak-preview+json"
- },
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["author-date", "committer-date"],
- type: "string"
- }
- },
- url: "/search/commits"
- },
- issues: {
- deprecated: "octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)",
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["comments", "reactions", "reactions-+1", "reactions--1", "reactions-smile", "reactions-thinking_face", "reactions-heart", "reactions-tada", "interactions", "created", "updated"],
- type: "string"
- }
- },
- url: "/search/issues"
- },
- issuesAndPullRequests: {
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["comments", "reactions", "reactions-+1", "reactions--1", "reactions-smile", "reactions-thinking_face", "reactions-heart", "reactions-tada", "interactions", "created", "updated"],
- type: "string"
- }
- },
- url: "/search/issues"
- },
- labels: {
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- q: {
- required: true,
- type: "string"
- },
- repository_id: {
- required: true,
- type: "integer"
- },
- sort: {
- enum: ["created", "updated"],
- type: "string"
- }
- },
- url: "/search/labels"
- },
- repos: {
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["stars", "forks", "help-wanted-issues", "updated"],
- type: "string"
- }
- },
- url: "/search/repositories"
- },
- topics: {
- method: "GET",
- params: {
- q: {
- required: true,
- type: "string"
- }
- },
- url: "/search/topics"
- },
- users: {
- method: "GET",
- params: {
- order: {
- enum: ["desc", "asc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- q: {
- required: true,
- type: "string"
- },
- sort: {
- enum: ["followers", "repositories", "joined"],
- type: "string"
- }
- },
- url: "/search/users"
- }
- },
- teams: {
- addMember: {
- deprecated: "octokit.teams.addMember() has been renamed to octokit.teams.addMemberLegacy() (2020-01-16)",
- method: "PUT",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- addMemberLegacy: {
- deprecated: "octokit.teams.addMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member-legacy",
- method: "PUT",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- addOrUpdateMembership: {
- deprecated: "octokit.teams.addOrUpdateMembership() has been renamed to octokit.teams.addOrUpdateMembershipLegacy() (2020-01-16)",
- method: "PUT",
- params: {
- role: {
- enum: ["member", "maintainer"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- addOrUpdateMembershipInOrg: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- role: {
- enum: ["member", "maintainer"],
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/memberships/:username"
- },
- addOrUpdateMembershipLegacy: {
- deprecated: "octokit.teams.addOrUpdateMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-or-update-team-membership-legacy",
- method: "PUT",
- params: {
- role: {
- enum: ["member", "maintainer"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- addOrUpdateProject: {
- deprecated: "octokit.teams.addOrUpdateProject() has been renamed to octokit.teams.addOrUpdateProjectLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PUT",
- params: {
- permission: {
- enum: ["read", "write", "admin"],
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- addOrUpdateProjectInOrg: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- permission: {
- enum: ["read", "write", "admin"],
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/projects/:project_id"
- },
- addOrUpdateProjectLegacy: {
- deprecated: "octokit.teams.addOrUpdateProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-project-legacy",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "PUT",
- params: {
- permission: {
- enum: ["read", "write", "admin"],
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- addOrUpdateRepo: {
- deprecated: "octokit.teams.addOrUpdateRepo() has been renamed to octokit.teams.addOrUpdateRepoLegacy() (2020-01-16)",
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- addOrUpdateRepoInOrg: {
- method: "PUT",
- params: {
- org: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo"
- },
- addOrUpdateRepoLegacy: {
- deprecated: "octokit.teams.addOrUpdateRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-repository-legacy",
- method: "PUT",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- checkManagesRepo: {
- deprecated: "octokit.teams.checkManagesRepo() has been renamed to octokit.teams.checkManagesRepoLegacy() (2020-01-16)",
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- checkManagesRepoInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo"
- },
- checkManagesRepoLegacy: {
- deprecated: "octokit.teams.checkManagesRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository-legacy",
- method: "GET",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- create: {
- method: "POST",
- params: {
- description: {
- type: "string"
- },
- maintainers: {
- type: "string[]"
- },
- name: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- parent_team_id: {
- type: "integer"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- privacy: {
- enum: ["secret", "closed"],
- type: "string"
- },
- repo_names: {
- type: "string[]"
- }
- },
- url: "/orgs/:org/teams"
- },
- createDiscussion: {
- deprecated: "octokit.teams.createDiscussion() has been renamed to octokit.teams.createDiscussionLegacy() (2020-01-16)",
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/discussions"
- },
- createDiscussionComment: {
- deprecated: "octokit.teams.createDiscussionComment() has been renamed to octokit.teams.createDiscussionCommentLegacy() (2020-01-16)",
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments"
- },
- createDiscussionCommentInOrg: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments"
- },
- createDiscussionCommentLegacy: {
- deprecated: "octokit.teams.createDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#create-a-comment-legacy",
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments"
- },
- createDiscussionInOrg: {
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- team_slug: {
- required: true,
- type: "string"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions"
- },
- createDiscussionLegacy: {
- deprecated: "octokit.teams.createDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#create-a-discussion-legacy",
- method: "POST",
- params: {
- body: {
- required: true,
- type: "string"
- },
- private: {
- type: "boolean"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- title: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/discussions"
- },
- delete: {
- deprecated: "octokit.teams.delete() has been renamed to octokit.teams.deleteLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- },
- deleteDiscussion: {
- deprecated: "octokit.teams.deleteDiscussion() has been renamed to octokit.teams.deleteDiscussionLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- deleteDiscussionComment: {
- deprecated: "octokit.teams.deleteDiscussionComment() has been renamed to octokit.teams.deleteDiscussionCommentLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- deleteDiscussionCommentInOrg: {
- method: "DELETE",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"
- },
- deleteDiscussionCommentLegacy: {
- deprecated: "octokit.teams.deleteDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#delete-a-comment-legacy",
- method: "DELETE",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- deleteDiscussionInOrg: {
- method: "DELETE",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number"
- },
- deleteDiscussionLegacy: {
- deprecated: "octokit.teams.deleteDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#delete-a-discussion-legacy",
- method: "DELETE",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- deleteInOrg: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug"
- },
- deleteLegacy: {
- deprecated: "octokit.teams.deleteLegacy() is deprecated, see https://developer.github.com/v3/teams/#delete-team-legacy",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- },
- get: {
- deprecated: "octokit.teams.get() has been renamed to octokit.teams.getLegacy() (2020-01-16)",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- },
- getByName: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug"
- },
- getDiscussion: {
- deprecated: "octokit.teams.getDiscussion() has been renamed to octokit.teams.getDiscussionLegacy() (2020-01-16)",
- method: "GET",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- getDiscussionComment: {
- deprecated: "octokit.teams.getDiscussionComment() has been renamed to octokit.teams.getDiscussionCommentLegacy() (2020-01-16)",
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- getDiscussionCommentInOrg: {
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"
- },
- getDiscussionCommentLegacy: {
- deprecated: "octokit.teams.getDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#get-a-single-comment-legacy",
- method: "GET",
- params: {
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- getDiscussionInOrg: {
- method: "GET",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number"
- },
- getDiscussionLegacy: {
- deprecated: "octokit.teams.getDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#get-a-single-discussion-legacy",
- method: "GET",
- params: {
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- getLegacy: {
- deprecated: "octokit.teams.getLegacy() is deprecated, see https://developer.github.com/v3/teams/#get-team-legacy",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- },
- getMember: {
- deprecated: "octokit.teams.getMember() has been renamed to octokit.teams.getMemberLegacy() (2020-01-16)",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- getMemberLegacy: {
- deprecated: "octokit.teams.getMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member-legacy",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- getMembership: {
- deprecated: "octokit.teams.getMembership() has been renamed to octokit.teams.getMembershipLegacy() (2020-01-16)",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- getMembershipInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/memberships/:username"
- },
- getMembershipLegacy: {
- deprecated: "octokit.teams.getMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-membership-legacy",
- method: "GET",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- list: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/orgs/:org/teams"
- },
- listChild: {
- deprecated: "octokit.teams.listChild() has been renamed to octokit.teams.listChildLegacy() (2020-01-16)",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/teams"
- },
- listChildInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/teams"
- },
- listChildLegacy: {
- deprecated: "octokit.teams.listChildLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-child-teams-legacy",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/teams"
- },
- listDiscussionComments: {
- deprecated: "octokit.teams.listDiscussionComments() has been renamed to octokit.teams.listDiscussionCommentsLegacy() (2020-01-16)",
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments"
- },
- listDiscussionCommentsInOrg: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments"
- },
- listDiscussionCommentsLegacy: {
- deprecated: "octokit.teams.listDiscussionCommentsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#list-comments-legacy",
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments"
- },
- listDiscussions: {
- deprecated: "octokit.teams.listDiscussions() has been renamed to octokit.teams.listDiscussionsLegacy() (2020-01-16)",
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions"
- },
- listDiscussionsInOrg: {
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions"
- },
- listDiscussionsLegacy: {
- deprecated: "octokit.teams.listDiscussionsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#list-discussions-legacy",
- method: "GET",
- params: {
- direction: {
- enum: ["asc", "desc"],
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions"
- },
- listForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/teams"
- },
- listMembers: {
- deprecated: "octokit.teams.listMembers() has been renamed to octokit.teams.listMembersLegacy() (2020-01-16)",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- role: {
- enum: ["member", "maintainer", "all"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/members"
- },
- listMembersInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- role: {
- enum: ["member", "maintainer", "all"],
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/members"
- },
- listMembersLegacy: {
- deprecated: "octokit.teams.listMembersLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-team-members-legacy",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- role: {
- enum: ["member", "maintainer", "all"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/members"
- },
- listPendingInvitations: {
- deprecated: "octokit.teams.listPendingInvitations() has been renamed to octokit.teams.listPendingInvitationsLegacy() (2020-01-16)",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/invitations"
- },
- listPendingInvitationsInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/invitations"
- },
- listPendingInvitationsLegacy: {
- deprecated: "octokit.teams.listPendingInvitationsLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-pending-team-invitations-legacy",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/invitations"
- },
- listProjects: {
- deprecated: "octokit.teams.listProjects() has been renamed to octokit.teams.listProjectsLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects"
- },
- listProjectsInOrg: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/projects"
- },
- listProjectsLegacy: {
- deprecated: "octokit.teams.listProjectsLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-projects-legacy",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects"
- },
- listRepos: {
- deprecated: "octokit.teams.listRepos() has been renamed to octokit.teams.listReposLegacy() (2020-01-16)",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos"
- },
- listReposInOrg: {
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/repos"
- },
- listReposLegacy: {
- deprecated: "octokit.teams.listReposLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-repos-legacy",
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos"
- },
- removeMember: {
- deprecated: "octokit.teams.removeMember() has been renamed to octokit.teams.removeMemberLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- removeMemberLegacy: {
- deprecated: "octokit.teams.removeMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member-legacy",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/members/:username"
- },
- removeMembership: {
- deprecated: "octokit.teams.removeMembership() has been renamed to octokit.teams.removeMembershipLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- removeMembershipInOrg: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/memberships/:username"
- },
- removeMembershipLegacy: {
- deprecated: "octokit.teams.removeMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-membership-legacy",
- method: "DELETE",
- params: {
- team_id: {
- required: true,
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/teams/:team_id/memberships/:username"
- },
- removeProject: {
- deprecated: "octokit.teams.removeProject() has been renamed to octokit.teams.removeProjectLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- removeProjectInOrg: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/projects/:project_id"
- },
- removeProjectLegacy: {
- deprecated: "octokit.teams.removeProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-project-legacy",
- method: "DELETE",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- removeRepo: {
- deprecated: "octokit.teams.removeRepo() has been renamed to octokit.teams.removeRepoLegacy() (2020-01-16)",
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- removeRepoInOrg: {
- method: "DELETE",
- params: {
- org: {
- required: true,
- type: "string"
- },
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo"
- },
- removeRepoLegacy: {
- deprecated: "octokit.teams.removeRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-repository-legacy",
- method: "DELETE",
- params: {
- owner: {
- required: true,
- type: "string"
- },
- repo: {
- required: true,
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/repos/:owner/:repo"
- },
- reviewProject: {
- deprecated: "octokit.teams.reviewProject() has been renamed to octokit.teams.reviewProjectLegacy() (2020-01-16)",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- reviewProjectInOrg: {
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- org: {
- required: true,
- type: "string"
- },
- project_id: {
- required: true,
- type: "integer"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/projects/:project_id"
- },
- reviewProjectLegacy: {
- deprecated: "octokit.teams.reviewProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#review-a-team-project-legacy",
- headers: {
- accept: "application/vnd.github.inertia-preview+json"
- },
- method: "GET",
- params: {
- project_id: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/projects/:project_id"
- },
- update: {
- deprecated: "octokit.teams.update() has been renamed to octokit.teams.updateLegacy() (2020-01-16)",
- method: "PATCH",
- params: {
- description: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- parent_team_id: {
- type: "integer"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- privacy: {
- enum: ["secret", "closed"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- },
- updateDiscussion: {
- deprecated: "octokit.teams.updateDiscussion() has been renamed to octokit.teams.updateDiscussionLegacy() (2020-01-16)",
- method: "PATCH",
- params: {
- body: {
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- title: {
- type: "string"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- updateDiscussionComment: {
- deprecated: "octokit.teams.updateDiscussionComment() has been renamed to octokit.teams.updateDiscussionCommentLegacy() (2020-01-16)",
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- updateDiscussionCommentInOrg: {
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number"
- },
- updateDiscussionCommentLegacy: {
- deprecated: "octokit.teams.updateDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#edit-a-comment-legacy",
- method: "PATCH",
- params: {
- body: {
- required: true,
- type: "string"
- },
- comment_number: {
- required: true,
- type: "integer"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
- },
- updateDiscussionInOrg: {
- method: "PATCH",
- params: {
- body: {
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- org: {
- required: true,
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number"
- },
- updateDiscussionLegacy: {
- deprecated: "octokit.teams.updateDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#edit-a-discussion-legacy",
- method: "PATCH",
- params: {
- body: {
- type: "string"
- },
- discussion_number: {
- required: true,
- type: "integer"
- },
- team_id: {
- required: true,
- type: "integer"
- },
- title: {
- type: "string"
- }
- },
- url: "/teams/:team_id/discussions/:discussion_number"
- },
- updateInOrg: {
- method: "PATCH",
- params: {
- description: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- org: {
- required: true,
- type: "string"
- },
- parent_team_id: {
- type: "integer"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- privacy: {
- enum: ["secret", "closed"],
- type: "string"
- },
- team_slug: {
- required: true,
- type: "string"
- }
- },
- url: "/orgs/:org/teams/:team_slug"
- },
- updateLegacy: {
- deprecated: "octokit.teams.updateLegacy() is deprecated, see https://developer.github.com/v3/teams/#edit-team-legacy",
- method: "PATCH",
- params: {
- description: {
- type: "string"
- },
- name: {
- required: true,
- type: "string"
- },
- parent_team_id: {
- type: "integer"
- },
- permission: {
- enum: ["pull", "push", "admin"],
- type: "string"
- },
- privacy: {
- enum: ["secret", "closed"],
- type: "string"
- },
- team_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/teams/:team_id"
- }
- },
- users: {
- addEmails: {
- method: "POST",
- params: {
- emails: {
- required: true,
- type: "string[]"
- }
- },
- url: "/user/emails"
- },
- block: {
- method: "PUT",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/blocks/:username"
- },
- checkBlocked: {
- method: "GET",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/blocks/:username"
- },
- checkFollowing: {
- method: "GET",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/following/:username"
- },
- checkFollowingForUser: {
- method: "GET",
- params: {
- target_user: {
- required: true,
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/following/:target_user"
- },
- createGpgKey: {
- method: "POST",
- params: {
- armored_public_key: {
- type: "string"
- }
- },
- url: "/user/gpg_keys"
- },
- createPublicKey: {
- method: "POST",
- params: {
- key: {
- type: "string"
- },
- title: {
- type: "string"
- }
- },
- url: "/user/keys"
- },
- deleteEmails: {
- method: "DELETE",
- params: {
- emails: {
- required: true,
- type: "string[]"
- }
- },
- url: "/user/emails"
- },
- deleteGpgKey: {
- method: "DELETE",
- params: {
- gpg_key_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/gpg_keys/:gpg_key_id"
- },
- deletePublicKey: {
- method: "DELETE",
- params: {
- key_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/keys/:key_id"
- },
- follow: {
- method: "PUT",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/following/:username"
- },
- getAuthenticated: {
- method: "GET",
- params: {},
- url: "/user"
- },
- getByUsername: {
- method: "GET",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username"
- },
- getContextForUser: {
- method: "GET",
- params: {
- subject_id: {
- type: "string"
- },
- subject_type: {
- enum: ["organization", "repository", "issue", "pull_request"],
- type: "string"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/hovercard"
- },
- getGpgKey: {
- method: "GET",
- params: {
- gpg_key_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/gpg_keys/:gpg_key_id"
- },
- getPublicKey: {
- method: "GET",
- params: {
- key_id: {
- required: true,
- type: "integer"
- }
- },
- url: "/user/keys/:key_id"
- },
- list: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- since: {
- type: "string"
- }
- },
- url: "/users"
- },
- listBlocked: {
- method: "GET",
- params: {},
- url: "/user/blocks"
- },
- listEmails: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/emails"
- },
- listFollowersForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/followers"
- },
- listFollowersForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/followers"
- },
- listFollowingForAuthenticatedUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/following"
- },
- listFollowingForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/following"
- },
- listGpgKeys: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/gpg_keys"
- },
- listGpgKeysForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/gpg_keys"
- },
- listPublicEmails: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/public_emails"
- },
- listPublicKeys: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- }
- },
- url: "/user/keys"
- },
- listPublicKeysForUser: {
- method: "GET",
- params: {
- page: {
- type: "integer"
- },
- per_page: {
- type: "integer"
- },
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/users/:username/keys"
- },
- togglePrimaryEmailVisibility: {
- method: "PATCH",
- params: {
- email: {
- required: true,
- type: "string"
- },
- visibility: {
- required: true,
- type: "string"
- }
- },
- url: "/user/email/visibility"
- },
- unblock: {
- method: "DELETE",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/blocks/:username"
- },
- unfollow: {
- method: "DELETE",
- params: {
- username: {
- required: true,
- type: "string"
- }
- },
- url: "/user/following/:username"
- },
- updateAuthenticated: {
- method: "PATCH",
- params: {
- bio: {
- type: "string"
- },
- blog: {
- type: "string"
- },
- company: {
- type: "string"
- },
- email: {
- type: "string"
- },
- hireable: {
- type: "boolean"
- },
- location: {
- type: "string"
- },
- name: {
- type: "string"
- }
- },
- url: "/user"
- }
- }
-};
-
-const VERSION = "2.4.0";
-
-function registerEndpoints(octokit, routes) {
- Object.keys(routes).forEach(namespaceName => {
- if (!octokit[namespaceName]) {
- octokit[namespaceName] = {};
- }
-
- Object.keys(routes[namespaceName]).forEach(apiName => {
- const apiOptions = routes[namespaceName][apiName];
- const endpointDefaults = ["method", "url", "headers"].reduce((map, key) => {
- if (typeof apiOptions[key] !== "undefined") {
- map[key] = apiOptions[key];
- }
-
- return map;
- }, {});
- endpointDefaults.request = {
- validate: apiOptions.params
- };
- let request = octokit.request.defaults(endpointDefaults); // patch request & endpoint methods to support deprecated parameters.
- // Not the most elegant solution, but we don’t want to move deprecation
- // logic into octokit/endpoint.js as it’s out of scope
-
- const hasDeprecatedParam = Object.keys(apiOptions.params || {}).find(key => apiOptions.params[key].deprecated);
-
- if (hasDeprecatedParam) {
- const patch = patchForDeprecation.bind(null, octokit, apiOptions);
- request = patch(octokit.request.defaults(endpointDefaults), `.${namespaceName}.${apiName}()`);
- request.endpoint = patch(request.endpoint, `.${namespaceName}.${apiName}.endpoint()`);
- request.endpoint.merge = patch(request.endpoint.merge, `.${namespaceName}.${apiName}.endpoint.merge()`);
- }
-
- if (apiOptions.deprecated) {
- octokit[namespaceName][apiName] = Object.assign(function deprecatedEndpointMethod() {
- octokit.log.warn(new deprecation.Deprecation(`[@octokit/rest] ${apiOptions.deprecated}`));
- octokit[namespaceName][apiName] = request;
- return request.apply(null, arguments);
- }, request);
- return;
- }
-
- octokit[namespaceName][apiName] = request;
- });
- });
-}
-
-function patchForDeprecation(octokit, apiOptions, method, methodName) {
- const patchedMethod = options => {
- options = Object.assign({}, options);
- Object.keys(options).forEach(key => {
- if (apiOptions.params[key] && apiOptions.params[key].deprecated) {
- const aliasKey = apiOptions.params[key].alias;
- octokit.log.warn(new deprecation.Deprecation(`[@octokit/rest] "${key}" parameter is deprecated for "${methodName}". Use "${aliasKey}" instead`));
-
- if (!(aliasKey in options)) {
- options[aliasKey] = options[key];
- }
-
- delete options[key];
- }
- });
- return method(options);
- };
-
- Object.keys(method).forEach(key => {
- patchedMethod[key] = method[key];
- });
- return patchedMethod;
-}
-
-/**
- * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary
- * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is
- * done, we will remove the registerEndpoints methods and return the methods
- * directly as with the other plugins. At that point we will also remove the
- * legacy workarounds and deprecations.
- *
- * See the plan at
- * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1
- */
-
-function restEndpointMethods(octokit) {
- // @ts-ignore
- octokit.registerEndpoints = registerEndpoints.bind(null, octokit);
- registerEndpoints(octokit, endpointsByScope); // Aliasing scopes for backward compatibility
- // See https://github.com/octokit/rest.js/pull/1134
-
- [["gitdata", "git"], ["authorization", "oauthAuthorizations"], ["pullRequests", "pulls"]].forEach(([deprecatedScope, scope]) => {
- Object.defineProperty(octokit, deprecatedScope, {
- get() {
- octokit.log.warn( // @ts-ignore
- new deprecation.Deprecation(`[@octokit/plugin-rest-endpoint-methods] "octokit.${deprecatedScope}.*" methods are deprecated, use "octokit.${scope}.*" instead`)); // @ts-ignore
-
- return octokit[scope];
- }
-
- });
- });
- return {};
-}
-restEndpointMethods.VERSION = VERSION;
-
-exports.restEndpointMethods = restEndpointMethods;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 850:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = paginationMethodsPlugin
-
-function paginationMethodsPlugin (octokit) {
- octokit.getFirstPage = __webpack_require__(777).bind(null, octokit)
- octokit.getLastPage = __webpack_require__(649).bind(null, octokit)
- octokit.getNextPage = __webpack_require__(550).bind(null, octokit)
- octokit.getPreviousPage = __webpack_require__(563).bind(null, octokit)
- octokit.hasFirstPage = __webpack_require__(536)
- octokit.hasLastPage = __webpack_require__(336)
- octokit.hasNextPage = __webpack_require__(929)
- octokit.hasPreviousPage = __webpack_require__(558)
-}
-
-
-/***/ }),
-
-/***/ 854:
-/***/ (function(module) {
-
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- symbolTag = '[object Symbol]';
-
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/,
- reLeadingDot = /^\./,
- rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var Symbol = root.Symbol,
- splice = arrayProto.splice;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- nativeCreate = getNative(Object, 'create');
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolToString = symbolProto ? symbolProto.toString : undefined;
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
-function baseGet(object, path) {
- path = isKey(path, object) ? [path] : castPath(path);
-
- var index = 0,
- length = path.length;
-
- while (object != null && index < length) {
- object = object[toKey(path[index++])];
- }
- return (index && index == length) ? object : undefined;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value) {
- return isArray(value) ? value : stringToPath(value);
-}
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
- if (isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoize(function(string) {
- string = toString(string);
-
- var result = [];
- if (reLeadingDot.test(string)) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, string) {
- result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
-});
-
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
- if (typeof value == 'string' || isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result);
- return result;
- };
- memoized.cache = new (memoize.Cache || MapCache);
- return memoized;
-}
-
-// Assign cache to `_.memoize`.
-memoize.Cache = MapCache;
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
-
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
-}
-
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
- return value == null ? '' : baseToString(value);
-}
-
-/**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
-function get(object, path, defaultValue) {
- var result = object == null ? undefined : baseGet(object, path);
- return result === undefined ? defaultValue : result;
-}
-
-module.exports = get;
-
-
-/***/ }),
-
-/***/ 855:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = registerPlugin;
-
-const factory = __webpack_require__(47);
-
-function registerPlugin(plugins, pluginFunction) {
- return factory(
- plugins.includes(pluginFunction) ? plugins : plugins.concat(pluginFunction)
- );
-}
-
-
-/***/ }),
-
-/***/ 856:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = __webpack_require__(141);
-
-
-/***/ }),
-
-/***/ 863:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationBeforeRequest;
-
-const btoa = __webpack_require__(675);
-
-const withAuthorizationPrefix = __webpack_require__(143);
-
-function authenticationBeforeRequest(state, options) {
- if (typeof state.auth === "string") {
- options.headers.authorization = withAuthorizationPrefix(state.auth);
- return;
- }
-
- if (state.auth.username) {
- const hash = btoa(`${state.auth.username}:${state.auth.password}`);
- options.headers.authorization = `Basic ${hash}`;
- if (state.otp) {
- options.headers["x-github-otp"] = state.otp;
- }
- return;
- }
-
- if (state.auth.clientId) {
- // There is a special case for OAuth applications, when `clientId` and `clientSecret` is passed as
- // Basic Authorization instead of query parameters. The only routes where that applies share the same
- // URL though: `/applications/:client_id/tokens/:access_token`.
- //
- // 1. [Check an authorization](https://developer.github.com/v3/oauth_authorizations/#check-an-authorization)
- // 2. [Reset an authorization](https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization)
- // 3. [Revoke an authorization for an application](https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application)
- //
- // We identify by checking the URL. It must merge both "/applications/:client_id/tokens/:access_token"
- // as well as "/applications/123/tokens/token456"
- if (/\/applications\/:?[\w_]+\/tokens\/:?[\w_]+($|\?)/.test(options.url)) {
- const hash = btoa(`${state.auth.clientId}:${state.auth.clientSecret}`);
- options.headers.authorization = `Basic ${hash}`;
- return;
- }
-
- options.url += options.url.indexOf("?") === -1 ? "?" : "&";
- options.url += `client_id=${state.auth.clientId}&client_secret=${state.auth.clientSecret}`;
- return;
- }
-
- return Promise.resolve()
-
- .then(() => {
- return state.auth();
- })
-
- .then(authorization => {
- options.headers.authorization = withAuthorizationPrefix(authorization);
- });
-}
-
-
-/***/ }),
-
-/***/ 866:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-var shebangRegex = __webpack_require__(816);
-
-module.exports = function (str) {
- var match = str.match(shebangRegex);
-
- if (!match) {
- return null;
- }
-
- var arr = match[0].replace(/#! ?/, '').split(' ');
- var bin = arr[0].split('/').pop();
- var arg = arr[1];
-
- return (bin === 'env' ?
- arg :
- bin + (arg ? ' ' + arg : '')
- );
-};
-
-
-/***/ }),
-
-/***/ 874:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const url = __webpack_require__(835);
-const http = __webpack_require__(605);
-const https = __webpack_require__(34);
-let fs;
-let tunnel;
-var HttpCodes;
-(function (HttpCodes) {
- HttpCodes[HttpCodes["OK"] = 200] = "OK";
- HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
- HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
- HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
- HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
- HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
- HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
- HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
- HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
- HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
- HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
- HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
- HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
- HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
- HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
- HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
- HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
- HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
- HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
- HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
- HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
- HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
- HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
- HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
- HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
- HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
-})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
-const HttpRedirectCodes = [HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, HttpCodes.SeeOther, HttpCodes.TemporaryRedirect, HttpCodes.PermanentRedirect];
-const HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout];
-const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
-const ExponentialBackoffCeiling = 10;
-const ExponentialBackoffTimeSlice = 5;
-class HttpClientResponse {
- constructor(message) {
- this.message = message;
- }
- readBody() {
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
- let output = '';
- this.message.on('data', (chunk) => {
- output += chunk;
- });
- this.message.on('end', () => {
- resolve(output);
- });
- }));
- }
-}
-exports.HttpClientResponse = HttpClientResponse;
-function isHttps(requestUrl) {
- let parsedUrl = url.parse(requestUrl);
- return parsedUrl.protocol === 'https:';
-}
-exports.isHttps = isHttps;
-var EnvironmentVariables;
-(function (EnvironmentVariables) {
- EnvironmentVariables["HTTP_PROXY"] = "HTTP_PROXY";
- EnvironmentVariables["HTTPS_PROXY"] = "HTTPS_PROXY";
-})(EnvironmentVariables || (EnvironmentVariables = {}));
-class HttpClient {
- constructor(userAgent, handlers, requestOptions) {
- this._ignoreSslError = false;
- this._allowRedirects = true;
- this._maxRedirects = 50;
- this._allowRetries = false;
- this._maxRetries = 1;
- this._keepAlive = false;
- this._disposed = false;
- this.userAgent = userAgent;
- this.handlers = handlers || [];
- this.requestOptions = requestOptions;
- if (requestOptions) {
- if (requestOptions.ignoreSslError != null) {
- this._ignoreSslError = requestOptions.ignoreSslError;
- }
- this._socketTimeout = requestOptions.socketTimeout;
- this._httpProxy = requestOptions.proxy;
- if (requestOptions.proxy && requestOptions.proxy.proxyBypassHosts) {
- this._httpProxyBypassHosts = [];
- requestOptions.proxy.proxyBypassHosts.forEach(bypass => {
- this._httpProxyBypassHosts.push(new RegExp(bypass, 'i'));
- });
- }
- this._certConfig = requestOptions.cert;
- if (this._certConfig) {
- // If using cert, need fs
- fs = __webpack_require__(747);
- // cache the cert content into memory, so we don't have to read it from disk every time
- if (this._certConfig.caFile && fs.existsSync(this._certConfig.caFile)) {
- this._ca = fs.readFileSync(this._certConfig.caFile, 'utf8');
- }
- if (this._certConfig.certFile && fs.existsSync(this._certConfig.certFile)) {
- this._cert = fs.readFileSync(this._certConfig.certFile, 'utf8');
- }
- if (this._certConfig.keyFile && fs.existsSync(this._certConfig.keyFile)) {
- this._key = fs.readFileSync(this._certConfig.keyFile, 'utf8');
- }
- }
- if (requestOptions.allowRedirects != null) {
- this._allowRedirects = requestOptions.allowRedirects;
- }
- if (requestOptions.maxRedirects != null) {
- this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
- }
- if (requestOptions.keepAlive != null) {
- this._keepAlive = requestOptions.keepAlive;
- }
- if (requestOptions.allowRetries != null) {
- this._allowRetries = requestOptions.allowRetries;
- }
- if (requestOptions.maxRetries != null) {
- this._maxRetries = requestOptions.maxRetries;
- }
- }
- }
- options(requestUrl, additionalHeaders) {
- return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
- }
- get(requestUrl, additionalHeaders) {
- return this.request('GET', requestUrl, null, additionalHeaders || {});
- }
- del(requestUrl, additionalHeaders) {
- return this.request('DELETE', requestUrl, null, additionalHeaders || {});
- }
- post(requestUrl, data, additionalHeaders) {
- return this.request('POST', requestUrl, data, additionalHeaders || {});
- }
- patch(requestUrl, data, additionalHeaders) {
- return this.request('PATCH', requestUrl, data, additionalHeaders || {});
- }
- put(requestUrl, data, additionalHeaders) {
- return this.request('PUT', requestUrl, data, additionalHeaders || {});
- }
- head(requestUrl, additionalHeaders) {
- return this.request('HEAD', requestUrl, null, additionalHeaders || {});
- }
- sendStream(verb, requestUrl, stream, additionalHeaders) {
- return this.request(verb, requestUrl, stream, additionalHeaders);
- }
- /**
- * Makes a raw http request.
- * All other methods such as get, post, patch, and request ultimately call this.
- * Prefer get, del, post and patch
- */
- request(verb, requestUrl, data, headers) {
- return __awaiter(this, void 0, void 0, function* () {
- if (this._disposed) {
- throw new Error("Client has already been disposed.");
- }
- let info = this._prepareRequest(verb, requestUrl, headers);
- // Only perform retries on reads since writes may not be idempotent.
- let maxTries = (this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1) ? this._maxRetries + 1 : 1;
- let numTries = 0;
- let response;
- while (numTries < maxTries) {
- response = yield this.requestRaw(info, data);
- // Check if it's an authentication challenge
- if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {
- let authenticationHandler;
- for (let i = 0; i < this.handlers.length; i++) {
- if (this.handlers[i].canHandleAuthentication(response)) {
- authenticationHandler = this.handlers[i];
- break;
- }
- }
- if (authenticationHandler) {
- return authenticationHandler.handleAuthentication(this, info, data);
- }
- else {
- // We have received an unauthorized response but have no handlers to handle it.
- // Let the response return to the caller.
- return response;
- }
- }
- let redirectsRemaining = this._maxRedirects;
- while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1
- && this._allowRedirects
- && redirectsRemaining > 0) {
- const redirectUrl = response.message.headers["location"];
- if (!redirectUrl) {
- // if there's no location to redirect to, we won't
- break;
- }
- // we need to finish reading the response before reassigning response
- // which will leak the open socket.
- yield response.readBody();
- // let's make the request with the new redirectUrl
- info = this._prepareRequest(verb, redirectUrl, headers);
- response = yield this.requestRaw(info, data);
- redirectsRemaining--;
- }
- if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
- // If not a retry code, return immediately instead of retrying
- return response;
- }
- numTries += 1;
- if (numTries < maxTries) {
- yield response.readBody();
- yield this._performExponentialBackoff(numTries);
- }
- }
- return response;
- });
- }
- /**
- * Needs to be called if keepAlive is set to true in request options.
- */
- dispose() {
- if (this._agent) {
- this._agent.destroy();
- }
- this._disposed = true;
- }
- /**
- * Raw request.
- * @param info
- * @param data
- */
- requestRaw(info, data) {
- return new Promise((resolve, reject) => {
- let callbackForResult = function (err, res) {
- if (err) {
- reject(err);
- }
- resolve(res);
- };
- this.requestRawWithCallback(info, data, callbackForResult);
- });
- }
- /**
- * Raw request with callback.
- * @param info
- * @param data
- * @param onResult
- */
- requestRawWithCallback(info, data, onResult) {
- let socket;
- let isDataString = typeof (data) === 'string';
- if (typeof (data) === 'string') {
- info.options.headers["Content-Length"] = Buffer.byteLength(data, 'utf8');
- }
- let callbackCalled = false;
- let handleResult = (err, res) => {
- if (!callbackCalled) {
- callbackCalled = true;
- onResult(err, res);
- }
- };
- let req = info.httpModule.request(info.options, (msg) => {
- let res = new HttpClientResponse(msg);
- handleResult(null, res);
- });
- req.on('socket', (sock) => {
- socket = sock;
- });
- // If we ever get disconnected, we want the socket to timeout eventually
- req.setTimeout(this._socketTimeout || 3 * 60000, () => {
- if (socket) {
- socket.end();
- }
- handleResult(new Error('Request timeout: ' + info.options.path), null);
- });
- req.on('error', function (err) {
- // err has statusCode property
- // res should have headers
- handleResult(err, null);
- });
- if (data && typeof (data) === 'string') {
- req.write(data, 'utf8');
- }
- if (data && typeof (data) !== 'string') {
- data.on('close', function () {
- req.end();
- });
- data.pipe(req);
- }
- else {
- req.end();
- }
- }
- _prepareRequest(method, requestUrl, headers) {
- const info = {};
- info.parsedUrl = url.parse(requestUrl);
- const usingSsl = info.parsedUrl.protocol === 'https:';
- info.httpModule = usingSsl ? https : http;
- const defaultPort = usingSsl ? 443 : 80;
- info.options = {};
- info.options.host = info.parsedUrl.hostname;
- info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort;
- info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
- info.options.method = method;
- info.options.headers = this._mergeHeaders(headers);
- info.options.headers["user-agent"] = this.userAgent;
- info.options.agent = this._getAgent(requestUrl);
- // gives handlers an opportunity to participate
- if (this.handlers && !this._isPresigned(requestUrl)) {
- this.handlers.forEach((handler) => {
- handler.prepareRequest(info.options);
- });
- }
- return info;
- }
- _isPresigned(requestUrl) {
- if (this.requestOptions && this.requestOptions.presignedUrlPatterns) {
- const patterns = this.requestOptions.presignedUrlPatterns;
- for (let i = 0; i < patterns.length; i++) {
- if (requestUrl.match(patterns[i])) {
- return true;
- }
- }
- }
- return false;
- }
- _mergeHeaders(headers) {
- const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
- if (this.requestOptions && this.requestOptions.headers) {
- return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
- }
- return lowercaseKeys(headers || {});
- }
- _getAgent(requestUrl) {
- let agent;
- let proxy = this._getProxy(requestUrl);
- let useProxy = proxy.proxyUrl && proxy.proxyUrl.hostname && !this._isBypassProxy(requestUrl);
- if (this._keepAlive && useProxy) {
- agent = this._proxyAgent;
- }
- if (this._keepAlive && !useProxy) {
- agent = this._agent;
- }
- // if agent is already assigned use that agent.
- if (!!agent) {
- return agent;
- }
- let parsedUrl = url.parse(requestUrl);
- const usingSsl = parsedUrl.protocol === 'https:';
- let maxSockets = 100;
- if (!!this.requestOptions) {
- maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
- }
- if (useProxy) {
- // If using proxy, need tunnel
- if (!tunnel) {
- tunnel = __webpack_require__(856);
- }
- const agentOptions = {
- maxSockets: maxSockets,
- keepAlive: this._keepAlive,
- proxy: {
- proxyAuth: proxy.proxyAuth,
- host: proxy.proxyUrl.hostname,
- port: proxy.proxyUrl.port
- },
- };
- let tunnelAgent;
- const overHttps = proxy.proxyUrl.protocol === 'https:';
- if (usingSsl) {
- tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
- }
- else {
- tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
- }
- agent = tunnelAgent(agentOptions);
- this._proxyAgent = agent;
- }
- // if reusing agent across request and tunneling agent isn't assigned create a new agent
- if (this._keepAlive && !agent) {
- const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
- agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
- this._agent = agent;
- }
- // if not using private agent and tunnel agent isn't setup then use global agent
- if (!agent) {
- agent = usingSsl ? https.globalAgent : http.globalAgent;
- }
- if (usingSsl && this._ignoreSslError) {
- // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
- // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
- // we have to cast it to any and change it directly
- agent.options = Object.assign(agent.options || {}, { rejectUnauthorized: false });
- }
- if (usingSsl && this._certConfig) {
- agent.options = Object.assign(agent.options || {}, { ca: this._ca, cert: this._cert, key: this._key, passphrase: this._certConfig.passphrase });
- }
- return agent;
- }
- _getProxy(requestUrl) {
- const parsedUrl = url.parse(requestUrl);
- let usingSsl = parsedUrl.protocol === 'https:';
- let proxyConfig = this._httpProxy;
- // fallback to http_proxy and https_proxy env
- let https_proxy = process.env[EnvironmentVariables.HTTPS_PROXY];
- let http_proxy = process.env[EnvironmentVariables.HTTP_PROXY];
- if (!proxyConfig) {
- if (https_proxy && usingSsl) {
- proxyConfig = {
- proxyUrl: https_proxy
- };
- }
- else if (http_proxy) {
- proxyConfig = {
- proxyUrl: http_proxy
- };
- }
- }
- let proxyUrl;
- let proxyAuth;
- if (proxyConfig) {
- if (proxyConfig.proxyUrl.length > 0) {
- proxyUrl = url.parse(proxyConfig.proxyUrl);
- }
- if (proxyConfig.proxyUsername || proxyConfig.proxyPassword) {
- proxyAuth = proxyConfig.proxyUsername + ":" + proxyConfig.proxyPassword;
- }
- }
- return { proxyUrl: proxyUrl, proxyAuth: proxyAuth };
- }
- _isBypassProxy(requestUrl) {
- if (!this._httpProxyBypassHosts) {
- return false;
- }
- let bypass = false;
- this._httpProxyBypassHosts.forEach(bypassHost => {
- if (bypassHost.test(requestUrl)) {
- bypass = true;
- }
- });
- return bypass;
- }
- _performExponentialBackoff(retryNumber) {
- retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
- const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
- return new Promise(resolve => setTimeout(() => resolve(), ms));
- }
-}
-exports.HttpClient = HttpClient;
-
-
-/***/ }),
-
-/***/ 881:
-/***/ (function(module) {
-
-"use strict";
-
-
-const isWin = process.platform === 'win32';
-
-function notFoundError(original, syscall) {
- return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
- code: 'ENOENT',
- errno: 'ENOENT',
- syscall: `${syscall} ${original.command}`,
- path: original.command,
- spawnargs: original.args,
- });
-}
-
-function hookChildProcess(cp, parsed) {
- if (!isWin) {
- return;
- }
-
- const originalEmit = cp.emit;
-
- cp.emit = function (name, arg1) {
- // If emitting "exit" event and exit code is 1, we need to check if
- // the command exists and emit an "error" instead
- // See https://github.com/IndigoUnited/node-cross-spawn/issues/16
- if (name === 'exit') {
- const err = verifyENOENT(arg1, parsed, 'spawn');
-
- if (err) {
- return originalEmit.call(cp, 'error', err);
- }
- }
-
- return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
- };
-}
-
-function verifyENOENT(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawn');
- }
-
- return null;
-}
-
-function verifyENOENTSync(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawnSync');
- }
-
- return null;
-}
-
-module.exports = {
- hookChildProcess,
- verifyENOENT,
- verifyENOENTSync,
- notFoundError,
-};
-
-
-/***/ }),
-
-/***/ 883:
-/***/ (function(module) {
-
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- symbolTag = '[object Symbol]';
-
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/,
- reLeadingDot = /^\./,
- rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var Symbol = root.Symbol,
- splice = arrayProto.splice;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- nativeCreate = getNative(Object, 'create');
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolToString = symbolProto ? symbolProto.toString : undefined;
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignValue(object, key, value) {
- var objValue = object[key];
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
- (value === undefined && !(key in object))) {
- object[key] = value;
- }
-}
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseSet(object, path, value, customizer) {
- if (!isObject(object)) {
- return object;
- }
- path = isKey(path, object) ? [path] : castPath(path);
-
- var index = -1,
- length = path.length,
- lastIndex = length - 1,
- nested = object;
-
- while (nested != null && ++index < length) {
- var key = toKey(path[index]),
- newValue = value;
-
- if (index != lastIndex) {
- var objValue = nested[key];
- newValue = customizer ? customizer(objValue, key, nested) : undefined;
- if (newValue === undefined) {
- newValue = isObject(objValue)
- ? objValue
- : (isIndex(path[index + 1]) ? [] : {});
- }
- }
- assignValue(nested, key, newValue);
- nested = nested[key];
- }
- return object;
-}
-
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value) {
- return isArray(value) ? value : stringToPath(value);
-}
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
- length = length == null ? MAX_SAFE_INTEGER : length;
- return !!length &&
- (typeof value == 'number' || reIsUint.test(value)) &&
- (value > -1 && value % 1 == 0 && value < length);
-}
-
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
- if (isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoize(function(string) {
- string = toString(string);
-
- var result = [];
- if (reLeadingDot.test(string)) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, string) {
- result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
-});
-
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
- if (typeof value == 'string' || isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result);
- return result;
- };
- memoized.cache = new (memoize.Cache || MapCache);
- return memoized;
-}
-
-// Assign cache to `_.memoize`.
-memoize.Cache = MapCache;
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
-
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
-}
-
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
- return value == null ? '' : baseToString(value);
-}
-
-/**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
-function set(object, path, value) {
- return object == null ? object : baseSet(object, path, value);
-}
-
-module.exports = set;
-
-
-/***/ }),
-
-/***/ 898:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-var request = __webpack_require__(753);
-var universalUserAgent = __webpack_require__(796);
-
-const VERSION = "4.3.1";
-
-class GraphqlError extends Error {
- constructor(request, response) {
- const message = response.data.errors[0].message;
- super(message);
- Object.assign(this, response.data);
- this.name = "GraphqlError";
- this.request = request; // Maintains proper stack trace (only available on V8)
-
- /* istanbul ignore next */
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- }
-
-}
-
-const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query"];
-function graphql(request, query, options) {
- options = typeof query === "string" ? options = Object.assign({
- query
- }, options) : options = query;
- const requestOptions = Object.keys(options).reduce((result, key) => {
- if (NON_VARIABLE_OPTIONS.includes(key)) {
- result[key] = options[key];
- return result;
- }
-
- if (!result.variables) {
- result.variables = {};
- }
-
- result.variables[key] = options[key];
- return result;
- }, {});
- return request(requestOptions).then(response => {
- if (response.data.errors) {
- throw new GraphqlError(requestOptions, {
- data: response.data
- });
- }
-
- return response.data.data;
- });
-}
-
-function withDefaults(request$1, newDefaults) {
- const newRequest = request$1.defaults(newDefaults);
-
- const newApi = (query, options) => {
- return graphql(newRequest, query, options);
- };
-
- return Object.assign(newApi, {
- defaults: withDefaults.bind(null, newRequest),
- endpoint: request.request.endpoint
- });
-}
-
-const graphql$1 = withDefaults(request.request, {
- headers: {
- "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}`
- },
- method: "POST",
- url: "/graphql"
-});
-function withCustomRequest(customRequest) {
- return withDefaults(customRequest, {
- method: "POST",
- url: "/graphql"
- });
-}
-
-exports.graphql = graphql$1;
-exports.withCustomRequest = withCustomRequest;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 916:
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-const VERSION = "1.0.0";
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function requestLog(octokit) {
- octokit.hook.wrap("request", (request, options) => {
- octokit.log.debug("request", options);
- const start = Date.now();
- const requestOptions = octokit.request.endpoint.parse(options);
- const path = requestOptions.url.replace(options.baseUrl, "");
- return request(options).then(response => {
- octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
- return response;
- }).catch(error => {
- octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
- throw error;
- });
- });
-}
-requestLog.VERSION = VERSION;
-
-exports.requestLog = requestLog;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 929:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = hasNextPage
-
-const deprecate = __webpack_require__(370)
-const getPageLinks = __webpack_require__(577)
-
-function hasNextPage (link) {
- deprecate(`octokit.hasNextPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
- return getPageLinks(link).next
-}
-
-
-/***/ }),
-
-/***/ 948:
-/***/ (function(module) {
-
-"use strict";
-
-
-/**
- * Tries to execute a function and discards any error that occurs.
- * @param {Function} fn - Function that might or might not throw an error.
- * @returns {?*} Return-value of the function when no error occurred.
- */
-module.exports = function(fn) {
-
- try { return fn() } catch (e) {}
-
-}
-
-/***/ }),
-
-/***/ 950:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const url = __webpack_require__(835);
-function getProxyUrl(reqUrl) {
- let usingSsl = reqUrl.protocol === 'https:';
- let proxyUrl;
- if (checkBypass(reqUrl)) {
- return proxyUrl;
- }
- let proxyVar;
- if (usingSsl) {
- proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
- }
- else {
- proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
- }
- if (proxyVar) {
- proxyUrl = url.parse(proxyVar);
- }
- return proxyUrl;
-}
-exports.getProxyUrl = getProxyUrl;
-function checkBypass(reqUrl) {
- if (!reqUrl.hostname) {
- return false;
- }
- let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
- if (!noProxy) {
- return false;
- }
- // Determine the request port
- let reqPort;
- if (reqUrl.port) {
- reqPort = Number(reqUrl.port);
- }
- else if (reqUrl.protocol === 'http:') {
- reqPort = 80;
- }
- else if (reqUrl.protocol === 'https:') {
- reqPort = 443;
- }
- // Format the request hostname and hostname with port
- let upperReqHosts = [reqUrl.hostname.toUpperCase()];
- if (typeof reqPort === 'number') {
- upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
- }
- // Compare request host against noproxy
- for (let upperNoProxyItem of noProxy
- .split(',')
- .map(x => x.trim().toUpperCase())
- .filter(x => x)) {
- if (upperReqHosts.some(x => x === upperNoProxyItem)) {
- return true;
- }
- }
- return false;
-}
-exports.checkBypass = checkBypass;
-
-
-/***/ }),
-
-/***/ 954:
-/***/ (function(module) {
-
-module.exports = validateAuth;
-
-function validateAuth(auth) {
- if (typeof auth === "string") {
- return;
- }
-
- if (typeof auth === "function") {
- return;
- }
-
- if (auth.username && auth.password) {
- return;
- }
-
- if (auth.clientId && auth.clientSecret) {
- return;
- }
-
- throw new Error(`Invalid "auth" option: ${JSON.stringify(auth)}`);
-}
-
-
-/***/ }),
-
-/***/ 955:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const path = __webpack_require__(622);
-const childProcess = __webpack_require__(129);
-const crossSpawn = __webpack_require__(20);
-const stripEof = __webpack_require__(768);
-const npmRunPath = __webpack_require__(621);
-const isStream = __webpack_require__(323);
-const _getStream = __webpack_require__(145);
-const pFinally = __webpack_require__(697);
-const onExit = __webpack_require__(260);
-const errname = __webpack_require__(427);
-const stdio = __webpack_require__(168);
-
-const TEN_MEGABYTES = 1000 * 1000 * 10;
-
-function handleArgs(cmd, args, opts) {
- let parsed;
-
- opts = Object.assign({
- extendEnv: true,
- env: {}
- }, opts);
-
- if (opts.extendEnv) {
- opts.env = Object.assign({}, process.env, opts.env);
- }
-
- if (opts.__winShell === true) {
- delete opts.__winShell;
- parsed = {
- command: cmd,
- args,
- options: opts,
- file: cmd,
- original: {
- cmd,
- args
- }
- };
- } else {
- parsed = crossSpawn._parse(cmd, args, opts);
- }
-
- opts = Object.assign({
- maxBuffer: TEN_MEGABYTES,
- buffer: true,
- stripEof: true,
- preferLocal: true,
- localDir: parsed.options.cwd || process.cwd(),
- encoding: 'utf8',
- reject: true,
- cleanup: true
- }, parsed.options);
-
- opts.stdio = stdio(opts);
-
- if (opts.preferLocal) {
- opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir}));
- }
-
- if (opts.detached) {
- // #115
- opts.cleanup = false;
- }
-
- if (process.platform === 'win32' && path.basename(parsed.command) === 'cmd.exe') {
- // #116
- parsed.args.unshift('/q');
- }
-
- return {
- cmd: parsed.command,
- args: parsed.args,
- opts,
- parsed
- };
-}
-
-function handleInput(spawned, input) {
- if (input === null || input === undefined) {
- return;
- }
-
- if (isStream(input)) {
- input.pipe(spawned.stdin);
- } else {
- spawned.stdin.end(input);
- }
-}
-
-function handleOutput(opts, val) {
- if (val && opts.stripEof) {
- val = stripEof(val);
- }
-
- return val;
-}
-
-function handleShell(fn, cmd, opts) {
- let file = '/bin/sh';
- let args = ['-c', cmd];
-
- opts = Object.assign({}, opts);
-
- if (process.platform === 'win32') {
- opts.__winShell = true;
- file = process.env.comspec || 'cmd.exe';
- args = ['/s', '/c', `"${cmd}"`];
- opts.windowsVerbatimArguments = true;
- }
-
- if (opts.shell) {
- file = opts.shell;
- delete opts.shell;
- }
-
- return fn(file, args, opts);
-}
-
-function getStream(process, stream, {encoding, buffer, maxBuffer}) {
- if (!process[stream]) {
- return null;
- }
-
- let ret;
-
- if (!buffer) {
- // TODO: Use `ret = util.promisify(stream.finished)(process[stream]);` when targeting Node.js 10
- ret = new Promise((resolve, reject) => {
- process[stream]
- .once('end', resolve)
- .once('error', reject);
- });
- } else if (encoding) {
- ret = _getStream(process[stream], {
- encoding,
- maxBuffer
- });
- } else {
- ret = _getStream.buffer(process[stream], {maxBuffer});
- }
-
- return ret.catch(err => {
- err.stream = stream;
- err.message = `${stream} ${err.message}`;
- throw err;
- });
-}
-
-function makeError(result, options) {
- const {stdout, stderr} = result;
-
- let err = result.error;
- const {code, signal} = result;
-
- const {parsed, joinedCmd} = options;
- const timedOut = options.timedOut || false;
-
- if (!err) {
- let output = '';
-
- if (Array.isArray(parsed.opts.stdio)) {
- if (parsed.opts.stdio[2] !== 'inherit') {
- output += output.length > 0 ? stderr : `\n${stderr}`;
- }
-
- if (parsed.opts.stdio[1] !== 'inherit') {
- output += `\n${stdout}`;
- }
- } else if (parsed.opts.stdio !== 'inherit') {
- output = `\n${stderr}${stdout}`;
- }
-
- err = new Error(`Command failed: ${joinedCmd}${output}`);
- err.code = code < 0 ? errname(code) : code;
- }
-
- err.stdout = stdout;
- err.stderr = stderr;
- err.failed = true;
- err.signal = signal || null;
- err.cmd = joinedCmd;
- err.timedOut = timedOut;
-
- return err;
-}
-
-function joinCmd(cmd, args) {
- let joinedCmd = cmd;
-
- if (Array.isArray(args) && args.length > 0) {
- joinedCmd += ' ' + args.join(' ');
- }
-
- return joinedCmd;
-}
-
-module.exports = (cmd, args, opts) => {
- const parsed = handleArgs(cmd, args, opts);
- const {encoding, buffer, maxBuffer} = parsed.opts;
- const joinedCmd = joinCmd(cmd, args);
-
- let spawned;
- try {
- spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
- } catch (err) {
- return Promise.reject(err);
- }
-
- let removeExitHandler;
- if (parsed.opts.cleanup) {
- removeExitHandler = onExit(() => {
- spawned.kill();
- });
- }
-
- let timeoutId = null;
- let timedOut = false;
-
- const cleanup = () => {
- if (timeoutId) {
- clearTimeout(timeoutId);
- timeoutId = null;
- }
-
- if (removeExitHandler) {
- removeExitHandler();
- }
- };
-
- if (parsed.opts.timeout > 0) {
- timeoutId = setTimeout(() => {
- timeoutId = null;
- timedOut = true;
- spawned.kill(parsed.opts.killSignal);
- }, parsed.opts.timeout);
- }
-
- const processDone = new Promise(resolve => {
- spawned.on('exit', (code, signal) => {
- cleanup();
- resolve({code, signal});
- });
-
- spawned.on('error', err => {
- cleanup();
- resolve({error: err});
- });
-
- if (spawned.stdin) {
- spawned.stdin.on('error', err => {
- cleanup();
- resolve({error: err});
- });
- }
- });
-
- function destroy() {
- if (spawned.stdout) {
- spawned.stdout.destroy();
- }
-
- if (spawned.stderr) {
- spawned.stderr.destroy();
- }
- }
-
- const handlePromise = () => pFinally(Promise.all([
- processDone,
- getStream(spawned, 'stdout', {encoding, buffer, maxBuffer}),
- getStream(spawned, 'stderr', {encoding, buffer, maxBuffer})
- ]).then(arr => {
- const result = arr[0];
- result.stdout = arr[1];
- result.stderr = arr[2];
-
- if (result.error || result.code !== 0 || result.signal !== null) {
- const err = makeError(result, {
- joinedCmd,
- parsed,
- timedOut
- });
-
- // TODO: missing some timeout logic for killed
- // https://github.com/nodejs/node/blob/master/lib/child_process.js#L203
- // err.killed = spawned.killed || killed;
- err.killed = err.killed || spawned.killed;
-
- if (!parsed.opts.reject) {
- return err;
- }
-
- throw err;
- }
-
- return {
- stdout: handleOutput(parsed.opts, result.stdout),
- stderr: handleOutput(parsed.opts, result.stderr),
- code: 0,
- failed: false,
- killed: false,
- signal: null,
- cmd: joinedCmd,
- timedOut: false
- };
- }), destroy);
-
- crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
-
- handleInput(spawned, parsed.opts.input);
-
- spawned.then = (onfulfilled, onrejected) => handlePromise().then(onfulfilled, onrejected);
- spawned.catch = onrejected => handlePromise().catch(onrejected);
-
- return spawned;
-};
-
-// TODO: set `stderr: 'ignore'` when that option is implemented
-module.exports.stdout = (...args) => module.exports(...args).then(x => x.stdout);
-
-// TODO: set `stdout: 'ignore'` when that option is implemented
-module.exports.stderr = (...args) => module.exports(...args).then(x => x.stderr);
-
-module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts);
-
-module.exports.sync = (cmd, args, opts) => {
- const parsed = handleArgs(cmd, args, opts);
- const joinedCmd = joinCmd(cmd, args);
-
- if (isStream(parsed.opts.input)) {
- throw new TypeError('The `input` option cannot be a stream in sync mode');
- }
-
- const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts);
- result.code = result.status;
-
- if (result.error || result.status !== 0 || result.signal !== null) {
- const err = makeError(result, {
- joinedCmd,
- parsed
- });
-
- if (!parsed.opts.reject) {
- return err;
- }
-
- throw err;
- }
-
- return {
- stdout: handleOutput(parsed.opts, result.stdout),
- stderr: handleOutput(parsed.opts, result.stderr),
- code: 0,
- failed: false,
- signal: null,
- cmd: joinedCmd,
- timedOut: false
- };
-};
-
-module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts);
-
-
-/***/ }),
-
-/***/ 966:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-"use strict";
-
-const {PassThrough} = __webpack_require__(413);
-
-module.exports = options => {
- options = Object.assign({}, options);
-
- const {array} = options;
- let {encoding} = options;
- const buffer = encoding === 'buffer';
- let objectMode = false;
-
- if (array) {
- objectMode = !(encoding || buffer);
- } else {
- encoding = encoding || 'utf8';
- }
-
- if (buffer) {
- encoding = null;
- }
-
- let len = 0;
- const ret = [];
- const stream = new PassThrough({objectMode});
-
- if (encoding) {
- stream.setEncoding(encoding);
- }
-
- stream.on('data', chunk => {
- ret.push(chunk);
-
- if (objectMode) {
- len = ret.length;
- } else {
- len += chunk.length;
- }
- });
-
- stream.getBufferedValue = () => {
- if (array) {
- return ret;
- }
-
- return buffer ? Buffer.concat(ret, len) : ret.join('');
- };
-
- stream.getBufferedLength = () => len;
-
- return stream;
-};
-
-
-/***/ }),
-
-/***/ 969:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-var wrappy = __webpack_require__(11)
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
-
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
-
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
-
-function once (fn) {
- var f = function () {
- if (f.called) return f.value
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- f.called = false
- return f
-}
-
-function onceStrict (fn) {
- var f = function () {
- if (f.called)
- throw new Error(f.onceError)
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- var name = fn.name || 'Function wrapped with `once`'
- f.onceError = name + " shouldn't be called more than once"
- f.called = false
- return f
-}
-
-
-/***/ }),
-
-/***/ 986:
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const tr = __webpack_require__(9);
-/**
- * Exec a command.
- * Output will be streamed to the live console.
- * Returns promise with return code
- *
- * @param commandLine command to execute (can include additional args). Must be correctly escaped.
- * @param args optional arguments for tool. Escaping is handled by the lib.
- * @param options optional exec options. See ExecOptions
- * @returns Promise exit code
- */
-function exec(commandLine, args, options) {
- return __awaiter(this, void 0, void 0, function* () {
- const commandArgs = tr.argStringToArray(commandLine);
- if (commandArgs.length === 0) {
- throw new Error(`Parameter 'commandLine' cannot be null or empty.`);
- }
- // Path to tool to execute should be first arg
- const toolPath = commandArgs[0];
- args = commandArgs.slice(1).concat(args || []);
- const runner = new tr.ToolRunner(toolPath, args, options);
- return runner.exec();
- });
-}
-exports.exec = exec;
-//# sourceMappingURL=exec.js.map
-
-/***/ }),
-
-/***/ 991:
-/***/ (function(module, __unusedexports, __webpack_require__) {
-
-module.exports = authenticationRequestError;
-
-const { RequestError } = __webpack_require__(497);
-
-function authenticationRequestError(state, error, options) {
- if (!error.headers) throw error;
-
- const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
- // handle "2FA required" error only
- if (error.status !== 401 || !otpRequired) {
- throw error;
- }
-
- if (
- error.status === 401 &&
- otpRequired &&
- error.request &&
- error.request.headers["x-github-otp"]
- ) {
- if (state.otp) {
- delete state.otp; // no longer valid, request again
- } else {
- throw new RequestError(
- "Invalid one-time password for two-factor authentication",
- 401,
- {
- headers: error.headers,
- request: options
- }
- );
- }
- }
-
- if (typeof state.auth.on2fa !== "function") {
- throw new RequestError(
- "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
- 401,
- {
- headers: error.headers,
- request: options
- }
- );
- }
-
- return Promise.resolve()
- .then(() => {
- return state.auth.on2fa();
- })
- .then(oneTimePassword => {
- const newOptions = Object.assign(options, {
- headers: Object.assign(options.headers, {
- "x-github-otp": oneTimePassword
- })
- });
- return state.octokit.request(newOptions).then(response => {
- // If OTP still valid, then persist it for following requests
- state.otp = oneTimePassword;
- return response;
- });
- });
-}
-
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/dist/problem-matcher.json b/dist/problem-matcher.json
deleted file mode 100644
index 071f2cb..0000000
--- a/dist/problem-matcher.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "problemMatcher": [
- {
- "owner": "checkout-git",
- "pattern": [
- {
- "regexp": "^(fatal|error): (.*)$",
- "message": 2
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/jest.config.js b/jest.config.js
deleted file mode 100644
index 563d4cc..0000000
--- a/jest.config.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = {
- clearMocks: true,
- moduleFileExtensions: ['js', 'ts'],
- testEnvironment: 'node',
- testMatch: ['**/*.test.ts'],
- testRunner: 'jest-circus/runner',
- transform: {
- '^.+\\.ts$': 'ts-jest'
- },
- verbose: true
-}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 5360225..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,7135 +0,0 @@
-{
- "name": "checkout",
- "version": "2.0.2",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@actions/core": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
- "integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw=="
- },
- "@actions/exec": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.1.tgz",
- "integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
- },
- "@actions/github": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.2.0.tgz",
- "integrity": "sha512-9UAZqn8ywdR70n3GwVle4N8ALosQs4z50N7XMXrSTUVOmVpaBC5kE3TRTT7qQdi3OaQV24mjGuJZsHUmhD+ZXw==",
- "requires": {
- "@actions/http-client": "^1.0.3",
- "@octokit/graphql": "^4.3.1",
- "@octokit/rest": "^16.43.1"
- }
- },
- "@actions/http-client": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz",
- "integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==",
- "requires": {
- "tunnel": "0.0.6"
- },
- "dependencies": {
- "tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
- }
- }
- },
- "@actions/io": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
- "integrity": "sha512-rhq+tfZukbtaus7xyUtwKfuiCRXd1hWSfmJNEpFgBQJ4woqPEpsBw04awicjwz9tyG2/MVhAEMfVn664Cri5zA=="
- },
- "@actions/tool-cache": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.2.tgz",
- "integrity": "sha512-IJczPaZr02ECa3Lgws/TJEVco9tjOujiQSZbO3dHuXXjhd5vrUtfOgGwhmz3/f97L910OraPZ8SknofUk6RvOQ==",
- "requires": {
- "@actions/core": "^1.1.0",
- "@actions/exec": "^1.0.1",
- "@actions/io": "^1.0.1",
- "semver": "^6.1.0",
- "typed-rest-client": "^1.4.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "@babel/code-frame": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
- "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.0.0"
- }
- },
- "@babel/core": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.4.tgz",
- "integrity": "sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helpers": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "json5": "^2.1.0",
- "lodash": "^4.17.13",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/generator": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz",
- "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
- "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
- "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
- "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/parser": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz",
- "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
- "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/traverse": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
- "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helper-function-name": "^7.7.4",
- "@babel/helper-split-export-declaration": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/generator": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz",
- "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.2",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz",
- "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.7.0",
- "@babel/template": "^7.7.0",
- "@babel/types": "^7.7.0"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz",
- "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.0"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
- "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
- "dev": true
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz",
- "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.0"
- }
- },
- "@babel/helpers": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
- "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4"
- },
- "dependencies": {
- "@babel/generator": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz",
- "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
- "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
- "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
- "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/parser": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz",
- "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
- "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/traverse": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
- "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helper-function-name": "^7.7.4",
- "@babel/helper-split-export-declaration": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/highlight": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
- "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
- "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==",
- "dev": true
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz",
- "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
- }
- },
- "@babel/runtime": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz",
- "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==",
- "dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.2"
- }
- },
- "@babel/template": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz",
- "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.0",
- "@babel/types": "^7.7.0"
- }
- },
- "@babel/traverse": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz",
- "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.2",
- "@babel/helper-function-name": "^7.7.0",
- "@babel/helper-split-export-declaration": "^7.7.0",
- "@babel/parser": "^7.7.2",
- "@babel/types": "^7.7.2",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "@babel/types": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz",
- "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@cnakazawa/watch": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
- "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
- "dev": true,
- "requires": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "@jest/console": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
- "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
- "dev": true,
- "requires": {
- "@jest/source-map": "^24.9.0",
- "chalk": "^2.0.1",
- "slash": "^2.0.0"
- }
- },
- "@jest/core": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz",
- "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.7.1",
- "@jest/reporters": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/transform": "^24.9.0",
- "@jest/types": "^24.9.0",
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.1.15",
- "jest-changed-files": "^24.9.0",
- "jest-config": "^24.9.0",
- "jest-haste-map": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-regex-util": "^24.3.0",
- "jest-resolve": "^24.9.0",
- "jest-resolve-dependencies": "^24.9.0",
- "jest-runner": "^24.9.0",
- "jest-runtime": "^24.9.0",
- "jest-snapshot": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-validate": "^24.9.0",
- "jest-watcher": "^24.9.0",
- "micromatch": "^3.1.10",
- "p-each-series": "^1.0.0",
- "realpath-native": "^1.1.0",
- "rimraf": "^2.5.4",
- "slash": "^2.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "@jest/environment": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
- "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^24.9.0",
- "@jest/transform": "^24.9.0",
- "@jest/types": "^24.9.0",
- "jest-mock": "^24.9.0"
- }
- },
- "@jest/fake-timers": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
- "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-mock": "^24.9.0"
- }
- },
- "@jest/reporters": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz",
- "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/transform": "^24.9.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "istanbul-lib-coverage": "^2.0.2",
- "istanbul-lib-instrument": "^3.0.1",
- "istanbul-lib-report": "^2.0.4",
- "istanbul-lib-source-maps": "^3.0.1",
- "istanbul-reports": "^2.2.6",
- "jest-haste-map": "^24.9.0",
- "jest-resolve": "^24.9.0",
- "jest-runtime": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-worker": "^24.6.0",
- "node-notifier": "^5.4.2",
- "slash": "^2.0.0",
- "source-map": "^0.6.0",
- "string-length": "^2.0.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/source-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
- "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.1.15",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/test-result": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
- "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/istanbul-lib-coverage": "^2.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz",
- "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^24.9.0",
- "jest-haste-map": "^24.9.0",
- "jest-runner": "^24.9.0",
- "jest-runtime": "^24.9.0"
- }
- },
- "@jest/transform": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz",
- "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^24.9.0",
- "babel-plugin-istanbul": "^5.1.0",
- "chalk": "^2.0.1",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.1.15",
- "jest-haste-map": "^24.9.0",
- "jest-regex-util": "^24.9.0",
- "jest-util": "^24.9.0",
- "micromatch": "^3.1.10",
- "pirates": "^4.0.1",
- "realpath-native": "^1.1.0",
- "slash": "^2.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "2.4.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- }
- },
- "@octokit/auth-token": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz",
- "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==",
- "requires": {
- "@octokit/types": "^2.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.1.tgz",
- "integrity": "sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==",
- "requires": {
- "@octokit/types": "^2.11.1",
- "is-plain-object": "^3.0.0",
- "universal-user-agent": "^5.0.0"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz",
- "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==",
- "requires": {
- "os-name": "^3.1.0"
- }
- }
- }
- },
- "@octokit/graphql": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz",
- "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==",
- "requires": {
- "@octokit/request": "^5.3.0",
- "@octokit/types": "^2.0.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/plugin-paginate-rest": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
- "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
- "requires": {
- "@octokit/types": "^2.0.1"
- }
- },
- "@octokit/plugin-request-log": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz",
- "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw=="
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
- "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
- "requires": {
- "@octokit/types": "^2.0.1",
- "deprecation": "^2.3.1"
- }
- },
- "@octokit/request": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.2.tgz",
- "integrity": "sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==",
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.0.0",
- "@octokit/types": "^2.11.1",
- "deprecation": "^2.0.0",
- "is-plain-object": "^3.0.0",
- "node-fetch": "^2.3.0",
- "once": "^1.4.0",
- "universal-user-agent": "^5.0.0"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz",
- "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==",
- "requires": {
- "os-name": "^3.1.0"
- }
- }
- }
- },
- "@octokit/request-error": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.0.tgz",
- "integrity": "sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw==",
- "requires": {
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/rest": {
- "version": "16.43.1",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz",
- "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==",
- "requires": {
- "@octokit/auth-token": "^2.4.0",
- "@octokit/plugin-paginate-rest": "^1.1.1",
- "@octokit/plugin-request-log": "^1.0.0",
- "@octokit/plugin-rest-endpoint-methods": "2.4.0",
- "@octokit/request": "^5.2.0",
- "@octokit/request-error": "^1.0.2",
- "atob-lite": "^2.0.0",
- "before-after-hook": "^2.0.0",
- "btoa-lite": "^1.0.0",
- "deprecation": "^2.0.0",
- "lodash.get": "^4.4.2",
- "lodash.set": "^4.3.2",
- "lodash.uniq": "^4.5.0",
- "octokit-pagination-methods": "^1.1.0",
- "once": "^1.4.0",
- "universal-user-agent": "^4.0.0"
- },
- "dependencies": {
- "@octokit/request-error": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
- "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
- "requires": {
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- }
- }
- },
- "@octokit/types": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.14.0.tgz",
- "integrity": "sha512-1w2wxpN45rEXPDFeB7rGain7wcJ/aTRg8bdILITVnS0O7a4zEGELa3JmIe+jeLdekQjvZRbVfNPqS+mi5fKCKQ==",
- "requires": {
- "@types/node": ">= 8"
- }
- },
- "@types/babel__core": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz",
- "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz",
- "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz",
- "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz",
- "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/eslint-visitor-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
- "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
- "dev": true
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
- "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
- "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "24.0.23",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.23.tgz",
- "integrity": "sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg==",
- "dev": true,
- "requires": {
- "jest-diff": "^24.3.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz",
- "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==",
- "dev": true
- },
- "@types/node": {
- "version": "12.7.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
- "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ=="
- },
- "@types/stack-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
- "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
- "dev": true
- },
- "@types/uuid": {
- "version": "3.4.6",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz",
- "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/yargs": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
- "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz",
- "integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "1.13.0",
- "eslint-utils": "^1.3.1",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^2.0.1",
- "tsutils": "^3.7.0"
- },
- "dependencies": {
- "@typescript-eslint/experimental-utils": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
- "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/typescript-estree": "1.13.0",
- "eslint-scope": "^4.0.0"
- }
- },
- "@typescript-eslint/typescript-estree": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
- "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
- "dev": true,
- "requires": {
- "lodash.unescape": "4.0.1",
- "semver": "5.5.0"
- }
- },
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- }
- }
- },
- "@typescript-eslint/experimental-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.8.0.tgz",
- "integrity": "sha512-jZ05E4SxCbbXseQGXOKf3ESKcsGxT8Ucpkp1jiVp55MGhOvZB2twmWKf894PAuVQTCgbPbJz9ZbRDqtUWzP8xA==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/typescript-estree": "2.8.0",
- "eslint-scope": "^5.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.8.0.tgz",
- "integrity": "sha512-NseXWzhkucq+JM2HgqAAoKEzGQMb5LuTRjFPLQzGIdLthXMNUfuiskbl7QSykvWW6mvzCtYbw1fYWGa2EIaekw==",
- "dev": true,
- "requires": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "2.8.0",
- "@typescript-eslint/typescript-estree": "2.8.0",
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "@typescript-eslint/typescript-estree": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.8.0.tgz",
- "integrity": "sha512-ksvjBDTdbAQ04cR5JyFSDX113k66FxH1tAXmi+dj6hufsl/G0eMc/f1GgLjEVPkYClDbRKv+rnBFuE5EusomUw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "eslint-visitor-keys": "^1.1.0",
- "glob": "^7.1.6",
- "is-glob": "^4.0.1",
- "lodash.unescape": "4.0.1",
- "semver": "^6.3.0",
- "tsutils": "^3.17.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@zeit/ncc": {
- "version": "0.20.5",
- "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz",
- "integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==",
- "dev": true
- },
- "abab": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
- "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
- "dev": true
- },
- "acorn": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
- "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
- "dev": true
- },
- "acorn-globals": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
- "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
- "dev": true,
- "requires": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- }
- },
- "acorn-jsx": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
- "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
- "dev": true
- },
- "acorn-walk": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
- "dev": true
- },
- "ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "aria-query": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
- "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
- "dev": true,
- "requires": {
- "ast-types-flow": "0.0.7",
- "commander": "^2.11.0"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
- "dev": true
- },
- "array-includes": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
- "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.7.0"
- }
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "ast-types-flow": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
- "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
- "dev": true
- },
- "astral-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
- "dev": true
- },
- "async-limiter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "atob-lite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
- "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY="
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
- "dev": true
- },
- "axobject-query": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz",
- "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
- "dev": true,
- "requires": {
- "ast-types-flow": "0.0.7"
- }
- },
- "babel-eslint": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz",
- "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "eslint-visitor-keys": "^1.0.0",
- "resolve": "^1.12.0"
- }
- },
- "babel-jest": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
- "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==",
- "dev": true,
- "requires": {
- "@jest/transform": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/babel__core": "^7.1.0",
- "babel-plugin-istanbul": "^5.1.0",
- "babel-preset-jest": "^24.9.0",
- "chalk": "^2.4.2",
- "slash": "^2.0.0"
- }
- },
- "babel-plugin-istanbul": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz",
- "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "find-up": "^3.0.0",
- "istanbul-lib-instrument": "^3.3.0",
- "test-exclude": "^5.2.3"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- }
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz",
- "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==",
- "dev": true,
- "requires": {
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-jest": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
- "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "babel-plugin-jest-hoist": "^24.9.0"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "before-after-hook": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz",
- "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A=="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "browser-process-hrtime": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
- "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
- "dev": true
- },
- "browser-resolve": {
- "version": "1.11.3",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
- "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
- "dev": true,
- "requires": {
- "resolve": "1.1.7"
- },
- "dependencies": {
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- }
- }
- },
- "bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "btoa-lite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
- "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc="
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "capture-exit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
- "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
- "dev": true,
- "requires": {
- "rsvp": "^4.8.4"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
- "dev": true,
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
- "dev": true
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- },
- "dependencies": {
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- }
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cross-fetch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz",
- "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=",
- "dev": true,
- "requires": {
- "node-fetch": "2.1.2",
- "whatwg-fetch": "2.0.4"
- },
- "dependencies": {
- "node-fetch": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
- "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=",
- "dev": true
- }
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
- "cssstyle": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
- "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
- "dev": true,
- "requires": {
- "cssom": "0.3.x"
- }
- },
- "damerau-levenshtein": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz",
- "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==",
- "dev": true
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "data-urls": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
- "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
- "dev": true,
- "requires": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- },
- "dependencies": {
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- }
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
- },
- "detect-newline": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
- "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
- "dev": true
- },
- "diff-sequences": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz",
- "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==",
- "dev": true
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "domexception": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "dev": true,
- "requires": {
- "webidl-conversions": "^4.0.2"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
- "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.0",
- "is-callable": "^1.1.4",
- "is-regex": "^1.0.4",
- "object-inspect": "^1.6.0",
- "object-keys": "^1.1.1",
- "string.prototype.trimleft": "^2.1.0",
- "string.prototype.trimright": "^2.1.0"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "escodegen": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz",
- "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==",
- "dev": true,
- "requires": {
- "esprima": "^3.1.3",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "esprima": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
- "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- }
- }
- },
- "eslint": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
- "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "ajv": "^6.9.1",
- "chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "eslint-scope": "^4.0.3",
- "eslint-utils": "^1.3.1",
- "eslint-visitor-keys": "^1.0.0",
- "espree": "^5.0.1",
- "esquery": "^1.0.1",
- "esutils": "^2.0.2",
- "file-entry-cache": "^5.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob": "^7.1.2",
- "globals": "^11.7.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "inquirer": "^6.2.2",
- "js-yaml": "^3.13.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.3.0",
- "lodash": "^4.17.11",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "optionator": "^0.8.2",
- "path-is-inside": "^1.0.2",
- "progress": "^2.0.0",
- "regexpp": "^2.0.1",
- "semver": "^5.5.1",
- "strip-ansi": "^4.0.0",
- "strip-json-comments": "^2.0.1",
- "table": "^5.2.3",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "eslint-config-prettier": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz",
- "integrity": "sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==",
- "dev": true,
- "requires": {
- "get-stdin": "^6.0.0"
- }
- },
- "eslint-import-resolver-node": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
- "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
- "dev": true,
- "requires": {
- "debug": "^2.6.9",
- "resolve": "^1.5.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
- "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
- "dev": true,
- "requires": {
- "debug": "^2.6.8",
- "pkg-dir": "^2.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "eslint-plugin-eslint-comments": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz",
- "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
- },
- "dependencies": {
- "ignore": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
- "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
- "dev": true
- }
- }
- },
- "eslint-plugin-flowtype": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.4.1.tgz",
- "integrity": "sha512-TNkrdJbvmBEIf02tjMKrYmLILV7OVwcvDUAnrnoGQZJhBMsu61X7E7/A1yvLTsFeDaqhbBx7rgsHzh4Yx7IqvA==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.15"
- }
- },
- "eslint-plugin-github": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-2.0.0.tgz",
- "integrity": "sha512-bG8rnKk8wCEN4dnKYx4kMCxeFaA2Rtxb0Sh5xAvR1aQKukuqtcp7XjJ+q38LJpC0twYWtiYeBEuJoy0cCh2whw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/eslint-plugin": "^1.3.0",
- "@typescript-eslint/parser": "^1.3.0",
- "babel-eslint": ">=8.2.0",
- "eslint-config-prettier": "^4.0.0",
- "eslint-plugin-eslint-comments": ">=3.0.1",
- "eslint-plugin-flowtype": ">=2.49.3",
- "eslint-plugin-graphql": ">=3.0.1",
- "eslint-plugin-import": ">=2.11.0",
- "eslint-plugin-jest": ">=21.15.0",
- "eslint-plugin-jsx-a11y": ">=6.0.0",
- "eslint-plugin-prettier": ">=2.6.0",
- "eslint-plugin-react": ">=7.7.0",
- "eslint-plugin-relay": ">=1.0.0",
- "eslint-rule-documentation": ">=1.0.0",
- "inquirer": "^6.0.0",
- "prettier": ">=1.12.0",
- "read-pkg-up": "^4.0.0",
- "svg-element-attributes": "^1.2.1"
- },
- "dependencies": {
- "@typescript-eslint/experimental-utils": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
- "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/typescript-estree": "1.13.0",
- "eslint-scope": "^4.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz",
- "integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==",
- "dev": true,
- "requires": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "1.13.0",
- "@typescript-eslint/typescript-estree": "1.13.0",
- "eslint-visitor-keys": "^1.0.0"
- }
- },
- "@typescript-eslint/typescript-estree": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
- "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
- "dev": true,
- "requires": {
- "lodash.unescape": "4.0.1",
- "semver": "5.5.0"
- }
- },
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
- "dev": true,
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "inquirer": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
- "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.2.0",
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.4.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^5.1.0",
- "through": "^2.3.6"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
- "dev": true
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "dev": true,
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- }
- }
- },
- "eslint-plugin-graphql": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-3.1.0.tgz",
- "integrity": "sha512-87HGS00aeBqGFiQZQGzSPzk1D59w+124F8CRIDATh3LJqce5RCTuUI4tcIqPeyY95YPBCIKwISksWUuA0nrgNw==",
- "dev": true,
- "requires": {
- "graphql-config": "^2.0.1",
- "lodash": "^4.11.1"
- }
- },
- "eslint-plugin-import": {
- "version": "2.18.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
- "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
- "dev": true,
- "requires": {
- "array-includes": "^3.0.3",
- "contains-path": "^0.1.0",
- "debug": "^2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "^0.3.2",
- "eslint-module-utils": "^2.4.0",
- "has": "^1.0.3",
- "minimatch": "^3.0.4",
- "object.values": "^1.1.0",
- "read-pkg-up": "^2.0.0",
- "resolve": "^1.11.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- }
- }
- }
- },
- "eslint-plugin-jest": {
- "version": "22.21.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.21.0.tgz",
- "integrity": "sha512-OaqnSS7uBgcGiqXUiEnjoqxPNKvR4JWG5mSRkzVoR6+vDwlqqp11beeql1hYs0HTbdhiwrxWLxbX0Vx7roG3Ew==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "^1.13.0"
- },
- "dependencies": {
- "@typescript-eslint/experimental-utils": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
- "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/typescript-estree": "1.13.0",
- "eslint-scope": "^4.0.0"
- }
- },
- "@typescript-eslint/typescript-estree": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
- "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
- "dev": true,
- "requires": {
- "lodash.unescape": "4.0.1",
- "semver": "5.5.0"
- }
- },
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- }
- }
- },
- "eslint-plugin-jsx-a11y": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz",
- "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.4.5",
- "aria-query": "^3.0.0",
- "array-includes": "^3.0.3",
- "ast-types-flow": "^0.0.7",
- "axobject-query": "^2.0.2",
- "damerau-levenshtein": "^1.0.4",
- "emoji-regex": "^7.0.2",
- "has": "^1.0.3",
- "jsx-ast-utils": "^2.2.1"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- }
- }
- },
- "eslint-plugin-prettier": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz",
- "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-plugin-react": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz",
- "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==",
- "dev": true,
- "requires": {
- "array-includes": "^3.0.3",
- "doctrine": "^2.1.0",
- "has": "^1.0.3",
- "jsx-ast-utils": "^2.2.1",
- "object.entries": "^1.1.0",
- "object.fromentries": "^2.0.0",
- "object.values": "^1.1.0",
- "prop-types": "^15.7.2",
- "resolve": "^1.12.0"
- },
- "dependencies": {
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- }
- }
- },
- "eslint-plugin-relay": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-relay/-/eslint-plugin-relay-1.4.1.tgz",
- "integrity": "sha512-yb+p+4AxZTi2gXN7cZRfXMBFlRa5j6TtiVeq3yHXyy+tlgYNpxi/dDrP1+tcUTNP9vdaJovnfGZ5jp6kMiH9eg==",
- "dev": true,
- "requires": {
- "graphql": "^14.0.0"
- }
- },
- "eslint-rule-documentation": {
- "version": "1.0.23",
- "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz",
- "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==",
- "dev": true
- },
- "eslint-scope": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
- "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
- "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
- "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
- "dev": true
- },
- "espree": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
- "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
- "dev": true,
- "requires": {
- "acorn": "^6.0.7",
- "acorn-jsx": "^5.0.0",
- "eslint-visitor-keys": "^1.0.0"
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
- "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
- "dev": true,
- "requires": {
- "estraverse": "^4.0.0"
- }
- },
- "esrecurse": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
- "dev": true,
- "requires": {
- "estraverse": "^4.1.0"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "exec-sh": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
- "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==",
- "dev": true
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "expect": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz",
- "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "ansi-styles": "^3.2.0",
- "jest-get-type": "^24.9.0",
- "jest-matcher-utils": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-regex-util": "^24.9.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fb-watchman": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
- "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
- "dev": true,
- "requires": {
- "bser": "^2.0.0"
- }
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "file-entry-cache": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
- "dev": true,
- "requires": {
- "flat-cache": "^2.0.1"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "flat-cache": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
- "dev": true,
- "requires": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
- }
- },
- "flatted": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
- "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
- "dev": true
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
- "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
- "dev": true,
- "optional": true,
- "requires": {
- "nan": "^2.12.1",
- "node-pre-gyp": "^0.12.0"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "debug": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "glob": {
- "version": "7.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minipass": {
- "version": "2.3.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "needle": {
- "version": "2.3.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "^4.1.0",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.12.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rimraf": {
- "version": "2.6.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "semver": {
- "version": "5.7.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.3.4",
- "minizlib": "^1.1.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "yallist": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-stdin": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
- "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
- "dev": true
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "graceful-fs": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
- "dev": true
- },
- "graphql": {
- "version": "14.5.8",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.5.8.tgz",
- "integrity": "sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==",
- "dev": true,
- "requires": {
- "iterall": "^1.2.2"
- }
- },
- "graphql-config": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.2.1.tgz",
- "integrity": "sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ==",
- "dev": true,
- "requires": {
- "graphql-import": "^0.7.1",
- "graphql-request": "^1.5.0",
- "js-yaml": "^3.10.0",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.4"
- }
- },
- "graphql-import": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.7.1.tgz",
- "integrity": "sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.4",
- "resolve-from": "^4.0.0"
- }
- },
- "graphql-request": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz",
- "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==",
- "dev": true,
- "requires": {
- "cross-fetch": "2.2.2"
- }
- },
- "growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
- "dev": true
- },
- "handlebars": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
- "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==",
- "dev": true,
- "requires": {
- "neo-async": "^2.6.0",
- "optimist": "^0.6.1",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "dev": true,
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
- "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hosted-git-info": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
- "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
- "dev": true
- },
- "html-encoding-sniffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
- "dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.1"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
- "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
- "dev": true,
- "requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- }
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "inquirer": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
- "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.2.0",
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.4.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^5.1.0",
- "through": "^2.3.6"
- }
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-callable": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
- "dev": true
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-plain-object": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
- "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
- "requires": {
- "isobject": "^4.0.0"
- }
- },
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
- "dev": true
- },
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
- "dev": true,
- "requires": {
- "has": "^1.0.1"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
- },
- "is-symbol": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
- "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isobject": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
- "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
- "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
- "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
- "dev": true,
- "requires": {
- "@babel/generator": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/template": "^7.4.0",
- "@babel/traverse": "^7.4.3",
- "@babel/types": "^7.4.0",
- "istanbul-lib-coverage": "^2.0.5",
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "istanbul-lib-report": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
- "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^2.0.5",
- "make-dir": "^2.1.0",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
- "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^2.0.5",
- "make-dir": "^2.1.0",
- "rimraf": "^2.6.3",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "istanbul-reports": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz",
- "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==",
- "dev": true,
- "requires": {
- "handlebars": "^4.1.2"
- }
- },
- "iterall": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz",
- "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==",
- "dev": true
- },
- "jest": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz",
- "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==",
- "dev": true,
- "requires": {
- "import-local": "^2.0.0",
- "jest-cli": "^24.9.0"
- },
- "dependencies": {
- "jest-cli": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz",
- "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==",
- "dev": true,
- "requires": {
- "@jest/core": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "exit": "^0.1.2",
- "import-local": "^2.0.0",
- "is-ci": "^2.0.0",
- "jest-config": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-validate": "^24.9.0",
- "prompts": "^2.0.1",
- "realpath-native": "^1.1.0",
- "yargs": "^13.3.0"
- }
- }
- }
- },
- "jest-changed-files": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz",
- "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "execa": "^1.0.0",
- "throat": "^4.0.0"
- }
- },
- "jest-circus": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-24.9.0.tgz",
- "integrity": "sha512-dwkvwFtRc9Anmk1XTc+bonVL8rVMZ3CeGMoFWmv1oaQThdAgvfI9bwaFlZp+gLVphNVz6ZLfCWo3ERhS5CeVvA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "co": "^4.6.0",
- "expect": "^24.9.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^24.9.0",
- "jest-matcher-utils": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-snapshot": "^24.9.0",
- "jest-util": "^24.9.0",
- "pretty-format": "^24.9.0",
- "stack-utils": "^1.0.1",
- "throat": "^4.0.0"
- }
- },
- "jest-config": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz",
- "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^24.9.0",
- "@jest/types": "^24.9.0",
- "babel-jest": "^24.9.0",
- "chalk": "^2.0.1",
- "glob": "^7.1.1",
- "jest-environment-jsdom": "^24.9.0",
- "jest-environment-node": "^24.9.0",
- "jest-get-type": "^24.9.0",
- "jest-jasmine2": "^24.9.0",
- "jest-regex-util": "^24.3.0",
- "jest-resolve": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-validate": "^24.9.0",
- "micromatch": "^3.1.10",
- "pretty-format": "^24.9.0",
- "realpath-native": "^1.1.0"
- }
- },
- "jest-diff": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz",
- "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.1",
- "diff-sequences": "^24.9.0",
- "jest-get-type": "^24.9.0",
- "pretty-format": "^24.9.0"
- }
- },
- "jest-docblock": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz",
- "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==",
- "dev": true,
- "requires": {
- "detect-newline": "^2.1.0"
- }
- },
- "jest-each": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz",
- "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "jest-get-type": "^24.9.0",
- "jest-util": "^24.9.0",
- "pretty-format": "^24.9.0"
- }
- },
- "jest-environment-jsdom": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz",
- "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==",
- "dev": true,
- "requires": {
- "@jest/environment": "^24.9.0",
- "@jest/fake-timers": "^24.9.0",
- "@jest/types": "^24.9.0",
- "jest-mock": "^24.9.0",
- "jest-util": "^24.9.0",
- "jsdom": "^11.5.1"
- }
- },
- "jest-environment-node": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz",
- "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==",
- "dev": true,
- "requires": {
- "@jest/environment": "^24.9.0",
- "@jest/fake-timers": "^24.9.0",
- "@jest/types": "^24.9.0",
- "jest-mock": "^24.9.0",
- "jest-util": "^24.9.0"
- }
- },
- "jest-get-type": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
- "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
- "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "anymatch": "^2.0.0",
- "fb-watchman": "^2.0.0",
- "fsevents": "^1.2.7",
- "graceful-fs": "^4.1.15",
- "invariant": "^2.2.4",
- "jest-serializer": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-worker": "^24.9.0",
- "micromatch": "^3.1.10",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-jasmine2": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz",
- "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "co": "^4.6.0",
- "expect": "^24.9.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^24.9.0",
- "jest-matcher-utils": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-runtime": "^24.9.0",
- "jest-snapshot": "^24.9.0",
- "jest-util": "^24.9.0",
- "pretty-format": "^24.9.0",
- "throat": "^4.0.0"
- }
- },
- "jest-leak-detector": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz",
- "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==",
- "dev": true,
- "requires": {
- "jest-get-type": "^24.9.0",
- "pretty-format": "^24.9.0"
- }
- },
- "jest-matcher-utils": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz",
- "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.1",
- "jest-diff": "^24.9.0",
- "jest-get-type": "^24.9.0",
- "pretty-format": "^24.9.0"
- }
- },
- "jest-message-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
- "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/stack-utils": "^1.0.1",
- "chalk": "^2.0.1",
- "micromatch": "^3.1.10",
- "slash": "^2.0.0",
- "stack-utils": "^1.0.1"
- }
- },
- "jest-mock": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
- "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
- "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
- "dev": true
- },
- "jest-regex-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz",
- "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==",
- "dev": true
- },
- "jest-resolve": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz",
- "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "browser-resolve": "^1.11.3",
- "chalk": "^2.0.1",
- "jest-pnp-resolver": "^1.2.1",
- "realpath-native": "^1.1.0"
- }
- },
- "jest-resolve-dependencies": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz",
- "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "jest-regex-util": "^24.3.0",
- "jest-snapshot": "^24.9.0"
- }
- },
- "jest-runner": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz",
- "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.7.1",
- "@jest/environment": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.4.2",
- "exit": "^0.1.2",
- "graceful-fs": "^4.1.15",
- "jest-config": "^24.9.0",
- "jest-docblock": "^24.3.0",
- "jest-haste-map": "^24.9.0",
- "jest-jasmine2": "^24.9.0",
- "jest-leak-detector": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-resolve": "^24.9.0",
- "jest-runtime": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-worker": "^24.6.0",
- "source-map-support": "^0.5.6",
- "throat": "^4.0.0"
- }
- },
- "jest-runtime": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz",
- "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.7.1",
- "@jest/environment": "^24.9.0",
- "@jest/source-map": "^24.3.0",
- "@jest/transform": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/yargs": "^13.0.0",
- "chalk": "^2.0.1",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.1.15",
- "jest-config": "^24.9.0",
- "jest-haste-map": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-mock": "^24.9.0",
- "jest-regex-util": "^24.3.0",
- "jest-resolve": "^24.9.0",
- "jest-snapshot": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-validate": "^24.9.0",
- "realpath-native": "^1.1.0",
- "slash": "^2.0.0",
- "strip-bom": "^3.0.0",
- "yargs": "^13.3.0"
- }
- },
- "jest-serializer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
- "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
- "dev": true
- },
- "jest-snapshot": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz",
- "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^24.9.0",
- "chalk": "^2.0.1",
- "expect": "^24.9.0",
- "jest-diff": "^24.9.0",
- "jest-get-type": "^24.9.0",
- "jest-matcher-utils": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-resolve": "^24.9.0",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^24.9.0",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "jest-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
- "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.9.0",
- "@jest/fake-timers": "^24.9.0",
- "@jest/source-map": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "callsites": "^3.0.0",
- "chalk": "^2.0.1",
- "graceful-fs": "^4.1.15",
- "is-ci": "^2.0.0",
- "mkdirp": "^0.5.1",
- "slash": "^2.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "jest-validate": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
- "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "camelcase": "^5.3.1",
- "chalk": "^2.0.1",
- "jest-get-type": "^24.9.0",
- "leven": "^3.1.0",
- "pretty-format": "^24.9.0"
- }
- },
- "jest-watcher": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz",
- "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/yargs": "^13.0.0",
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.1",
- "jest-util": "^24.9.0",
- "string-length": "^2.0.0"
- }
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "dev": true,
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "jsdom": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
- "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
- "dev": true,
- "requires": {
- "abab": "^2.0.0",
- "acorn": "^5.5.3",
- "acorn-globals": "^4.1.0",
- "array-equal": "^1.0.0",
- "cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": "^1.0.0",
- "data-urls": "^1.0.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.9.1",
- "html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.3.0",
- "nwsapi": "^2.0.7",
- "parse5": "4.0.0",
- "pn": "^1.1.0",
- "request": "^2.87.0",
- "request-promise-native": "^1.0.5",
- "sax": "^1.2.4",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.4",
- "w3c-hr-time": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.3",
- "whatwg-mimetype": "^2.1.0",
- "whatwg-url": "^6.4.1",
- "ws": "^5.2.0",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "5.7.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
- "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
- "dev": true
- }
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "json5": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
- "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "jsx-ast-utils": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
- "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==",
- "dev": true,
- "requires": {
- "array-includes": "^3.0.3",
- "object.assign": "^4.1.0"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "left-pad": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
- "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
- },
- "lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
- "dev": true
- },
- "lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
- "lodash.unescape": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
- "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
- "dev": true
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "macos-release": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
- "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA=="
- },
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- }
- }
- },
- "make-error": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
- "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
- "dev": true
- },
- "makeerror": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
- "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
- "dev": true,
- "requires": {
- "tmpl": "1.0.x"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "mime-db": {
- "version": "1.42.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
- "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.25",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
- "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
- "dev": true,
- "requires": {
- "mime-db": "1.42.0"
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
- "dev": true
- },
- "nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
- "dev": true,
- "optional": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
- "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
- },
- "node-fetch": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
- "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
- "dev": true
- },
- "node-modules-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
- "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
- "dev": true
- },
- "node-notifier": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz",
- "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==",
- "dev": true,
- "requires": {
- "growly": "^1.3.0",
- "is-wsl": "^1.1.0",
- "semver": "^5.5.0",
- "shellwords": "^0.1.1",
- "which": "^1.3.0"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-inspect": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
- "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
- "dev": true
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
- }
- },
- "object.entries": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
- "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.12.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "object.fromentries": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz",
- "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.15.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "object.getownpropertydescriptors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
- "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "object.values": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
- "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.12.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "octokit-pagination-methods": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
- "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ=="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "os-name": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
- "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
- "requires": {
- "macos-release": "^2.2.0",
- "windows-release": "^3.1.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "p-each-series": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz",
- "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=",
- "dev": true,
- "requires": {
- "p-reduce": "^1.0.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-reduce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
- "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
- "dev": true
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "parse5": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "^2.0.0"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "pirates": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
- "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
- "dev": true,
- "requires": {
- "node-modules-regexp": "^1.0.0"
- }
- },
- "pkg-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "dev": true,
- "requires": {
- "find-up": "^2.1.0"
- }
- },
- "pn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
- "dev": true
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "prettier": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
- "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- }
- }
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "prompts": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz",
- "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.3"
- }
- },
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
- "psl": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
- "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- },
- "react-is": {
- "version": "16.12.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
- "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==",
- "dev": true
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
- "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- }
- }
- },
- "realpath-native": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
- "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
- "dev": true,
- "requires": {
- "util.promisify": "^1.0.0"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
- "dev": true
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "regexpp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
- "dev": true
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dev": true,
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- }
- }
- }
- },
- "request-promise-core": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
- "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.15"
- }
- },
- "request-promise-native": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
- "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
- "dev": true,
- "requires": {
- "request-promise-core": "1.1.3",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "resolve": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
- "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "dev": true,
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
- "dev": true
- },
- "run-async": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
- "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
- "dev": true,
- "requires": {
- "is-promise": "^2.1.0"
- }
- },
- "rxjs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
- "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
- "dev": true,
- "requires": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
- },
- "shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
- },
- "sisteransi": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz",
- "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- },
- "slice-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- }
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stack-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
- "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
- "dev": true
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "dev": true
- },
- "string-length": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
- "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
- "dev": true,
- "requires": {
- "astral-regex": "^1.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "string.prototype.trimleft": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
- "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
- }
- },
- "string.prototype.trimright": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
- "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- }
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "svg-element-attributes": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.0.tgz",
- "integrity": "sha512-M4rTTZ186MY4/d3a4XNNuEptXOTIz5qeasp2D7gWVwIDa9e2wF1ccrFs9x7ZW6Sp4+ebCOt9GMCpccC3wt3srg==",
- "dev": true
- },
- "symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "table": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
- "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
- "dev": true,
- "requires": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- }
- }
- },
- "test-exclude": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
- "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^2.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "throat": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
- "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- },
- "tmpl": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "ts-jest": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.2.0.tgz",
- "integrity": "sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag==",
- "dev": true,
- "requires": {
- "bs-logger": "0.x",
- "buffer-from": "1.x",
- "fast-json-stable-stringify": "2.x",
- "json5": "2.x",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "mkdirp": "0.x",
- "resolve": "1.x",
- "semver": "^5.5",
- "yargs-parser": "10.x"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "yargs-parser": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
- "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "tslib": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
- "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
- "dev": true
- },
- "tsutils": {
- "version": "3.17.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
- "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "tunnel": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
- "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM="
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- },
- "typed-rest-client": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
- "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==",
- "requires": {
- "tunnel": "0.0.4",
- "underscore": "1.8.3"
- }
- },
- "typescript": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
- "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
- "dev": true
- },
- "uglify-js": {
- "version": "3.6.9",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
- "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
- "dev": true,
- "optional": true,
- "requires": {
- "commander": "~2.20.3",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- }
- }
- },
- "underscore": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
- "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "universal-user-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz",
- "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==",
- "requires": {
- "os-name": "^3.1.0"
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "uri-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "w3c-hr-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
- "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
- "dev": true,
- "requires": {
- "browser-process-hrtime": "^0.1.2"
- }
- },
- "walker": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
- "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
- "dev": true,
- "requires": {
- "makeerror": "1.0.x"
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "requires": {
- "iconv-lite": "0.4.24"
- }
- },
- "whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
- "dev": true
- },
- "whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
- "whatwg-url": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
- "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "windows-release": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz",
- "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==",
- "requires": {
- "execa": "^1.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "write": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
- "dev": true,
- "requires": {
- "mkdirp": "^0.5.1"
- }
- },
- "write-file-atomic": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
- "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "ws": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
- "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
- "dev": true,
- "requires": {
- "async-limiter": "~1.0.0"
- }
- },
- "xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
- "dev": true
- },
- "yargs": {
- "version": "13.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
- "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.1"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "13.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
- "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index f413218..0000000
--- a/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "checkout",
- "version": "2.0.2",
- "description": "checkout action",
- "main": "lib/main.js",
- "scripts": {
- "build": "tsc && ncc build && node lib/misc/generate-docs.js",
- "format": "prettier --write '**/*.ts'",
- "format-check": "prettier --check '**/*.ts'",
- "lint": "eslint src/**/*.ts",
- "test": "jest"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/actions/checkout.git"
- },
- "keywords": [
- "github",
- "actions",
- "checkout"
- ],
- "author": "GitHub",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/actions/checkout/issues"
- },
- "homepage": "https://github.com/actions/checkout#readme",
- "dependencies": {
- "@actions/core": "^1.1.3",
- "@actions/exec": "^1.0.1",
- "@actions/github": "^2.2.0",
- "@actions/io": "^1.0.1",
- "@actions/tool-cache": "^1.1.2",
- "uuid": "^3.3.3"
- },
- "devDependencies": {
- "@types/jest": "^24.0.23",
- "@types/node": "^12.7.12",
- "@types/uuid": "^3.4.6",
- "@typescript-eslint/parser": "^2.8.0",
- "@zeit/ncc": "^0.20.5",
- "eslint": "^5.16.0",
- "eslint-plugin-github": "^2.0.0",
- "eslint-plugin-jest": "^22.21.0",
- "jest": "^24.9.0",
- "jest-circus": "^24.9.0",
- "js-yaml": "^3.13.1",
- "prettier": "^1.19.1",
- "ts-jest": "^24.2.0",
- "typescript": "^3.6.4"
- }
-}
diff --git a/regular-file.txt b/regular-file.txt
new file mode 100644
index 0000000..e69de29
diff --git a/src/fs-helper.ts b/src/fs-helper.ts
deleted file mode 100644
index c443404..0000000
--- a/src/fs-helper.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import * as fs from 'fs'
-
-export function directoryExistsSync(path: string, required?: boolean): boolean {
- if (!path) {
- throw new Error("Arg 'path' must not be empty")
- }
-
- let stats: fs.Stats
- try {
- stats = fs.statSync(path)
- } catch (error) {
- if (error.code === 'ENOENT') {
- if (!required) {
- return false
- }
-
- throw new Error(`Directory '${path}' does not exist`)
- }
-
- throw new Error(
- `Encountered an error when checking whether path '${path}' exists: ${error.message}`
- )
- }
-
- if (stats.isDirectory()) {
- return true
- } else if (!required) {
- return false
- }
-
- throw new Error(`Directory '${path}' does not exist`)
-}
-
-export function existsSync(path: string): boolean {
- if (!path) {
- throw new Error("Arg 'path' must not be empty")
- }
-
- try {
- fs.statSync(path)
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false
- }
-
- throw new Error(
- `Encountered an error when checking whether path '${path}' exists: ${error.message}`
- )
- }
-
- return true
-}
-
-export function fileExistsSync(path: string): boolean {
- if (!path) {
- throw new Error("Arg 'path' must not be empty")
- }
-
- let stats: fs.Stats
- try {
- stats = fs.statSync(path)
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false
- }
-
- throw new Error(
- `Encountered an error when checking whether path '${path}' exists: ${error.message}`
- )
- }
-
- if (!stats.isDirectory()) {
- return true
- }
-
- return false
-}
diff --git a/src/git-auth-helper.ts b/src/git-auth-helper.ts
deleted file mode 100644
index fc1404c..0000000
--- a/src/git-auth-helper.ts
+++ /dev/null
@@ -1,350 +0,0 @@
-import * as assert from 'assert'
-import * as core from '@actions/core'
-import * as exec from '@actions/exec'
-import * as fs from 'fs'
-import * as io from '@actions/io'
-import * as os from 'os'
-import * as path from 'path'
-import * as regexpHelper from './regexp-helper'
-import * as stateHelper from './state-helper'
-import * as urlHelper from './url-helper'
-import {default as uuid} from 'uuid/v4'
-import {IGitCommandManager} from './git-command-manager'
-import {IGitSourceSettings} from './git-source-settings'
-
-const IS_WINDOWS = process.platform === 'win32'
-const SSH_COMMAND_KEY = 'core.sshCommand'
-
-export interface IGitAuthHelper {
- configureAuth(): Promise
- configureGlobalAuth(): Promise
- configureSubmoduleAuth(): Promise
- removeAuth(): Promise
- removeGlobalAuth(): Promise
-}
-
-export function createAuthHelper(
- git: IGitCommandManager,
- settings?: IGitSourceSettings
-): IGitAuthHelper {
- return new GitAuthHelper(git, settings)
-}
-
-class GitAuthHelper {
- private readonly git: IGitCommandManager
- private readonly settings: IGitSourceSettings
- private readonly tokenConfigKey: string
- private readonly tokenConfigValue: string
- private readonly tokenPlaceholderConfigValue: string
- private readonly insteadOfKey: string
- private readonly insteadOfValue: string
- private sshCommand = ''
- private sshKeyPath = ''
- private sshKnownHostsPath = ''
- private temporaryHomePath = ''
-
- constructor(
- gitCommandManager: IGitCommandManager,
- gitSourceSettings?: IGitSourceSettings
- ) {
- this.git = gitCommandManager
- this.settings = gitSourceSettings || (({} as unknown) as IGitSourceSettings)
-
- // Token auth header
- const serverUrl = urlHelper.getServerUrl()
- this.tokenConfigKey = `http.${serverUrl.origin}/.extraheader` // "origin" is SCHEME://HOSTNAME[:PORT]
- const basicCredential = Buffer.from(
- `x-access-token:${this.settings.authToken}`,
- 'utf8'
- ).toString('base64')
- core.setSecret(basicCredential)
- this.tokenPlaceholderConfigValue = `AUTHORIZATION: basic ***`
- this.tokenConfigValue = `AUTHORIZATION: basic ${basicCredential}`
-
- // Instead of SSH URL
- this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf` // "origin" is SCHEME://HOSTNAME[:PORT]
- this.insteadOfValue = `git@${serverUrl.hostname}:`
- }
-
- async configureAuth(): Promise {
- // Remove possible previous values
- await this.removeAuth()
-
- // Configure new values
- await this.configureSsh()
- await this.configureToken()
- }
-
- async configureGlobalAuth(): Promise {
- // Create a temp home directory
- const runnerTemp = process.env['RUNNER_TEMP'] || ''
- assert.ok(runnerTemp, 'RUNNER_TEMP is not defined')
- const uniqueId = uuid()
- this.temporaryHomePath = path.join(runnerTemp, uniqueId)
- await fs.promises.mkdir(this.temporaryHomePath, {recursive: true})
-
- // Copy the global git config
- const gitConfigPath = path.join(
- process.env['HOME'] || os.homedir(),
- '.gitconfig'
- )
- const newGitConfigPath = path.join(this.temporaryHomePath, '.gitconfig')
- let configExists = false
- try {
- await fs.promises.stat(gitConfigPath)
- configExists = true
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
- if (configExists) {
- core.info(`Copying '${gitConfigPath}' to '${newGitConfigPath}'`)
- await io.cp(gitConfigPath, newGitConfigPath)
- } else {
- await fs.promises.writeFile(newGitConfigPath, '')
- }
-
- 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
- await this.configureToken(newGitConfigPath, true)
-
- // Configure HTTPS instead of SSH
- await this.git.tryConfigUnset(this.insteadOfKey, true)
- if (!this.settings.sshKey) {
- await this.git.config(this.insteadOfKey, this.insteadOfValue, true)
- }
- } catch (err) {
- // Unset in case somehow written to the real global config
- core.info(
- 'Encountered an error when attempting to configure token. Attempting unconfigure.'
- )
- await this.git.tryConfigUnset(this.tokenConfigKey, true)
- throw err
- }
- }
-
- async configureSubmoduleAuth(): Promise {
- // Remove possible previous HTTPS instead of SSH
- await this.removeGitConfig(this.insteadOfKey, true)
-
- if (this.settings.persistCredentials) {
- // Configure a placeholder value. This approach avoids the credential being captured
- // 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
- const output = await this.git.submoduleForeach(
- `git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url`,
- this.settings.nestedSubmodules
- )
-
- // Replace the placeholder
- const configPaths: string[] =
- output.match(/(?<=(^|\n)file:)[^\t]+(?=\tremote\.origin\.url)/g) || []
- for (const configPath of configPaths) {
- core.debug(`Replacing token placeholder in '${configPath}'`)
- this.replaceTokenPlaceholder(configPath)
- }
-
- if (this.settings.sshKey) {
- // Configure core.sshCommand
- await this.git.submoduleForeach(
- `git config --local '${SSH_COMMAND_KEY}' '${this.sshCommand}'`,
- this.settings.nestedSubmodules
- )
- } else {
- // Configure HTTPS instead of SSH
- await this.git.submoduleForeach(
- `git config --local '${this.insteadOfKey}' '${this.insteadOfValue}'`,
- this.settings.nestedSubmodules
- )
- }
- }
- }
-
- async removeAuth(): Promise {
- await this.removeSsh()
- await this.removeToken()
- }
-
- async removeGlobalAuth(): Promise {
- core.debug(`Unsetting HOME override`)
- this.git.removeEnvironmentVariable('HOME')
- await io.rmRF(this.temporaryHomePath)
- }
-
- private async configureSsh(): Promise {
- if (!this.settings.sshKey) {
- return
- }
-
- // Write key
- const runnerTemp = process.env['RUNNER_TEMP'] || ''
- assert.ok(runnerTemp, 'RUNNER_TEMP is not defined')
- const uniqueId = uuid()
- this.sshKeyPath = path.join(runnerTemp, uniqueId)
- stateHelper.setSshKeyPath(this.sshKeyPath)
- await fs.promises.mkdir(runnerTemp, {recursive: true})
- await fs.promises.writeFile(
- this.sshKeyPath,
- this.settings.sshKey.trim() + '\n',
- {mode: 0o600}
- )
-
- // Remove inherited permissions on Windows
- if (IS_WINDOWS) {
- const icacls = await io.which('icacls.exe')
- await exec.exec(
- `"${icacls}" "${this.sshKeyPath}" /grant:r "${process.env['USERDOMAIN']}\\${process.env['USERNAME']}:F"`
- )
- await exec.exec(`"${icacls}" "${this.sshKeyPath}" /inheritance:r`)
- }
-
- // Write known hosts
- const userKnownHostsPath = path.join(os.homedir(), '.ssh', 'known_hosts')
- let userKnownHosts = ''
- try {
- userKnownHosts = (
- await fs.promises.readFile(userKnownHostsPath)
- ).toString()
- } catch (err) {
- if (err.code !== 'ENOENT') {
- throw err
- }
- }
- let knownHosts = ''
- if (userKnownHosts) {
- knownHosts += `# Begin from ${userKnownHostsPath}\n${userKnownHosts}\n# End from ${userKnownHostsPath}\n`
- }
- if (this.settings.sshKnownHosts) {
- 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 AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n# End implicitly added github.com\n`
- this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`)
- stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath)
- await fs.promises.writeFile(this.sshKnownHostsPath, knownHosts)
-
- // Configure GIT_SSH_COMMAND
- const sshPath = await io.which('ssh', true)
- this.sshCommand = `"${sshPath}" -i "$RUNNER_TEMP/${path.basename(
- this.sshKeyPath
- )}"`
- if (this.settings.sshStrict) {
- this.sshCommand += ' -o StrictHostKeyChecking=yes -o CheckHostIP=no'
- }
- this.sshCommand += ` -o "UserKnownHostsFile=$RUNNER_TEMP/${path.basename(
- this.sshKnownHostsPath
- )}"`
- core.info(`Temporarily overriding GIT_SSH_COMMAND=${this.sshCommand}`)
- this.git.setEnvironmentVariable('GIT_SSH_COMMAND', this.sshCommand)
-
- // Configure core.sshCommand
- if (this.settings.persistCredentials) {
- await this.git.config(SSH_COMMAND_KEY, this.sshCommand)
- }
- }
-
- private async configureToken(
- configPath?: string,
- globalConfig?: boolean
- ): Promise {
- // Validate args
- assert.ok(
- (configPath && globalConfig) || (!configPath && !globalConfig),
- 'Unexpected configureToken parameter combinations'
- )
-
- // Default config path
- if (!configPath && !globalConfig) {
- configPath = path.join(this.git.getWorkingDirectory(), '.git', 'config')
- }
-
- // Configure a placeholder value. This approach avoids the credential being captured
- // 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
- await this.git.config(
- this.tokenConfigKey,
- this.tokenPlaceholderConfigValue,
- globalConfig
- )
-
- // Replace the placeholder
- await this.replaceTokenPlaceholder(configPath || '')
- }
-
- private async replaceTokenPlaceholder(configPath: string): Promise {
- assert.ok(configPath, 'configPath is not defined')
- let content = (await fs.promises.readFile(configPath)).toString()
- const placeholderIndex = content.indexOf(this.tokenPlaceholderConfigValue)
- if (
- placeholderIndex < 0 ||
- placeholderIndex != content.lastIndexOf(this.tokenPlaceholderConfigValue)
- ) {
- throw new Error(`Unable to replace auth placeholder in ${configPath}`)
- }
- assert.ok(this.tokenConfigValue, 'tokenConfigValue is not defined')
- content = content.replace(
- this.tokenPlaceholderConfigValue,
- this.tokenConfigValue
- )
- await fs.promises.writeFile(configPath, content)
- }
-
- private async removeSsh(): Promise {
- // SSH key
- const keyPath = this.sshKeyPath || stateHelper.SshKeyPath
- if (keyPath) {
- try {
- await io.rmRF(keyPath)
- } catch (err) {
- core.debug(err.message)
- core.warning(`Failed to remove SSH key '${keyPath}'`)
- }
- }
-
- // SSH known hosts
- const knownHostsPath =
- this.sshKnownHostsPath || stateHelper.SshKnownHostsPath
- if (knownHostsPath) {
- try {
- await io.rmRF(knownHostsPath)
- } catch {
- // Intentionally empty
- }
- }
-
- // SSH command
- await this.removeGitConfig(SSH_COMMAND_KEY)
- }
-
- private async removeToken(): Promise {
- // HTTP extra header
- await this.removeGitConfig(this.tokenConfigKey)
- }
-
- private async removeGitConfig(
- configKey: string,
- submoduleOnly: boolean = false
- ): Promise {
- if (!submoduleOnly) {
- if (
- (await this.git.configExists(configKey)) &&
- !(await this.git.tryConfigUnset(configKey))
- ) {
- // Load the config contents
- core.warning(`Failed to remove '${configKey}' from the git config`)
- }
- }
-
- const pattern = regexpHelper.escape(configKey)
- await this.git.submoduleForeach(
- `git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || :`,
- true
- )
- }
-}
diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts
deleted file mode 100644
index 8bf3aa1..0000000
--- a/src/git-command-manager.ts
+++ /dev/null
@@ -1,500 +0,0 @@
-import * as core from '@actions/core'
-import * as exec from '@actions/exec'
-import * as fshelper from './fs-helper'
-import * as io from '@actions/io'
-import * as path from 'path'
-import * as refHelper from './ref-helper'
-import * as regexpHelper from './regexp-helper'
-import * as retryHelper from './retry-helper'
-import {GitVersion} from './git-version'
-
-// Auth header not supported before 2.9
-// Wire protocol v2 not supported before 2.18
-export const MinimumGitVersion = new GitVersion('2.18')
-
-export interface IGitCommandManager {
- branchDelete(remote: boolean, branch: string): Promise
- branchExists(remote: boolean, pattern: string): Promise
- branchList(remote: boolean): Promise
- checkout(ref: string, startPoint: string): Promise
- checkoutDetach(): Promise
- config(
- configKey: string,
- configValue: string,
- globalConfig?: boolean
- ): Promise
- configExists(configKey: string, globalConfig?: boolean): Promise
- fetch(refSpec: string[], fetchDepth?: number): Promise
- getDefaultBranch(repositoryUrl: string): Promise
- getWorkingDirectory(): string
- init(): Promise
- isDetached(): Promise
- lfsFetch(ref: string): Promise
- lfsInstall(): Promise
- log1(): Promise
- remoteAdd(remoteName: string, remoteUrl: string): Promise
- removeEnvironmentVariable(name: string): void
- revParse(ref: string): Promise
- setEnvironmentVariable(name: string, value: string): void
- shaExists(sha: string): Promise
- submoduleForeach(command: string, recursive: boolean): Promise
- submoduleSync(recursive: boolean): Promise
- submoduleUpdate(fetchDepth: number, recursive: boolean): Promise
- tagExists(pattern: string): Promise
- tryClean(): Promise
- tryConfigUnset(configKey: string, globalConfig?: boolean): Promise
- tryDisableAutomaticGarbageCollection(): Promise
- tryGetFetchUrl(): Promise
- tryReset(): Promise
-}
-
-export async function createCommandManager(
- workingDirectory: string,
- lfs: boolean
-): Promise {
- return await GitCommandManager.createCommandManager(workingDirectory, lfs)
-}
-
-class GitCommandManager {
- private gitEnv = {
- GIT_TERMINAL_PROMPT: '0', // Disable git prompt
- GCM_INTERACTIVE: 'Never' // Disable prompting for git credential manager
- }
- private gitPath = ''
- private lfs = false
- private workingDirectory = ''
-
- // Private constructor; use createCommandManager()
- private constructor() {}
-
- async branchDelete(remote: boolean, branch: string): Promise {
- const args = ['branch', '--delete', '--force']
- if (remote) {
- args.push('--remote')
- }
- args.push(branch)
-
- await this.execGit(args)
- }
-
- async branchExists(remote: boolean, pattern: string): Promise {
- const args = ['branch', '--list']
- if (remote) {
- args.push('--remote')
- }
- args.push(pattern)
-
- const output = await this.execGit(args)
- return !!output.stdout.trim()
- }
-
- async branchList(remote: boolean): Promise {
- const result: string[] = []
-
- // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
- // "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
- // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names.
-
- const args = ['rev-parse', '--symbolic-full-name']
- if (remote) {
- args.push('--remotes=origin')
- } else {
- args.push('--branches')
- }
-
- const output = await this.execGit(args)
-
- for (let branch of output.stdout.trim().split('\n')) {
- branch = branch.trim()
- if (branch) {
- if (branch.startsWith('refs/heads/')) {
- branch = branch.substr('refs/heads/'.length)
- } else if (branch.startsWith('refs/remotes/')) {
- branch = branch.substr('refs/remotes/'.length)
- }
-
- result.push(branch)
- }
- }
-
- return result
- }
-
- async checkout(ref: string, startPoint: string): Promise {
- const args = ['checkout', '--progress', '--force']
- if (startPoint) {
- args.push('-B', ref, startPoint)
- } else {
- args.push(ref)
- }
-
- await this.execGit(args)
- }
-
- async checkoutDetach(): Promise {
- const args = ['checkout', '--detach']
- await this.execGit(args)
- }
-
- async config(
- configKey: string,
- configValue: string,
- globalConfig?: boolean
- ): Promise {
- await this.execGit([
- 'config',
- globalConfig ? '--global' : '--local',
- configKey,
- configValue
- ])
- }
-
- async configExists(
- configKey: string,
- globalConfig?: boolean
- ): Promise {
- const pattern = regexpHelper.escape(configKey)
- const output = await this.execGit(
- [
- 'config',
- globalConfig ? '--global' : '--local',
- '--name-only',
- '--get-regexp',
- pattern
- ],
- true
- )
- return output.exitCode === 0
- }
-
- async fetch(refSpec: string[], fetchDepth?: number): Promise {
- const args = ['-c', 'protocol.version=2', 'fetch']
- if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {
- args.push('--no-tags')
- }
-
- args.push('--prune', '--progress', '--no-recurse-submodules')
- if (fetchDepth && fetchDepth > 0) {
- args.push(`--depth=${fetchDepth}`)
- } else if (
- fshelper.fileExistsSync(
- path.join(this.workingDirectory, '.git', 'shallow')
- )
- ) {
- args.push('--unshallow')
- }
-
- args.push('origin')
- for (const arg of refSpec) {
- args.push(arg)
- }
-
- const that = this
- await retryHelper.execute(async () => {
- await that.execGit(args)
- })
- }
-
- async getDefaultBranch(repositoryUrl: string): Promise {
- let output: GitOutput | undefined
- await retryHelper.execute(async () => {
- output = await this.execGit([
- 'ls-remote',
- '--quiet',
- '--exit-code',
- '--symref',
- repositoryUrl,
- 'HEAD'
- ])
- })
-
- if (output) {
- // Satisfy compiler, will always be set
- for (let line of output.stdout.trim().split('\n')) {
- line = line.trim()
- if (line.startsWith('ref:') || line.endsWith('HEAD')) {
- return line
- .substr('ref:'.length, line.length - 'ref:'.length - 'HEAD'.length)
- .trim()
- }
- }
- }
-
- throw new Error('Unexpected output when retrieving default branch')
- }
-
- getWorkingDirectory(): string {
- return this.workingDirectory
- }
-
- async init(): Promise {
- await this.execGit(['init', this.workingDirectory])
- }
-
- async isDetached(): Promise {
- // Note, "branch --show-current" would be simpler but isn't available until Git 2.22
- const output = await this.execGit(
- ['rev-parse', '--symbolic-full-name', '--verify', '--quiet', 'HEAD'],
- true
- )
- return !output.stdout.trim().startsWith('refs/heads/')
- }
-
- async lfsFetch(ref: string): Promise {
- const args = ['lfs', 'fetch', 'origin', ref]
-
- const that = this
- await retryHelper.execute(async () => {
- await that.execGit(args)
- })
- }
-
- async lfsInstall(): Promise {
- await this.execGit(['lfs', 'install', '--local'])
- }
-
- async log1(): Promise {
- const output = await this.execGit(['log', '-1'])
- return output.stdout
- }
-
- async remoteAdd(remoteName: string, remoteUrl: string): Promise {
- await this.execGit(['remote', 'add', remoteName, remoteUrl])
- }
-
- removeEnvironmentVariable(name: string): void {
- delete this.gitEnv[name]
- }
-
- /**
- * 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.
- * @param {string} ref For example: 'refs/heads/master' or '/refs/tags/v1'
- * @returns {Promise}
- */
- async revParse(ref: string): Promise {
- const output = await this.execGit(['rev-parse', ref])
- return output.stdout.trim()
- }
-
- setEnvironmentVariable(name: string, value: string): void {
- this.gitEnv[name] = value
- }
-
- async shaExists(sha: string): Promise {
- const args = ['rev-parse', '--verify', '--quiet', `${sha}^{object}`]
- const output = await this.execGit(args, true)
- return output.exitCode === 0
- }
-
- async submoduleForeach(command: string, recursive: boolean): Promise {
- const args = ['submodule', 'foreach']
- if (recursive) {
- args.push('--recursive')
- }
- args.push(command)
-
- const output = await this.execGit(args)
- return output.stdout
- }
-
- async submoduleSync(recursive: boolean): Promise {
- const args = ['submodule', 'sync']
- if (recursive) {
- args.push('--recursive')
- }
-
- await this.execGit(args)
- }
-
- async submoduleUpdate(fetchDepth: number, recursive: boolean): Promise {
- const args = ['-c', 'protocol.version=2']
- args.push('submodule', 'update', '--init', '--force')
- if (fetchDepth > 0) {
- args.push(`--depth=${fetchDepth}`)
- }
-
- if (recursive) {
- args.push('--recursive')
- }
-
- await this.execGit(args)
- }
-
- async tagExists(pattern: string): Promise {
- const output = await this.execGit(['tag', '--list', pattern])
- return !!output.stdout.trim()
- }
-
- async tryClean(): Promise {
- const output = await this.execGit(['clean', '-ffdx'], true)
- return output.exitCode === 0
- }
-
- async tryConfigUnset(
- configKey: string,
- globalConfig?: boolean
- ): Promise {
- const output = await this.execGit(
- [
- 'config',
- globalConfig ? '--global' : '--local',
- '--unset-all',
- configKey
- ],
- true
- )
- return output.exitCode === 0
- }
-
- async tryDisableAutomaticGarbageCollection(): Promise {
- const output = await this.execGit(
- ['config', '--local', 'gc.auto', '0'],
- true
- )
- return output.exitCode === 0
- }
-
- async tryGetFetchUrl(): Promise {
- const output = await this.execGit(
- ['config', '--local', '--get', 'remote.origin.url'],
- true
- )
-
- if (output.exitCode !== 0) {
- return ''
- }
-
- const stdout = output.stdout.trim()
- if (stdout.includes('\n')) {
- return ''
- }
-
- return stdout
- }
-
- async tryReset(): Promise {
- const output = await this.execGit(['reset', '--hard', 'HEAD'], true)
- return output.exitCode === 0
- }
-
- static async createCommandManager(
- workingDirectory: string,
- lfs: boolean
- ): Promise {
- const result = new GitCommandManager()
- await result.initializeCommandManager(workingDirectory, lfs)
- return result
- }
-
- private async execGit(
- args: string[],
- allowAllExitCodes = false
- ): Promise {
- fshelper.directoryExistsSync(this.workingDirectory, true)
-
- const result = new GitOutput()
-
- const env = {}
- for (const key of Object.keys(process.env)) {
- env[key] = process.env[key]
- }
- for (const key of Object.keys(this.gitEnv)) {
- env[key] = this.gitEnv[key]
- }
-
- const stdout: string[] = []
-
- const options = {
- cwd: this.workingDirectory,
- env,
- ignoreReturnCode: allowAllExitCodes,
- listeners: {
- stdout: (data: Buffer) => {
- stdout.push(data.toString())
- }
- }
- }
-
- result.exitCode = await exec.exec(`"${this.gitPath}"`, args, options)
- result.stdout = stdout.join('')
- return result
- }
-
- private async initializeCommandManager(
- workingDirectory: string,
- lfs: boolean
- ): Promise {
- this.workingDirectory = workingDirectory
-
- // Git-lfs will try to pull down assets if any of the local/user/system setting exist.
- // If the user didn't enable `LFS` in their pipeline definition, disable LFS fetch/checkout.
- this.lfs = lfs
- if (!this.lfs) {
- this.gitEnv['GIT_LFS_SKIP_SMUDGE'] = '1'
- }
-
- this.gitPath = await io.which('git', true)
-
- // Git version
- core.debug('Getting git version')
- let gitVersion = new GitVersion()
- let gitOutput = await this.execGit(['version'])
- let stdout = gitOutput.stdout.trim()
- if (!stdout.includes('\n')) {
- const match = stdout.match(/\d+\.\d+(\.\d+)?/)
- if (match) {
- gitVersion = new GitVersion(match[0])
- }
- }
- if (!gitVersion.isValid()) {
- throw new Error('Unable to determine git version')
- }
-
- // Minimum git version
- if (!gitVersion.checkMinimum(MinimumGitVersion)) {
- throw new Error(
- `Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
- )
- }
-
- if (this.lfs) {
- // Git-lfs version
- core.debug('Getting git-lfs version')
- let gitLfsVersion = new GitVersion()
- const gitLfsPath = await io.which('git-lfs', true)
- gitOutput = await this.execGit(['lfs', 'version'])
- stdout = gitOutput.stdout.trim()
- if (!stdout.includes('\n')) {
- const match = stdout.match(/\d+\.\d+(\.\d+)?/)
- if (match) {
- gitLfsVersion = new GitVersion(match[0])
- }
- }
- if (!gitLfsVersion.isValid()) {
- throw new Error('Unable to determine git-lfs version')
- }
-
- // Minimum git-lfs version
- // Note:
- // - Auth header not supported before 2.1
- const minimumGitLfsVersion = new GitVersion('2.1')
- if (!gitLfsVersion.checkMinimum(minimumGitLfsVersion)) {
- throw new Error(
- `Minimum required git-lfs version is ${minimumGitLfsVersion}. Your git-lfs ('${gitLfsPath}') is ${gitLfsVersion}`
- )
- }
- }
-
- // Set the user agent
- const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`
- core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
- this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent
- }
-}
-
-class GitOutput {
- stdout = ''
- exitCode = 0
-}
diff --git a/src/git-directory-helper.ts b/src/git-directory-helper.ts
deleted file mode 100644
index e792190..0000000
--- a/src/git-directory-helper.ts
+++ /dev/null
@@ -1,117 +0,0 @@
-import * as assert from 'assert'
-import * as core from '@actions/core'
-import * as fs from 'fs'
-import * as fsHelper from './fs-helper'
-import * as io from '@actions/io'
-import * as path from 'path'
-import {IGitCommandManager} from './git-command-manager'
-
-export async function prepareExistingDirectory(
- git: IGitCommandManager | undefined,
- repositoryPath: string,
- repositoryUrl: string,
- clean: boolean,
- ref: string
-): Promise {
- assert.ok(repositoryPath, 'Expected repositoryPath to be defined')
- assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined')
-
- // Indicates whether to delete the directory contents
- let remove = false
-
- // Check whether using git or REST API
- if (!git) {
- remove = true
- }
- // Fetch URL does not match
- else if (
- !fsHelper.directoryExistsSync(path.join(repositoryPath, '.git')) ||
- repositoryUrl !== (await git.tryGetFetchUrl())
- ) {
- remove = true
- } else {
- // Delete any index.lock and shallow.lock left by a previously canceled run or crashed git process
- const lockPaths = [
- path.join(repositoryPath, '.git', 'index.lock'),
- path.join(repositoryPath, '.git', 'shallow.lock')
- ]
- for (const lockPath of lockPaths) {
- try {
- await io.rmRF(lockPath)
- } catch (error) {
- core.debug(`Unable to delete '${lockPath}'. ${error.message}`)
- }
- }
-
- try {
- core.startGroup('Removing previously created refs, to avoid conflicts')
- // Checkout detached HEAD
- if (!(await git.isDetached())) {
- await git.checkoutDetach()
- }
-
- // Remove all refs/heads/*
- let branches = await git.branchList(false)
- for (const branch of branches) {
- await git.branchDelete(false, branch)
- }
-
- // Remove any conflicting refs/remotes/origin/*
- // Example 1: Consider ref is refs/heads/foo and previously fetched refs/remotes/origin/foo/bar
- // Example 2: Consider ref is refs/heads/foo/bar and previously fetched refs/remotes/origin/foo
- if (ref) {
- ref = ref.startsWith('refs/') ? ref : `refs/heads/${ref}`
- if (ref.startsWith('refs/heads/')) {
- const upperName1 = ref.toUpperCase().substr('REFS/HEADS/'.length)
- const upperName1Slash = `${upperName1}/`
- branches = await git.branchList(true)
- for (const branch of branches) {
- const upperName2 = branch.substr('origin/'.length).toUpperCase()
- const upperName2Slash = `${upperName2}/`
- if (
- upperName1.startsWith(upperName2Slash) ||
- upperName2.startsWith(upperName1Slash)
- ) {
- await git.branchDelete(true, branch)
- }
- }
- }
- }
- core.endGroup()
-
- // Clean
- if (clean) {
- core.startGroup('Cleaning the repository')
- if (!(await git.tryClean())) {
- core.debug(
- `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
- } else if (!(await git.tryReset())) {
- remove = true
- }
- core.endGroup()
-
- if (remove) {
- core.warning(
- `Unable to clean or reset the repository. The repository will be recreated instead.`
- )
- }
- }
- } catch (error) {
- core.warning(
- `Unable to prepare the existing repository. The repository will be recreated instead.`
- )
- remove = true
- }
- }
-
- if (remove) {
- // Delete the contents of the directory. Don't delete the directory itself
- // since it might be the current working directory.
- core.info(`Deleting the contents of '${repositoryPath}'`)
- for (const file of await fs.promises.readdir(repositoryPath)) {
- await io.rmRF(path.join(repositoryPath, file))
- }
- }
-}
diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts
deleted file mode 100644
index 366ff33..0000000
--- a/src/git-source-provider.ts
+++ /dev/null
@@ -1,265 +0,0 @@
-import * as core from '@actions/core'
-import * as fsHelper from './fs-helper'
-import * as gitAuthHelper from './git-auth-helper'
-import * as gitCommandManager from './git-command-manager'
-import * as gitDirectoryHelper from './git-directory-helper'
-import * as githubApiHelper from './github-api-helper'
-import * as io from '@actions/io'
-import * as path from 'path'
-import * as refHelper from './ref-helper'
-import * as stateHelper from './state-helper'
-import * as urlHelper from './url-helper'
-import {IGitCommandManager} from './git-command-manager'
-import {IGitSourceSettings} from './git-source-settings'
-
-export async function getSource(settings: IGitSourceSettings): Promise {
- // Repository URL
- core.info(
- `Syncing repository: ${settings.repositoryOwner}/${settings.repositoryName}`
- )
- const repositoryUrl = urlHelper.getFetchUrl(settings)
-
- // Remove conflicting file path
- if (fsHelper.fileExistsSync(settings.repositoryPath)) {
- await io.rmRF(settings.repositoryPath)
- }
-
- // Create directory
- let isExisting = true
- if (!fsHelper.directoryExistsSync(settings.repositoryPath)) {
- isExisting = false
- await io.mkdirP(settings.repositoryPath)
- }
-
- // Git command manager
- core.startGroup('Getting Git version info')
- const git = await getGitCommandManager(settings)
- core.endGroup()
-
- // Prepare existing directory, otherwise recreate
- if (isExisting) {
- await gitDirectoryHelper.prepareExistingDirectory(
- git,
- settings.repositoryPath,
- repositoryUrl,
- settings.clean,
- settings.ref
- )
- }
-
- if (!git) {
- // Downloading using REST API
- core.info(`The repository will be downloaded using the GitHub REST API`)
- core.info(
- `To create a local Git repository instead, add Git ${gitCommandManager.MinimumGitVersion} or higher to the PATH`
- )
- if (settings.submodules) {
- 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.`
- )
- } 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(
- settings.authToken,
- settings.repositoryOwner,
- settings.repositoryName,
- settings.ref,
- settings.commit,
- settings.repositoryPath
- )
- return
- }
-
- // Save state for POST action
- stateHelper.setRepositoryPath(settings.repositoryPath)
-
- // Initialize the repository
- if (
- !fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))
- ) {
- 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()
-
- const authHelper = gitAuthHelper.createAuthHelper(git, settings)
- try {
- // Configure auth
- core.startGroup('Setting up auth')
- await authHelper.configureAuth()
- core.endGroup()
-
- // Determine the default branch
- if (!settings.ref && !settings.commit) {
- core.startGroup('Determining the default branch')
- if (settings.sshKey) {
- settings.ref = await git.getDefaultBranch(repositoryUrl)
- } else {
- settings.ref = await githubApiHelper.getDefaultBranch(
- settings.authToken,
- settings.repositoryOwner,
- settings.repositoryName
- )
- }
- core.endGroup()
- }
-
- // LFS install
- if (settings.lfs) {
- await git.lfsInstall()
- }
-
- // Fetch
- core.startGroup('Fetching the repository')
- if (settings.fetchDepth <= 0) {
- // Fetch all branches and tags
- let refSpec = refHelper.getRefSpecForAllHistory(
- settings.ref,
- settings.commit
- )
- await git.fetch(refSpec)
-
- // 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.
- if (!(await refHelper.testRef(git, settings.ref, settings.commit))) {
- refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
- await git.fetch(refSpec)
- }
- } else {
- const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
- await git.fetch(refSpec, settings.fetchDepth)
- }
- core.endGroup()
-
- // Checkout info
- core.startGroup('Determining the checkout info')
- const checkoutInfo = await refHelper.getCheckoutInfo(
- git,
- settings.ref,
- settings.commit
- )
- core.endGroup()
-
- // LFS fetch
- // Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
- // Explicit lfs fetch will fetch lfs objects in parallel.
- if (settings.lfs) {
- core.startGroup('Fetching LFS objects')
- await git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref)
- core.endGroup()
- }
-
- // Checkout
- core.startGroup('Checking out the ref')
- await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint)
- core.endGroup()
-
- // Submodules
- if (settings.submodules) {
- try {
- // Temporarily override global config
- core.startGroup('Setting up auth for fetching submodules')
- await authHelper.configureGlobalAuth()
- 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()
- }
- }
-
- // Dump some info about the checked out commit
- const commitInfo = await git.log1()
-
- // Check for incorrect pull request merge commit
- await refHelper.checkCommitInfo(
- settings.authToken,
- commitInfo,
- settings.repositoryOwner,
- settings.repositoryName,
- settings.ref,
- settings.commit
- )
- } finally {
- // Remove auth
- if (!settings.persistCredentials) {
- core.startGroup('Removing auth')
- await authHelper.removeAuth()
- core.endGroup()
- }
- }
-}
-
-export async function cleanup(repositoryPath: string): Promise {
- // Repo exists?
- if (
- !repositoryPath ||
- !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))
- ) {
- return
- }
-
- let git: IGitCommandManager
- try {
- git = await gitCommandManager.createCommandManager(repositoryPath, false)
- } catch {
- return
- }
-
- // Remove auth
- const authHelper = gitAuthHelper.createAuthHelper(git)
- await authHelper.removeAuth()
-}
-
-async function getGitCommandManager(
- settings: IGitSourceSettings
-): Promise {
- core.info(`Working directory is '${settings.repositoryPath}'`)
- try {
- return await gitCommandManager.createCommandManager(
- settings.repositoryPath,
- settings.lfs
- )
- } catch (err) {
- // Git is required for LFS
- if (settings.lfs) {
- throw err
- }
-
- // Otherwise fallback to REST API
- return undefined
- }
-}
diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts
deleted file mode 100644
index 2786222..0000000
--- a/src/git-source-settings.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-export interface IGitSourceSettings {
- /**
- * The location on disk where the repository will be placed
- */
- repositoryPath: string
-
- /**
- * The repository owner
- */
- repositoryOwner: string
-
- /**
- * The repository name
- */
- repositoryName: string
-
- /**
- * The ref to fetch
- */
- ref: string
-
- /**
- * The commit to checkout
- */
- commit: string
-
- /**
- * Indicates whether to clean the repository
- */
- clean: boolean
-
- /**
- * The depth when fetching
- */
- fetchDepth: number
-
- /**
- * Indicates whether to fetch LFS objects
- */
- lfs: boolean
-
- /**
- * Indicates whether to checkout submodules
- */
- submodules: boolean
-
- /**
- * Indicates whether to recursively checkout submodules
- */
- nestedSubmodules: boolean
-
- /**
- * The auth token to use when fetching the repository
- */
- authToken: string
-
- /**
- * The SSH key to configure
- */
- sshKey: string
-
- /**
- * Additional SSH known hosts
- */
- sshKnownHosts: string
-
- /**
- * Indicates whether the server must be a known host
- */
- sshStrict: boolean
-
- /**
- * Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
- */
- persistCredentials: boolean
-}
diff --git a/src/git-version.ts b/src/git-version.ts
deleted file mode 100644
index 44bee1a..0000000
--- a/src/git-version.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-export class GitVersion {
- private readonly major: number = NaN
- private readonly minor: number = NaN
- private readonly patch: number = NaN
-
- /**
- * Used for comparing the version of git and git-lfs against the minimum required version
- * @param version the version string, e.g. 1.2 or 1.2.3
- */
- constructor(version?: string) {
- if (version) {
- const match = version.match(/^(\d+)\.(\d+)(\.(\d+))?$/)
- if (match) {
- this.major = Number(match[1])
- this.minor = Number(match[2])
- if (match[4]) {
- this.patch = Number(match[4])
- }
- }
- }
- }
-
- /**
- * Compares the instance against a minimum required version
- * @param minimum Minimum version
- */
- checkMinimum(minimum: GitVersion): boolean {
- if (!minimum.isValid()) {
- throw new Error('Arg minimum is not a valid version')
- }
-
- // Major is insufficient
- if (this.major < minimum.major) {
- return false
- }
-
- // Major is equal
- if (this.major === minimum.major) {
- // Minor is insufficient
- if (this.minor < minimum.minor) {
- return false
- }
-
- // Minor is equal
- if (this.minor === minimum.minor) {
- // Patch is insufficient
- if (this.patch && this.patch < (minimum.patch || 0)) {
- return false
- }
- }
- }
-
- return true
- }
-
- /**
- * Indicates whether the instance was constructed from a valid version string
- */
- isValid(): boolean {
- return !isNaN(this.major)
- }
-
- /**
- * Returns the version as a string, e.g. 1.2 or 1.2.3
- */
- toString(): string {
- let result = ''
- if (this.isValid()) {
- result = `${this.major}.${this.minor}`
- if (!isNaN(this.patch)) {
- result += `.${this.patch}`
- }
- }
-
- return result
- }
-}
diff --git a/src/github-api-helper.ts b/src/github-api-helper.ts
deleted file mode 100644
index 8bbcf2d..0000000
--- a/src/github-api-helper.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-import * as assert from 'assert'
-import * as core from '@actions/core'
-import * as fs from 'fs'
-import * as github from '@actions/github'
-import * as io from '@actions/io'
-import * as path from 'path'
-import * as retryHelper from './retry-helper'
-import * as toolCache from '@actions/tool-cache'
-import {default as uuid} from 'uuid/v4'
-import {Octokit} from '@octokit/rest'
-
-const IS_WINDOWS = process.platform === 'win32'
-
-export async function downloadRepository(
- authToken: string,
- owner: string,
- repo: string,
- ref: string,
- commit: string,
- repositoryPath: string
-): Promise {
- // Determine the default branch
- if (!ref && !commit) {
- core.info('Determining the default branch')
- ref = await getDefaultBranch(authToken, owner, repo)
- }
-
- // Download the archive
- let archiveData = await retryHelper.execute(async () => {
- core.info('Downloading the archive')
- return await downloadArchive(authToken, owner, repo, ref, commit)
- })
-
- // Write archive to disk
- core.info('Writing archive to disk')
- const uniqueId = uuid()
- const archivePath = path.join(repositoryPath, `${uniqueId}.tar.gz`)
- await fs.promises.writeFile(archivePath, archiveData)
- archiveData = Buffer.from('') // Free memory
-
- // Extract archive
- core.info('Extracting the archive')
- const extractPath = path.join(repositoryPath, uniqueId)
- await io.mkdirP(extractPath)
- if (IS_WINDOWS) {
- await toolCache.extractZip(archivePath, extractPath)
- } else {
- await toolCache.extractTar(archivePath, extractPath)
- }
- io.rmRF(archivePath)
-
- // Determine the path of the repository content. The archive contains
- // a top-level folder and the repository content is inside.
- const archiveFileNames = await fs.promises.readdir(extractPath)
- assert.ok(
- archiveFileNames.length == 1,
- 'Expected exactly one directory inside archive'
- )
- const archiveVersion = archiveFileNames[0] // The top-level folder name includes the short SHA
- core.info(`Resolved version ${archiveVersion}`)
- const tempRepositoryPath = path.join(extractPath, archiveVersion)
-
- // Move the files
- for (const fileName of await fs.promises.readdir(tempRepositoryPath)) {
- const sourcePath = path.join(tempRepositoryPath, fileName)
- const targetPath = path.join(repositoryPath, fileName)
- if (IS_WINDOWS) {
- await io.cp(sourcePath, targetPath, {recursive: true}) // Copy on Windows (Windows Defender may have a lock)
- } else {
- await io.mv(sourcePath, targetPath)
- }
- }
- io.rmRF(extractPath)
-}
-
-/**
- * Looks up the default branch name
- */
-export async function getDefaultBranch(
- authToken: string,
- owner: string,
- repo: string
-): Promise {
- return await retryHelper.execute(async () => {
- core.info('Retrieving the default branch name')
- const octokit = new github.GitHub(authToken)
- let result: string
- try {
- // Get the default branch from the repo info
- const response = await octokit.repos.get({owner, repo})
- result = response.data.default_branch
- assert.ok(result, 'default_branch cannot be empty')
- } catch (err) {
- // Handle .wiki repo
- if (err['status'] === 404 && repo.toUpperCase().endsWith('.WIKI')) {
- result = 'master'
- }
- // Otherwise error
- else {
- throw err
- }
- }
-
- // Print the default branch
- core.info(`Default branch '${result}'`)
-
- // Prefix with 'refs/heads'
- if (!result.startsWith('refs/')) {
- result = `refs/heads/${result}`
- }
-
- return result
- })
-}
-
-async function downloadArchive(
- authToken: string,
- owner: string,
- repo: string,
- ref: string,
- commit: string
-): Promise {
- const octokit = new github.GitHub(authToken)
- const params: Octokit.ReposGetArchiveLinkParams = {
- owner: owner,
- repo: repo,
- archive_format: IS_WINDOWS ? 'zipball' : 'tarball',
- ref: commit || ref
- }
- 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
-}
diff --git a/src/input-helper.ts b/src/input-helper.ts
deleted file mode 100644
index eabb9e0..0000000
--- a/src/input-helper.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import * as core from '@actions/core'
-import * as fsHelper from './fs-helper'
-import * as github from '@actions/github'
-import * as path from 'path'
-import {IGitSourceSettings} from './git-source-settings'
-
-export function getInputs(): IGitSourceSettings {
- const result = ({} as unknown) as IGitSourceSettings
-
- // GitHub workspace
- let githubWorkspacePath = process.env['GITHUB_WORKSPACE']
- if (!githubWorkspacePath) {
- throw new Error('GITHUB_WORKSPACE not defined')
- }
- githubWorkspacePath = path.resolve(githubWorkspacePath)
- core.debug(`GITHUB_WORKSPACE = '${githubWorkspacePath}'`)
- fsHelper.directoryExistsSync(githubWorkspacePath, true)
-
- // Qualified repository
- const qualifiedRepository =
- core.getInput('repository') ||
- `${github.context.repo.owner}/${github.context.repo.repo}`
- core.debug(`qualified repository = '${qualifiedRepository}'`)
- const splitRepository = qualifiedRepository.split('/')
- if (
- splitRepository.length !== 2 ||
- !splitRepository[0] ||
- !splitRepository[1]
- ) {
- throw new Error(
- `Invalid repository '${qualifiedRepository}'. Expected format {owner}/{repo}.`
- )
- }
- result.repositoryOwner = splitRepository[0]
- result.repositoryName = splitRepository[1]
-
- // Repository path
- result.repositoryPath = core.getInput('path') || '.'
- result.repositoryPath = path.resolve(
- githubWorkspacePath,
- result.repositoryPath
- )
- if (
- !(result.repositoryPath + path.sep).startsWith(
- githubWorkspacePath + path.sep
- )
- ) {
- throw new Error(
- `Repository path '${result.repositoryPath}' is not under '${githubWorkspacePath}'`
- )
- }
-
- // Workflow repository?
- const isWorkflowRepository =
- qualifiedRepository.toUpperCase() ===
- `${github.context.repo.owner}/${github.context.repo.repo}`.toUpperCase()
-
- // Source branch, source version
- result.ref = core.getInput('ref')
- if (!result.ref) {
- if (isWorkflowRepository) {
- result.ref = github.context.ref
- result.commit = github.context.sha
-
- // Some events have an unqualifed ref. For example when a PR is merged (pull_request closed event),
- // the ref is unqualifed like "master" instead of "refs/heads/master".
- if (result.commit && result.ref && !result.ref.startsWith('refs/')) {
- result.ref = `refs/heads/${result.ref}`
- }
- }
- }
- // SHA?
- else if (result.ref.match(/^[0-9a-fA-F]{40}$/)) {
- result.commit = result.ref
- result.ref = ''
- }
- core.debug(`ref = '${result.ref}'`)
- core.debug(`commit = '${result.commit}'`)
-
- // Clean
- result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
- core.debug(`clean = ${result.clean}`)
-
- // Fetch depth
- result.fetchDepth = Math.floor(Number(core.getInput('fetch-depth') || '1'))
- if (isNaN(result.fetchDepth) || result.fetchDepth < 0) {
- result.fetchDepth = 0
- }
- core.debug(`fetch depth = ${result.fetchDepth}`)
-
- // LFS
- result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
- core.debug(`lfs = ${result.lfs}`)
-
- // Submodules
- result.submodules = false
- result.nestedSubmodules = false
- const submodulesString = (core.getInput('submodules') || '').toUpperCase()
- if (submodulesString == 'RECURSIVE') {
- result.submodules = true
- result.nestedSubmodules = true
- } else if (submodulesString == 'TRUE') {
- result.submodules = true
- }
- core.debug(`submodules = ${result.submodules}`)
- core.debug(`recursive submodules = ${result.nestedSubmodules}`)
-
- // Auth token
- result.authToken = core.getInput('token', {required: true})
-
- // SSH
- result.sshKey = core.getInput('ssh-key')
- result.sshKnownHosts = core.getInput('ssh-known-hosts')
- result.sshStrict =
- (core.getInput('ssh-strict') || 'true').toUpperCase() === 'TRUE'
-
- // Persist credentials
- result.persistCredentials =
- (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'
-
- return result
-}
diff --git a/src/main.ts b/src/main.ts
deleted file mode 100644
index 4702fe0..0000000
--- a/src/main.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as core from '@actions/core'
-import * as coreCommand from '@actions/core/lib/command'
-import * as gitSourceProvider from './git-source-provider'
-import * as inputHelper from './input-helper'
-import * as path from 'path'
-import * as stateHelper from './state-helper'
-
-async function run(): Promise {
- try {
- const sourceSettings = inputHelper.getInputs()
-
- try {
- // Register problem matcher
- coreCommand.issueCommand(
- 'add-matcher',
- {},
- path.join(__dirname, 'problem-matcher.json')
- )
-
- // Get sources
- await gitSourceProvider.getSource(sourceSettings)
- } finally {
- // Unregister problem matcher
- coreCommand.issueCommand('remove-matcher', {owner: 'checkout-git'}, '')
- }
- } catch (error) {
- core.setFailed(error.message)
- }
-}
-
-async function cleanup(): Promise {
- try {
- await gitSourceProvider.cleanup(stateHelper.RepositoryPath)
- } catch (error) {
- core.warning(error.message)
- }
-}
-
-// Main
-if (!stateHelper.IsPost) {
- run()
-}
-// Post
-else {
- cleanup()
-}
diff --git a/src/misc/generate-docs.ts b/src/misc/generate-docs.ts
deleted file mode 100644
index defda5a..0000000
--- a/src/misc/generate-docs.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import * as fs from 'fs'
-import * as os from 'os'
-import * as path from 'path'
-import * as yaml from 'js-yaml'
-
-//
-// SUMMARY
-//
-// This script rebuilds the usage section in the README.md to be consistent with the action.yml
-
-function updateUsage(
- actionReference: string,
- actionYamlPath: string = 'action.yml',
- readmePath: string = 'README.md',
- startToken: string = '',
- endToken: string = ''
-): void {
- if (!actionReference) {
- throw new Error('Parameter actionReference must not be empty')
- }
-
- // Load the action.yml
- const actionYaml = yaml.safeLoad(fs.readFileSync(actionYamlPath).toString())
-
- // Load the README
- const originalReadme = fs.readFileSync(readmePath).toString()
-
- // Find the start token
- const startTokenIndex = originalReadme.indexOf(startToken)
- if (startTokenIndex < 0) {
- throw new Error(`Start token '${startToken}' not found`)
- }
-
- // Find the end token
- const endTokenIndex = originalReadme.indexOf(endToken)
- if (endTokenIndex < 0) {
- throw new Error(`End token '${endToken}' not found`)
- } else if (endTokenIndex < startTokenIndex) {
- throw new Error('Start token must appear before end token')
- }
-
- // Build the new README
- const newReadme: string[] = []
-
- // Append the beginning
- newReadme.push(originalReadme.substr(0, startTokenIndex + startToken.length))
-
- // Build the new usage section
- newReadme.push('```yaml', `- uses: ${actionReference}`, ' with:')
- const inputs = actionYaml.inputs
- let firstInput = true
- for (const key of Object.keys(inputs)) {
- const input = inputs[key]
-
- // Line break between inputs
- if (!firstInput) {
- newReadme.push('')
- }
-
- // Constrain the width of the description
- const width = 80
- let description = (input.description as string)
- .trimRight()
- .replace(/\r\n/g, '\n') // Convert CR to LF
- .replace(/ +/g, ' ') // Squash consecutive spaces
- .replace(/ \n/g, '\n') // Squash space followed by newline
- while (description) {
- // Longer than width? Find a space to break apart
- let segment: string = description
- if (description.length > width) {
- segment = description.substr(0, width + 1)
- while (!segment.endsWith(' ') && !segment.endsWith('\n') && segment) {
- segment = segment.substr(0, segment.length - 1)
- }
-
- // Trimmed too much?
- if (segment.length < width * 0.67) {
- segment = description
- }
- } else {
- segment = description
- }
-
- // Check for newline
- const newlineIndex = segment.indexOf('\n')
- if (newlineIndex >= 0) {
- segment = segment.substr(0, newlineIndex + 1)
- }
-
- // Append segment
- newReadme.push(` # ${segment}`.trimRight())
-
- // Remaining
- description = description.substr(segment.length)
- }
-
- if (input.default !== undefined) {
- // Append blank line if description had paragraphs
- if ((input.description as string).trimRight().match(/\n[ ]*\r?\n/)) {
- newReadme.push(` #`)
- }
-
- // Default
- newReadme.push(` # Default: ${input.default}`)
- }
-
- // Input name
- newReadme.push(` ${key}: ''`)
-
- firstInput = false
- }
-
- newReadme.push('```')
-
- // Append the end
- newReadme.push(originalReadme.substr(endTokenIndex))
-
- // Write the new README
- fs.writeFileSync(readmePath, newReadme.join(os.EOL))
-}
-
-updateUsage(
- 'actions/checkout@v2',
- path.join(__dirname, '..', '..', 'action.yml'),
- path.join(__dirname, '..', '..', 'README.md')
-)
diff --git a/src/ref-helper.ts b/src/ref-helper.ts
deleted file mode 100644
index 381fa60..0000000
--- a/src/ref-helper.ts
+++ /dev/null
@@ -1,283 +0,0 @@
-import {URL} from 'url'
-import {IGitCommandManager} from './git-command-manager'
-import * as core from '@actions/core'
-import * as github from '@actions/github'
-
-export const tagsRefSpec = '+refs/tags/*:refs/tags/*'
-
-export interface ICheckoutInfo {
- ref: string
- startPoint: string
-}
-
-export async function getCheckoutInfo(
- git: IGitCommandManager,
- ref: string,
- commit: string
-): Promise {
- if (!git) {
- throw new Error('Arg git cannot be empty')
- }
-
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty')
- }
-
- const result = ({} as unknown) as ICheckoutInfo
- const upperRef = (ref || '').toUpperCase()
-
- // SHA only
- if (!ref) {
- result.ref = commit
- }
- // refs/heads/
- else if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length)
- result.ref = branch
- result.startPoint = `refs/remotes/origin/${branch}`
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length)
- result.ref = `refs/remotes/pull/${branch}`
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/')) {
- result.ref = ref
- }
- // Unqualified ref, check for a matching branch or tag
- else {
- if (await git.branchExists(true, `origin/${ref}`)) {
- result.ref = ref
- result.startPoint = `refs/remotes/origin/${ref}`
- } else if (await git.tagExists(`${ref}`)) {
- result.ref = `refs/tags/${ref}`
- } else {
- throw new Error(
- `A branch or tag with the name '${ref}' could not be found`
- )
- }
- }
-
- return result
-}
-
-export function getRefSpecForAllHistory(ref: string, commit: string): string[] {
- const result = ['+refs/heads/*:refs/remotes/origin/*', tagsRefSpec]
- if (ref && ref.toUpperCase().startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length)
- result.push(`+${commit || ref}:refs/remotes/pull/${branch}`)
- }
-
- return result
-}
-
-export function getRefSpec(ref: string, commit: string): string[] {
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty')
- }
-
- const upperRef = (ref || '').toUpperCase()
-
- // SHA
- if (commit) {
- // refs/heads
- if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length)
- return [`+${commit}:refs/remotes/origin/${branch}`]
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length)
- return [`+${commit}:refs/remotes/pull/${branch}`]
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/TAGS/')) {
- return [`+${commit}:${ref}`]
- }
- // Otherwise no destination ref
- else {
- return [commit]
- }
- }
- // Unqualified ref, check for a matching branch or tag
- else if (!upperRef.startsWith('REFS/')) {
- return [
- `+refs/heads/${ref}*:refs/remotes/origin/${ref}*`,
- `+refs/tags/${ref}*:refs/tags/${ref}*`
- ]
- }
- // refs/heads/
- else if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length)
- return [`+${ref}:refs/remotes/origin/${branch}`]
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- const branch = ref.substring('refs/pull/'.length)
- return [`+${ref}:refs/remotes/pull/${branch}`]
- }
- // refs/tags/
- else {
- return [`+${ref}:${ref}`]
- }
-}
-
-/**
- * Tests whether the initial fetch created the ref at the expected commit
- */
-export async function testRef(
- git: IGitCommandManager,
- ref: string,
- commit: string
-): Promise {
- if (!git) {
- throw new Error('Arg git cannot be empty')
- }
-
- if (!ref && !commit) {
- throw new Error('Args ref and commit cannot both be empty')
- }
-
- // No SHA? Nothing to test
- if (!commit) {
- return true
- }
- // SHA only?
- else if (!ref) {
- return await git.shaExists(commit)
- }
-
- const upperRef = ref.toUpperCase()
-
- // refs/heads/
- if (upperRef.startsWith('REFS/HEADS/')) {
- const branch = ref.substring('refs/heads/'.length)
- return (
- (await git.branchExists(true, `origin/${branch}`)) &&
- commit === (await git.revParse(`refs/remotes/origin/${branch}`))
- )
- }
- // refs/pull/
- else if (upperRef.startsWith('REFS/PULL/')) {
- // Assume matches because fetched using the commit
- return true
- }
- // refs/tags/
- else if (upperRef.startsWith('REFS/TAGS/')) {
- const tagName = ref.substring('refs/tags/'.length)
- return (
- (await git.tagExists(tagName)) && commit === (await git.revParse(ref))
- )
- }
- // Unexpected
- else {
- core.debug(`Unexpected ref format '${ref}' when testing ref info`)
- return true
- }
-}
-
-export async function checkCommitInfo(
- token: string,
- commitInfo: string,
- repositoryOwner: string,
- repositoryName: string,
- ref: string,
- commit: string
-): Promise {
- try {
- // GHES?
- if (isGhes()) {
- return
- }
-
- // Auth token?
- if (!token) {
- return
- }
-
- // Public PR synchronize, for workflow repo?
- if (
- fromPayload('repository.private') !== false ||
- github.context.eventName !== 'pull_request' ||
- fromPayload('action') !== 'synchronize' ||
- repositoryOwner !== github.context.repo.owner ||
- repositoryName !== github.context.repo.repo ||
- ref !== github.context.ref ||
- !ref.startsWith('refs/pull/') ||
- commit !== github.context.sha
- ) {
- return
- }
-
- // Head SHA
- const expectedHeadSha = fromPayload('after')
- if (!expectedHeadSha) {
- core.debug('Unable to determine head sha')
- return
- }
-
- // Base SHA
- const expectedBaseSha = fromPayload('pull_request.base.sha')
- if (!expectedBaseSha) {
- core.debug('Unable to determine base sha')
- return
- }
-
- // Expected message?
- const expectedMessage = `Merge ${expectedHeadSha} into ${expectedBaseSha}`
- if (commitInfo.indexOf(expectedMessage) >= 0) {
- return
- }
-
- // Extract details from message
- const match = commitInfo.match(/Merge ([0-9a-f]{40}) into ([0-9a-f]{40})/)
- if (!match) {
- core.debug('Unexpected message format')
- return
- }
-
- // Post telemetry
- const actualHeadSha = match[1]
- if (actualHeadSha !== expectedHeadSha) {
- core.debug(
- `Expected head sha ${expectedHeadSha}; actual head sha ${actualHeadSha}`
- )
- const octokit = new github.GitHub(token, {
- userAgent: `actions-checkout-tracepoint/1.0 (code=STALE_MERGE;owner=${repositoryOwner};repo=${repositoryName};pr=${fromPayload(
- 'number'
- )};run_id=${
- process.env['GITHUB_RUN_ID']
- };expected_head_sha=${expectedHeadSha};actual_head_sha=${actualHeadSha})`
- })
- await octokit.repos.get({owner: repositoryOwner, repo: repositoryName})
- }
- } catch (err) {
- core.debug(`Error when validating commit info: ${err.stack}`)
- }
-}
-
-function fromPayload(path: string): any {
- return select(github.context.payload, path)
-}
-
-function select(obj: any, path: string): any {
- if (!obj) {
- return undefined
- }
-
- const i = path.indexOf('.')
- if (i < 0) {
- return obj[path]
- }
-
- const key = path.substr(0, i)
- 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'
-}
diff --git a/src/regexp-helper.ts b/src/regexp-helper.ts
deleted file mode 100644
index ec76c3a..0000000
--- a/src/regexp-helper.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export function escape(value: string): string {
- return value.replace(/[^a-zA-Z0-9_]/g, x => {
- return `\\${x}`
- })
-}
diff --git a/src/retry-helper.ts b/src/retry-helper.ts
deleted file mode 100644
index bbc20a1..0000000
--- a/src/retry-helper.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import * as core from '@actions/core'
-
-const defaultMaxAttempts = 3
-const defaultMinSeconds = 10
-const defaultMaxSeconds = 20
-
-export class RetryHelper {
- private maxAttempts: number
- private minSeconds: number
- private maxSeconds: number
-
- constructor(
- maxAttempts: number = defaultMaxAttempts,
- minSeconds: number = defaultMinSeconds,
- maxSeconds: number = defaultMaxSeconds
- ) {
- this.maxAttempts = maxAttempts
- this.minSeconds = Math.floor(minSeconds)
- this.maxSeconds = Math.floor(maxSeconds)
- if (this.minSeconds > this.maxSeconds) {
- throw new Error('min seconds should be less than or equal to max seconds')
- }
- }
-
- async execute(action: () => Promise): Promise {
- let attempt = 1
- while (attempt < this.maxAttempts) {
- // Try
- try {
- return await action()
- } catch (err) {
- core.info(err.message)
- }
-
- // Sleep
- const seconds = this.getSleepAmount()
- core.info(`Waiting ${seconds} seconds before trying again`)
- await this.sleep(seconds)
- attempt++
- }
-
- // Last attempt
- return await action()
- }
-
- private getSleepAmount(): number {
- return (
- Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +
- this.minSeconds
- )
- }
-
- private async sleep(seconds: number): Promise {
- return new Promise(resolve => setTimeout(resolve, seconds * 1000))
- }
-}
-
-export async function execute(action: () => Promise): Promise {
- const retryHelper = new RetryHelper()
- return await retryHelper.execute(action)
-}
diff --git a/src/state-helper.ts b/src/state-helper.ts
deleted file mode 100644
index 3c657b1..0000000
--- a/src/state-helper.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import * as coreCommand from '@actions/core/lib/command'
-
-/**
- * Indicates whether the POST action is running
- */
-export const IsPost = !!process.env['STATE_isPost']
-
-/**
- * The repository path for the POST action. The value is empty during the MAIN action.
- */
-export const RepositoryPath =
- (process.env['STATE_repositoryPath'] as string) || ''
-
-/**
- * The SSH key path for the POST action. The value is empty during the MAIN action.
- */
-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.
- */
-export const SshKnownHostsPath =
- (process.env['STATE_sshKnownHostsPath'] as string) || ''
-
-/**
- * Save the repository path so the POST action can retrieve the value.
- */
-export function setRepositoryPath(repositoryPath: string) {
- coreCommand.issueCommand(
- 'save-state',
- {name: 'repositoryPath'},
- repositoryPath
- )
-}
-
-/**
- * Save the SSH key path so the POST action can retrieve the value.
- */
-export function setSshKeyPath(sshKeyPath: string) {
- coreCommand.issueCommand('save-state', {name: 'sshKeyPath'}, sshKeyPath)
-}
-
-/**
- * Save the SSH known hosts path so the POST action can retrieve the value.
- */
-export function setSshKnownHostsPath(sshKnownHostsPath: string) {
- coreCommand.issueCommand(
- 'save-state',
- {name: 'sshKnownHostsPath'},
- sshKnownHostsPath
- )
-}
-
-// 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.
-if (!IsPost) {
- coreCommand.issueCommand('save-state', {name: 'isPost'}, 'true')
-}
diff --git a/src/url-helper.ts b/src/url-helper.ts
deleted file mode 100644
index 05f1cbd..0000000
--- a/src/url-helper.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as assert from 'assert'
-import {IGitSourceSettings} from './git-source-settings'
-import {URL} from 'url'
-
-export function getFetchUrl(settings: IGitSourceSettings): string {
- assert.ok(
- settings.repositoryOwner,
- 'settings.repositoryOwner must be defined'
- )
- assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
- const serviceUrl = getServerUrl()
- const encodedOwner = encodeURIComponent(settings.repositoryOwner)
- const encodedName = encodeURIComponent(settings.repositoryName)
- if (settings.sshKey) {
- return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
- }
-
- // "origin" is SCHEME://HOSTNAME[:PORT]
- return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`
-}
-
-export function getServerUrl(): URL {
- // todo: remove GITHUB_URL after support for GHES Alpha is no longer needed
- return new URL(
- process.env['GITHUB_SERVER_URL'] ||
- process.env['GITHUB_URL'] ||
- 'https://github.com'
- )
-}
diff --git a/submodule-level-1 b/submodule-level-1
new file mode 160000
index 0000000..4b38027
--- /dev/null
+++ b/submodule-level-1
@@ -0,0 +1 @@
+Subproject commit 4b38027b4a366b8506eb90cfdc99c8208d3231c9
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 1f0f004..0000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "compilerOptions": {
- "target": "es6",
- "module": "commonjs",
- "lib": [
- "es6"
- ],
- "outDir": "./lib",
- "rootDir": "./src",
- "declaration": true,
- "strict": true,
- "noImplicitAny": false,
- "esModuleInterop": true
- },
- "exclude": ["__test__", "lib", "node_modules"]
-}