From c2837ab7eaea1fd8576c1a446faebd84847503cf Mon Sep 17 00:00:00 2001 From: Luke Karrys Date: Wed, 5 Jul 2023 12:32:16 -0700 Subject: [PATCH] chore: @npmcli/template-oss@4.16.0 --- .commitlintrc.js | 10 + .github/CODEOWNERS | 3 + .github/ISSUE_TEMPLATE/bug.yml | 54 + .github/ISSUE_TEMPLATE/config.yml | 3 + .github/matchers/tap.json | 32 + .github/settings.yml | 52 + .github/workflows/audit.yml | 42 + .github/workflows/ci-release.yml | 198 ++ .github/workflows/ci.yml | 90 + .github/workflows/codeql-analysis.yml | 40 + .github/workflows/pull-request.yml | 53 + .github/workflows/release.yml | 416 +++ .gitignore | 34 +- .npmrc | 3 + .release-please-manifest.json | 3 + .travis.yml | 16 - CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 7 + CONTRIBUTING.md | 51 +- SECURITY.md | 13 + package-lock.json | 3575 ------------------------ package.json | 26 +- release-please-config.json | 36 + scripts/npmcli-template-oss-4.16.0.tgz | Bin 0 -> 42290 bytes scripts/template-oss/_step-deps.yml | 8 + scripts/template-oss/index.js | 32 + scripts/template-oss/pkg.json | 13 + test/cli.js | 22 +- 28 files changed, 1223 insertions(+), 3611 deletions(-) create mode 100644 .commitlintrc.js create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/bug.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/matchers/tap.json create mode 100644 .github/settings.yml create mode 100644 .github/workflows/audit.yml create mode 100644 .github/workflows/ci-release.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/pull-request.yml create mode 100644 .github/workflows/release.yml create mode 100644 .npmrc create mode 100644 .release-please-manifest.json delete mode 100644 .travis.yml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 SECURITY.md delete mode 100644 package-lock.json create mode 100644 release-please-config.json create mode 100644 scripts/npmcli-template-oss-4.16.0.tgz create mode 100644 scripts/template-oss/_step-deps.yml create mode 100644 scripts/template-oss/index.js create mode 100644 scripts/template-oss/pkg.json diff --git a/.commitlintrc.js b/.commitlintrc.js new file mode 100644 index 00000000..5b0b1a52 --- /dev/null +++ b/.commitlintrc.js @@ -0,0 +1,10 @@ +/* This file is automatically added by @npmcli/template-oss. Do not edit. */ + +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'deps', 'chore']], + 'header-max-length': [2, 'always', 80], + 'subject-case': [0, 'always', ['lower-case', 'sentence-case', 'start-case']], + }, +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..2c54b0d2 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +* @npm/cli-team diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 00000000..d043192f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,54 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: Bug +description: File a bug/issue +title: "[BUG] " +labels: [ Bug, Needs Triage ] + +body: + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please [search here](./issues) to see if an issue already exists for your problem. + options: + - label: I have searched the existing issues + required: true + - type: textarea + attributes: + label: Current Behavior + description: A clear & concise description of what you're experiencing. + validations: + required: false + - type: textarea + attributes: + label: Expected Behavior + description: A clear & concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + value: | + 1. In this environment... + 2. With this config... + 3. Run '...' + 4. See error... + validations: + required: false + - type: textarea + attributes: + label: Environment + description: | + examples: + - **npm**: 7.6.3 + - **Node**: 13.14.0 + - **OS**: Ubuntu 20.04 + - **platform**: Macbook Pro + value: | + - npm: + - Node: + - OS: + - platform: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..d640909f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,3 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +blank_issues_enabled: true diff --git a/.github/matchers/tap.json b/.github/matchers/tap.json new file mode 100644 index 00000000..2c81ea98 --- /dev/null +++ b/.github/matchers/tap.json @@ -0,0 +1,32 @@ +{ + "//@npmcli/template-oss": "This file is automatically added by @npmcli/template-oss. Do not edit.", + "problemMatcher": [ + { + "owner": "tap", + "pattern": [ + { + "regexp": "^\\s*not ok \\d+ - (.*)", + "message": 1 + }, + { + "regexp": "^\\s*---" + }, + { + "regexp": "^\\s*at:" + }, + { + "regexp": "^\\s*line:\\s*(\\d+)", + "line": 1 + }, + { + "regexp": "^\\s*column:\\s*(\\d+)", + "column": 1 + }, + { + "regexp": "^\\s*file:\\s*(.*)", + "file": 1 + } + ] + } + ] +} diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 00000000..adbef7e6 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,52 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +repository: + allow_merge_commit: false + allow_rebase_merge: true + allow_squash_merge: true + squash_merge_commit_title: PR_TITLE + squash_merge_commit_message: PR_BODY + delete_branch_on_merge: true + enable_automated_security_fixes: true + enable_vulnerability_alerts: true + +branches: + - name: main + protection: + required_status_checks: null + enforce_admins: true + required_pull_request_reviews: + required_approving_review_count: 1 + require_code_owner_reviews: true + require_last_push_approval: true + dismiss_stale_reviews: true + restrictions: + apps: [] + users: [] + teams: [ "cli-team" ] + - name: latest + protection: + required_status_checks: null + enforce_admins: true + required_pull_request_reviews: + required_approving_review_count: 1 + require_code_owner_reviews: true + require_last_push_approval: true + dismiss_stale_reviews: true + restrictions: + apps: [] + users: [] + teams: [ "cli-team" ] + - name: release/v* + protection: + required_status_checks: null + enforce_admins: true + required_pull_request_reviews: + required_approving_review_count: 1 + require_code_owner_reviews: true + require_last_push_approval: true + dismiss_stale_reviews: true + restrictions: + apps: [] + users: [] + teams: [ "cli-team" ] diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml new file mode 100644 index 00000000..614b85d7 --- /dev/null +++ b/.github/workflows/audit.yml @@ -0,0 +1,42 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: Audit + +on: + workflow_dispatch: + schedule: + # "At 08:00 UTC (01:00 PT) on Monday" https://crontab.guru/#0_8_*_*_1 + - cron: "0 8 * * 1" + +jobs: + audit: + name: Audit Dependencies + if: github.repository_owner == 'npm' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund --package-lock + - name: Run Production Audit + run: npm audit --omit=dev + - name: Run Full Audit + run: npm audit --audit-level=none diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml new file mode 100644 index 00000000..74b61726 --- /dev/null +++ b/.github/workflows/ci-release.yml @@ -0,0 +1,198 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: CI - Release + +on: + workflow_dispatch: + inputs: + ref: + required: true + type: string + default: main + workflow_call: + inputs: + ref: + required: true + type: string + check-sha: + required: true + type: string + +jobs: + lint-all: + name: Lint All + if: github.repository_owner == 'npm' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Get Workflow Job + uses: actions/github-script@v6 + if: inputs.check-sha + id: check-output + env: + JOB_NAME: "Lint All" + MATRIX_NAME: "" + with: + script: | + const { owner, repo } = context.repo + + const { data } = await github.rest.actions.listJobsForWorkflowRun({ + owner, + repo, + run_id: context.runId, + per_page: 100 + }) + + const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME + const job = data.jobs.find(j => j.name.endsWith(jobName)) + const jobUrl = job?.html_url + + const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ inputs.check-sha }}` + + let summary = `This check is assosciated with ${shaUrl}\n\n` + + if (jobUrl) { + summary += `For run logs, click here: ${jobUrl}` + } else { + summary += `Run logs could not be found for a job with name: "${jobName}"` + } + + return { summary } + - name: Create Check + uses: LouisBrunner/checks-action@v1.6.0 + id: check + if: inputs.check-sha + with: + token: ${{ secrets.GITHUB_TOKEN }} + status: in_progress + name: Lint All + sha: ${{ inputs.check-sha }} + output: ${{ steps.check-output.outputs.result }} + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ inputs.ref }} + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Lint + run: npm run lint --ignore-scripts + - name: Post Lint + run: npm run postlint --ignore-scripts + - name: Conclude Check + uses: LouisBrunner/checks-action@v1.6.0 + if: steps.check.outputs.check_id && always() + with: + token: ${{ secrets.GITHUB_TOKEN }} + conclusion: ${{ job.status }} + check_id: ${{ steps.check.outputs.check_id }} + + test-all: + name: Test All - ${{ matrix.platform.name }} - ${{ matrix.node-version }} + if: github.repository_owner == 'npm' + strategy: + fail-fast: false + matrix: + platform: + - name: Linux + os: ubuntu-latest + shell: bash + node-version: + - 6.17.1 + - 18.x + runs-on: ${{ matrix.platform.os }} + defaults: + run: + shell: ${{ matrix.platform.shell }} + steps: + - name: Get Workflow Job + uses: actions/github-script@v6 + if: inputs.check-sha + id: check-output + env: + JOB_NAME: "Test All" + MATRIX_NAME: " - ${{ matrix.platform.name }} - ${{ matrix.node-version }}" + with: + script: | + const { owner, repo } = context.repo + + const { data } = await github.rest.actions.listJobsForWorkflowRun({ + owner, + repo, + run_id: context.runId, + per_page: 100 + }) + + const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME + const job = data.jobs.find(j => j.name.endsWith(jobName)) + const jobUrl = job?.html_url + + const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ inputs.check-sha }}` + + let summary = `This check is assosciated with ${shaUrl}\n\n` + + if (jobUrl) { + summary += `For run logs, click here: ${jobUrl}` + } else { + summary += `Run logs could not be found for a job with name: "${jobName}"` + } + + return { summary } + - name: Create Check + uses: LouisBrunner/checks-action@v1.6.0 + id: check + if: inputs.check-sha + with: + token: ${{ secrets.GITHUB_TOKEN }} + status: in_progress + name: Test All - ${{ matrix.platform.name }} - ${{ matrix.node-version }} + sha: ${{ inputs.check-sha }} + output: ${{ steps.check-output.outputs.result }} + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ inputs.ref }} + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Add Problem Matcher + run: echo "::add-matcher::.github/matchers/tap.json" + - name: Test + run: npm test --ignore-scripts + - name: Conclude Check + uses: LouisBrunner/checks-action@v1.6.0 + if: steps.check.outputs.check_id && always() + with: + token: ${{ secrets.GITHUB_TOKEN }} + conclusion: ${{ job.status }} + check_id: ${{ steps.check.outputs.check_id }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..11b02c0d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,90 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: CI + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + - latest + - release/v* + schedule: + # "At 09:00 UTC (02:00 PT) on Monday" https://crontab.guru/#0_9_*_*_1 + - cron: "0 9 * * 1" + +jobs: + lint: + name: Lint + if: github.repository_owner == 'npm' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Lint + run: npm run lint --ignore-scripts + - name: Post Lint + run: npm run postlint --ignore-scripts + + test: + name: Test - ${{ matrix.platform.name }} - ${{ matrix.node-version }} + if: github.repository_owner == 'npm' + strategy: + fail-fast: false + matrix: + platform: + - name: Linux + os: ubuntu-latest + shell: bash + node-version: + - 6.17.1 + - 18.x + runs-on: ${{ matrix.platform.os }} + defaults: + run: + shell: ${{ matrix.platform.shell }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Add Problem Matcher + run: echo "::add-matcher::.github/matchers/tap.json" + - name: Test + run: npm test --ignore-scripts diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000..21244879 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,40 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: CodeQL + +on: + push: + branches: + - main + - latest + - release/v* + pull_request: + branches: + - main + - latest + - release/v* + schedule: + # "At 10:00 UTC (03:00 PT) on Monday" https://crontab.guru/#0_10_*_*_1 + - cron: "0 10 * * 1" + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: javascript + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 00000000..ad7fb0de --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,53 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: Pull Request + +on: + pull_request: + types: + - opened + - reopened + - edited + - synchronize + +jobs: + commitlint: + name: Lint Commits + if: github.repository_owner == 'npm' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Run Commitlint on Commits + id: commit + continue-on-error: true + run: | + npx --offline commitlint -V --from 'origin/${{ github.base_ref }}' --to ${{ github.event.pull_request.head.sha }} + - name: Run Commitlint on PR Title + if: steps.commit.outcome == 'failure' + env: + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + echo '$PR_TITLE' | npx --offline commitlint -V diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..96195497 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,416 @@ +# This file is automatically added by @npmcli/template-oss. Do not edit. + +name: Release + +on: + workflow_dispatch: + inputs: + release-pr: + description: a release PR number to rerun release jobs on + type: string + push: + branches: + - main + - latest + - release/v* + +permissions: + contents: write + pull-requests: write + checks: write + +jobs: + release: + outputs: + pr: ${{ steps.release.outputs.pr }} + release: ${{ steps.release.outputs.release }} + releases: ${{ steps.release.outputs.releases }} + branch: ${{ steps.release.outputs.pr-branch }} + pr-number: ${{ steps.release.outputs.pr-number }} + comment-id: ${{ steps.pr-comment.outputs.result }} + check-id: ${{ steps.check.outputs.check_id }} + name: Release + if: github.repository_owner == 'npm' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Release Please + id: release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npx --offline template-oss-release-please "${{ github.ref_name }}" "${{ inputs.release-pr }}" + - name: Post Pull Request Comment + if: steps.release.outputs.pr-number + uses: actions/github-script@v6 + id: pr-comment + env: + PR_NUMBER: ${{ steps.release.outputs.pr-number }} + REF_NAME: ${{ github.ref_name }} + with: + script: | + const { REF_NAME, PR_NUMBER: issue_number } = process.env + const { runId, repo: { owner, repo } } = context + + const { data: workflow } = await github.rest.actions.getWorkflowRun({ owner, repo, run_id: runId }) + + let body = '## Release Manager\n\n' + + const comments = await github.paginate(github.rest.issues.listComments, { owner, repo, issue_number }) + let commentId = comments.find(c => c.user.login === 'github-actions[bot]' && c.body.startsWith(body))?.id + + body += `Release workflow run: ${workflow.html_url}\n\n#### Force CI to Update This Release\n\n` + body += `This PR will be updated and CI will run for every non-\`chore:\` commit that is pushed to \`${REF_NAME}\`. ` + body += `To force CI to update this PR, run this command:\n\n` + body += `\`\`\`\ngh workflow run release.yml -r ${REF_NAME} -R ${owner}/${repo} -f release-pr=${issue_number}\n\`\`\`` + + if (commentId) { + await github.rest.issues.updateComment({ owner, repo, comment_id: commentId, body }) + } else { + const { data: comment } = await github.rest.issues.createComment({ owner, repo, issue_number, body }) + commentId = comment?.id + } + + return commentId + - name: Get Workflow Job + uses: actions/github-script@v6 + if: steps.release.outputs.pr-sha + id: check-output + env: + JOB_NAME: "Release" + MATRIX_NAME: "" + with: + script: | + const { owner, repo } = context.repo + + const { data } = await github.rest.actions.listJobsForWorkflowRun({ + owner, + repo, + run_id: context.runId, + per_page: 100 + }) + + const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME + const job = data.jobs.find(j => j.name.endsWith(jobName)) + const jobUrl = job?.html_url + + const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ steps.release.outputs.pr-sha }}` + + let summary = `This check is assosciated with ${shaUrl}\n\n` + + if (jobUrl) { + summary += `For run logs, click here: ${jobUrl}` + } else { + summary += `Run logs could not be found for a job with name: "${jobName}"` + } + + return { summary } + - name: Create Check + uses: LouisBrunner/checks-action@v1.6.0 + id: check + if: steps.release.outputs.pr-sha + with: + token: ${{ secrets.GITHUB_TOKEN }} + status: in_progress + name: Release + sha: ${{ steps.release.outputs.pr-sha }} + output: ${{ steps.check-output.outputs.result }} + + update: + needs: release + outputs: + sha: ${{ steps.commit.outputs.sha }} + check-id: ${{ steps.check.outputs.check_id }} + name: Update - Release + if: github.repository_owner == 'npm' && needs.release.outputs.pr + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: ${{ needs.release.outputs.branch }} + - name: Setup Git User + run: | + git config --global user.email "npm-cli+bot@github.com" + git config --global user.name "npm CLI robot" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Remove Template-OSS + if: matrix && matrix.node-version == '6.17.1' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json + - name: Install Dependencies + run: npm i --ignore-scripts --no-audit --no-fund + - name: Run Post Pull Request Actions + env: + RELEASE_PR_NUMBER: ${{ needs.release.outputs.pr-number }} + RELEASE_COMMENT_ID: ${{ needs.release.outputs.comment-id }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npm exec --offline -- template-oss-release-manager --lockfile=false --publish=false + npm run rp-pull-request --ignore-scripts --if-present + - name: Commit + id: commit + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git commit --all --amend --no-edit || true + git push --force-with-lease + echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + - name: Get Workflow Job + uses: actions/github-script@v6 + if: steps.commit.outputs.sha + id: check-output + env: + JOB_NAME: "Update - Release" + MATRIX_NAME: "" + with: + script: | + const { owner, repo } = context.repo + + const { data } = await github.rest.actions.listJobsForWorkflowRun({ + owner, + repo, + run_id: context.runId, + per_page: 100 + }) + + const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME + const job = data.jobs.find(j => j.name.endsWith(jobName)) + const jobUrl = job?.html_url + + const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ steps.commit.outputs.sha }}` + + let summary = `This check is assosciated with ${shaUrl}\n\n` + + if (jobUrl) { + summary += `For run logs, click here: ${jobUrl}` + } else { + summary += `Run logs could not be found for a job with name: "${jobName}"` + } + + return { summary } + - name: Create Check + uses: LouisBrunner/checks-action@v1.6.0 + id: check + if: steps.commit.outputs.sha + with: + token: ${{ secrets.GITHUB_TOKEN }} + status: in_progress + name: Release + sha: ${{ steps.commit.outputs.sha }} + output: ${{ steps.check-output.outputs.result }} + - name: Conclude Check + uses: LouisBrunner/checks-action@v1.6.0 + if: needs.release.outputs.check-id && always() + with: + token: ${{ secrets.GITHUB_TOKEN }} + conclusion: ${{ job.status }} + check_id: ${{ needs.release.outputs.check-id }} + + ci: + name: CI - Release + needs: [ release, update ] + if: needs.release.outputs.pr + uses: ./.github/workflows/ci-release.yml + with: + ref: ${{ needs.release.outputs.branch }} + check-sha: ${{ needs.update.outputs.sha }} + + post-ci: + needs: [ release, update, ci ] + name: Post CI - Release + if: github.repository_owner == 'npm' && needs.release.outputs.pr && always() + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Get Needs Result + id: needs-result + run: | + result="" + if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + result="failure" + elif [[ "${{ contains(needs.*.result, 'cancelled') }}" == "true" ]]; then + result="cancelled" + else + result="success" + fi + echo "result=$result" >> $GITHUB_OUTPUT + - name: Conclude Check + uses: LouisBrunner/checks-action@v1.6.0 + if: needs.update.outputs.check-id && always() + with: + token: ${{ secrets.GITHUB_TOKEN }} + conclusion: ${{ steps.needs-result.outputs.result }} + check_id: ${{ needs.update.outputs.check-id }} + + post-release: + needs: release + name: Post Release - Release + if: github.repository_owner == 'npm' && needs.release.outputs.releases + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Create Release PR Comment + uses: actions/github-script@v6 + env: + RELEASES: ${{ needs.release.outputs.releases }} + with: + script: | + const releases = JSON.parse(process.env.RELEASES) + const { runId, repo: { owner, repo } } = context + const issue_number = releases[0].prNumber + + let body = '## Release Workflow\n\n' + for (const { pkgName, version, url } of releases) { + body += `- \`${pkgName}@${version}\` ${url}\n` + } + + const comments = await github.paginate(github.rest.issues.listComments, { owner, repo, issue_number }) + .then(cs => cs.map(c => ({ id: c.id, login: c.user.login, body: c.body }))) + console.log(`Found comments: ${JSON.stringify(comments, null, 2)}`) + const releaseComments = comments.filter(c => c.login === 'github-actions[bot]' && c.body.includes('Release is at')) + + for (const comment of releaseComments) { + console.log(`Release comment: ${JSON.stringify(comment, null, 2)}`) + await github.rest.issues.deleteComment({ owner, repo, comment_id: comment.id }) + } + + const runUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}` + await github.rest.issues.createComment({ + owner, + repo, + issue_number, + body: `${body}- Workflow run: :arrows_counterclockwise: ${runUrl}`, + }) + + release-integration: + needs: release + name: Release Integration + if: needs.release.outputs.release + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: View in Registry + run: | + EXIT_CODE=0 + + function is_published { + if npm view "$@" --loglevel=error > /dev/null; then + echo 0 + else + echo 1 + fi + } + + for release in $(echo '${{ needs.release.outputs.releases }}' | jq -r '.[] | @base64'); do + name=$(echo "$release" | base64 --decode | jq -r .pkgName) + version=$(echo "$release" | base64 --decode | jq -r .version) + spec="$name@$version" + status=$(is_published "$spec") + if [[ "$status" -eq 1 ]]; then + echo "$spec ERROR" + EXIT_CODE=$status + else + echo "$spec OK" + fi + done + + exit $EXIT_CODE + + post-release-integration: + needs: [ release, release-integration ] + name: Post Release Integration - Release + if: github.repository_owner == 'npm' && needs.release.outputs.release && always() + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - name: Get Needs Result + id: needs-result + run: | + if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + result="x" + elif [[ "${{ contains(needs.*.result, 'cancelled') }}" == "true" ]]; then + result="heavy_multiplication_x" + else + result="white_check_mark" + fi + echo "result=$result" >> $GITHUB_OUTPUT + - name: Update Release PR Comment + uses: actions/github-script@v6 + env: + PR_NUMBER: ${{ fromJSON(needs.release.outputs.release).prNumber }} + RESULT: ${{ steps.needs-result.outputs.result }} + with: + script: | + const { PR_NUMBER: issue_number, RESULT } = process.env + const { runId, repo: { owner, repo } } = context + + const comments = await github.paginate(github.rest.issues.listComments, { owner, repo, issue_number }) + const updateComment = comments.find(c => + c.user.login === 'github-actions[bot]' && + c.body.startsWith('## Release Workflow\n\n') && + c.body.includes(runId) + ) + + if (updateComment) { + console.log('Found comment to update:', JSON.stringify(updateComment, null, 2)) + let body = updateComment.body.replace(/Workflow run: :[a-z_]+:/, `Workflow run: :${RESULT}:`) + const tagCodeowner = RESULT !== 'white_check_mark' + if (tagCodeowner) { + body += `\n\n:rotating_light:` + body += ` @npm/cli-team: The post-release workflow failed for this release.` + body += ` Manual steps may need to be taken after examining the workflow output` + body += ` from the above workflow run. :rotating_light:` + } + await github.rest.issues.updateComment({ + owner, + repo, + body, + comment_id: updateComment.id, + }) + } else { + console.log('No matching comments found:', JSON.stringify(comments, null, 2)) + } diff --git a/.gitignore b/.gitignore index 7a13b7a3..02f29bfa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,29 @@ -/node_modules -.*.swp -coverage/ -.nyc_output/ -.idea +# This file is automatically added by @npmcli/template-oss. Do not edit. + +# ignore everything in the root +/* + +# keep these +!**/.gitignore +!/.commitlintrc.js +!/.github/ +!/.gitignore +!/.npmrc +!/.release-please-manifest.json +!/bin/ +!/CHANGELOG* +!/CODE_OF_CONDUCT.md +!/CONTRIBUTING.md +!/docs/ +!/lib/ +!/LICENSE* +!/map.js +!/package.json +!/range.bnf +!/README* +!/release-please-config.json +!/scripts/ +!/SECURITY.md +!/semver.js +!/tap-snapshots/ +!/test/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..529f93e7 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +; This file is automatically added by @npmcli/template-oss. Do not edit. + +package-lock=false diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..5c753b44 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "6.3.0" +} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 90b879c1..00000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: node_js - -node_js: - - 11 - - 10 - - 8 - -os: - - linux - -cache: - directories: - - $HOME/.npm - -notifications: - email: false diff --git a/CHANGELOG.md b/CHANGELOG.md index f567dd3f..90b50976 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# changes log +# Changelog ## 6.2.0 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..167043c2 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,7 @@ +<!-- This file is automatically added by @npmcli/template-oss. Do not edit. --> + +All interactions in this repo are covered by the [npm Code of +Conduct](https://docs.npmjs.com/policies/conduct) + +The npm cli team may, at its own discretion, moderate, remove, or edit +any interactions such as pull requests, issues, and comments. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e88ff8f8..69e88788 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1 +1,50 @@ -Please consider signing [the neveragain.tech pledge](http://neveragain.tech/) +<!-- This file is automatically added by @npmcli/template-oss. Do not edit. --> + +# Contributing + +## Code of Conduct + +All interactions in the **npm** organization on GitHub are considered to be covered by our standard [Code of Conduct](https://docs.npmjs.com/policies/conduct). + +## Reporting Bugs + +Before submitting a new bug report please search for an existing or similar report. + +Use one of our existing issue templates if you believe you've come across a unique problem. + +Duplicate issues, or issues that don't use one of our templates may get closed without a response. + +## Pull Request Conventions + +### Commits + +We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). + +When opening a pull request please be sure that either the pull request title, or each commit in the pull request, has one of the following prefixes: + + - `feat`: For when introducing a new feature. The result will be a new semver minor version of the package when it is next published. + - `fix`: For bug fixes. The result will be a new semver patch version of the package when it is next published. + - `docs`: For documentation updates. The result will be a new semver patch version of the package when it is next published. + - `chore`: For changes that do not affect the published module. Often these are changes to tests. The result will be *no* change to the version of the package when it is next published (as the commit does not affect the published version). + +### Test Coverage + +Pull requests made against this repo will run `npm test` automatically. Please make sure tests pass locally before submitting a PR. + +Every new feature or bug fix should come with a corresponding test or tests that validate the solutions. Testing also reports on code coverage and will fail if code coverage drops. + +### Linting + +Linting is also done automatically once tests pass. `npm run lintfix` will fix most linting errors automatically. + +Please make sure linting passes before submitting a PR. + +## What _not_ to contribute? + +### Dependencies + +It should be noted that our team does not accept third-party dependency updates/PRs. If you submit a PR trying to update our dependencies we will close it with or without a reference to these contribution guidelines. + +### Tools/Automation + +Our core team is responsible for the maintenance of the tooling/automation in this project and we ask contributors to not make changes to these when contributing (e.g. `.github/*`, `.eslintrc.json`, `.licensee.json`). Most of those files also have a header at the top to remind folks they are automatically generated. Pull requests that alter these will not be accepted. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..9cd2deaf --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,13 @@ +<!-- This file is automatically added by @npmcli/template-oss. Do not edit. --> + +GitHub takes the security of our software products and services seriously, including the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub). + +If you believe you have found a security vulnerability in this GitHub-owned open source repository, you can report it to us in one of two ways. + +If the vulnerability you have found is *not* [in scope for the GitHub Bug Bounty Program](https://bounty.github.com/#scope) or if you do not wish to be considered for a bounty reward, please report the issue to us directly through [opensource-security@github.com](mailto:opensource-security@github.com). + +If the vulnerability you have found is [in scope for the GitHub Bug Bounty Program](https://bounty.github.com/#scope) and you would like for your finding to be considered for a bounty reward, please submit the vulnerability to us through [HackerOne](https://hackerone.com/github) in order to be eligible to receive a bounty award. + +**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** + +Thanks for helping make GitHub safe for everyone. diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f86c7542..00000000 --- a/package-lock.json +++ /dev/null @@ -1,3575 +0,0 @@ -{ - "name": "semver", - "version": "6.3.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", - "dev": true - }, - "@babel/runtime": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", - "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.2" - } - }, - "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" - } - }, - "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" - } - }, - "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.2.tgz", - "integrity": "sha512-rUe9SxpRQlVg4EM8It7JMNWWYHAirTPpbTuvaSKybb5IejNgWB3PGBBX9rrPKDx2pM/p3Wh+7+ASaWRyyAbxmQ==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-hook-domain": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-1.1.0.tgz", - "integrity": "sha512-NH7V97d1yCbIanu2oDLyPT2GFNct0esPeJyRfkk8J5hTztHVSQp4UiNfL2O42sCA9XZPU8OgHvzOmt9ewBhVqA==", - "dev": true, - "requires": { - "source-map-support": "^0.5.11" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "bind-obj-methods": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", - "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", - "dev": true, - "requires": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" - }, - "dependencies": { - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - } - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.1.tgz", - "integrity": "sha512-2ww34sJWehnbpV0Q4k4V5Hh7juo7po6z7LUWkcIQnSGN1lHOL8GGtLtfwabKvLFQw/hbSUQ0u6V7OgGYgBzlkQ==", - "dev": true, - "requires": { - "anymatch": "^3.0.1", - "async-each": "^1.0.3", - "braces": "^3.0.2", - "fsevents": "^2.0.6", - "glob-parent": "^5.0.0", - "is-binary-path": "^2.1.0", - "is-glob": "^4.0.1", - "normalize-path": "^3.0.0", - "readdirp": "^3.0.2" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true, - "optional": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "coveralls": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.4.tgz", - "integrity": "sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA==", - "dev": true, - "requires": { - "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", - "lcov-parse": "^0.0.10", - "log-driver": "^1.2.7", - "minimist": "^1.2.0", - "request": "^2.86.0" - } - }, - "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" - } - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "events-to-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", - "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", - "integrity": "sha1-ZQnwEmr0wXhVHPqZOU4DLhOk1W4=", - "dev": true - }, - "flow-parser": { - "version": "0.101.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.101.1.tgz", - "integrity": "sha512-5XI7KnnndL1E0bmZp+SURCeNe0mZ86QHtwnmmn91J7Q3VptG26QEpH8pEecN+UgKRFm23K9zzTeesJhmuGA+mg==", - "dev": true - }, - "flow-remove-types": { - "version": "2.101.0", - "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.101.0.tgz", - "integrity": "sha512-87C0OgvfgvAWZeA4/0UxmLVbqZUxzntc6knAF2QzwwnUUSQMx7J4UtpCB8COIf9wehkWOEmcIa2XnQdz2lgYyg==", - "dev": true, - "requires": { - "flow-parser": "^0.101.0", - "pirates": "^3.0.2", - "vlq": "^0.2.1" - } - }, - "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-exists-cached": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", - "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", - "dev": true, - "optional": true - }, - "function-loop": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", - "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", - "dev": true, - "requires": { - "is-stream": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.3.tgz", - "integrity": "sha512-aymF+56WJJMyXQHcd4hlK4N75rwj5RQpfW8ePlQnJsTYOBLlLbcIErR/G1s9SkIvKBqOudR3KAx4wEqP+F1hNQ==", - "dev": true - } - } - }, - "istanbul-lib-processinfo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-1.0.0.tgz", - "integrity": "sha512-FY0cPmWa4WoQNlvB8VOcafiRoB5nB+l2Pz2xGuXHRSy1KM8QFOYfz/rN+bGMCAeejrY3mrpF5oJHcN0s/garCg==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^6.0.5", - "istanbul-lib-coverage": "^2.0.3", - "rimraf": "^2.6.3", - "uuid": "^3.3.2" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", - "dev": true, - "requires": { - "handlebars": "^4.1.2" - } - }, - "jackspeak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.0.tgz", - "integrity": "sha512-VDcSunT+wcccoG46FtzuBAyQKlzhHjli4q31e1fIHGOsRspqNUFjVzGb+7eIFDlTvqLygxapDHPHS0ouT2o/tw==", - "dev": true, - "requires": { - "cliui": "^4.1.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nyc": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", - "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "caching-transform": "^3.0.2", - "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", - "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.3", - "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "own-or": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", - "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", - "dev": true - }, - "own-or-env": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", - "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", - "dev": true, - "requires": { - "own-or": "^1.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pirates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz", - "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.2.tgz", - "integrity": "sha512-LbyJYv48eywrhOlScq16H/VkCiGKGPC2TpOdZCJ7QXnYEjn3NN/Oblh8QEU3vqfSRBB7OGvh5x45NKiVeNujIQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", - "dev": true - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spawn-wrap": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tap": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/tap/-/tap-14.3.1.tgz", - "integrity": "sha512-xDjfHKRwhrsAgV4DtKwhJ278rqRV8t1jTCM2P+1vDllvzGUIuzYFatC8vHosLg/HnGGLr/28BuTVeE64JwnRPg==", - "dev": true, - "requires": { - "async-hook-domain": "^1.1.0", - "bind-obj-methods": "^2.0.0", - "browser-process-hrtime": "^1.0.0", - "capture-stack-trace": "^1.0.0", - "chokidar": "^3.0.1", - "color-support": "^1.1.0", - "coveralls": "^3.0.4", - "diff": "^4.0.1", - "esm": "^3.2.25", - "findit": "^2.0.0", - "flow-remove-types": "^2.101.0", - "foreground-child": "^1.3.3", - "fs-exists-cached": "^1.0.0", - "function-loop": "^1.0.2", - "glob": "^7.1.4", - "import-jsx": "^2.0.0", - "ink": "^2.3.0", - "isexe": "^2.0.0", - "istanbul-lib-processinfo": "^1.0.0", - "jackspeak": "^1.4.0", - "minipass": "^2.3.5", - "mkdirp": "^0.5.1", - "nyc": "^14.1.1", - "opener": "^1.5.1", - "own-or": "^1.0.0", - "own-or-env": "^1.0.1", - "react": "^16.8.6", - "rimraf": "^2.6.3", - "signal-exit": "^3.0.0", - "source-map-support": "^0.5.12", - "stack-utils": "^1.0.2", - "tap-mocha-reporter": "^4.0.1", - "tap-parser": "^9.3.2", - "tap-yaml": "^1.0.0", - "tcompare": "^2.3.0", - "treport": "^0.4.0", - "trivial-deferred": "^1.0.1", - "ts-node": "^8.3.0", - "typescript": "^3.5.2", - "which": "^1.3.1", - "write-file-atomic": "^3.0.0", - "yaml": "^1.6.0", - "yapool": "^1.0.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.4.5", - "bundled": true, - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.2" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.2", - "bundled": true, - "dev": true - } - } - }, - "@types/prop-types": { - "version": "15.7.1", - "bundled": true, - "dev": true - }, - "@types/react": { - "version": "16.8.22", - "bundled": true, - "dev": true, - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "auto-bind": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "@types/react": "^16.8.12" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - } - } - }, - "babel-helper-builder-react-jsx": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "esutils": "^2.0.2" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true, - "dev": true - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "bundled": true, - "dev": true, - "requires": { - "babel-helper-builder-react-jsx": "^6.24.1", - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "caller-callsite": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cardinal": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "ci-info": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "bundled": true, - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js": { - "version": "2.6.5", - "bundled": true, - "dev": true - }, - "csstype": { - "version": "2.6.5", - "bundled": true, - "dev": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "bundled": true, - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esprima": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "events-to-array": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "import-jsx": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "babel-core": "^6.25.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-object-rest-spread": "^6.23.0", - "babel-plugin-transform-react-jsx": "^6.24.1", - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "ink": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "requires": { - "@types/react": "^16.8.6", - "arrify": "^1.0.1", - "auto-bind": "^2.0.0", - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "cli-truncate": "^1.1.0", - "is-ci": "^2.0.0", - "lodash.throttle": "^4.1.1", - "log-update": "^3.0.0", - "prop-types": "^15.6.2", - "react-reconciler": "^0.20.0", - "scheduler": "^0.13.2", - "signal-exit": "^3.0.2", - "slice-ansi": "^1.0.0", - "string-length": "^2.0.0", - "widest-line": "^2.0.0", - "wrap-ansi": "^5.0.0", - "yoga-layout-prebuilt": "^1.9.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "string-width": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "json5": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, - "lodash": { - "version": "4.17.11", - "bundled": true, - "dev": true - }, - "lodash.throttle": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "log-update": { - "version": "3.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "string-width": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "private": { - "version": "0.1.8", - "bundled": true, - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "punycode": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "react": { - "version": "16.8.6", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.6" - } - }, - "react-is": { - "version": "16.8.6", - "bundled": true, - "dev": true - }, - "react-reconciler": { - "version": "0.20.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.6" - } - }, - "redeyed": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "esprima": "~4.0.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, - "scheduler": { - "version": "0.13.6", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slash": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-length": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "tap-parser": { - "version": "9.3.2", - "bundled": true, - "dev": true, - "requires": { - "events-to-array": "^1.0.1", - "minipass": "^2.2.0", - "tap-yaml": "^1.0.0" - } - }, - "tap-yaml": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "yaml": "^1.5.0" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "treport": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "cardinal": "^2.1.1", - "chalk": "^2.4.2", - "import-jsx": "^2.0.0", - "ink": "^2.1.1", - "ms": "^2.1.1", - "react": "^16.8.6", - "string-length": "^2.0.0", - "tap-parser": "^9.3.2", - "unicode-length": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "unicode-length": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "punycode": "^2.0.0", - "strip-ansi": "^3.0.1" - } - } - } - }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "widest-line": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "yaml": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "@babel/runtime": "^7.4.5" - } - }, - "yoga-layout-prebuilt": { - "version": "1.9.3", - "bundled": true, - "dev": true - } - } - }, - "tap-mocha-reporter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-4.0.1.tgz", - "integrity": "sha512-/KfXaaYeSPn8qBi5Be8WSIP3iKV83s2uj2vzImJAXmjNu22kzqZ+1Dv1riYWa53sPCiyo1R1w1jbJrftF8SpcQ==", - "dev": true, - "requires": { - "color-support": "^1.1.0", - "debug": "^2.1.3", - "diff": "^1.3.2", - "escape-string-regexp": "^1.0.3", - "glob": "^7.0.5", - "readable-stream": "^2.1.5", - "tap-parser": "^8.0.0", - "tap-yaml": "0 || 1", - "unicode-length": "^1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "tap-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-8.1.0.tgz", - "integrity": "sha512-GgOzgDwThYLxhVR83RbS1JUR1TxcT+jfZsrETgPAvFdr12lUOnuvrHOBaUQgpkAp6ZyeW6r2Nwd91t88M0ru3w==", - "dev": true, - "requires": { - "events-to-array": "^1.0.1", - "minipass": "^2.2.0", - "tap-yaml": "0 || 1" - } - }, - "tap-yaml": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", - "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", - "dev": true, - "requires": { - "yaml": "^1.5.0" - } - }, - "tcompare": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-2.3.0.tgz", - "integrity": "sha512-fAfA73uFtFGybWGt4+IYT6UPLYVZQ4NfsP+IXEZGY0vh8e2IF7LVKafcQNMRBLqP0wzEA65LM9Tqj+FSmO8GLw==", - "dev": true - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "trivial-deferred": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", - "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", - "dev": true - }, - "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", - "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==", - "dev": true - }, - "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "unicode-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", - "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", - "dev": true, - "requires": { - "punycode": "^1.3.2", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.0.tgz", - "integrity": "sha512-EIgkf60l2oWsffja2Sf2AL384dx328c0B+cIYPTQq5q2rOYuDV00/iPFBOUiDKKwKMOhkymH8AidPaRvzfxY+Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yaml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.6.0.tgz", - "integrity": "sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.5" - } - }, - "yapool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", - "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", - "dev": true - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", - "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", - "dev": true - } - } -} diff --git a/package.json b/package.json index bdd442f5..ac5001fc 100644 --- a/package.json +++ b/package.json @@ -4,16 +4,23 @@ "description": "The semantic version parser used by npm.", "main": "semver.js", "scripts": { - "test": "tap", - "preversion": "npm test", - "postversion": "npm publish", - "postpublish": "git push origin --follow-tags" + "test": "tap test/ --100", + "lint": "echo linting disabled", + "postlint": "template-oss-check", + "template-oss-apply": "template-oss-apply --force", + "lintfix": "npm run lint -- --fix", + "snap": "tap test/ --100", + "posttest": "npm run lint" }, "devDependencies": { - "tap": "^14.3.1" + "@npmcli/template-oss": "file:scripts/npmcli-template-oss-4.16.0.tgz", + "tap": "^12.7.0" }, "license": "ISC", - "repository": "https://github.com/npm/node-semver", + "repository": { + "type": "git", + "url": "https://github.com/npm/node-semver.git" + }, "bin": { "semver": "./bin/semver.js" }, @@ -22,7 +29,10 @@ "range.bnf", "semver.js" ], - "tap": { - "check-coverage": true + "author": "GitHub Inc.", + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "content": "./scripts/template-oss", + "version": "4.16.0" } } diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..73d1e353 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,36 @@ +{ + "exclude-packages-from-root": true, + "group-pull-request-title-pattern": "chore: release ${version}", + "pull-request-title-pattern": "chore: release${component} ${version}", + "changelog-sections": [ + { + "type": "feat", + "section": "Features", + "hidden": false + }, + { + "type": "fix", + "section": "Bug Fixes", + "hidden": false + }, + { + "type": "docs", + "section": "Documentation", + "hidden": false + }, + { + "type": "deps", + "section": "Dependencies", + "hidden": false + }, + { + "type": "chore", + "hidden": true + } + ], + "packages": { + ".": { + "package-name": "" + } + } +} diff --git a/scripts/npmcli-template-oss-4.16.0.tgz b/scripts/npmcli-template-oss-4.16.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..adce53dd91f716e7d2b27b8c0a14517e43992991 GIT binary patch literal 42290 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 literal 0 HcmV?d00001 diff --git a/scripts/template-oss/_step-deps.yml b/scripts/template-oss/_step-deps.yml new file mode 100644 index 00000000..6735e0e8 --- /dev/null +++ b/scripts/template-oss/_step-deps.yml @@ -0,0 +1,8 @@ +- name: Remove Template-OSS + if: matrix && matrix.node-version == '{{ oldNode }}' + run: | + # template-oss cannot be installed on older npms because there are transient deps + # that use "npm:" aliases which are not supported + jq 'del(.devDependencies["@npmcli/template-oss"])' package.json > package.json-update + mv package.json-update package.json +{{> defaultStepDeps }} diff --git a/scripts/template-oss/index.js b/scripts/template-oss/index.js new file mode 100644 index 00000000..8e655e01 --- /dev/null +++ b/scripts/template-oss/index.js @@ -0,0 +1,32 @@ +// 6 was selected as an arbitrarily old version of Node to test in. This +// version of semver has no engines so this version of Node is a best effort +// to ensure no syntax is introduced that would break older Node versions. +// Problems found in even older versions of Node: +// - Node 4: RTL tests were not passing +// - Node 0.12: Necessary version of tap doesnt run +const OLD_NODE = '6.17.1' + +module.exports = { + windowsCI: false, + macCI: false, + updateNpm: false, + eslint: false, + dependabot: false, + oldNode: OLD_NODE, + ciVersions: [ + OLD_NODE, + 'latest', + ], + allowPaths: [ + '/range.bnf', + '/semver.js', + ], + rootModule: { + add: { + 'package.json': { + file: './pkg.json', + overwrite: false + } + } + } +} diff --git a/scripts/template-oss/pkg.json b/scripts/template-oss/pkg.json new file mode 100644 index 00000000..c15f4d8f --- /dev/null +++ b/scripts/template-oss/pkg.json @@ -0,0 +1,13 @@ +{ + "files": [ + "bin", + "range.bnf", + "semver.js" + ], + "scripts": { + "test": "tap test/ --100", + "snap": "tap test/ --100" + }, + "tap": {{{ del }}}, + "engines": {{{ del }}} +} diff --git a/test/cli.js b/test/cli.js index 0f273db0..fa3456dc 100644 --- a/test/cli.js +++ b/test/cli.js @@ -2,7 +2,19 @@ var t = require('tap') const thisVersion = require('../package.json').version -t.cleanSnapshot = str => str.split(thisVersion).join('@@VERSION@@') + +const resolveMatchSnapshot = (t, p, msg) => p.then((res) => new Promise(resolve => { + const actual = [ + 'Object {', + ` "code": ${res.code},`, + ` "err": "${res.err.replace(/\n/g, "\\n")}",`, + ` "out": "${res.out.replace(/\n/g, "\\n")}",`, + ` "signal": ${res.signal},`, + `}`, + ].join('\n').split(thisVersion).join('@@VERSION@@') + t.matchSnapshot(actual, msg) + resolve() +})) const spawn = require('child_process').spawn const bin = require.resolve('../bin/semver') @@ -30,14 +42,14 @@ t.test('inc tests', t => Promise.all([ ['-i', 'major', '1.0.0', '1.0.1'], ['-i', 'premajor', '1.0.0', '--preid=beta'], ['-i', '1.2.3'], -].map(args => t.resolveMatchSnapshot(run(args), args.join(' '))))) +].map(args => resolveMatchSnapshot(t, run(args), args.join(' '))))) t.test('help output', t => Promise.all([ ['-h'], ['-?'], ['--help'], [] -].map(h => t.resolveMatchSnapshot(run(h), h[0] || '(no args)')))) +].map(h => resolveMatchSnapshot(t, run(h), h[0] || '(no args)')))) t.test('sorting and filtering', t => Promise.all([ ['1.2.3', '3.2.1', '2.3.4'], @@ -51,7 +63,7 @@ t.test('sorting and filtering', t => Promise.all([ ['1.2.3', '3.2.1', '2.3.4', '2.3.4-beta', '2.0.0asdf', '-r', '2.x', '-p'], ['3.2.1', '2.3.4', '2.3.4-beta', '2.0.0asdf', '-r', '2.x', '-p', '-l'], ['1.2.3', '3.2.1', '-r', '2.x'], -].map(args => t.resolveMatchSnapshot(run(args), args.join(' '))))) +].map(args => resolveMatchSnapshot(t, run(args), args.join(' '))))) t.test('coercing', t => Promise.all([ ['1.2.3.4.5.6', '-c'], @@ -59,4 +71,4 @@ t.test('coercing', t => Promise.all([ ['1.2.3.4.5.6', '-c', '--rtl', '--ltr'], ['not a version', '1.2.3', '-c'], ['not a version', '-c'], -].map(args => t.resolveMatchSnapshot(run(args), args.join(' '))))) +].map(args => resolveMatchSnapshot(t, run(args), args.join(' ')))))