diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..6591a21fb --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,62 @@ +{ + "plugins": ["jest", "@typescript-eslint"], + "extends": ["plugin:github/es6"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 9, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "globals": { + "fetch": true + }, + "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": "off", + "@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", + "no-console": "off" + }, + "env": { + "node": true, + "es6": true, + "jest/globals": true + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 40c80f4ac..6c50b76c0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,7 @@ yarn-error.log *.pub ## CodeCov -coverage \ No newline at end of file +coverage + +# Yarn Integrity file +.yarn-integrity \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000..386485a76 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "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/README.md b/README.md index d9863780b..4c7c948e6 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,12 @@ jobs: build-and-deploy: runs-on: ubuntu-latest steps: - - name: Checkout + - name: Checkout 🛎️ uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. with: persist-credentials: false - - name: Build and Deploy + - name: Build and Deploy 🚀 uses: JamesIves/github-pages-deploy-action@releases/v3 with: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} @@ -56,7 +56,7 @@ import run, { init, deploy, generateBranch, - actionInterface + ActionInterface } from "github-pages-deploy-action"; ``` @@ -134,7 +134,7 @@ With this configured you must add the `ssh-agent` step to your workflow and set with: ssh-private-key: ${{ secrets.DEPLOY_KEY }} -- name: Build and Deploy +- name: Build and Deploy 🚀 uses: JamesIves/github-pages-deploy-action@releases/v3 with: SSH: true @@ -155,7 +155,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - name: Checkout + - name: Checkout 🛎️ uses: actions/checkout@v2 with: persist-credentials: false @@ -165,12 +165,12 @@ jobs: npm install npm run-script build - - name: Install SSH Client + - name: Install SSH Client 🔑 uses: webfactory/ssh-agent@v0.2.0 # This step installs the ssh client into the workflow run. There's many options available for this on the action marketplace. with: ssh-private-key: ${{ secrets.DEPLOY_KEY }} - - name: Build and Deploy Repo + - name: Build and Deploy Repo 🚀 uses: JamesIves/github-pages-deploy-action@releases/v3-test with: BASE_BRANCH: master @@ -207,7 +207,7 @@ jobs: build: runs-on: windows-latest # The first job utilizes windows-latest steps: - - name: Checkout + - name: Checkout 🛎️ uses: actions/checkout@v2 with: persist-credentials: false @@ -227,7 +227,7 @@ jobs: needs: [build] # The second job must depend on the first one to complete before running, and uses ubuntu-latest instead of windows. runs-on: ubuntu-latest steps: - - name: Checkout + - name: Checkout 🛎️ uses: actions/checkout@v2 with: persist-credentials: false @@ -237,7 +237,7 @@ jobs: with: name: site - - name: Build and Deploy + - name: Build and Deploy 🚀 uses: JamesIves/github-pages-deploy-action@releases/v3 with: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} diff --git a/__tests__/execute.test.ts b/__tests__/execute.test.ts index e50390ce9..618c5f92a 100644 --- a/__tests__/execute.test.ts +++ b/__tests__/execute.test.ts @@ -1,36 +1,36 @@ -import { execute, stdout } from "../src/execute"; -import { exec } from "@actions/exec"; +import {execute, stdout} from '../src/execute' +import {exec} from '@actions/exec' -jest.mock("@actions/exec", () => ({ +jest.mock('@actions/exec', () => ({ exec: jest.fn() -})); +})) -describe("execute", () => { - it("should be called with the correct arguments", async () => { - await stdout("hello"); - await execute("echo Montezuma", "./"); +describe('execute', () => { + it('should be called with the correct arguments', async () => { + await stdout('hello') + await execute('echo Montezuma', './') - expect(exec).toBeCalledWith("echo Montezuma", [], { - cwd: "./", + expect(exec).toBeCalledWith('echo Montezuma', [], { + cwd: './', silent: true, listeners: { stdout: expect.any(Function) } - }); - }); + }) + }) - it("should not silence the input when INPUT_DEBUG is defined", async () => { - process.env["DEBUG_DEPLOY_ACTION"] = "yes"; + it('should not silence the input when INPUT_DEBUG is defined', async () => { + process.env['DEBUG_DEPLOY_ACTION'] = 'yes' - await stdout("hello"); - await execute("echo Montezuma", "./"); + await stdout('hello') + await execute('echo Montezuma', './') - expect(exec).toBeCalledWith("echo Montezuma", [], { - cwd: "./", + expect(exec).toBeCalledWith('echo Montezuma', [], { + cwd: './', silent: false, listeners: { stdout: expect.any(Function) } - }); - }); -}); + }) + }) +}) diff --git a/__tests__/git.test.ts b/__tests__/git.test.ts index 70f15750e..b2c92d977 100644 --- a/__tests__/git.test.ts +++ b/__tests__/git.test.ts @@ -1,418 +1,418 @@ // Initial env variable setup for tests. -process.env["INPUT_FOLDER"] = "build"; -process.env["GITHUB_SHA"] = "123"; +process.env['INPUT_FOLDER'] = 'build' +process.env['GITHUB_SHA'] = '123' -import { action } from "../src/constants"; -import { deploy, generateBranch, init, switchToBaseBranch } from "../src/git"; -import { execute } from "../src/execute"; -import { setFailed } from "@actions/core"; +import {action} from '../src/constants' +import {deploy, generateBranch, init, switchToBaseBranch} from '../src/git' +import {execute} from '../src/execute' +import {setFailed} from '@actions/core' -const originalAction = JSON.stringify(action); +const originalAction = JSON.stringify(action) -jest.mock("@actions/core", () => ({ +jest.mock('@actions/core', () => ({ setFailed: jest.fn(), getInput: jest.fn() -})); +})) -jest.mock("../src/execute", () => ({ +jest.mock('../src/execute', () => ({ execute: jest.fn() -})); +})) -describe("git", () => { +describe('git', () => { afterEach(() => { - Object.assign(action, JSON.parse(originalAction)); - }); + Object.assign(action, JSON.parse(originalAction)) + }) - describe("init", () => { - it("should execute commands if a GitHub token is provided", async () => { + describe('init', () => { + it('should execute commands if a GitHub token is provided', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - folder: "build", - branch: "branch", - gitHubToken: "123", + repositoryPath: 'JamesIves/github-pages-deploy-action', + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await init(action); - expect(execute).toBeCalledTimes(6); - }); + await init(action) + expect(execute).toBeCalledTimes(6) + }) - it("should execute commands if an Access Token is provided", async () => { + it('should execute commands if an Access Token is provided', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - folder: "build", - branch: "branch", - accessToken: "123", + repositoryPath: 'JamesIves/github-pages-deploy-action', + folder: 'build', + branch: 'branch', + accessToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await init(action); - expect(execute).toBeCalledTimes(6); - }); + await init(action) + expect(execute).toBeCalledTimes(6) + }) - it("should execute commands if SSH is true", async () => { + it('should execute commands if SSH is true', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - folder: "build", - branch: "branch", + repositoryPath: 'JamesIves/github-pages-deploy-action', + folder: 'build', + branch: 'branch', ssh: true, pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await init(action); + await init(action) - expect(execute).toBeCalledTimes(6); - }); + expect(execute).toBeCalledTimes(6) + }) - it("should fail if there is no provided GitHub Token, Access Token or SSH bool", async () => { + it('should fail if there is no provided GitHub Token, Access Token or SSH bool', async () => { Object.assign(action, { repositoryPath: null, - folder: "build", - branch: "branch", + folder: 'build', + branch: 'branch', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, gitHubToken: null, accessToken: null, ssh: null - }); + }) try { - await init(action); + await init(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( - "There was an error initializing the repository: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌" - ); + 'There was an error initializing the repository: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌' + ) } - }); + }) - it("should fail if there is no folder", async () => { + it('should fail if there is no folder', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - gitHubToken: "123", - branch: "branch", + repositoryPath: 'JamesIves/github-pages-deploy-action', + gitHubToken: '123', + branch: 'branch', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, folder: null, ssh: true - }); + }) try { - await init(action); + await init(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( - "There was an error initializing the repository: You must provide the action with a folder to deploy. ❌" - ); + 'There was an error initializing the repository: You must provide the action with a folder to deploy. ❌' + ) } - }); + }) - it("should fail if there is no provided repository path", async () => { + it('should fail if there is no provided repository path', async () => { Object.assign(action, { repositoryPath: null, - folder: "build", - branch: "branch", + folder: 'build', + branch: 'branch', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, - gitHubToken: "123", + gitHubToken: '123', accessToken: null, ssh: null - }); + }) try { - await init(action); + await init(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( - "There was an error initializing the repository: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. " - ); + 'There was an error initializing the repository: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ' + ) } - }); + }) - it("should fail if the build folder begins with a /", async () => { + it('should fail if the build folder begins with a /', async () => { Object.assign(action, { - accessToken: "123", - repositoryPath: "JamesIves/github-pages-deploy-action", - branch: "branch", - folder: "/", + accessToken: '123', + repositoryPath: 'JamesIves/github-pages-deploy-action', + branch: 'branch', + folder: '/', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) try { - await init(action); + await init(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( "There was an error initializing the repository: Incorrectly formatted build folder. The deployment folder cannot be prefixed with '/' or './'. Instead reference the folder name directly. ❌" - ); + ) } - }); + }) - it("should fail if the build folder begins with a ./", async () => { + it('should fail if the build folder begins with a ./', async () => { Object.assign(action, { - accessToken: "123", - branch: "branch", - folder: "./", + accessToken: '123', + branch: 'branch', + folder: './', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) try { - await init(action); + await init(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( "There was an error initializing the repository: Incorrectly formatted build folder. The deployment folder cannot be prefixed with '/' or './'. Instead reference the folder name directly. ❌" - ); + ) } - }); + }) - it("should not fail if root is used", async () => { + it('should not fail if root is used', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - accessToken: "123", - branch: "branch", - folder: ".", - root: ".", + repositoryPath: 'JamesIves/github-pages-deploy-action', + accessToken: '123', + branch: 'branch', + folder: '.', + root: '.', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await init(action); + await init(action) - expect(execute).toBeCalledTimes(6); - }); - }); + expect(execute).toBeCalledTimes(6) + }) + }) - describe("generateBranch", () => { - it("should execute six commands", async () => { + describe('generateBranch', () => { + it('should execute six commands', async () => { Object.assign(action, { - accessToken: "123", - branch: "branch", - folder: ".", + accessToken: '123', + branch: 'branch', + folder: '.', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await generateBranch(action); - expect(execute).toBeCalledTimes(6); - }); + await generateBranch(action) + expect(execute).toBeCalledTimes(6) + }) - it("should fail if there is no branch", async () => { + it('should fail if there is no branch', async () => { Object.assign(action, { - accessToken: "123", + accessToken: '123', branch: null, - folder: ".", + folder: '.', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) try { - await generateBranch(action); + await generateBranch(action) } catch (e) { expect(e.message).toMatch( - "There was an error creating the deployment branch: Branch is required. ❌" - ); + 'There was an error creating the deployment branch: Branch is required. ❌' + ) } - }); - }); + }) + }) - describe("switchToBaseBranch", () => { - it("should execute one command", async () => { + describe('switchToBaseBranch', () => { + it('should execute one command', async () => { Object.assign(action, { - accessToken: "123", - branch: "branch", - folder: ".", + accessToken: '123', + branch: 'branch', + folder: '.', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await switchToBaseBranch(action); - expect(execute).toBeCalledTimes(1); - }); + await switchToBaseBranch(action) + expect(execute).toBeCalledTimes(1) + }) - it("should execute one command if using custom baseBranch", async () => { + it('should execute one command if using custom baseBranch', async () => { Object.assign(action, { - baseBranch: "123", - accessToken: "123", - branch: "branch", - folder: ".", + baseBranch: '123', + accessToken: '123', + branch: 'branch', + folder: '.', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await switchToBaseBranch(action); - expect(execute).toBeCalledTimes(1); - }); + await switchToBaseBranch(action) + expect(execute).toBeCalledTimes(1) + }) - it("should fail if one of the required parameters is not available", async () => { + it('should fail if one of the required parameters is not available', async () => { Object.assign(action, { - baseBranch: "123", + baseBranch: '123', accessToken: null, gitHubToken: null, ssh: null, - branch: "branch", + branch: 'branch', folder: null, pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) try { - await switchToBaseBranch(action); + await switchToBaseBranch(action) } catch (e) { - expect(execute).toBeCalledTimes(0); + expect(execute).toBeCalledTimes(0) expect(e.message).toMatch( - "There was an error switching to the base branch: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌" - ); + 'There was an error switching to the base branch: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌' + ) } - }); - }); + }) + }) - describe("deploy", () => { - it("should execute commands", async () => { + describe('deploy', () => { + it('should execute commands', async () => { Object.assign(action, { - folder: "build", - branch: "branch", - gitHubToken: "123", + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' } - }); + }) - await deploy(action); + await deploy(action) // Includes the call to generateBranch - expect(execute).toBeCalledTimes(12); - }); + expect(execute).toBeCalledTimes(12) + }) - it("should execute commands with clean options, ommits sha commit message", async () => { - process.env.GITHUB_SHA = ""; + it('should execute commands with clean options, ommits sha commit message', async () => { + process.env.GITHUB_SHA = '' Object.assign(action, { - folder: "build", - branch: "branch", - gitHubToken: "123", + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, clean: true, cleanExclude: '["cat", "montezuma"]' - }); + }) - await deploy(action); + await deploy(action) // Includes the call to generateBranch - expect(execute).toBeCalledTimes(12); - }); + expect(execute).toBeCalledTimes(12) + }) - it("should execute commands with clean options stored as an array instead", async () => { + it('should execute commands with clean options stored as an array instead', async () => { Object.assign(action, { - folder: "build", - branch: "branch", - gitHubToken: "123", + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, clean: true, - cleanExclude: ["cat", "montezuma"] - }); + cleanExclude: ['cat', 'montezuma'] + }) - await deploy(action); + await deploy(action) // Includes the call to generateBranch - expect(execute).toBeCalledTimes(12); - }); + expect(execute).toBeCalledTimes(12) + }) - it("should gracefully handle incorrectly formatted clean exclude items", async () => { + it('should gracefully handle incorrectly formatted clean exclude items', async () => { Object.assign(action, { - folder: ".", - branch: "branch", - gitHubToken: "123", + folder: '.', + branch: 'branch', + gitHubToken: '123', pusher: {}, clean: true, - targetFolder: "new_folder", - commitMessage: "Hello!", + targetFolder: 'new_folder', + commitMessage: 'Hello!', isTest: true, cleanExclude: '["cat, "montezuma"]' // There is a syntax errror in the string. - }); + }) - await deploy(action); + await deploy(action) - expect(execute).toBeCalledTimes(12); - }); + expect(execute).toBeCalledTimes(12) + }) - it("should stop early if there is nothing to commit", async () => { + it('should stop early if there is nothing to commit', async () => { Object.assign(action, { - folder: "build", - branch: "branch", - gitHubToken: "123", + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, isTest: false // Setting this env variable to false means there will never be anything to commit and the action will exit early. - }); + }) - await deploy(action); - expect(execute).toBeCalledTimes(13); - }); + await deploy(action) + expect(execute).toBeCalledTimes(13) + }) - it("should throw an error if one of the required parameters is not available", async () => { + it('should throw an error if one of the required parameters is not available', async () => { Object.assign(action, { - folder: "build", - branch: "branch", + folder: 'build', + branch: 'branch', ssh: null, accessToken: null, gitHubToken: null, pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, isTest: false // Setting this env variable to false means there will never be anything to commit and the action will exit early. - }); + }) try { - await deploy(action); + await deploy(action) } catch (e) { - expect(execute).toBeCalledTimes(1); + expect(execute).toBeCalledTimes(1) expect(e.message).toMatch( - "The deploy step encountered an error: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌" - ); + 'The deploy step encountered an error: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌' + ) } - }); - }); -}); + }) + }) +}) diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts index 714fec645..2096bfb13 100644 --- a/__tests__/main.test.ts +++ b/__tests__/main.test.ts @@ -1,64 +1,64 @@ // Initial env variable setup for tests. -process.env["INPUT_FOLDER"] = "build"; -process.env["GITHUB_SHA"] = "123"; -process.env["INPUT_DEBUG"] = "debug"; +process.env['INPUT_FOLDER'] = 'build' +process.env['GITHUB_SHA'] = '123' +process.env['INPUT_DEBUG'] = 'debug' -import "../src/main"; -import { action } from "../src/constants"; -import run from "../src/lib"; -import { execute } from "../src/execute"; -import { setFailed } from "@actions/core"; +import '../src/main' +import {action} from '../src/constants' +import run from '../src/lib' +import {execute} from '../src/execute' +import {setFailed} from '@actions/core' -const originalAction = JSON.stringify(action); +const originalAction = JSON.stringify(action) -jest.mock("../src/execute", () => ({ +jest.mock('../src/execute', () => ({ execute: jest.fn() -})); +})) -jest.mock("@actions/core", () => ({ +jest.mock('@actions/core', () => ({ setFailed: jest.fn(), getInput: jest.fn(), exportVariable: jest.fn() -})); +})) -describe("main", () => { +describe('main', () => { afterEach(() => { - Object.assign(action, JSON.parse(originalAction)); - }); + Object.assign(action, JSON.parse(originalAction)) + }) - it("should run through the commands", async () => { + it('should run through the commands', async () => { Object.assign(action, { - repositoryPath: "JamesIves/github-pages-deploy-action", - folder: "build", - branch: "branch", - gitHubToken: "123", + repositoryPath: 'JamesIves/github-pages-deploy-action', + folder: 'build', + branch: 'branch', + gitHubToken: '123', pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, isTest: false, debug: true - }); - await run(action); - expect(execute).toBeCalledTimes(19); - }); + }) + await run(action) + expect(execute).toBeCalledTimes(19) + }) - it("should throw if an error is encountered", async () => { + it('should throw if an error is encountered', async () => { Object.assign(action, { - folder: "build", - branch: "branch", - baseBranch: "master", + folder: 'build', + branch: 'branch', + baseBranch: 'master', gitHubToken: null, ssh: null, accessToken: null, pusher: { - name: "asd", - email: "as@cat" + name: 'asd', + email: 'as@cat' }, isTest: true - }); - await run(action); - expect(execute).toBeCalledTimes(0); - expect(setFailed).toBeCalledTimes(1); - }); -}); + }) + await run(action) + expect(execute).toBeCalledTimes(0) + expect(setFailed).toBeCalledTimes(1) + }) +}) diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index ec1ffe353..b0014b797 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -3,169 +3,169 @@ import { generateTokenType, generateRepositoryPath, suppressSensitiveInformation -} from "../src/util"; +} from '../src/util' -describe("util", () => { - describe("isNullOrUndefined", () => { - it("should return true if the value is null", async () => { - const value = null; - expect(isNullOrUndefined(value)).toBeTruthy(); - }); +describe('util', () => { + describe('isNullOrUndefined', () => { + it('should return true if the value is null', async () => { + const value = null + expect(isNullOrUndefined(value)).toBeTruthy() + }) - it("should return true if the value is undefined", async () => { - const value = undefined; - expect(isNullOrUndefined(value)).toBeTruthy(); - }); + it('should return true if the value is undefined', async () => { + const value = undefined + expect(isNullOrUndefined(value)).toBeTruthy() + }) - it("should return false if the value is defined", async () => { - const value = "montezuma"; - expect(isNullOrUndefined(value)).toBeFalsy(); - }); - }); + it('should return false if the value is defined', async () => { + const value = 'montezuma' + expect(isNullOrUndefined(value)).toBeFalsy() + }) + }) - describe("generateTokenType", () => { - it("should return ssh if ssh is provided", async () => { + describe('generateTokenType', () => { + it('should return ssh if ssh is provided', async () => { const action = { - branch: "123", - root: ".", - workspace: "src/", - folder: "build", + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', gitHubToken: null, accessToken: null, ssh: true - }; - expect(generateTokenType(action)).toEqual("SSH Deploy Key"); - }); + } + expect(generateTokenType(action)).toEqual('SSH Deploy Key') + }) - it("should return access token if access token is provided", async () => { + it('should return access token if access token is provided', async () => { const action = { - branch: "123", - root: ".", - workspace: "src/", - folder: "build", + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', gitHubToken: null, - accessToken: "123", + accessToken: '123', ssh: null - }; - expect(generateTokenType(action)).toEqual("Access Token"); - }); + } + expect(generateTokenType(action)).toEqual('Access Token') + }) - it("should return github token if github token is provided", async () => { + it('should return github token if github token is provided', async () => { const action = { - branch: "123", - root: ".", - workspace: "src/", - folder: "build", - gitHubToken: "123", + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', + gitHubToken: '123', accessToken: null, ssh: null - }; - expect(generateTokenType(action)).toEqual("GitHub Token"); - }); + } + expect(generateTokenType(action)).toEqual('GitHub Token') + }) - it("should return ... if no token is provided", async () => { + it('should return ... if no token is provided', async () => { const action = { - branch: "123", - root: ".", - workspace: "src/", - folder: "build", + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', gitHubToken: null, accessToken: null, ssh: null - }; - expect(generateTokenType(action)).toEqual("..."); - }); - }); + } + expect(generateTokenType(action)).toEqual('...') + }) + }) - describe("generateRepositoryPath", () => { - it("should return ssh if ssh is provided", async () => { + describe('generateRepositoryPath', () => { + it('should return ssh if ssh is provided', async () => { const action = { - repositoryName: "JamesIves/github-pages-deploy-action", - branch: "123", - root: ".", - workspace: "src/", - folder: "build", + repositoryName: 'JamesIves/github-pages-deploy-action', + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', gitHubToken: null, accessToken: null, ssh: true - }; + } expect(generateRepositoryPath(action)).toEqual( - "git@github.com:JamesIves/github-pages-deploy-action" - ); - }); + 'git@github.com:JamesIves/github-pages-deploy-action' + ) + }) - it("should return https if access token is provided", async () => { + it('should return https if access token is provided', async () => { const action = { - repositoryName: "JamesIves/github-pages-deploy-action", - branch: "123", - root: ".", - workspace: "src/", - folder: "build", + repositoryName: 'JamesIves/github-pages-deploy-action', + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', gitHubToken: null, - accessToken: "123", + accessToken: '123', ssh: null - }; + } expect(generateRepositoryPath(action)).toEqual( - "https://123@github.com/JamesIves/github-pages-deploy-action.git" - ); - }); + 'https://123@github.com/JamesIves/github-pages-deploy-action.git' + ) + }) - it("should return https with x-access-token if github token is provided", async () => { + it('should return https with x-access-token if github token is provided', async () => { const action = { - repositoryName: "JamesIves/github-pages-deploy-action", - branch: "123", - root: ".", - workspace: "src/", - folder: "build", - gitHubToken: "123", + repositoryName: 'JamesIves/github-pages-deploy-action', + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', + gitHubToken: '123', accessToken: null, ssh: null - }; + } expect(generateRepositoryPath(action)).toEqual( - "https://x-access-token:123@github.com/JamesIves/github-pages-deploy-action.git" - ); - }); + 'https://x-access-token:123@github.com/JamesIves/github-pages-deploy-action.git' + ) + }) - describe("suppressSensitiveInformation", () => { - it("should replace any sensitive information with ***", async () => { + describe('suppressSensitiveInformation', () => { + it('should replace any sensitive information with ***', async () => { const action = { - repositoryName: "JamesIves/github-pages-deploy-action", + repositoryName: 'JamesIves/github-pages-deploy-action', repositoryPath: - "https://x-access-token:supersecret999%%%@github.com/anothersecret123333", - branch: "123", - root: ".", - workspace: "src/", - folder: "build", - accessToken: "supersecret999%%%", - gitHubToken: "anothersecret123333" - }; + 'https://x-access-token:supersecret999%%%@github.com/anothersecret123333', + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', + accessToken: 'supersecret999%%%', + gitHubToken: 'anothersecret123333' + } - const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath}`; + const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath}` expect(suppressSensitiveInformation(string, action)).toBe( - "This is an error message! It contains *** and *** and ***" - ); - }); + 'This is an error message! It contains *** and *** and ***' + ) + }) - it("should not suppress information when in debug mode", async () => { + it('should not suppress information when in debug mode', async () => { const action = { - repositoryName: "JamesIves/github-pages-deploy-action", + repositoryName: 'JamesIves/github-pages-deploy-action', repositoryPath: - "https://x-access-token:supersecret999%%%@github.com/anothersecret123333", - branch: "123", - root: ".", - workspace: "src/", - folder: "build", - accessToken: "supersecret999%%%", - gitHubToken: "anothersecret123333" - }; + 'https://x-access-token:supersecret999%%%@github.com/anothersecret123333', + branch: '123', + root: '.', + workspace: 'src/', + folder: 'build', + accessToken: 'supersecret999%%%', + gitHubToken: 'anothersecret123333' + } - process.env["INPUT_DEBUG"] = "true"; + process.env['INPUT_DEBUG'] = 'true' - const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath}`; + const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath}` expect(suppressSensitiveInformation(string, action)).toBe( - "This is an error message! It contains supersecret999%%% and anothersecret123333 and https://x-access-token:supersecret999%%%@github.com/anothersecret123333" - ); - }); - }); - }); -}); + 'This is an error message! It contains supersecret999%%% and anothersecret123333 and https://x-access-token:supersecret999%%%@github.com/anothersecret123333' + ) + }) + }) + }) +}) diff --git a/package.json b/package.json index c2da2cd94..a9e4ff9a1 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,14 @@ "name": "github-pages-deploy-action", "description": "GitHub action for building a project and deploying it to GitHub pages.", "author": "James Ives ", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "main": "lib/lib.js", "types": "lib/lib.d.ts", "scripts": { "build": "rm -rf lib && tsc --declaration", "test": "jest", - "lint": "tslint -p tsconfig.json --project '.' || (echo Project needs formatting)", + "lint": "eslint src/**/*.ts", "format": "prettier --write './**/*.ts'" }, "repository": { @@ -44,7 +44,9 @@ "jest-circus": "^25.1.0", "prettier": "^1.19.1", "ts-jest": "^25.0.0", - "tslint": "^6.0.0", + "eslint": "^5.16.0", + "eslint-plugin-github": "^2.0.0", + "eslint-plugin-jest": "^22.21.0", "typescript": "^3.7.4" } } diff --git a/src/constants.ts b/src/constants.ts index 95bf9c308..695bda038 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,86 +1,86 @@ -import { getInput } from "@actions/core"; -import * as github from "@actions/github"; -import { isNullOrUndefined } from "./util"; +import {getInput} from '@actions/core' +import * as github from '@actions/github' +import {isNullOrUndefined} from './util' -const { pusher, repository } = github.context.payload; +const {pusher, repository} = github.context.payload /* For more information please refer to the README: https://github.com/JamesIves/github-pages-deploy-action */ -export interface actionInterface { +export interface ActionInterface { /** Deployment access token. */ - accessToken?: string | null; + accessToken?: string | null /** The base branch that the deploy should be made from. */ - baseBranch?: string; + baseBranch?: string /** The branch that the action should deploy to. */ - branch: string; + branch: string /** If your project generates hashed files on build you can use this option to automatically delete them from the deployment branch with each deploy. This option can be toggled on by setting it to true. */ - clean?: string | boolean; + clean?: string | boolean /** If you need to use CLEAN but you'd like to preserve certain files or folders you can use this option. */ - cleanExclude?: string | Array; + cleanExclude?: string | string[] /** If you need to customize the commit message for an integration you can do so. */ - commitMessage?: string; + commitMessage?: string /** Unhides the Git commands from the function terminal. */ - debug?: boolean | string; + debug?: boolean | string /** The default branch of the deployment. Similar to baseBranch if you're using this action as a module. */ - defaultBranch?: string; + defaultBranch?: string /** The git config email. */ - email?: string; + email?: string /** The folder to deploy. */ - folder: string; + folder: string /** GitHub deployment token. */ - gitHubToken?: string | null; + gitHubToken?: string | null /** Determines if the action is running in test mode or not. */ - isTest?: string | undefined | null; + isTest?: string | undefined | null /** The git config name. */ - name?: string; + name?: string /** The repository path, for example JamesIves/github-pages-deploy-action */ - repositoryName?: string; + repositoryName?: string /** The fully qualified repositpory path, this gets auto generated if repositoryName is provided. */ - repositoryPath?: string; + repositoryPath?: string /** The root directory where your project lives. */ - root?: string; + root?: string /** Set to true if you're using an ssh client in your build step. */ - ssh?: string | boolean | null; + ssh?: string | boolean | null /** If you'd like to push the contents of the deployment folder into a specific directory on the deployment branch you can specify it here. */ - targetFolder?: string; + targetFolder?: string /** The token type, ie ssh/github token/access token, this gets automatically generated. */ - tokenType?: string; + tokenType?: string /** The folder where your deployment project lives. */ - workspace: string; + workspace: string } /* Required action data that gets initialized when running within the GitHub Actions environment. */ -export const action: actionInterface = { - accessToken: getInput("ACCESS_TOKEN"), - baseBranch: getInput("BASE_BRANCH"), - folder: getInput("FOLDER"), - branch: getInput("BRANCH"), - commitMessage: getInput("COMMIT_MESSAGE"), - clean: getInput("CLEAN"), - cleanExclude: getInput("CLEAN_EXCLUDE"), - debug: getInput("DEBUG"), - defaultBranch: process.env.GITHUB_SHA ? process.env.GITHUB_SHA : "master", +export const action: ActionInterface = { + accessToken: getInput('ACCESS_TOKEN'), + baseBranch: getInput('BASE_BRANCH'), + folder: getInput('FOLDER'), + branch: getInput('BRANCH'), + commitMessage: getInput('COMMIT_MESSAGE'), + clean: getInput('CLEAN'), + cleanExclude: getInput('CLEAN_EXCLUDE'), + debug: getInput('DEBUG'), + defaultBranch: process.env.GITHUB_SHA ? process.env.GITHUB_SHA : 'master', isTest: process.env.UNIT_TEST, - ssh: getInput("SSH"), - email: !isNullOrUndefined(getInput("GIT_CONFIG_EMAIL")) - ? getInput("GIT_CONFIG_EMAIL") + ssh: getInput('SSH'), + email: !isNullOrUndefined(getInput('GIT_CONFIG_EMAIL')) + ? getInput('GIT_CONFIG_EMAIL') : pusher && pusher.email ? pusher.email : `${process.env.GITHUB_ACTOR || - "github-pages-deploy-action"}@users.noreply.github.com`, - gitHubToken: getInput("GITHUB_TOKEN"), - name: !isNullOrUndefined(getInput("GIT_CONFIG_NAME")) - ? getInput("GIT_CONFIG_NAME") + 'github-pages-deploy-action'}@users.noreply.github.com`, + gitHubToken: getInput('GITHUB_TOKEN'), + name: !isNullOrUndefined(getInput('GIT_CONFIG_NAME')) + ? getInput('GIT_CONFIG_NAME') : pusher && pusher.name ? pusher.name : process.env.GITHUB_ACTOR ? process.env.GITHUB_ACTOR - : "GitHub Pages Deploy Action", - repositoryName: !isNullOrUndefined(getInput("REPOSITORY_NAME")) - ? getInput("REPOSITORY_NAME") + : 'GitHub Pages Deploy Action', + repositoryName: !isNullOrUndefined(getInput('REPOSITORY_NAME')) + ? getInput('REPOSITORY_NAME') : repository && repository.full_name ? repository.full_name : process.env.GITHUB_REPOSITORY, - root: ".", - targetFolder: getInput("TARGET_FOLDER"), - workspace: process.env.GITHUB_WORKSPACE || "" -}; + root: '.', + targetFolder: getInput('TARGET_FOLDER'), + workspace: process.env.GITHUB_WORKSPACE || '' +} diff --git a/src/execute.ts b/src/execute.ts index 59f6fb555..8a699209a 100644 --- a/src/execute.ts +++ b/src/execute.ts @@ -1,6 +1,6 @@ -import { exec } from "@actions/exec"; +import {exec} from '@actions/exec' -let output: string; +let output: string /** Wrapper around the GitHub toolkit exec command which returns the output. * Also allows you to easily toggle the current working directory. @@ -9,7 +9,7 @@ let output: string; * @returns - The output from the command. */ export async function execute(cmd: string, cwd: string): Promise { - output = ""; + output = '' await exec(cmd, [], { // Silences the input unless the INPUT_DEBUG flag is set. @@ -18,11 +18,11 @@ export async function execute(cmd: string, cwd: string): Promise { listeners: { stdout } - }); + }) - return Promise.resolve(output); + return Promise.resolve(output) } -export function stdout(data: any) { - output += data.toString().trim(); +export function stdout(data: any): string | void { + output += data.toString().trim() } diff --git a/src/git.ts b/src/git.ts index 2f23873cb..af67e6ea4 100644 --- a/src/git.ts +++ b/src/git.ts @@ -1,102 +1,102 @@ -import { actionInterface } from "./constants"; -import { execute } from "./execute"; +import {ActionInterface} from './constants' +import {execute} from './execute' import { hasRequiredParameters, isNullOrUndefined, suppressSensitiveInformation -} from "./util"; +} from './util' /* Initializes git in the workspace. */ -export async function init(action: actionInterface): Promise { +export async function init(action: ActionInterface): Promise { try { - hasRequiredParameters(action); + hasRequiredParameters(action) - console.log(`Deploying using ${action.tokenType}... 🔑`); - console.log("Configuring git..."); + console.log(`Deploying using ${action.tokenType}... 🔑`) + console.log('Configuring git...') - await execute(`git init`, action.workspace); - await execute(`git config user.name "${action.name}"`, action.workspace); - await execute(`git config user.email "${action.email}"`, action.workspace); - await execute(`git remote rm origin`, action.workspace); + await execute(`git init`, action.workspace) + await execute(`git config user.name "${action.name}"`, action.workspace) + await execute(`git config user.email "${action.email}"`, action.workspace) + await execute(`git remote rm origin`, action.workspace) await execute( `git remote add origin ${action.repositoryPath}`, action.workspace - ); - await execute(`git fetch`, action.workspace); + ) + await execute(`git fetch`, action.workspace) - console.log("Git configured... 🔧"); + console.log('Git configured... 🔧') } catch (error) { throw new Error( `There was an error initializing the repository: ${suppressSensitiveInformation( error.message, action )} ❌` - ); + ) } } /* Switches to the base branch. */ export async function switchToBaseBranch( - action: actionInterface + action: ActionInterface ): Promise { try { - hasRequiredParameters(action); + hasRequiredParameters(action) await execute( `git checkout --progress --force ${ action.baseBranch ? action.baseBranch : action.defaultBranch }`, action.workspace - ); + ) } catch (error) { throw new Error( `There was an error switching to the base branch: ${suppressSensitiveInformation( error.message, action )} ❌` - ); + ) } } /* Generates the branch if it doesn't exist on the remote. */ -export async function generateBranch(action: actionInterface): Promise { +export async function generateBranch(action: ActionInterface): Promise { try { - hasRequiredParameters(action); + hasRequiredParameters(action) - console.log(`Creating the ${action.branch} branch...`); + console.log(`Creating the ${action.branch} branch...`) - await switchToBaseBranch(action); - await execute(`git checkout --orphan ${action.branch}`, action.workspace); - await execute(`git reset --hard`, action.workspace); + await switchToBaseBranch(action) + await execute(`git checkout --orphan ${action.branch}`, action.workspace) + await execute(`git reset --hard`, action.workspace) await execute( `git commit --allow-empty -m "Initial ${action.branch} commit."`, action.workspace - ); + ) await execute( `git push ${action.repositoryPath} ${action.branch}`, action.workspace - ); - await execute(`git fetch`, action.workspace); + ) + await execute(`git fetch`, action.workspace) - console.log(`Created the ${action.branch} branch... 🔧`); + console.log(`Created the ${action.branch} branch... 🔧`) } catch (error) { throw new Error( `There was an error creating the deployment branch: ${suppressSensitiveInformation( error.message, action )} ❌` - ); + ) } } /* Runs the necessary steps to make the deployment. */ -export async function deploy(action: actionInterface): Promise { - const temporaryDeploymentDirectory = "gh-action-temp-deployment-folder"; - const temporaryDeploymentBranch = "gh-action-temp-deployment-branch"; - console.log("Starting to commit changes..."); +export async function deploy(action: ActionInterface): Promise { + const temporaryDeploymentDirectory = 'gh-action-temp-deployment-folder' + const temporaryDeploymentBranch = 'gh-action-temp-deployment-branch' + console.log('Starting to commit changes...') try { - hasRequiredParameters(action); + hasRequiredParameters(action) /* Checks to see if the remote exists prior to deploying. @@ -105,35 +105,36 @@ export async function deploy(action: actionInterface): Promise { const branchExists = await execute( `git ls-remote --heads ${action.repositoryPath} ${action.branch} | wc -l`, action.workspace - ); + ) if (!branchExists && !action.isTest) { - await generateBranch(action); + await generateBranch(action) } // Checks out the base branch to begin the deployment process. - await switchToBaseBranch(action); - await execute(`git fetch ${action.repositoryPath}`, action.workspace); + await switchToBaseBranch(action) + await execute(`git fetch ${action.repositoryPath}`, action.workspace) await execute( `git worktree add --checkout ${temporaryDeploymentDirectory} origin/${action.branch}`, action.workspace - ); + ) // Ensures that items that need to be excluded from the clean job get parsed. - let excludes = ""; + let excludes = '' if (action.clean && action.cleanExclude) { try { const excludedItems = - typeof action.cleanExclude === "string" + typeof action.cleanExclude === 'string' ? JSON.parse(action.cleanExclude) - : action.cleanExclude; - excludedItems.forEach( - (item: string) => (excludes += `--exclude ${item} `) - ); + : action.cleanExclude + + for (const item of excludedItems) { + excludes += `--exclude ${item} ` + } } catch { console.log( - "There was an error parsing your CLEAN_EXCLUDE items. Please refer to the README for more details. ❌" - ); + 'There was an error parsing your CLEAN_EXCLUDE items. Please refer to the README for more details. ❌' + ) } } @@ -149,66 +150,66 @@ export async function deploy(action: actionInterface): Promise { } ${ action.clean ? `--delete ${excludes} --exclude CNAME --exclude .nojekyll` - : "" + : '' } --exclude .ssh --exclude .git --exclude .github ${ action.folder === action.root ? `--exclude ${temporaryDeploymentDirectory}` - : "" + : '' }`, action.workspace - ); + ) const hasFilesToCommit = await execute( `git status --porcelain`, `${action.workspace}/${temporaryDeploymentDirectory}` - ); + ) if (!hasFilesToCommit && !action.isTest) { - console.log("There is nothing to commit. Exiting early... 📭"); - return; + console.log('There is nothing to commit. Exiting early... 📭') + return } // Commits to GitHub. await execute( `git add --all .`, `${action.workspace}/${temporaryDeploymentDirectory}` - ); + ) await execute( `git checkout -b ${temporaryDeploymentBranch}`, `${action.workspace}/${temporaryDeploymentDirectory}` - ); + ) await execute( `git commit -m "${ !isNullOrUndefined(action.commitMessage) ? action.commitMessage : `Deploying to ${action.branch} from ${action.baseBranch}` } ${ - process.env.GITHUB_SHA ? `- ${process.env.GITHUB_SHA}` : "" + process.env.GITHUB_SHA ? `- ${process.env.GITHUB_SHA}` : '' } 🚀" --quiet`, `${action.workspace}/${temporaryDeploymentDirectory}` - ); + ) await execute( `git push --force ${action.repositoryPath} ${temporaryDeploymentBranch}:${action.branch}`, `${action.workspace}/${temporaryDeploymentDirectory}` - ); + ) - console.log(`Changes committed to the ${action.branch} branch... 📦`); + console.log(`Changes committed to the ${action.branch} branch... 📦`) // Cleans up temporary files/folders and restores the git state. - console.log("Running post deployment cleanup jobs..."); + console.log('Running post deployment cleanup jobs...') await execute( `git checkout --progress --force ${action.defaultBranch}`, action.workspace - ); + ) } catch (error) { throw new Error( `The deploy step encountered an error: ${suppressSensitiveInformation( error.message, action )} ❌` - ); + ) } finally { // Ensures the deployment directory is safely removed. - await execute(`rm -rf ${temporaryDeploymentDirectory}`, action.workspace); + await execute(`rm -rf ${temporaryDeploymentDirectory}`, action.workspace) } } diff --git a/src/lib.ts b/src/lib.ts index cab03e18b..6289917f7 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -1,45 +1,45 @@ -import { exportVariable, setFailed } from "@actions/core"; -import { action, actionInterface } from "./constants"; -import { deploy, generateBranch, init } from "./git"; -import { generateRepositoryPath, generateTokenType } from "./util"; +import {exportVariable, setFailed} from '@actions/core' +import {action, ActionInterface} from './constants' +import {deploy, generateBranch, init} from './git' +import {generateRepositoryPath, generateTokenType} from './util' /** Initializes and runs the action. */ export default async function run( - configuration: actionInterface + configuration: ActionInterface ): Promise { - let errorState: boolean = false; + let errorState = false try { - console.log("Checking configuration and starting deployment...🚦"); + console.log('Checking configuration and starting deployment...🚦') const settings = { ...action, ...configuration - }; + } // Defines the repository paths and token types. - settings.repositoryPath = generateRepositoryPath(settings); - settings.tokenType = generateTokenType(settings); + settings.repositoryPath = generateRepositoryPath(settings) + settings.tokenType = generateTokenType(settings) if (settings.debug) { // Sets the debug flag if passed as an arguement. - exportVariable("DEBUG_DEPLOY_ACTION", "debug"); + exportVariable('DEBUG_DEPLOY_ACTION', 'debug') } - await init(settings); - await deploy(settings); + await init(settings) + await deploy(settings) } catch (error) { - errorState = true; - setFailed(error.message); + errorState = true + setFailed(error.message) } finally { console.log( `${ errorState - ? "Deployment Failed ❌" - : "Completed Deployment Successfully! ✅" + ? 'Deployment Failed ❌' + : 'Completed Deployment Successfully! ✅' }` - ); + ) } } -export { init, deploy, generateBranch, actionInterface }; +export {init, deploy, generateBranch, ActionInterface} diff --git a/src/main.ts b/src/main.ts index 34a47b830..c641819db 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,5 @@ -import { action } from "./constants"; -import run from "./lib"; +import {action} from './constants' +import run from './lib' // Runs the action within the GitHub actions environment. -run(action); +run(action) diff --git a/src/util.ts b/src/util.ts index 6ab0579a9..fad210584 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,31 +1,31 @@ -import { getInput } from "@actions/core"; -import { actionInterface } from "./constants"; +import {getInput} from '@actions/core' +import {ActionInterface} from './constants' /* Utility function that checks to see if a value is undefined or not. */ export const isNullOrUndefined = (value: any): boolean => - typeof value === "undefined" || value === null || value === ""; + typeof value === 'undefined' || value === null || value === '' /* Generates a token type used for the action. */ -export const generateTokenType = (action: actionInterface): string => +export const generateTokenType = (action: ActionInterface): string => action.ssh - ? "SSH Deploy Key" + ? 'SSH Deploy Key' : action.accessToken - ? "Access Token" + ? 'Access Token' : action.gitHubToken - ? "GitHub Token" - : "..."; + ? 'GitHub Token' + : '...' /* Generates a the repository path used to make the commits. */ -export const generateRepositoryPath = (action: actionInterface): string => +export const generateRepositoryPath = (action: ActionInterface): string => action.ssh ? `git@github.com:${action.repositoryName}` : `https://${action.accessToken || `x-access-token:${action.gitHubToken}`}@github.com/${ action.repositoryName - }.git`; + }.git` /* Checks for the required tokens and formatting. Throws an error if any case is matched. */ -export const hasRequiredParameters = (action: actionInterface): void => { +export const hasRequiredParameters = (action: ActionInterface): void => { if ( (isNullOrUndefined(action.accessToken) && isNullOrUndefined(action.gitHubToken) && @@ -33,48 +33,48 @@ export const hasRequiredParameters = (action: actionInterface): void => { isNullOrUndefined(action.repositoryPath) ) { throw new Error( - "No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true." - ); + 'No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true.' + ) } if (isNullOrUndefined(action.branch)) { - throw new Error("Branch is required."); + throw new Error('Branch is required.') } if (!action.folder || isNullOrUndefined(action.folder)) { - throw new Error("You must provide the action with a folder to deploy."); + throw new Error('You must provide the action with a folder to deploy.') } - if (action.folder.startsWith("/") || action.folder.startsWith("./")) { + if (action.folder.startsWith('/') || action.folder.startsWith('./')) { throw new Error( "Incorrectly formatted build folder. The deployment folder cannot be prefixed with '/' or './'. Instead reference the folder name directly." - ); + ) } -}; +} /* Suppresses sensitive information from being exposed in error messages. */ export const suppressSensitiveInformation = ( str: string, - action: actionInterface -) => { - let value = str; + action: ActionInterface +): string => { + let value = str - if (getInput("DEBUG")) { + if (getInput('DEBUG')) { // Data is unmasked in debug mode. - return value; + return value } if (action.accessToken) { - value = value.replace(action.accessToken, "***"); + value = value.replace(action.accessToken, '***') } if (action.gitHubToken) { - value = value.replace(action.gitHubToken, "***"); + value = value.replace(action.gitHubToken, '***') } if (action.repositoryPath) { - value = value.replace(action.repositoryPath, "***"); + value = value.replace(action.repositoryPath, '***') } - return value; -}; + return value +} diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 0363ca3b1..000000000 --- a/tslint.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "rules": { - "adjacent-overload-signatures": true, - "ban-comma-operator": true, - "no-namespace": true, - "no-parameter-reassignment": true, - "no-reference": true, - "no-unnecessary-type-assertion": true, - "label-position": true, - "no-conditional-assignment": true, - "no-construct": true, - "no-duplicate-super": true, - "no-duplicate-switch-case": true, - "no-duplicate-variable": [true, "check-parameters"], - "no-shadowed-variable": true, - "no-empty": [true, "allow-empty-catch"], - "no-floating-promises": false, - "no-implicit-dependencies": true, - "no-invalid-this": true, - "no-string-throw": true, - "no-unsafe-finally": true, - "no-use-before-declare": true, - "no-void-expression": [true, "ignore-arrow-function-shorthand"], - "no-duplicate-imports": true, - "no-empty-interface": {"severity": "warning"}, - "no-import-side-effect": {"severity": "warning"}, - "no-var-keyword": {"severity": "warning"}, - "triple-equals": {"severity": "warning"}, - "deprecation": {"severity": "warning"}, - "prefer-for-of": {"severity": "warning"}, - "unified-signatures": {"severity": "warning"}, - "prefer-const": {"severity": "warning"}, - "trailing-comma": {"severity": "warning"} - }, - - "defaultSeverity": "error" -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 8d94ca333..80f4823c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,8 +3,8 @@ "@actions/core@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.2.tgz#3c4848d50378f9e3bcb67bcf97813382ec7369ee" + version "1.2.3" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.3.tgz#e844b4fa0820e206075445079130868f95bfca95" "@actions/exec@^1.0.2": version "1.0.3" @@ -165,6 +165,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/runtime-corejs3@^7.8.3": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.4.5": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.7.0": version "7.7.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.0.tgz#4fadc1b8e734d97f56de39c77de76f2562e597d0" @@ -516,6 +529,10 @@ version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -540,6 +557,10 @@ jest-diff "^25.1.0" pretty-format "^25.1.0" +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + "@types/node@>= 8", "@types/node@^13.1.2": version "13.7.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.7.tgz#1628e6461ba8cc9b53196dfeaeec7b07fa6eea99" @@ -558,6 +579,60 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^1.3.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" + dependencies: + "@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" + +"@typescript-eslint/experimental-utils@1.13.0", "@typescript-eslint/experimental-utils@^1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "1.13.0" + eslint-scope "^4.0.0" + +"@typescript-eslint/experimental-utils@^2.5.0": + version "2.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz#4d00c91fbaaa68e56e7869be284999a265707f85" + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.22.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^1.3.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" + dependencies: + "@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@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" + dependencies: + lodash.unescape "4.0.1" + semver "5.5.0" + +"@typescript-eslint/typescript-estree@2.22.0": + version "2.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e" + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + abab@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" @@ -569,6 +644,10 @@ acorn-globals@^4.3.2: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-jsx@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" @@ -577,10 +656,23 @@ acorn@^6.0.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" +acorn@^6.0.7: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + acorn@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" +ajv@^6.10.2, ajv@^6.9.1: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.5.5: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" @@ -590,12 +682,20 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + ansi-escapes@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" dependencies: type-fest "^0.8.1" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -604,7 +704,7 @@ ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: @@ -637,6 +737,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -653,10 +760,25 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -671,6 +793,10 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -695,6 +821,21 @@ aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + +babel-eslint@>=8.2.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + babel-jest@^25.1.0: version "25.1.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb" @@ -815,10 +956,6 @@ buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -851,7 +988,7 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -chalk@^2.0.0, chalk@^2.3.0: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" dependencies: @@ -866,6 +1003,10 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -879,6 +1020,16 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -928,7 +1079,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.12.1: +commander@^2.11.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -940,6 +1091,10 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -950,11 +1105,22 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cross-spawn@^6.0.0: +cross-fetch@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -986,6 +1152,10 @@ cssstyle@^2.0.0: dependencies: cssom "~0.3.6" +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1000,13 +1170,13 @@ data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -debug@^2.2.0, debug@^2.3.3: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" dependencies: @@ -1065,9 +1235,24 @@ diff-sequences@^25.1.0: version "25.1.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" -diff@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + dependencies: + esutils "^2.0.2" domexception@^1.0.1: version "1.0.1" @@ -1082,6 +1267,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -1092,6 +1281,28 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + es-abstract@^1.5.1: version "1.16.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" @@ -1115,6 +1326,14 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1130,11 +1349,235 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz#c55c1fcac8ce4518aeb77906984e134d9eb5a4f0" + dependencies: + get-stdin "^6.0.0" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-eslint-comments@>=3.0.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz#4ef6c488dbe06aa1627fea107b3e5d059fc8a395" + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-flowtype@>=2.49.3: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + dependencies: + lodash "^4.17.15" + +eslint-plugin-github@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-github/-/eslint-plugin-github-2.0.0.tgz#13d2946197331649e954c65d745a0fca7039eeed" + dependencies: + "@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" + +eslint-plugin-graphql@>=3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-3.1.1.tgz#640f7f73f12cee2f7145140bd2ff21694018bff5" + dependencies: + graphql-config "^2.0.1" + lodash "^4.11.1" + +eslint-plugin-import@>=2.11.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + 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.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jest@>=21.15.0: + version "23.8.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4" + dependencies: + "@typescript-eslint/experimental-utils" "^2.5.0" + +eslint-plugin-jest@^22.21.0: + version "22.21.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.21.0.tgz#8137294645866636160487d9764224b9a43e2eb1" + dependencies: + "@typescript-eslint/experimental-utils" "^1.13.0" + +eslint-plugin-jsx-a11y@>=6.0.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + dependencies: + "@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" + +eslint-plugin-prettier@>=2.6.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react@>=7.7.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-plugin-relay@>=1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-relay/-/eslint-plugin-relay-1.7.0.tgz#f6cfae681381dc96db9bd700d8c33fbe9783143e" + dependencies: + graphql "^14.0.0 | ^15.0.0-rc.1" + +eslint-rule-documentation@>=1.0.0: + version "1.0.23" + resolved "https://registry.yarnpkg.com/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz#4e0886145597a78d24524ec7e0cf18c6fedc23a8" + +eslint-scope@^4.0.0, eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + dependencies: + "@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" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" -estraverse@^4.2.0: +esquery@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -1217,6 +1660,14 @@ extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -1242,6 +1693,14 @@ fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -1256,6 +1715,18 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + dependencies: + flat-cache "^2.0.1" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1271,6 +1742,18 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1278,6 +1761,18 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1312,6 +1807,10 @@ function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -1320,6 +1819,10 @@ get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -1342,7 +1845,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" dependencies: @@ -1353,14 +1856,41 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0: +globals@^11.1.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" -graceful-fs@^4.2.3: +graceful-fs@^4.1.2, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" +graphql-config@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.2.1.tgz#5fd0ec77ac7428ca5fb2026cf131be10151a0cb2" + dependencies: + 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@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.7.1.tgz#4add8d91a5f752d764b0a4a7a461fcd93136f223" + dependencies: + lodash "^4.17.4" + resolve-from "^4.0.0" + +graphql-request@^1.5.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" + dependencies: + cross-fetch "2.2.2" + +"graphql@^14.0.0 | ^15.0.0-rc.1": + version "15.0.0-rc.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.0.0-rc.2.tgz#6549e52e5415ac08900c432b22d34500c0c3635f" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -1388,6 +1918,10 @@ has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1421,6 +1955,10 @@ has@^1.0.1, has@^1.0.3: dependencies: function-bind "^1.1.1" +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -1443,12 +1981,27 @@ human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" dependencies: safer-buffer ">= 2.1.2 < 3" +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + +ignore@^5.0.5: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -1471,6 +2024,32 @@ inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" +inquirer@^6.0.0, inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + dependencies: + 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" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -1487,6 +2066,10 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -1495,6 +2078,10 @@ is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -1543,6 +2130,14 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1551,6 +2146,12 @@ is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + dependencies: + is-extglob "^2.1.1" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1573,12 +2174,22 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + dependencies: + has "^1.0.3" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1587,6 +2198,10 @@ is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -1605,7 +2220,7 @@ is-wsl@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" -isarray@1.0.0: +isarray@1.0.0, isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2011,11 +2626,11 @@ jest@^25.1.0: import-local "^3.0.2" jest-cli "^25.1.0" -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" -js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" dependencies: @@ -2061,6 +2676,10 @@ jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2069,6 +2688,10 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2088,6 +2711,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -2116,13 +2746,45 @@ leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" -levn@~0.3.0: +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2145,11 +2807,15 @@ lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.17.13, lodash@^4.17.15: +lodash@^4.11.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -2159,6 +2825,12 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" @@ -2228,6 +2900,10 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.40.0" +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -2267,6 +2943,10 @@ ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -2291,6 +2971,10 @@ nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + node-fetch@^2.3.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" @@ -2313,6 +2997,15 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -2343,6 +3036,10 @@ oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -2355,7 +3052,11 @@ object-inspect@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" -object-keys@^1.0.12, object-keys@^1.1.1: +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -2365,6 +3066,33 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -2378,6 +3106,15 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -2388,13 +3125,19 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" dependencies: @@ -2412,6 +3155,10 @@ os-name@^3.1.0: macos-release "^2.2.0" windows-release "^3.1.0" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -2424,22 +3171,63 @@ p-finally@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" -p-limit@^2.2.0: +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" dependencies: p-try "^2.0.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" dependencies: p-limit "^2.2.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + dependencies: + callsites "^3.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse5@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" @@ -2448,6 +3236,10 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2456,6 +3248,10 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -2468,6 +3264,18 @@ path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -2476,12 +3284,26 @@ picomatch@^2.0.4, picomatch@^2.0.5: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" dependencies: node-modules-regexp "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -2500,7 +3322,13 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" -prettier@^1.19.1: +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + dependencies: + fast-diff "^1.1.2" + +prettier@>=1.12.0, prettier@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" @@ -2513,6 +3341,10 @@ pretty-format@^25.1.0: ansi-styles "^4.0.0" react-is "^16.12.0" +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + prompts@^2.0.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" @@ -2520,6 +3352,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + psl@^1.1.24, psl@^1.1.28: version "1.4.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" @@ -2547,12 +3387,50 @@ react-is@^16.12.0: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" +react-is@^16.8.1: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" dependencies: util.promisify "^1.0.0" +regenerator-runtime@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -2560,6 +3438,17 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -2625,6 +3514,10 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -2643,10 +3536,29 @@ resolve@1.x, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" @@ -2657,6 +3569,18 @@ rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" +run-async@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + dependencies: + is-promise "^2.1.0" + +rxjs@^6.4.0: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" @@ -2695,10 +3619,14 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -2744,6 +3672,13 @@ shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -2756,6 +3691,14 @@ slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2816,6 +3759,28 @@ source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -2862,6 +3827,21 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -2870,6 +3850,17 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -2877,6 +3868,13 @@ string.prototype.trimleft@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string.prototype.trimright@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" @@ -2884,7 +3882,20 @@ string.prototype.trimright@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" -strip-ansi@^5.2.0: +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" dependencies: @@ -2896,6 +3907,10 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -2908,6 +3923,10 @@ strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2927,10 +3946,23 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +svg-element-attributes@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz#0c55afac6284291ab563d0913c062cf78a8c0ddb" + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -2946,10 +3978,24 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -3029,31 +4075,17 @@ ts-jest@^25.0.0: semver "^5.5" yargs-parser "^16.1.0" -tslib@^1.10.0, tslib@^1.8.1: +tslib@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" -tslint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.0.0.tgz#1c0148beac4779924216302f192cdaa153618310" - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.10.0" - tsutils "^2.29.0" +tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" +tsutils@^3.17.1, tsutils@^3.7.0: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" dependencies: tslib "^1.8.1" @@ -3150,6 +4182,13 @@ v8-to-istanbul@^4.0.1: convert-source-map "^1.6.0" source-map "^0.7.3" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -3188,6 +4227,10 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -3247,6 +4290,12 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + dependencies: + mkdirp "^0.5.1" + ws@^7.0.0: version "7.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" @@ -3259,6 +4308,12 @@ xmlchars@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"