├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitattributes ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── automerge.yml │ ├── ci.yml │ ├── failureNotifications.yml │ ├── manualRelease.yml │ ├── notify-slack-on-pr-open.yml │ ├── onPushToMain.yml │ ├── onRelease.yml │ └── test.yml ├── .gitignore ├── .mocharc.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── git2gus └── config.json ├── handle.js ├── package.json ├── src ├── config.ts ├── errors │ ├── cli.ts │ ├── exit.ts │ └── pretty-print.ts ├── global.d.ts ├── handle.ts ├── index.ts ├── logger.ts └── screen.ts ├── test ├── error.test.ts ├── handle.test.ts ├── helpers │ └── init.js ├── pretty-print.test.ts ├── tsconfig.json └── warn.test.ts ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false 12 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /lib 2 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "oclif", 4 | "oclif-typescript" 5 | ], 6 | "rules": {} 7 | } 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.js text eol=lf 3 | *.ts text eol=lf 4 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @heroku/cli 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | directory: '/' 5 | schedule: 6 | interval: 'weekly' 7 | day: 'saturday' 8 | versioning-strategy: 'increase' 9 | labels: 10 | - 'dependencies' 11 | open-pull-requests-limit: 5 12 | pull-request-branch-name: 13 | separator: '-' 14 | commit-message: 15 | # cause a release for non-dev-deps 16 | prefix: fix(deps) 17 | # no release for dev-deps 18 | prefix-development: chore(dev-deps) 19 | ignore: 20 | - dependency-name: '@salesforce/dev-scripts' 21 | - dependency-name: '*' 22 | update-types: ['version-update:semver-major'] 23 | -------------------------------------------------------------------------------- /.github/workflows/automerge.yml: -------------------------------------------------------------------------------- 1 | name: automerge 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: '17 2,5,8,11 * * *' 6 | 7 | jobs: 8 | automerge: 9 | uses: oclif/github-workflows/.github/workflows/automerge.yml@main 10 | secrets: inherit 11 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | runs-on: windows-latest 12 | strategy: 13 | matrix: 14 | node-version: [10.x, 12.x] 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v1 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | - run: yarn install 22 | env: 23 | CI: true 24 | - run: yarn test 25 | env: 26 | CI: true 27 | -------------------------------------------------------------------------------- /.github/workflows/failureNotifications.yml: -------------------------------------------------------------------------------- 1 | name: failureNotifications 2 | 3 | on: 4 | workflow_run: 5 | workflows: 6 | - version, tag and github release 7 | - publish 8 | types: 9 | - completed 10 | 11 | jobs: 12 | failure-notify: 13 | runs-on: ubuntu-latest 14 | if: ${{ github.event.workflow_run.conclusion == 'failure' }} 15 | steps: 16 | - name: Announce Failure 17 | id: slack 18 | uses: slackapi/slack-github-action@v1.21.0 19 | env: 20 | # for non-CLI-team-owned plugins, you can send this anywhere you like 21 | SLACK_WEBHOOK_URL: ${{ secrets.CLI_ALERTS_SLACK_WEBHOOK }} 22 | SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK 23 | with: 24 | payload: | 25 | { 26 | "text": "${{ github.event.workflow_run.name }} failed: ${{ github.event.workflow_run.repository.name }}", 27 | "blocks": [ 28 | { 29 | "type": "header", 30 | "text": { 31 | "type": "plain_text", 32 | "text": ":bh-alert: ${{ github.event.workflow_run.name }} failed: ${{ github.event.workflow_run.repository.name }} :bh-alert:" 33 | } 34 | }, 35 | { 36 | "type": "section", 37 | "text": { 38 | "type": "mrkdwn", 39 | "text": "Repo: ${{ github.event.workflow_run.repository.html_url }}\nWorkflow name: `${{ github.event.workflow_run.name }}`\nJob url: ${{ github.event.workflow_run.html_url }}" 40 | } 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /.github/workflows/manualRelease.yml: -------------------------------------------------------------------------------- 1 | name: manual release 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | release: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | with: 12 | token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} 13 | - name: Conventional Changelog Action 14 | id: changelog 15 | uses: TriPSs/conventional-changelog-action@d360fad3a42feca6462f72c97c165d60a02d4bf2 16 | # overriding some of the basic behaviors to just get the changelog 17 | with: 18 | git-user-name: svc-cli-bot 19 | git-user-email: svc_cli_bot@salesforce.com 20 | github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} 21 | output-file: false 22 | # always do the release, even if there are no semantic commits 23 | skip-on-empty: false 24 | tag-prefix: '' 25 | - uses: notiz-dev/github-action-json-property@2192e246737701f108a4571462b76c75e7376216 26 | id: packageVersion 27 | with: 28 | path: 'package.json' 29 | prop_path: 'version' 30 | - name: Create Github Release 31 | uses: actions/create-release@v1 32 | env: 33 | GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} 34 | with: 35 | tag_name: ${{ steps.packageVersion.outputs.prop }} 36 | release_name: ${{ steps.packageVersion.outputs.prop }} 37 | -------------------------------------------------------------------------------- /.github/workflows/notify-slack-on-pr-open.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request Slack Notification 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Notify Slack on PR open 12 | env: 13 | WEBHOOK_URL : ${{ secrets.CLI_TEAM_SLACK_WEBHOOK_URL }} 14 | PULL_REQUEST_AUTHOR_ICON_URL : ${{ github.event.pull_request.user.avatar_url }} 15 | PULL_REQUEST_AUTHOR_NAME : ${{ github.event.pull_request.user.login }} 16 | PULL_REQUEST_AUTHOR_PROFILE_URL: ${{ github.event.pull_request.user.html_url }} 17 | PULL_REQUEST_BASE_BRANCH_NAME : ${{ github.event.pull_request.base.ref }} 18 | PULL_REQUEST_COMPARE_BRANCH_NAME : ${{ github.event.pull_request.head.ref }} 19 | PULL_REQUEST_NUMBER : ${{ github.event.pull_request.number }} 20 | PULL_REQUEST_REPO: ${{ github.event.pull_request.head.repo.name }} 21 | PULL_REQUEST_TITLE : ${{ github.event.pull_request.title }} 22 | PULL_REQUEST_URL : ${{ github.event.pull_request.html_url }} 23 | uses: salesforcecli/github-workflows/.github/actions/prNotification@main 24 | -------------------------------------------------------------------------------- /.github/workflows/onPushToMain.yml: -------------------------------------------------------------------------------- 1 | # test 2 | name: version, tag and github release 3 | 4 | on: 5 | push: 6 | branches: [main] 7 | 8 | jobs: 9 | release: 10 | uses: oclif/github-workflows/.github/workflows/githubRelease.yml@main 11 | secrets: inherit 12 | 13 | # most repos won't use this 14 | # depends on previous job to avoid git collisions, not for any functionality reason 15 | # docs: 16 | # uses: salesforcecli/github-workflows/.github/workflows/publishTypedoc.yml@main 17 | # secrets: inherit 18 | # needs: release 19 | -------------------------------------------------------------------------------- /.github/workflows/onRelease.yml: -------------------------------------------------------------------------------- 1 | name: publish 2 | 3 | on: 4 | release: 5 | types: [released] 6 | # support manual release in case something goes wrong and needs to be repeated or tested 7 | workflow_dispatch: 8 | inputs: 9 | tag: 10 | description: tag that needs to publish 11 | type: string 12 | required: true 13 | jobs: 14 | npm: 15 | uses: oclif/github-workflows/.github/workflows/npmPublish.yml@main 16 | with: 17 | tag: latest 18 | githubTag: ${{ github.event.release.tag_name || inputs.tag }} 19 | secrets: inherit 20 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: tests 2 | on: 3 | push: 4 | branches-ignore: [main] 5 | workflow_dispatch: 6 | 7 | jobs: 8 | unit-tests: 9 | uses: oclif/github-workflows/.github/workflows/unitTest.yml@main 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *-debug.log 2 | *-error.log 3 | .oclif.manifest.json 4 | /lib 5 | /node_modules 6 | /tmp 7 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": [ 3 | "test/helpers/init.js", 4 | "ts-node/register", 5 | "source-map-support/register" 6 | ], 7 | "watch-extensions": [ 8 | "ts" 9 | ], 10 | "recursive": true, 11 | "reporter": "spec", 12 | "timeout": 60000 13 | } 14 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [1.3.3](https://github.com/oclif/errors/compare/v1.3.2...v1.3.3) (2020-06-29) 2 | 3 | 4 | ### Bug Fixes 5 | 6 | * remove deprecation warning for render in exit error ([#44](https://github.com/oclif/errors/issues/44)) ([3b2e5fa](https://github.com/oclif/errors/commit/3b2e5fae7e9e9e9540044a2d4f7df435d4f2cffb)) 7 | 8 | ## [1.2.2](https://github.com/oclif/errors/compare/v1.2.1...v1.2.2) (2018-10-13) 9 | 10 | 11 | ### Bug Fixes 12 | 13 | * remove greenkeeper badge ([43b4076](https://github.com/oclif/errors/commit/43b4076)) 14 | 15 | ## [1.2.1](https://github.com/oclif/errors/compare/v1.2.0...v1.2.1) (2018-09-14) 16 | 17 | 18 | ### Bug Fixes 19 | 20 | * updated deps ([7996855](https://github.com/oclif/errors/commit/7996855)) 21 | 22 | 23 | # [1.2.0](https://github.com/oclif/errors/compare/9ae179034c7c8bdc1c62f03eb819d58de7735f3d...v1.2.0) (2018-08-17) 24 | 25 | 26 | ### Features 27 | 28 | * typescript 3 ([5332289](https://github.com/oclif/errors/commit/5332289)) 29 | 30 | 31 | ## [1.1.2](https://github.com/oclif/errors/compare/ca758e6a4e3c3016fa93114e62b248868cb51de2...v1.1.2) (2018-05-21) 32 | 33 | 34 | ### Bug Fixes 35 | 36 | * Handle misformed error response (without `stack`) ([#8](https://github.com/oclif/errors/issues/8)) ([9ae1790](https://github.com/oclif/errors/commit/9ae1790)) 37 | 38 | 39 | ## [1.1.1](https://github.com/oclif/errors/compare/6694bc782ac5ff4d1a5844106544238ac189dd58...v1.1.1) (2018-05-12) 40 | 41 | 42 | ### Bug Fixes 43 | 44 | * typing ([ca758e6](https://github.com/oclif/errors/commit/ca758e6)) 45 | 46 | 47 | # [1.1.0](https://github.com/oclif/errors/compare/100472457af1a172e10410e63900fc3e268e3af5...v1.1.0) (2018-05-12) 48 | 49 | 50 | ### Features 51 | 52 | * allow printing errors without exiting ([6694bc7](https://github.com/oclif/errors/commit/6694bc7)) 53 | 54 | 55 | ## [1.0.12](https://github.com/oclif/errors/compare/02aadd51988e662b77c20c03809dca03f77a1695...v1.0.12) (2018-05-10) 56 | 57 | 58 | ### Bug Fixes 59 | 60 | * bump fs-extra ([1004724](https://github.com/oclif/errors/commit/1004724)) 61 | 62 | 63 | ## [1.0.11](https://github.com/oclif/errors/compare/18d489147a952bdeece6fbfaae4ca7b0615817ce...v1.0.11) (2018-05-09) 64 | 65 | 66 | ### Bug Fixes 67 | 68 | * clean exit on sigint ([02aadd5](https://github.com/oclif/errors/commit/02aadd5)) 69 | 70 | 71 | ## [1.0.10](https://github.com/oclif/errors/compare/74d02c2c63f93a9e051abc3cbd48dc9eaabb74c9...v1.0.10) (2018-05-09) 72 | 73 | 74 | ### Bug Fixes 75 | 76 | * force exiting on errors ([18d4891](https://github.com/oclif/errors/commit/18d4891)) 77 | 78 | 79 | ## [1.0.9](https://github.com/oclif/errors/compare/c314aefee4aea31ab0fb6d58593517a77b505ac3...v1.0.9) (2018-05-06) 80 | 81 | 82 | ### Bug Fixes 83 | 84 | * return type of error function ([eef7598](https://github.com/oclif/errors/commit/eef7598)) 85 | * return type of exit ([74d02c2](https://github.com/oclif/errors/commit/74d02c2)) 86 | 87 | 88 | ## [1.0.8](https://github.com/oclif/errors/compare/452c383c79744cc24fe4439aa49590379848e8a8...v1.0.8) (2018-05-02) 89 | 90 | 91 | ### Bug Fixes 92 | 93 | * error wrapping ([c314aef](https://github.com/oclif/errors/commit/c314aef)) 94 | 95 | 96 | ## [1.0.7](https://github.com/oclif/errors/compare/3668c9074d87de57a63938379b0458ab373fb76b...v1.0.7) (2018-05-01) 97 | 98 | 99 | ### Bug Fixes 100 | 101 | * updated fs-extra ([452c383](https://github.com/oclif/errors/commit/452c383)) 102 | 103 | 104 | ## [1.0.6](https://github.com/oclif/errors/compare/e7a5d464b3e7039aa0d8b9734b48a97717980417...v1.0.6) (2018-04-21) 105 | 106 | 107 | ### Bug Fixes 108 | 109 | * fix warning rendering ([3668c90](https://github.com/oclif/errors/commit/3668c90)) 110 | 111 | 112 | ## [1.0.5](https://github.com/oclif/errors/compare/266b7f622295242539669cb0327dd17067ec9e3c...v1.0.5) (2018-04-21) 113 | 114 | 115 | ### Bug Fixes 116 | 117 | * only render if it is a function ([e7a5d46](https://github.com/oclif/errors/commit/e7a5d46)) 118 | 119 | 120 | ## [1.0.4](https://github.com/oclif/errors/compare/6528f456cec3e5102e0a255061816da9ba455a89...v1.0.4) (2018-04-07) 121 | 122 | 123 | ### Bug Fixes 124 | 125 | * hide EEXIT errors from logfile ([266b7f6](https://github.com/oclif/errors/commit/266b7f6)) 126 | 127 | 128 | ## [1.0.3](https://github.com/oclif/errors/compare/v1.0.2...v1.0.3) (2018-03-24) 129 | 130 | 131 | ### Bug Fixes 132 | 133 | * only render if it is a function ([6528f45](https://github.com/oclif/errors/commit/6528f45)) 134 | 135 | 136 | ## [1.0.1](https://github.com/oclif/errors/compare/v1.0.0...v1.0.1) (2018-02-13) 137 | 138 | 139 | ### Bug Fixes 140 | 141 | * testing release ([bfd09be](https://github.com/oclif/errors/commit/bfd09be)) 142 | 143 | 144 | ## [0.2.2](https://github.com/anycli/errors/compare/7ad688c9e18f2f161e5cc43345b1c47175bc284f...v0.2.2) (2018-02-07) 145 | 146 | 147 | ### Bug Fixes 148 | 149 | * better error handlings ([57a1e1a](https://github.com/anycli/errors/commit/57a1e1a)) 150 | 151 | 152 | ## [0.2.1](https://github.com/anycli/errors/compare/9e8e0453b06cb544002ed6cd39a24bad3798dd2e...v0.2.1) (2018-02-06) 153 | 154 | 155 | ### Bug Fixes 156 | 157 | * fixed test suite ([7ad688c](https://github.com/anycli/errors/commit/7ad688c)) 158 | * make bang less bold ([ee56ab5](https://github.com/anycli/errors/commit/ee56ab5)) 159 | 160 | 161 | # [0.2.0](https://github.com/anycli/errors/compare/0a8f0bcd92c1add9742a3cbdaac69814508ab5fe...v0.2.0) (2018-02-06) 162 | 163 | 164 | ### Features 165 | 166 | * added debug mode ([9e8e045](https://github.com/anycli/errors/commit/9e8e045)) 167 | 168 | 169 | # [0.1.0](https://github.com/anycli/errors/compare/5e19840abea86d17344ba3b53f11820bc41093f6...v0.1.0) (2018-02-06) 170 | 171 | 172 | ### Features 173 | 174 | * add exit function ([0a8f0bc](https://github.com/anycli/errors/commit/0a8f0bc)) 175 | 176 | 177 | ## [0.0.3](https://github.com/anycli/errors/compare/c12a1a5eef7273091cec2b9eaaccd3448fd3ce7c...v0.0.3) (2018-02-06) 178 | 179 | 180 | ### Bug Fixes 181 | 182 | * fixed tests in windows ([5e19840](https://github.com/anycli/errors/commit/5e19840)) 183 | 184 | 185 | ## [0.0.2](https://github.com/anycli/errors/compare/9303163b5db791d8e3d6a70b464c719176c23c6b...v0.0.2) (2018-02-06) 186 | 187 | 188 | ### Bug Fixes 189 | 190 | * add dev deps ([c12a1a5](https://github.com/anycli/errors/commit/c12a1a5)) 191 | 192 | 193 | ## [0.0.1](https://github.com/anycli/errors/compare/4f86b9dc1221be9b2a7735d41dfb068478035368...v0.0.1) (2018-02-06) 194 | 195 | 196 | ### Bug Fixes 197 | 198 | * improve flushing ([9303163](https://github.com/anycli/errors/commit/9303163)) 199 | * run tsc before test ([5f1a56d](https://github.com/anycli/errors/commit/5f1a56d)) 200 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Salesforce.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | @oclif/errors 2 | ============== 3 | 4 | **This library has been replaced by [@oclif/core](https://github.com/oclif/core) and is no longer maintained** 5 | 6 | display friendly CLI errors and log to error log 7 | 8 | [![Version](https://img.shields.io/npm/v/@oclif/errors.svg)](https://npmjs.org/package/@oclif/errors) 9 | [![CircleCI](https://circleci.com/gh/oclif/errors/tree/main.svg?style=svg)](https://circleci.com/gh/oclif/errors/tree/main) 10 | [![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/errors?branch=main&svg=true)](https://ci.appveyor.com/project/heroku/errors/branch/main) 11 | [![Known Vulnerabilities](https://snyk.io/test/npm/@oclif/errors/badge.svg)](https://snyk.io/test/npm/@oclif/errors) 12 | [![Downloads/week](https://img.shields.io/npm/dw/@oclif/errors.svg)](https://npmjs.org/package/@oclif/errors) 13 | [![License](https://img.shields.io/npm/l/@oclif/errors.svg)](https://github.com/oclif/errors/blob/main/package.json) 14 | -------------------------------------------------------------------------------- /git2gus/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "productTag": "a1aB00000004Bx8IAE", 3 | "defaultBuild": "offcore.tooling.55" 4 | } -------------------------------------------------------------------------------- /handle.js: -------------------------------------------------------------------------------- 1 | module.exports = err => require('./lib/handle').handle(err) 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@oclif/errors", 3 | "description": "display friendly CLI errors and log to error log", 4 | "version": "1.3.6", 5 | "author": "Salesforce", 6 | "bugs": "https://github.com/oclif/errors/issues", 7 | "dependencies": { 8 | "clean-stack": "^3.0.0", 9 | "fs-extra": "^8.1", 10 | "indent-string": "^4.0.0", 11 | "strip-ansi": "^6.0.1", 12 | "wrap-ansi": "^7.0.0" 13 | }, 14 | "devDependencies": { 15 | "@types/chai": "^4.3.0", 16 | "@types/clean-stack": "^2.1.1", 17 | "@types/fs-extra": "^9.0", 18 | "@types/indent-string": "^4.0.1", 19 | "@types/mocha": "^8.2.3", 20 | "@types/node": "^14.18.32", 21 | "@types/strip-ansi": "^5.2.1", 22 | "@types/wrap-ansi": "^3.0.0", 23 | "chai": "^4.3.6", 24 | "chalk": "^4.1.0", 25 | "eslint": "^7.3.0", 26 | "eslint-config-oclif": "^3.1.0", 27 | "eslint-config-oclif-typescript": "^0.2.0", 28 | "fancy-test": "^1.4.8", 29 | "mocha": "^8.2.1", 30 | "nock": "^13.2.4", 31 | "ts-node": "^9.1.1", 32 | "typescript": "~3.9.10" 33 | }, 34 | "engines": { 35 | "node": ">=8.0.0" 36 | }, 37 | "files": [ 38 | "/handle.js", 39 | "/lib" 40 | ], 41 | "homepage": "https://github.com/oclif/errors", 42 | "keywords": [ 43 | "oclif" 44 | ], 45 | "license": "MIT", 46 | "main": "lib/index.js", 47 | "repository": "oclif/errors", 48 | "scripts": { 49 | "build": "rm -rf lib && tsc", 50 | "lint": "eslint . --ext .ts --config .eslintrc", 51 | "posttest": "rm -rf lib && yarn lint", 52 | "prepublishOnly": "yarn run build", 53 | "pretest": "yarn run build && tsc -p test --noEmit", 54 | "test": "mocha --forbid-only \"test/**/*.test.ts\"" 55 | }, 56 | "types": "lib/index.d.ts" 57 | } -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import {Logger} from './logger' 2 | 3 | // eslint-disable-next-line no-multi-assign 4 | const g = (global as any).oclif = (global as any).oclif || {} 5 | 6 | function displayWarnings() { 7 | if (process.listenerCount('warning') > 1) return 8 | process.on('warning', (warning: any) => { 9 | console.error(warning.stack) 10 | if (warning.detail) console.error(warning.detail) 11 | }) 12 | } 13 | 14 | export const config = { 15 | errorLogger: undefined as Logger | undefined, 16 | get debug(): boolean { 17 | return Boolean(g.debug) 18 | }, 19 | set debug(enabled: boolean) { 20 | g.debug = enabled 21 | if (enabled) displayWarnings() 22 | }, 23 | get errlog(): string | undefined { 24 | return g.errlog 25 | }, 26 | set errlog(errlog: string | undefined) { 27 | g.errlog = errlog 28 | if (errlog) this.errorLogger = new Logger(errlog) 29 | else delete this.errorLogger 30 | }, 31 | } 32 | -------------------------------------------------------------------------------- /src/errors/cli.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable no-implicit-dependencies 2 | 3 | import * as Chalk from 'chalk' 4 | import Clean = require('clean-stack') 5 | import Indent = require('indent-string') 6 | import * as Wrap from 'wrap-ansi' 7 | 8 | import {config} from '../config' 9 | import {PrettyPrintableError} from './pretty-print' 10 | 11 | /** 12 | * properties specific to internal oclif error handling 13 | */ 14 | export interface OclifError { 15 | oclif: { 16 | exit?: number | false; 17 | }; 18 | } 19 | 20 | export function addOclifExitCode(error: Record, options?: { exit?: number | false }): OclifError { 21 | if (!('oclif' in error)) { 22 | (error as unknown as OclifError).oclif = {} 23 | } 24 | 25 | error.oclif.exit = options?.exit === undefined ? 2 : options.exit 26 | return error as OclifError 27 | } 28 | 29 | export class CLIError extends Error implements OclifError { 30 | oclif: OclifError['oclif'] = {} 31 | 32 | code?: string 33 | 34 | constructor(error: string | Error, options: { exit?: number | false } & PrettyPrintableError = {}) { 35 | super(error instanceof Error ? error.message : error) 36 | addOclifExitCode(this, options) 37 | this.code = options.code 38 | } 39 | 40 | get stack(): string { 41 | const clean: typeof Clean = require('clean-stack') 42 | return clean(super.stack!, {pretty: true}) 43 | } 44 | 45 | /** 46 | * @deprecated `render` Errors display should be handled by display function, like pretty-print 47 | * @return {string} returns a string representing the dispay of the error 48 | */ 49 | render(): string { 50 | if (config.debug) { 51 | return this.stack 52 | } 53 | const wrap: typeof Wrap = require('wrap-ansi') 54 | const indent: typeof Indent = require('indent-string') 55 | 56 | let output = `${this.name}: ${this.message}` 57 | // eslint-disable-next-line node/no-missing-require 58 | output = wrap(output, require('../screen').errtermwidth - 6, {trim: false, hard: true} as any) 59 | output = indent(output, 3) 60 | output = indent(output, 1, {indent: this.bang, includeEmptyLines: true} as any) 61 | output = indent(output, 1) 62 | return output 63 | } 64 | 65 | get bang() { 66 | let red: typeof Chalk.red = ((s: string) => s) as any 67 | try { 68 | red = require('chalk').red 69 | } catch { } 70 | return red(process.platform === 'win32' ? '»' : '›') 71 | } 72 | } 73 | 74 | export namespace CLIError { 75 | export class Warn extends CLIError { 76 | constructor(err: string | Error) { 77 | super(err instanceof Error ? err.message : err) 78 | this.name = 'Warning' 79 | } 80 | 81 | get bang() { 82 | let yellow: typeof Chalk.yellow = ((s: string) => s) as any 83 | try { 84 | yellow = require('chalk').yellow 85 | } catch { } 86 | return yellow(process.platform === 'win32' ? '»' : '›') 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/errors/exit.ts: -------------------------------------------------------------------------------- 1 | import {CLIError, OclifError} from './cli' 2 | 3 | export class ExitError extends CLIError implements OclifError { 4 | oclif!: { exit: number } 5 | 6 | code = 'EEXIT' 7 | 8 | constructor(exitCode = 0) { 9 | super(`EEXIT: ${exitCode}`, {exit: exitCode}) 10 | } 11 | 12 | render(): string { 13 | return '' 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/errors/pretty-print.ts: -------------------------------------------------------------------------------- 1 | import * as wrap from 'wrap-ansi' 2 | import indent = require('indent-string') 3 | import * as screen from '../screen' 4 | import {config} from '../config' 5 | 6 | export interface PrettyPrintableError { 7 | /** 8 | * messsage to display related to the error 9 | */ 10 | message?: string; 11 | 12 | /** 13 | * a unique error code for this error class 14 | */ 15 | code?: string; 16 | 17 | /** 18 | * a url to find out more information related to this error 19 | * or fixing the error 20 | */ 21 | ref?: string; 22 | 23 | /** 24 | * a suggestion that may be useful or provide additional context 25 | */ 26 | suggestions?: string[]; 27 | } 28 | 29 | // These exist for backwards compatibility with CLIError 30 | type CLIErrorDisplayOptions = { name?: string; bang?: string } 31 | 32 | export function applyPrettyPrintOptions(error: Error, options: PrettyPrintableError): PrettyPrintableError { 33 | const prettyErrorKeys: (keyof PrettyPrintableError)[] = ['message', 'code', 'ref', 'suggestions'] 34 | 35 | prettyErrorKeys.forEach(key => { 36 | const applyOptionsKey = !(key in error) && options[key] 37 | if (applyOptionsKey) { 38 | (error as any)[key] = options[key] 39 | } 40 | }) 41 | 42 | return error 43 | } 44 | 45 | const formatSuggestions = (suggestions?: string[]): string | undefined => { 46 | const label = 'Try this:' 47 | if (!suggestions || suggestions.length === 0) return undefined 48 | if (suggestions.length === 1) return `${label} ${suggestions[0]}` 49 | 50 | const multiple = suggestions.map(suggestion => `* ${suggestion}`).join('\n') 51 | return `${label}\n${indent(multiple, 2)}` 52 | } 53 | 54 | export default function prettyPrint(error: Error & PrettyPrintableError & CLIErrorDisplayOptions) { 55 | if (config.debug) { 56 | return error.stack 57 | } 58 | 59 | const {message, code, suggestions, ref, name: errorSuffix, bang} = error 60 | 61 | // errorSuffix is pulled from the 'name' property on CLIError 62 | // and is like either Error or Warning 63 | const formattedHeader = message ? `${errorSuffix || 'Error'}: ${message}` : undefined 64 | const formattedCode = code ? `Code: ${code}` : undefined 65 | const formattedSuggestions = formatSuggestions(suggestions) 66 | const formattedReference = ref ? `Reference: ${ref}` : undefined 67 | 68 | const formatted = [formattedHeader, formattedCode, formattedSuggestions, formattedReference] 69 | .filter(Boolean) 70 | .join('\n') 71 | 72 | let output = wrap(formatted, screen.errtermwidth - 6, {trim: false, hard: true} as any) 73 | output = indent(output, 3) 74 | output = indent(output, 1, {indent: bang || '', includeEmptyLines: true} as any) 75 | output = indent(output, 1) 76 | 77 | return output 78 | } 79 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable 2 | 3 | declare namespace NodeJS { 4 | interface Global { 5 | oclif?: { 6 | debug?: boolean; 7 | errlog?: string; 8 | }; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/handle.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-process-exit */ 2 | /* eslint-disable unicorn/no-process-exit */ 3 | import {config} from './config' 4 | import prettyPrint, {PrettyPrintableError} from './errors/pretty-print' 5 | import clean = require('clean-stack') 6 | import {OclifError, CLIError} from './errors/cli' 7 | 8 | export const handle = (err: Error & Partial & Partial) => { 9 | try { 10 | if (!err) err = new CLIError('no error?') 11 | if (err.message === 'SIGINT') process.exit(1) 12 | 13 | const shouldPrint = !(err.code === 'EEXIT') 14 | const pretty = prettyPrint(err) 15 | const stack = clean(err.stack || '', {pretty: true}) 16 | 17 | if (shouldPrint) { 18 | console.error(pretty ? pretty : stack) 19 | } 20 | 21 | const exitCode = err.oclif?.exit !== undefined && err.oclif?.exit !== false ? err.oclif?.exit : 1 22 | 23 | if (config.errorLogger && err.code !== 'EEXIT') { 24 | if (stack) { 25 | config.errorLogger.log(stack) 26 | } 27 | 28 | config.errorLogger.flush() 29 | .then(() => process.exit(exitCode)) 30 | .catch(console.error) 31 | } else process.exit(exitCode) 32 | } catch (error) { 33 | console.error(err.stack) 34 | console.error(error.stack) 35 | process.exit(1) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable no-console 2 | 3 | export {handle} from './handle' 4 | export {ExitError} from './errors/exit' 5 | export {CLIError} from './errors/cli' 6 | export {Logger} from './logger' 7 | export {config} from './config' 8 | 9 | import {config} from './config' 10 | import {CLIError, addOclifExitCode, OclifError} from './errors/cli' 11 | import {ExitError} from './errors/exit' 12 | import prettyPrint, {PrettyPrintableError, applyPrettyPrintOptions} from './errors/pretty-print' 13 | 14 | export {PrettyPrintableError} 15 | 16 | export function exit(code = 0): never { 17 | throw new ExitError(code) 18 | } 19 | 20 | export function error(input: string | Error, options: {exit: false} & PrettyPrintableError): void 21 | export function error(input: string | Error, options?: {exit?: number} & PrettyPrintableError): never 22 | export function error(input: string | Error, options: {exit?: number | false} & PrettyPrintableError = {}) { 23 | let err: Error & OclifError 24 | 25 | if (typeof input === 'string') { 26 | err = new CLIError(input, options) 27 | } else if (input instanceof Error) { 28 | err = addOclifExitCode(input, options) as Error & OclifError 29 | } else { 30 | throw new TypeError('first argument must be a string or instance of Error') 31 | } 32 | 33 | err = applyPrettyPrintOptions(err, options) as Error & OclifError & PrettyPrintableError 34 | 35 | if (options.exit === false) { 36 | const message = prettyPrint(err) 37 | console.error(message) 38 | if (config.errorLogger) config.errorLogger.log(err?.stack ?? '') 39 | } else throw err 40 | } 41 | 42 | export function warn(input: string | Error) { 43 | let err: Error & OclifError 44 | 45 | if (typeof input === 'string') { 46 | err = new CLIError.Warn(input) 47 | } else if (input instanceof Error) { 48 | err = addOclifExitCode(input) as Error & OclifError 49 | } else { 50 | throw new TypeError('first argument must be a string or instance of Error') 51 | } 52 | 53 | const message = prettyPrint(err) 54 | console.error(message) 55 | if (config.errorLogger) config.errorLogger.log(err?.stack ?? '') 56 | } 57 | -------------------------------------------------------------------------------- /src/logger.ts: -------------------------------------------------------------------------------- 1 | import * as FS from 'fs-extra' 2 | import * as path from 'path' 3 | import StripAnsi = require('strip-ansi') 4 | 5 | const timestamp = () => new Date().toISOString() 6 | let timer: any 7 | const wait = (ms: number) => new Promise(resolve => { 8 | if (timer) timer.unref() 9 | timer = setTimeout(() => resolve(), ms) 10 | }) 11 | 12 | function chomp(s: string): string { 13 | if (s.endsWith('\n')) return s.replace(/\n$/, '') 14 | return s 15 | } 16 | 17 | export class Logger { 18 | protected flushing: Promise = Promise.resolve() 19 | 20 | protected buffer: string[] = [] 21 | 22 | // eslint-disable-next-line no-useless-constructor 23 | constructor(public file: string) {} 24 | 25 | log(msg: string) { 26 | const stripAnsi: typeof StripAnsi = require('strip-ansi') 27 | msg = stripAnsi(chomp(msg)) 28 | const lines = msg.split('\n').map(l => `${timestamp()} ${l}`.trimRight()) 29 | this.buffer.push(...lines) 30 | // tslint:disable-next-line no-console 31 | this.flush(50).catch(console.error) 32 | } 33 | 34 | async flush(waitForMs = 0) { 35 | await wait(waitForMs) 36 | this.flushing = this.flushing.then(async () => { 37 | if (this.buffer.length === 0) return 38 | const mylines = this.buffer 39 | this.buffer = [] 40 | const fs: typeof FS = require('fs-extra') 41 | await fs.mkdirp(path.dirname(this.file)) 42 | await fs.appendFile(this.file, mylines.join('\n') + '\n') 43 | }) 44 | await this.flushing 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/screen.ts: -------------------------------------------------------------------------------- 1 | function termwidth(stream: any): number { 2 | if (!stream.isTTY || !stream.getWindowSize) { 3 | return 80 4 | } 5 | const width = stream.getWindowSize()[0] 6 | if (width < 1) { 7 | return 80 8 | } 9 | if (width < 40) { 10 | return 40 11 | } 12 | return width 13 | } 14 | 15 | const columns: number | null = (global as any).columns 16 | 17 | export const stdtermwidth = columns || termwidth(process.stdout) 18 | export const errtermwidth = columns || termwidth(process.stderr) 19 | -------------------------------------------------------------------------------- /test/error.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, fancy} from 'fancy-test' 2 | import {error} from '../src' 3 | import {PrettyPrintableError} from '../src/errors/pretty-print' 4 | 5 | describe('error', () => { 6 | fancy 7 | .do(() => { 8 | error('An error happened!') 9 | }) 10 | .catch((error: PrettyPrintableError) => { 11 | expect(error.message).to.equal('An error happened!') 12 | }) 13 | .it('throws an error using a string argument') 14 | 15 | fancy 16 | .do(() => { 17 | error('An error happened!', {code: 'ERR', ref: 'https://oclif.com/error', suggestions: ['rm -rf node_modules']}) 18 | }) 19 | .catch((error: PrettyPrintableError) => { 20 | expect(error.message).to.equal('An error happened!') 21 | expect(error.code).to.equal('ERR') 22 | expect(error.ref).to.equal('https://oclif.com/error') 23 | expect(error.suggestions).to.deep.equal(['rm -rf node_modules']) 24 | }) 25 | .it('attaches pretty print properties to a new error from options') 26 | 27 | fancy 28 | .do(() => { 29 | error(new Error('An existing error object error!'), {code: 'ERR', ref: 'https://oclif.com/error', suggestions: ['rm -rf node_modules']}) 30 | }) 31 | .catch((error: PrettyPrintableError) => { 32 | expect(error.message).to.equal('An existing error object error!') 33 | expect(error.code).to.equal('ERR') 34 | expect(error.ref).to.equal('https://oclif.com/error') 35 | expect(error.suggestions).to.deep.equal(['rm -rf node_modules']) 36 | }) 37 | .it('attached pretty print properties from options to an existing error object') 38 | 39 | fancy 40 | .do(() => { 41 | const e: any = new Error('An existing error object error!') 42 | e.code = 'ORIG_ERR' 43 | e.ref = 'ORIG_REF' 44 | e.suggestions = ['ORIG_SUGGESTION'] 45 | error(e, {code: 'ERR', ref: 'https://oclif.com/error', suggestions: ['rm -rf node_modules']}) 46 | }) 47 | .catch((error: PrettyPrintableError) => { 48 | expect(error.code).to.equal('ORIG_ERR') 49 | expect(error.ref).to.equal('ORIG_REF') 50 | expect(error.suggestions).to.deep.equal(['ORIG_SUGGESTION']) 51 | }) 52 | .it('preserves original pretty printable properties and is not overwritten by options') 53 | 54 | fancy 55 | .stdout() 56 | .stderr() 57 | .do(() => { 58 | error('an error is reported but is not rethrown', {exit: false}) 59 | }) 60 | // there is no .catch here because the error is not rethrown 61 | // however it should be outputted 62 | .it('does not rethrow error when exit: false option is set', ctx => { 63 | expect(ctx.stderr).to.contain('Error: an error is reported but is not rethrown') 64 | expect(ctx.stdout).to.equal('') 65 | }) 66 | 67 | describe('applying oclif errors', () => { 68 | fancy 69 | .do(() => { 70 | error(new Error('An existing error object error!')) 71 | }) 72 | .catch((error: any) => { 73 | const defaultErrorCode = 2 74 | expect(error.oclif.exit).to.equal(defaultErrorCode) 75 | }) 76 | .it('adds oclif exit code to errors by default') 77 | 78 | fancy 79 | .do(() => { 80 | error(new Error('An existing error object error!'), {exit: 9001}) 81 | }) 82 | .catch((error: any) => { 83 | expect(error.oclif.exit).to.equal(9001) 84 | }) 85 | .it('applies the exit property on options to the error object') 86 | 87 | fancy 88 | .do(() => { 89 | const e: any = new Error('An existing error object error!') 90 | e.oclif = { 91 | code: 'ORIG_EXIT_CODE', 92 | } 93 | 94 | error(e) 95 | }) 96 | .catch((error: any) => { 97 | expect(error.oclif.code).to.equal('ORIG_EXIT_CODE') 98 | }) 99 | .it('preserves original oclif exitable error properties and is not overwritten by options') 100 | }) 101 | }) 102 | -------------------------------------------------------------------------------- /test/handle.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, fancy} from 'fancy-test' 2 | import * as fs from 'fs-extra' 3 | import * as path from 'path' 4 | 5 | import {CLIError, config, ExitError} from '../src' 6 | import {handle} from '../src/handle' 7 | import {exit as exitErrorThrower} from '../src' 8 | 9 | const errlog = path.join(__dirname, '../tmp/mytest/error.log') 10 | const x = process.platform === 'win32' ? '»' : '›' 11 | 12 | const originalExit = process.exit 13 | const originalExitCode = process.exitCode 14 | 15 | describe('handle', () => { 16 | beforeEach(() => { 17 | process.exitCode = undefined; 18 | (process as any).exit = (code: any) => { 19 | process.exitCode = code 20 | } 21 | }) 22 | afterEach(() => { 23 | (process as any).exit = originalExit; 24 | (process as any).exitCode = originalExitCode 25 | }) 26 | 27 | fancy 28 | .stderr() 29 | .finally(() => delete process.exitCode) 30 | .it('displays an error from root handle module', ctx => { 31 | require('../handle')(new Error('x')) 32 | expect(ctx.stderr).to.contain('Error: x') 33 | expect(process.exitCode).to.equal(1) 34 | }) 35 | 36 | fancy 37 | .stderr() 38 | .finally(() => delete process.exitCode) 39 | .it('shows an unhandled error', ctx => { 40 | handle(new Error('x')) 41 | expect(ctx.stderr).to.contain('Error: x') 42 | expect(process.exitCode).to.equal(1) 43 | }) 44 | 45 | fancy 46 | .stderr() 47 | .finally(() => delete process.exitCode) 48 | .it('handles a badly formed error object', () => { 49 | handle({status: 400} as any) 50 | expect(process.exitCode).to.equal(1) 51 | }) 52 | 53 | fancy 54 | .stderr() 55 | .finally(() => delete process.exitCode) 56 | .it('shows a cli error', ctx => { 57 | handle(new CLIError('x')) 58 | expect(ctx.stderr).to.equal(` ${x} Error: x\n`) 59 | expect(process.exitCode).to.equal(2) 60 | }) 61 | 62 | fancy 63 | .stdout() 64 | .stderr() 65 | .finally(() => delete process.exitCode) 66 | .it('hides an exit error', ctx => { 67 | handle(new ExitError()) 68 | expect(ctx.stdout).to.equal('') 69 | expect(ctx.stderr).to.equal('') 70 | expect(process.exitCode).to.equal(0) 71 | }) 72 | 73 | fancy 74 | .stderr() 75 | .do(() => { 76 | config.errlog = errlog 77 | }) 78 | .finally(() => { 79 | config.errlog = undefined 80 | }) 81 | .finally(() => delete process.exitCode) 82 | .it('logs when errlog is set', async ctx => { 83 | handle(new CLIError('uh oh!')) 84 | expect(ctx.stderr).to.equal(` ${x} Error: uh oh!\n`) 85 | await config.errorLogger!.flush() 86 | expect(fs.readFileSync(errlog, 'utf8')).to.contain('Error: uh oh!') 87 | expect(process.exitCode).to.equal(2) 88 | }) 89 | 90 | describe('exit', () => { 91 | fancy 92 | .stderr() 93 | .stdout() 94 | .it('exits without displaying anything', ctx => { 95 | try { 96 | exitErrorThrower(9000) 97 | } catch (error) { 98 | handle(error) 99 | } 100 | 101 | expect(ctx.stdout).to.equal('') 102 | expect(ctx.stderr).to.equal('') 103 | expect(process.exitCode).to.be.equal(9000) 104 | }) 105 | }) 106 | }) 107 | -------------------------------------------------------------------------------- /test/helpers/init.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | process.env.TS_NODE_PROJECT = path.resolve('test/tsconfig.json') 3 | -------------------------------------------------------------------------------- /test/pretty-print.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, fancy} from 'fancy-test' 2 | import prettyPrint, {PrettyPrintableError} from '../src/errors/pretty-print' 3 | import {CLIError} from '../src' 4 | import {config} from '../src/config' 5 | const stripAnsi = require('strip-ansi') 6 | 7 | describe('pretty-print', () => { 8 | fancy 9 | .it('pretty prints an error', async () => { 10 | const sampleError: Error & PrettyPrintableError = new Error('Something very serious has gone wrong with the flags!') 11 | sampleError.ref = 'https://oclif.io/docs/flags' 12 | sampleError.code = 'OCLIF_BAD_FLAG' 13 | sampleError.suggestions = ['Try using using a good flag'] 14 | 15 | expect( 16 | stripAnsi(prettyPrint(sampleError)), 17 | ).to.equal(` Error: Something very serious has gone wrong with the flags! 18 | Code: OCLIF_BAD_FLAG 19 | Try this: Try using using a good flag 20 | Reference: https://oclif.io/docs/flags`) 21 | }) 22 | 23 | fancy 24 | .it('pretty prints multiple suggestions', async () => { 25 | const sampleError: Error & PrettyPrintableError = new Error('Something very serious has gone wrong with the flags!') 26 | sampleError.suggestions = ['Use a good flag', 'Use no flags'] 27 | expect( 28 | stripAnsi(prettyPrint(sampleError)), 29 | ).to.equal(` Error: Something very serious has gone wrong with the flags! 30 | Try this: 31 | * Use a good flag 32 | * Use no flags`) 33 | }) 34 | 35 | fancy 36 | .it('pretty prints with omitted fields', async () => { 37 | const sampleError = new Error('Something very serious has gone wrong with the flags!') 38 | 39 | expect( 40 | stripAnsi(prettyPrint(sampleError)), 41 | ).to.equal(' Error: Something very serious has gone wrong with the flags!') 42 | }) 43 | 44 | describe('CLI Error properties', () => { 45 | fancy 46 | .it('supports the bang property', async () => { 47 | class SampleCLIError extends CLIError { 48 | get bang() { 49 | return '>>>' 50 | } 51 | } 52 | 53 | const sampleError = new SampleCLIError('This is a CLI error') 54 | expect(stripAnsi(prettyPrint(sampleError))).to.equal(' >>> Error: This is a CLI error') 55 | }) 56 | 57 | fancy 58 | .it('supports the \'name\' message prefix property', async () => { 59 | const defaultBang = process.platform === 'win32' ? '»' : '›' 60 | const sampleError = new CLIError('This is a CLI error') 61 | sampleError.name = 'Errorz' 62 | expect(stripAnsi(prettyPrint(sampleError))).to.equal(` ${defaultBang} Errorz: This is a CLI error`) 63 | }) 64 | }) 65 | 66 | describe('config.debug set to true', () => { 67 | let initialConfigDebug: any 68 | 69 | beforeEach(() => { 70 | initialConfigDebug = config.debug 71 | config.debug = true 72 | }) 73 | 74 | afterEach(() => { 75 | config.debug = initialConfigDebug 76 | }) 77 | 78 | fancy 79 | .it('shows the stack for an error', async () => { 80 | const error = new Error() 81 | error.stack = 'this is the error stack property' 82 | expect(prettyPrint(error)).to.equal('this is the error stack property') 83 | }) 84 | }) 85 | }) 86 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig", 3 | "compilerOptions": { 4 | "sourceMap": true, 5 | "module": "commonjs" 6 | }, 7 | "include": [ 8 | "./**/*" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/warn.test.ts: -------------------------------------------------------------------------------- 1 | import {expect, fancy} from 'fancy-test' 2 | import * as fs from 'fs-extra' 3 | import * as path from 'path' 4 | 5 | import {config, warn} from '../src' 6 | 7 | const errlog = path.join(__dirname, '../tmp/mytest/warn.log') 8 | 9 | describe('warn', () => { 10 | fancy 11 | .stderr() 12 | .do(() => { 13 | config.errlog = errlog 14 | }) 15 | .finally(() => { 16 | config.errlog = undefined 17 | }) 18 | .it('warns', async ctx => { 19 | warn('foo!') 20 | expect(ctx.stderr).to.contain('Warning: foo!') 21 | expect(process.exitCode).to.be.undefined 22 | await config.errorLogger!.flush() 23 | expect(fs.readFileSync(errlog, 'utf8')).to.contain('Warning: foo!') 24 | }) 25 | }) 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "module": "commonjs", 7 | "noUnusedLocals": true, 8 | "noUnusedParameters": true, 9 | "outDir": "./lib", 10 | "pretty": true, 11 | "rootDirs": [ 12 | "./src" 13 | ], 14 | "strict": true, 15 | "target": "es2017" 16 | }, 17 | "include": [ 18 | "./src/**/*" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.13.8" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" 20 | integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.1": 27 | version "0.4.1" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" 29 | integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@types/chai@*", "@types/chai@^4.3.0": 42 | version "4.3.0" 43 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" 44 | integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== 45 | 46 | "@types/clean-stack@^2.1.1": 47 | version "2.1.1" 48 | resolved "https://registry.yarnpkg.com/@types/clean-stack/-/clean-stack-2.1.1.tgz#7dd5430b733d088263b01653ea0ec39af9fe67f1" 49 | integrity sha512-J5uaZmvDUsqeT7Vct/oHQuAGUzJBWmN9x33TlvTfvIMmCZ2Ep6v/09wKsK5cLtOTJJe6tGcMTg8TwP/h6e1svw== 50 | dependencies: 51 | clean-stack "*" 52 | 53 | "@types/color-name@^1.1.1": 54 | version "1.1.1" 55 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 56 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 57 | 58 | "@types/eslint-visitor-keys@^1.0.0": 59 | version "1.0.0" 60 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 61 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 62 | 63 | "@types/fs-extra@^9.0": 64 | version "9.0.13" 65 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" 66 | integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== 67 | dependencies: 68 | "@types/node" "*" 69 | 70 | "@types/indent-string@^4.0.1": 71 | version "4.0.1" 72 | resolved "https://registry.yarnpkg.com/@types/indent-string/-/indent-string-4.0.1.tgz#fb4e6b8cdd8e94f70c105e78fb5d357a767b7193" 73 | integrity sha512-cIe4VIMWLlX9ugJRULZMgKoh88+AdD+6e7K9Y0s5QkbEJujoyVfKcmO2y9hbOU8ma/tbyHFaJN1+hQ0SyWo2iA== 74 | dependencies: 75 | indent-string "*" 76 | 77 | "@types/json-schema@^7.0.3": 78 | version "7.0.3" 79 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" 80 | integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== 81 | 82 | "@types/lodash@*": 83 | version "4.14.156" 84 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.156.tgz#cbe30909c89a1feeb7c60803e785344ea0ec82d1" 85 | integrity sha512-l2AgHXcKUwx2DsvP19wtRPqZ4NkONjmorOdq4sMcxIjqdIuuV/ULo2ftuv4NUpevwfW7Ju/UKLqo0ZXuEt/8lQ== 86 | 87 | "@types/mocha@^8.2.3": 88 | version "8.2.3" 89 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" 90 | integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== 91 | 92 | "@types/node@*", "@types/node@^14.18.32": 93 | version "14.18.32" 94 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.32.tgz#8074f7106731f1a12ba993fe8bad86ee73905014" 95 | integrity sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow== 96 | 97 | "@types/sinon@*": 98 | version "9.0.4" 99 | resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.4.tgz#e934f904606632287a6e7f7ab0ce3f08a0dad4b1" 100 | integrity sha512-sJmb32asJZY6Z2u09bl0G2wglSxDlROlAejCjsnor+LzBMz17gu8IU7vKC/vWDnv9zEq2wqADHVXFjf4eE8Gdw== 101 | dependencies: 102 | "@types/sinonjs__fake-timers" "*" 103 | 104 | "@types/sinonjs__fake-timers@*": 105 | version "6.0.1" 106 | resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" 107 | integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== 108 | 109 | "@types/strip-ansi@^5.2.1": 110 | version "5.2.1" 111 | resolved "https://registry.yarnpkg.com/@types/strip-ansi/-/strip-ansi-5.2.1.tgz#acd97f1f091e332bb7ce697c4609eb2370fa2a92" 112 | integrity sha512-1l5iM0LBkVU8JXxnIoBqNvg+yyOXxPeN6DNoD+7A9AN1B8FhYPSeIXgyNqwIqg1uzipTgVC2hmuDzB0u9qw/PA== 113 | dependencies: 114 | strip-ansi "*" 115 | 116 | "@types/wrap-ansi@^3.0.0": 117 | version "3.0.0" 118 | resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" 119 | integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== 120 | 121 | "@typescript-eslint/eslint-plugin@^2.6.1": 122 | version "2.7.0" 123 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.7.0.tgz#dff176bdb73dfd7e2e43062452189bd1b9db6021" 124 | integrity sha512-H5G7yi0b0FgmqaEUpzyBlVh0d9lq4cWG2ap0RKa6BkF3rpBb6IrAoubt1NWh9R2kRs/f0k6XwRDiDz3X/FqXhQ== 125 | dependencies: 126 | "@typescript-eslint/experimental-utils" "2.7.0" 127 | eslint-utils "^1.4.2" 128 | functional-red-black-tree "^1.0.1" 129 | regexpp "^2.0.1" 130 | tsutils "^3.17.1" 131 | 132 | "@typescript-eslint/experimental-utils@2.7.0": 133 | version "2.7.0" 134 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.7.0.tgz#58d790a3884df3041b5a5e08f9e5e6b7c41864b5" 135 | integrity sha512-9/L/OJh2a5G2ltgBWJpHRfGnt61AgDeH6rsdg59BH0naQseSwR7abwHq3D5/op0KYD/zFT4LS5gGvWcMmegTEg== 136 | dependencies: 137 | "@types/json-schema" "^7.0.3" 138 | "@typescript-eslint/typescript-estree" "2.7.0" 139 | eslint-scope "^5.0.0" 140 | 141 | "@typescript-eslint/parser@^2.6.1": 142 | version "2.7.0" 143 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.7.0.tgz#b5e6a4944e2b68dba1e7fbfd5242e09ff552fd12" 144 | integrity sha512-ctC0g0ZvYclxMh/xI+tyqP0EC2fAo6KicN9Wm2EIao+8OppLfxji7KAGJosQHSGBj3TcqUrA96AjgXuKa5ob2g== 145 | dependencies: 146 | "@types/eslint-visitor-keys" "^1.0.0" 147 | "@typescript-eslint/experimental-utils" "2.7.0" 148 | "@typescript-eslint/typescript-estree" "2.7.0" 149 | eslint-visitor-keys "^1.1.0" 150 | 151 | "@typescript-eslint/typescript-estree@2.7.0": 152 | version "2.7.0" 153 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.7.0.tgz#34fd98c77a07b40d04d5b4203eddd3abeab909f4" 154 | integrity sha512-vVCE/DY72N4RiJ/2f10PTyYekX2OLaltuSIBqeHYI44GQ940VCYioInIb8jKMrK9u855OEJdFC+HmWAZTnC+Ag== 155 | dependencies: 156 | debug "^4.1.1" 157 | glob "^7.1.4" 158 | is-glob "^4.0.1" 159 | lodash.unescape "4.0.1" 160 | semver "^6.3.0" 161 | tsutils "^3.17.1" 162 | 163 | "@ungap/promise-all-settled@1.1.2": 164 | version "1.1.2" 165 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 166 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 167 | 168 | acorn-jsx@^5.3.1: 169 | version "5.3.1" 170 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 171 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 172 | 173 | acorn@^7.4.0: 174 | version "7.4.1" 175 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 176 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 177 | 178 | ajv@^6.10.0, ajv@^6.12.4: 179 | version "6.12.6" 180 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 181 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 182 | dependencies: 183 | fast-deep-equal "^3.1.1" 184 | fast-json-stable-stringify "^2.0.0" 185 | json-schema-traverse "^0.4.1" 186 | uri-js "^4.2.2" 187 | 188 | ajv@^8.0.1: 189 | version "8.5.0" 190 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" 191 | integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== 192 | dependencies: 193 | fast-deep-equal "^3.1.1" 194 | json-schema-traverse "^1.0.0" 195 | require-from-string "^2.0.2" 196 | uri-js "^4.2.2" 197 | 198 | ansi-colors@4.1.1: 199 | version "4.1.1" 200 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 201 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 202 | 203 | ansi-colors@^3.2.1: 204 | version "3.2.4" 205 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" 206 | integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== 207 | 208 | ansi-regex@^3.0.0: 209 | version "3.0.1" 210 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 211 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 212 | 213 | ansi-regex@^5.0.1: 214 | version "5.0.1" 215 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 216 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 217 | 218 | ansi-styles@^3.2.1: 219 | version "3.2.1" 220 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 221 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 222 | dependencies: 223 | color-convert "^1.9.0" 224 | 225 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 226 | version "4.2.1" 227 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 228 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 229 | dependencies: 230 | "@types/color-name" "^1.1.1" 231 | color-convert "^2.0.1" 232 | 233 | anymatch@~3.1.1: 234 | version "3.1.1" 235 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 236 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 237 | dependencies: 238 | normalize-path "^3.0.0" 239 | picomatch "^2.0.4" 240 | 241 | arg@^4.1.0: 242 | version "4.1.3" 243 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 244 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 245 | 246 | argparse@^1.0.7: 247 | version "1.0.10" 248 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 249 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 250 | dependencies: 251 | sprintf-js "~1.0.2" 252 | 253 | argparse@^2.0.1: 254 | version "2.0.1" 255 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 256 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 257 | 258 | assertion-error@^1.1.0: 259 | version "1.1.0" 260 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 261 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 262 | 263 | astral-regex@^2.0.0: 264 | version "2.0.0" 265 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 266 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 267 | 268 | balanced-match@^1.0.0: 269 | version "1.0.0" 270 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 271 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 272 | 273 | binary-extensions@^2.0.0: 274 | version "2.0.0" 275 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 276 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 277 | 278 | brace-expansion@^1.1.7: 279 | version "1.1.11" 280 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 281 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 282 | dependencies: 283 | balanced-match "^1.0.0" 284 | concat-map "0.0.1" 285 | 286 | braces@~3.0.2: 287 | version "3.0.2" 288 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 289 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 290 | dependencies: 291 | fill-range "^7.0.1" 292 | 293 | browser-stdout@1.3.1: 294 | version "1.3.1" 295 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 296 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 297 | 298 | buffer-from@^1.0.0: 299 | version "1.1.1" 300 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 301 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 302 | 303 | callsites@^3.0.0: 304 | version "3.1.0" 305 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 306 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 307 | 308 | camelcase@^6.0.0: 309 | version "6.2.0" 310 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 311 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 312 | 313 | chai@^4.3.6: 314 | version "4.3.6" 315 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" 316 | integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== 317 | dependencies: 318 | assertion-error "^1.1.0" 319 | check-error "^1.0.2" 320 | deep-eql "^3.0.1" 321 | get-func-name "^2.0.0" 322 | loupe "^2.3.1" 323 | pathval "^1.1.1" 324 | type-detect "^4.0.5" 325 | 326 | chalk@^2.0.0: 327 | version "2.4.2" 328 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 329 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 330 | dependencies: 331 | ansi-styles "^3.2.1" 332 | escape-string-regexp "^1.0.5" 333 | supports-color "^5.3.0" 334 | 335 | chalk@^4.0.0, chalk@^4.1.0: 336 | version "4.1.1" 337 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" 338 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== 339 | dependencies: 340 | ansi-styles "^4.1.0" 341 | supports-color "^7.1.0" 342 | 343 | check-error@^1.0.2: 344 | version "1.0.2" 345 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 346 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 347 | 348 | chokidar@3.5.1: 349 | version "3.5.1" 350 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 351 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 352 | dependencies: 353 | anymatch "~3.1.1" 354 | braces "~3.0.2" 355 | glob-parent "~5.1.0" 356 | is-binary-path "~2.1.0" 357 | is-glob "~4.0.1" 358 | normalize-path "~3.0.0" 359 | readdirp "~3.5.0" 360 | optionalDependencies: 361 | fsevents "~2.3.1" 362 | 363 | clean-regexp@^1.0.0: 364 | version "1.0.0" 365 | resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" 366 | integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= 367 | dependencies: 368 | escape-string-regexp "^1.0.5" 369 | 370 | clean-stack@*, clean-stack@^3.0.0: 371 | version "3.0.1" 372 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" 373 | integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== 374 | dependencies: 375 | escape-string-regexp "4.0.0" 376 | 377 | cliui@^7.0.2: 378 | version "7.0.4" 379 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 380 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 381 | dependencies: 382 | string-width "^4.2.0" 383 | strip-ansi "^6.0.0" 384 | wrap-ansi "^7.0.0" 385 | 386 | color-convert@^1.9.0: 387 | version "1.9.3" 388 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 389 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 390 | dependencies: 391 | color-name "1.1.3" 392 | 393 | color-convert@^2.0.1: 394 | version "2.0.1" 395 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 396 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 397 | dependencies: 398 | color-name "~1.1.4" 399 | 400 | color-name@1.1.3: 401 | version "1.1.3" 402 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 403 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 404 | 405 | color-name@~1.1.4: 406 | version "1.1.4" 407 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 408 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 409 | 410 | concat-map@0.0.1: 411 | version "0.0.1" 412 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 413 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 414 | 415 | create-require@^1.1.0: 416 | version "1.1.1" 417 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 418 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 419 | 420 | cross-spawn@^7.0.2: 421 | version "7.0.3" 422 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 423 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 424 | dependencies: 425 | path-key "^3.1.0" 426 | shebang-command "^2.0.0" 427 | which "^2.0.1" 428 | 429 | debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: 430 | version "4.3.1" 431 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 432 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 433 | dependencies: 434 | ms "2.1.2" 435 | 436 | debug@^3.1.0: 437 | version "3.2.6" 438 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 439 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 440 | dependencies: 441 | ms "^2.1.1" 442 | 443 | decamelize@^4.0.0: 444 | version "4.0.0" 445 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 446 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 447 | 448 | deep-eql@^3.0.1: 449 | version "3.0.1" 450 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 451 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 452 | dependencies: 453 | type-detect "^4.0.0" 454 | 455 | deep-is@^0.1.3: 456 | version "0.1.3" 457 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 458 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 459 | 460 | diff@5.0.0: 461 | version "5.0.0" 462 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 463 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 464 | 465 | diff@^4.0.1: 466 | version "4.0.2" 467 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 468 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 469 | 470 | doctrine@^3.0.0: 471 | version "3.0.0" 472 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 473 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 474 | dependencies: 475 | esutils "^2.0.2" 476 | 477 | emoji-regex@^8.0.0: 478 | version "8.0.0" 479 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 480 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 481 | 482 | enquirer@^2.3.5: 483 | version "2.3.5" 484 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" 485 | integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== 486 | dependencies: 487 | ansi-colors "^3.2.1" 488 | 489 | escalade@^3.1.1: 490 | version "3.1.1" 491 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 492 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 493 | 494 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 495 | version "4.0.0" 496 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 497 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 498 | 499 | escape-string-regexp@^1.0.5: 500 | version "1.0.5" 501 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 502 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 503 | 504 | eslint-ast-utils@^1.0.0: 505 | version "1.1.0" 506 | resolved "https://registry.yarnpkg.com/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz#3d58ba557801cfb1c941d68131ee9f8c34bd1586" 507 | integrity sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA== 508 | dependencies: 509 | lodash.get "^4.4.2" 510 | lodash.zip "^4.2.0" 511 | 512 | eslint-config-oclif-typescript@^0.2.0: 513 | version "0.2.0" 514 | resolved "https://registry.yarnpkg.com/eslint-config-oclif-typescript/-/eslint-config-oclif-typescript-0.2.0.tgz#8e2a1c788ce47af73d5bf8a3a0b5b2b6a80f05d6" 515 | integrity sha512-BdP5FgjxwqV9LmVnfd4TaxhwdQipY7GJVVuP2AKm+EkKoupSCflSiRqnd2cj8qvVq/IXYPK2eHpRDk5ts8hP9g== 516 | dependencies: 517 | "@typescript-eslint/eslint-plugin" "^2.6.1" 518 | "@typescript-eslint/parser" "^2.6.1" 519 | eslint-config-xo-space "^0.20.0" 520 | eslint-plugin-mocha "^5.2.0" 521 | eslint-plugin-node "^7.0.1" 522 | eslint-plugin-unicorn "^6.0.1" 523 | 524 | eslint-config-oclif@^3.1.0: 525 | version "3.1.0" 526 | resolved "https://registry.yarnpkg.com/eslint-config-oclif/-/eslint-config-oclif-3.1.0.tgz#cbc207ced09e31676dcee2f724fc509cd20eb0bd" 527 | integrity sha512-Tqgy43cNXsSdhTLWW4RuDYGFhV240sC4ISSv/ZiUEg/zFxExSEUpRE6J+AGnkKY9dYwIW4C9b2YSUVv8z/miMA== 528 | dependencies: 529 | eslint-config-xo-space "^0.20.0" 530 | eslint-plugin-mocha "^5.2.0" 531 | eslint-plugin-node "^7.0.1" 532 | eslint-plugin-unicorn "^6.0.1" 533 | 534 | eslint-config-xo-space@^0.20.0: 535 | version "0.20.0" 536 | resolved "https://registry.yarnpkg.com/eslint-config-xo-space/-/eslint-config-xo-space-0.20.0.tgz#75e1fb86d1b052fc1cc3036ca2fa441fa92b85e4" 537 | integrity sha512-bOsoZA8M6v1HviDUIGVq1fLVnSu3mMZzn85m2tqKb73tSzu4GKD4Jd2Py4ZKjCgvCbRRByEB5HPC3fTMnnJ1uw== 538 | dependencies: 539 | eslint-config-xo "^0.24.0" 540 | 541 | eslint-config-xo@^0.24.0: 542 | version "0.24.2" 543 | resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.24.2.tgz#f61b8ce692e9f9519bdb6edc4ed7ebcd5be48f48" 544 | integrity sha512-ivQ7qISScW6gfBp+p31nQntz1rg34UCybd3uvlngcxt5Utsf4PMMi9QoAluLFcPUM5Tvqk4JGraR9qu3msKPKQ== 545 | 546 | eslint-plugin-es@^1.3.1: 547 | version "1.4.1" 548 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" 549 | integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== 550 | dependencies: 551 | eslint-utils "^1.4.2" 552 | regexpp "^2.0.1" 553 | 554 | eslint-plugin-mocha@^5.2.0: 555 | version "5.3.0" 556 | resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz#cf3eb18ae0e44e433aef7159637095a7cb19b15b" 557 | integrity sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A== 558 | dependencies: 559 | ramda "^0.26.1" 560 | 561 | eslint-plugin-node@^7.0.1: 562 | version "7.0.1" 563 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" 564 | integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== 565 | dependencies: 566 | eslint-plugin-es "^1.3.1" 567 | eslint-utils "^1.3.1" 568 | ignore "^4.0.2" 569 | minimatch "^3.0.4" 570 | resolve "^1.8.1" 571 | semver "^5.5.0" 572 | 573 | eslint-plugin-unicorn@^6.0.1: 574 | version "6.0.1" 575 | resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-6.0.1.tgz#4a97f0bc9449e20b82848dad12094ee2ba72347e" 576 | integrity sha512-hjy9LhTdtL7pz8WTrzS0CGXRkWK3VAPLDjihofj8JC+uxQLfXm0WwZPPPB7xKmcjRyoH+jruPHOCrHNEINpG/Q== 577 | dependencies: 578 | clean-regexp "^1.0.0" 579 | eslint-ast-utils "^1.0.0" 580 | import-modules "^1.1.0" 581 | lodash.camelcase "^4.1.1" 582 | lodash.kebabcase "^4.0.1" 583 | lodash.snakecase "^4.0.1" 584 | lodash.upperfirst "^4.2.0" 585 | safe-regex "^1.1.0" 586 | 587 | eslint-scope@^5.0.0, eslint-scope@^5.1.1: 588 | version "5.1.1" 589 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 590 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 591 | dependencies: 592 | esrecurse "^4.3.0" 593 | estraverse "^4.1.1" 594 | 595 | eslint-utils@^1.3.1, eslint-utils@^1.4.2: 596 | version "1.4.3" 597 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 598 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 599 | dependencies: 600 | eslint-visitor-keys "^1.1.0" 601 | 602 | eslint-utils@^2.1.0: 603 | version "2.1.0" 604 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 605 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 606 | dependencies: 607 | eslint-visitor-keys "^1.1.0" 608 | 609 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 610 | version "1.3.0" 611 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 612 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 613 | 614 | eslint-visitor-keys@^2.0.0: 615 | version "2.0.0" 616 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 617 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 618 | 619 | eslint@^7.3.0: 620 | version "7.27.0" 621 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7" 622 | integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA== 623 | dependencies: 624 | "@babel/code-frame" "7.12.11" 625 | "@eslint/eslintrc" "^0.4.1" 626 | ajv "^6.10.0" 627 | chalk "^4.0.0" 628 | cross-spawn "^7.0.2" 629 | debug "^4.0.1" 630 | doctrine "^3.0.0" 631 | enquirer "^2.3.5" 632 | escape-string-regexp "^4.0.0" 633 | eslint-scope "^5.1.1" 634 | eslint-utils "^2.1.0" 635 | eslint-visitor-keys "^2.0.0" 636 | espree "^7.3.1" 637 | esquery "^1.4.0" 638 | esutils "^2.0.2" 639 | fast-deep-equal "^3.1.3" 640 | file-entry-cache "^6.0.1" 641 | functional-red-black-tree "^1.0.1" 642 | glob-parent "^5.0.0" 643 | globals "^13.6.0" 644 | ignore "^4.0.6" 645 | import-fresh "^3.0.0" 646 | imurmurhash "^0.1.4" 647 | is-glob "^4.0.0" 648 | js-yaml "^3.13.1" 649 | json-stable-stringify-without-jsonify "^1.0.1" 650 | levn "^0.4.1" 651 | lodash.merge "^4.6.2" 652 | minimatch "^3.0.4" 653 | natural-compare "^1.4.0" 654 | optionator "^0.9.1" 655 | progress "^2.0.0" 656 | regexpp "^3.1.0" 657 | semver "^7.2.1" 658 | strip-ansi "^6.0.0" 659 | strip-json-comments "^3.1.0" 660 | table "^6.0.9" 661 | text-table "^0.2.0" 662 | v8-compile-cache "^2.0.3" 663 | 664 | espree@^7.3.0, espree@^7.3.1: 665 | version "7.3.1" 666 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 667 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 668 | dependencies: 669 | acorn "^7.4.0" 670 | acorn-jsx "^5.3.1" 671 | eslint-visitor-keys "^1.3.0" 672 | 673 | esprima@^4.0.0: 674 | version "4.0.1" 675 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 676 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 677 | 678 | esquery@^1.4.0: 679 | version "1.4.0" 680 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 681 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 682 | dependencies: 683 | estraverse "^5.1.0" 684 | 685 | esrecurse@^4.3.0: 686 | version "4.3.0" 687 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 688 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 689 | dependencies: 690 | estraverse "^5.2.0" 691 | 692 | estraverse@^4.1.1: 693 | version "4.3.0" 694 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 695 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 696 | 697 | estraverse@^5.1.0: 698 | version "5.1.0" 699 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 700 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 701 | 702 | estraverse@^5.2.0: 703 | version "5.2.0" 704 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 705 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 706 | 707 | esutils@^2.0.2: 708 | version "2.0.2" 709 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 710 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 711 | 712 | fancy-test@^1.4.8: 713 | version "1.4.10" 714 | resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-1.4.10.tgz#310be93d4aa45d788bce56a573ae4d1b92b2e1a0" 715 | integrity sha512-AaUX6wKS7D5OP2YK2q5G7c8PGx2lgoyLUD7Bbg8z323sb9aebBqzb9UN6phzI73UgO/ViihmNfOxF3kdfZLhew== 716 | dependencies: 717 | "@types/chai" "*" 718 | "@types/lodash" "*" 719 | "@types/node" "*" 720 | "@types/sinon" "*" 721 | lodash "^4.17.13" 722 | mock-stdin "^1.0.0" 723 | nock "^13.0.0" 724 | stdout-stderr "^0.1.9" 725 | 726 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 727 | version "3.1.3" 728 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 729 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 730 | 731 | fast-json-stable-stringify@^2.0.0: 732 | version "2.0.0" 733 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 734 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 735 | 736 | fast-levenshtein@^2.0.6: 737 | version "2.0.6" 738 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 739 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 740 | 741 | file-entry-cache@^6.0.1: 742 | version "6.0.1" 743 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 744 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 745 | dependencies: 746 | flat-cache "^3.0.4" 747 | 748 | fill-range@^7.0.1: 749 | version "7.0.1" 750 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 751 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 752 | dependencies: 753 | to-regex-range "^5.0.1" 754 | 755 | find-up@5.0.0: 756 | version "5.0.0" 757 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 758 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 759 | dependencies: 760 | locate-path "^6.0.0" 761 | path-exists "^4.0.0" 762 | 763 | flat-cache@^3.0.4: 764 | version "3.0.4" 765 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 766 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 767 | dependencies: 768 | flatted "^3.1.0" 769 | rimraf "^3.0.2" 770 | 771 | flat@^5.0.2: 772 | version "5.0.2" 773 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 774 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 775 | 776 | flatted@^3.1.0: 777 | version "3.1.0" 778 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" 779 | integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== 780 | 781 | fs-extra@^8.1: 782 | version "8.1.0" 783 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 784 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 785 | dependencies: 786 | graceful-fs "^4.2.0" 787 | jsonfile "^4.0.0" 788 | universalify "^0.1.0" 789 | 790 | fs.realpath@^1.0.0: 791 | version "1.0.0" 792 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 793 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 794 | 795 | fsevents@~2.3.1: 796 | version "2.3.2" 797 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 798 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 799 | 800 | functional-red-black-tree@^1.0.1: 801 | version "1.0.1" 802 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 803 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 804 | 805 | get-caller-file@^2.0.5: 806 | version "2.0.5" 807 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 808 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 809 | 810 | get-func-name@^2.0.0: 811 | version "2.0.0" 812 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 813 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 814 | 815 | glob-parent@^5.0.0, glob-parent@~5.1.0: 816 | version "5.1.2" 817 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 818 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 819 | dependencies: 820 | is-glob "^4.0.1" 821 | 822 | glob@7.1.6, glob@^7.1.3, glob@^7.1.4: 823 | version "7.1.6" 824 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 825 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 826 | dependencies: 827 | fs.realpath "^1.0.0" 828 | inflight "^1.0.4" 829 | inherits "2" 830 | minimatch "^3.0.4" 831 | once "^1.3.0" 832 | path-is-absolute "^1.0.0" 833 | 834 | globals@^12.1.0: 835 | version "12.4.0" 836 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 837 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 838 | dependencies: 839 | type-fest "^0.8.1" 840 | 841 | globals@^13.6.0: 842 | version "13.7.0" 843 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" 844 | integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== 845 | dependencies: 846 | type-fest "^0.20.2" 847 | 848 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 849 | version "4.2.4" 850 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 851 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 852 | 853 | growl@1.10.5: 854 | version "1.10.5" 855 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 856 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 857 | 858 | has-flag@^3.0.0: 859 | version "3.0.0" 860 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 861 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 862 | 863 | has-flag@^4.0.0: 864 | version "4.0.0" 865 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 866 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 867 | 868 | he@1.2.0: 869 | version "1.2.0" 870 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 871 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 872 | 873 | ignore@^4.0.2, ignore@^4.0.6: 874 | version "4.0.6" 875 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 876 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 877 | 878 | import-fresh@^3.0.0, import-fresh@^3.2.1: 879 | version "3.2.2" 880 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" 881 | integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== 882 | dependencies: 883 | parent-module "^1.0.0" 884 | resolve-from "^4.0.0" 885 | 886 | import-modules@^1.1.0: 887 | version "1.1.0" 888 | resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-1.1.0.tgz#748db79c5cc42bb9701efab424f894e72600e9dc" 889 | integrity sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw= 890 | 891 | imurmurhash@^0.1.4: 892 | version "0.1.4" 893 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 894 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 895 | 896 | indent-string@*, indent-string@^4.0.0: 897 | version "4.0.0" 898 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 899 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 900 | 901 | inflight@^1.0.4: 902 | version "1.0.6" 903 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 904 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 905 | dependencies: 906 | once "^1.3.0" 907 | wrappy "1" 908 | 909 | inherits@2: 910 | version "2.0.3" 911 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 912 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 913 | 914 | is-binary-path@~2.1.0: 915 | version "2.1.0" 916 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 917 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 918 | dependencies: 919 | binary-extensions "^2.0.0" 920 | 921 | is-extglob@^2.1.1: 922 | version "2.1.1" 923 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 924 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 925 | 926 | is-fullwidth-code-point@^2.0.0: 927 | version "2.0.0" 928 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 929 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 930 | 931 | is-fullwidth-code-point@^3.0.0: 932 | version "3.0.0" 933 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 934 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 935 | 936 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 937 | version "4.0.1" 938 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 939 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 940 | dependencies: 941 | is-extglob "^2.1.1" 942 | 943 | is-number@^7.0.0: 944 | version "7.0.0" 945 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 946 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 947 | 948 | is-plain-obj@^2.1.0: 949 | version "2.1.0" 950 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 951 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 952 | 953 | isexe@^2.0.0: 954 | version "2.0.0" 955 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 956 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 957 | 958 | js-tokens@^4.0.0: 959 | version "4.0.0" 960 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 961 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 962 | 963 | js-yaml@4.0.0: 964 | version "4.0.0" 965 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" 966 | integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== 967 | dependencies: 968 | argparse "^2.0.1" 969 | 970 | js-yaml@^3.13.1: 971 | version "3.14.0" 972 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 973 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 974 | dependencies: 975 | argparse "^1.0.7" 976 | esprima "^4.0.0" 977 | 978 | json-schema-traverse@^0.4.1: 979 | version "0.4.1" 980 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 981 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 982 | 983 | json-schema-traverse@^1.0.0: 984 | version "1.0.0" 985 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 986 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 987 | 988 | json-stable-stringify-without-jsonify@^1.0.1: 989 | version "1.0.1" 990 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 991 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 992 | 993 | json-stringify-safe@^5.0.1: 994 | version "5.0.1" 995 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 996 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 997 | 998 | jsonfile@^4.0.0: 999 | version "4.0.0" 1000 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1001 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1002 | optionalDependencies: 1003 | graceful-fs "^4.1.6" 1004 | 1005 | levn@^0.4.1: 1006 | version "0.4.1" 1007 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1008 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1009 | dependencies: 1010 | prelude-ls "^1.2.1" 1011 | type-check "~0.4.0" 1012 | 1013 | locate-path@^6.0.0: 1014 | version "6.0.0" 1015 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1016 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1017 | dependencies: 1018 | p-locate "^5.0.0" 1019 | 1020 | lodash.camelcase@^4.1.1: 1021 | version "4.3.0" 1022 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 1023 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= 1024 | 1025 | lodash.clonedeep@^4.5.0: 1026 | version "4.5.0" 1027 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1028 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 1029 | 1030 | lodash.get@^4.4.2: 1031 | version "4.4.2" 1032 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1033 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= 1034 | 1035 | lodash.kebabcase@^4.0.1: 1036 | version "4.1.1" 1037 | resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" 1038 | integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= 1039 | 1040 | lodash.merge@^4.6.2: 1041 | version "4.6.2" 1042 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1043 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1044 | 1045 | lodash.set@^4.3.2: 1046 | version "4.3.2" 1047 | resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" 1048 | integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= 1049 | 1050 | lodash.snakecase@^4.0.1: 1051 | version "4.1.1" 1052 | resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" 1053 | integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= 1054 | 1055 | lodash.truncate@^4.4.2: 1056 | version "4.4.2" 1057 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1058 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 1059 | 1060 | lodash.unescape@4.0.1: 1061 | version "4.0.1" 1062 | resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" 1063 | integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= 1064 | 1065 | lodash.upperfirst@^4.2.0: 1066 | version "4.3.1" 1067 | resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" 1068 | integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= 1069 | 1070 | lodash.zip@^4.2.0: 1071 | version "4.2.0" 1072 | resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" 1073 | integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= 1074 | 1075 | lodash@^4.17.13: 1076 | version "4.17.21" 1077 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1078 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1079 | 1080 | log-symbols@4.0.0: 1081 | version "4.0.0" 1082 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 1083 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 1084 | dependencies: 1085 | chalk "^4.0.0" 1086 | 1087 | loupe@^2.3.1: 1088 | version "2.3.1" 1089 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.1.tgz#a2e1192c9f452e4e85089766da10ac8288383947" 1090 | integrity sha512-EN1D3jyVmaX4tnajVlfbREU4axL647hLec1h/PXAb8CPDMJiYitcWF2UeLVNttRqaIqQs4x+mRvXf+d+TlDrCA== 1091 | dependencies: 1092 | get-func-name "^2.0.0" 1093 | 1094 | make-error@^1.1.1: 1095 | version "1.3.5" 1096 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 1097 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== 1098 | 1099 | minimatch@3.0.4, minimatch@^3.0.4: 1100 | version "3.0.4" 1101 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1102 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1103 | dependencies: 1104 | brace-expansion "^1.1.7" 1105 | 1106 | mocha@^8.2.1: 1107 | version "8.4.0" 1108 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" 1109 | integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== 1110 | dependencies: 1111 | "@ungap/promise-all-settled" "1.1.2" 1112 | ansi-colors "4.1.1" 1113 | browser-stdout "1.3.1" 1114 | chokidar "3.5.1" 1115 | debug "4.3.1" 1116 | diff "5.0.0" 1117 | escape-string-regexp "4.0.0" 1118 | find-up "5.0.0" 1119 | glob "7.1.6" 1120 | growl "1.10.5" 1121 | he "1.2.0" 1122 | js-yaml "4.0.0" 1123 | log-symbols "4.0.0" 1124 | minimatch "3.0.4" 1125 | ms "2.1.3" 1126 | nanoid "3.1.20" 1127 | serialize-javascript "5.0.1" 1128 | strip-json-comments "3.1.1" 1129 | supports-color "8.1.1" 1130 | which "2.0.2" 1131 | wide-align "1.1.3" 1132 | workerpool "6.1.0" 1133 | yargs "16.2.0" 1134 | yargs-parser "20.2.4" 1135 | yargs-unparser "2.0.0" 1136 | 1137 | mock-stdin@^1.0.0: 1138 | version "1.0.0" 1139 | resolved "https://registry.yarnpkg.com/mock-stdin/-/mock-stdin-1.0.0.tgz#efcfaf4b18077e14541742fd758b9cae4e5365ea" 1140 | integrity sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q== 1141 | 1142 | ms@2.1.2: 1143 | version "2.1.2" 1144 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1145 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1146 | 1147 | ms@2.1.3, ms@^2.1.1: 1148 | version "2.1.3" 1149 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1150 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1151 | 1152 | nanoid@3.1.20: 1153 | version "3.1.20" 1154 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" 1155 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 1156 | 1157 | natural-compare@^1.4.0: 1158 | version "1.4.0" 1159 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1160 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1161 | 1162 | nock@^13.0.0, nock@^13.2.4: 1163 | version "13.2.4" 1164 | resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1" 1165 | integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug== 1166 | dependencies: 1167 | debug "^4.1.0" 1168 | json-stringify-safe "^5.0.1" 1169 | lodash.set "^4.3.2" 1170 | propagate "^2.0.0" 1171 | 1172 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1173 | version "3.0.0" 1174 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1175 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1176 | 1177 | once@^1.3.0: 1178 | version "1.4.0" 1179 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1180 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1181 | dependencies: 1182 | wrappy "1" 1183 | 1184 | optionator@^0.9.1: 1185 | version "0.9.1" 1186 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1187 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1188 | dependencies: 1189 | deep-is "^0.1.3" 1190 | fast-levenshtein "^2.0.6" 1191 | levn "^0.4.1" 1192 | prelude-ls "^1.2.1" 1193 | type-check "^0.4.0" 1194 | word-wrap "^1.2.3" 1195 | 1196 | p-limit@^3.0.2: 1197 | version "3.1.0" 1198 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1199 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1200 | dependencies: 1201 | yocto-queue "^0.1.0" 1202 | 1203 | p-locate@^5.0.0: 1204 | version "5.0.0" 1205 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1206 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1207 | dependencies: 1208 | p-limit "^3.0.2" 1209 | 1210 | parent-module@^1.0.0: 1211 | version "1.0.1" 1212 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1213 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1214 | dependencies: 1215 | callsites "^3.0.0" 1216 | 1217 | path-exists@^4.0.0: 1218 | version "4.0.0" 1219 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1220 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1221 | 1222 | path-is-absolute@^1.0.0: 1223 | version "1.0.1" 1224 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1225 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1226 | 1227 | path-key@^3.1.0: 1228 | version "3.1.1" 1229 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1230 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1231 | 1232 | path-parse@^1.0.6: 1233 | version "1.0.7" 1234 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1235 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1236 | 1237 | pathval@^1.1.1: 1238 | version "1.1.1" 1239 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1240 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1241 | 1242 | picomatch@^2.0.4, picomatch@^2.2.1: 1243 | version "2.2.2" 1244 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1245 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1246 | 1247 | prelude-ls@^1.2.1: 1248 | version "1.2.1" 1249 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1250 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1251 | 1252 | progress@^2.0.0: 1253 | version "2.0.3" 1254 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1255 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1256 | 1257 | propagate@^2.0.0: 1258 | version "2.0.1" 1259 | resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" 1260 | integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== 1261 | 1262 | punycode@^2.1.0: 1263 | version "2.1.1" 1264 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1265 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1266 | 1267 | ramda@^0.26.1: 1268 | version "0.26.1" 1269 | resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" 1270 | integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== 1271 | 1272 | randombytes@^2.1.0: 1273 | version "2.1.0" 1274 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1275 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1276 | dependencies: 1277 | safe-buffer "^5.1.0" 1278 | 1279 | readdirp@~3.5.0: 1280 | version "3.5.0" 1281 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1282 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1283 | dependencies: 1284 | picomatch "^2.2.1" 1285 | 1286 | regexpp@^2.0.1: 1287 | version "2.0.1" 1288 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1289 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1290 | 1291 | regexpp@^3.1.0: 1292 | version "3.1.0" 1293 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1294 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1295 | 1296 | require-directory@^2.1.1: 1297 | version "2.1.1" 1298 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1299 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1300 | 1301 | require-from-string@^2.0.2: 1302 | version "2.0.2" 1303 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1304 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1305 | 1306 | resolve-from@^4.0.0: 1307 | version "4.0.0" 1308 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1309 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1310 | 1311 | resolve@^1.8.1: 1312 | version "1.12.0" 1313 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" 1314 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== 1315 | dependencies: 1316 | path-parse "^1.0.6" 1317 | 1318 | ret@~0.1.10: 1319 | version "0.1.15" 1320 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1321 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 1322 | 1323 | rimraf@^3.0.2: 1324 | version "3.0.2" 1325 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1326 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1327 | dependencies: 1328 | glob "^7.1.3" 1329 | 1330 | safe-buffer@^5.1.0: 1331 | version "5.2.1" 1332 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1333 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1334 | 1335 | safe-regex@^1.1.0: 1336 | version "1.1.0" 1337 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1338 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 1339 | dependencies: 1340 | ret "~0.1.10" 1341 | 1342 | semver@^5.5.0: 1343 | version "5.7.1" 1344 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1345 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1346 | 1347 | semver@^6.3.0: 1348 | version "6.3.0" 1349 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1350 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1351 | 1352 | semver@^7.2.1: 1353 | version "7.3.2" 1354 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 1355 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1356 | 1357 | serialize-javascript@5.0.1: 1358 | version "5.0.1" 1359 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" 1360 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 1361 | dependencies: 1362 | randombytes "^2.1.0" 1363 | 1364 | shebang-command@^2.0.0: 1365 | version "2.0.0" 1366 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1367 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1368 | dependencies: 1369 | shebang-regex "^3.0.0" 1370 | 1371 | shebang-regex@^3.0.0: 1372 | version "3.0.0" 1373 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1374 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1375 | 1376 | slice-ansi@^4.0.0: 1377 | version "4.0.0" 1378 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1379 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1380 | dependencies: 1381 | ansi-styles "^4.0.0" 1382 | astral-regex "^2.0.0" 1383 | is-fullwidth-code-point "^3.0.0" 1384 | 1385 | source-map-support@^0.5.17: 1386 | version "0.5.19" 1387 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1388 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1389 | dependencies: 1390 | buffer-from "^1.0.0" 1391 | source-map "^0.6.0" 1392 | 1393 | source-map@^0.6.0: 1394 | version "0.6.1" 1395 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1396 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1397 | 1398 | sprintf-js@~1.0.2: 1399 | version "1.0.3" 1400 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1401 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1402 | 1403 | stdout-stderr@^0.1.9: 1404 | version "0.1.9" 1405 | resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.9.tgz#9b48ee04eff955ee07776e27125d5524d9d02f57" 1406 | integrity sha1-m0juBO/5Ve4Hd24nEl1VJNnQL1c= 1407 | dependencies: 1408 | debug "^3.1.0" 1409 | strip-ansi "^4.0.0" 1410 | 1411 | "string-width@^1.0.2 || 2": 1412 | version "2.1.1" 1413 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1414 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1415 | dependencies: 1416 | is-fullwidth-code-point "^2.0.0" 1417 | strip-ansi "^4.0.0" 1418 | 1419 | string-width@^4.1.0, string-width@^4.2.0: 1420 | version "4.2.0" 1421 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1422 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1423 | dependencies: 1424 | emoji-regex "^8.0.0" 1425 | is-fullwidth-code-point "^3.0.0" 1426 | strip-ansi "^6.0.0" 1427 | 1428 | strip-ansi@*, strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1429 | version "6.0.1" 1430 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1431 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1432 | dependencies: 1433 | ansi-regex "^5.0.1" 1434 | 1435 | strip-ansi@^4.0.0: 1436 | version "4.0.0" 1437 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1438 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1439 | dependencies: 1440 | ansi-regex "^3.0.0" 1441 | 1442 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1443 | version "3.1.1" 1444 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1445 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1446 | 1447 | supports-color@8.1.1: 1448 | version "8.1.1" 1449 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1450 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1451 | dependencies: 1452 | has-flag "^4.0.0" 1453 | 1454 | supports-color@^5.3.0: 1455 | version "5.5.0" 1456 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1457 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1458 | dependencies: 1459 | has-flag "^3.0.0" 1460 | 1461 | supports-color@^7.1.0: 1462 | version "7.2.0" 1463 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1464 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1465 | dependencies: 1466 | has-flag "^4.0.0" 1467 | 1468 | table@^6.0.9: 1469 | version "6.7.1" 1470 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" 1471 | integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== 1472 | dependencies: 1473 | ajv "^8.0.1" 1474 | lodash.clonedeep "^4.5.0" 1475 | lodash.truncate "^4.4.2" 1476 | slice-ansi "^4.0.0" 1477 | string-width "^4.2.0" 1478 | strip-ansi "^6.0.0" 1479 | 1480 | text-table@^0.2.0: 1481 | version "0.2.0" 1482 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1483 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1484 | 1485 | to-regex-range@^5.0.1: 1486 | version "5.0.1" 1487 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1488 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1489 | dependencies: 1490 | is-number "^7.0.0" 1491 | 1492 | ts-node@^9.1.1: 1493 | version "9.1.1" 1494 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" 1495 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== 1496 | dependencies: 1497 | arg "^4.1.0" 1498 | create-require "^1.1.0" 1499 | diff "^4.0.1" 1500 | make-error "^1.1.1" 1501 | source-map-support "^0.5.17" 1502 | yn "3.1.1" 1503 | 1504 | tslib@^1.8.1: 1505 | version "1.9.3" 1506 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 1507 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 1508 | 1509 | tsutils@^3.17.1: 1510 | version "3.17.1" 1511 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1512 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1513 | dependencies: 1514 | tslib "^1.8.1" 1515 | 1516 | type-check@^0.4.0, type-check@~0.4.0: 1517 | version "0.4.0" 1518 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1519 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1520 | dependencies: 1521 | prelude-ls "^1.2.1" 1522 | 1523 | type-detect@^4.0.0, type-detect@^4.0.5: 1524 | version "4.0.8" 1525 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1526 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1527 | 1528 | type-fest@^0.20.2: 1529 | version "0.20.2" 1530 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1531 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1532 | 1533 | type-fest@^0.8.1: 1534 | version "0.8.1" 1535 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1536 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1537 | 1538 | typescript@~3.9.10: 1539 | version "3.9.10" 1540 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" 1541 | integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== 1542 | 1543 | universalify@^0.1.0: 1544 | version "0.1.2" 1545 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1546 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1547 | 1548 | uri-js@^4.2.2: 1549 | version "4.2.2" 1550 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1551 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1552 | dependencies: 1553 | punycode "^2.1.0" 1554 | 1555 | v8-compile-cache@^2.0.3: 1556 | version "2.1.0" 1557 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1558 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1559 | 1560 | which@2.0.2, which@^2.0.1: 1561 | version "2.0.2" 1562 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1563 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1564 | dependencies: 1565 | isexe "^2.0.0" 1566 | 1567 | wide-align@1.1.3: 1568 | version "1.1.3" 1569 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1570 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1571 | dependencies: 1572 | string-width "^1.0.2 || 2" 1573 | 1574 | word-wrap@^1.2.3: 1575 | version "1.2.3" 1576 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1577 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1578 | 1579 | workerpool@6.1.0: 1580 | version "6.1.0" 1581 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" 1582 | integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== 1583 | 1584 | wrap-ansi@^7.0.0: 1585 | version "7.0.0" 1586 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1587 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1588 | dependencies: 1589 | ansi-styles "^4.0.0" 1590 | string-width "^4.1.0" 1591 | strip-ansi "^6.0.0" 1592 | 1593 | wrappy@1: 1594 | version "1.0.2" 1595 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1596 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1597 | 1598 | y18n@^5.0.5: 1599 | version "5.0.5" 1600 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" 1601 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 1602 | 1603 | yargs-parser@20.2.4: 1604 | version "20.2.4" 1605 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1606 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1607 | 1608 | yargs-parser@^20.2.2: 1609 | version "20.2.6" 1610 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" 1611 | integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== 1612 | 1613 | yargs-unparser@2.0.0: 1614 | version "2.0.0" 1615 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1616 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1617 | dependencies: 1618 | camelcase "^6.0.0" 1619 | decamelize "^4.0.0" 1620 | flat "^5.0.2" 1621 | is-plain-obj "^2.1.0" 1622 | 1623 | yargs@16.2.0: 1624 | version "16.2.0" 1625 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1626 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1627 | dependencies: 1628 | cliui "^7.0.2" 1629 | escalade "^3.1.1" 1630 | get-caller-file "^2.0.5" 1631 | require-directory "^2.1.1" 1632 | string-width "^4.2.0" 1633 | y18n "^5.0.5" 1634 | yargs-parser "^20.2.2" 1635 | 1636 | yn@3.1.1: 1637 | version "3.1.1" 1638 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1639 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1640 | 1641 | yocto-queue@^0.1.0: 1642 | version "0.1.0" 1643 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1644 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1645 | --------------------------------------------------------------------------------