From ebc7615a71cd5e2376ef05a0339fa6376259ab4a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 1 Apr 2022 08:48:40 -0500 Subject: [PATCH] Adopt pre-commit (#6331) --- .github/workflows/build.yml | 21 +++- .pre-commit-config.yaml | 72 +++++++++++ CONTRIBUTING.md | 44 +++++++ docs/jsdoc_plugin.js | 2 +- lint-staged.config.js | 27 ----- package.json | 10 +- pyproject.toml | 2 +- setup.cfg | 1 + setup.py | 15 ++- tsconfig.eslint.json | 8 +- yarn.lock | 232 +++++------------------------------- 11 files changed, 186 insertions(+), 248 deletions(-) create mode 100644 .pre-commit-config.yaml delete mode 100644 lint-staged.config.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d117bf884..aa6d06c79 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,22 +63,22 @@ jobs: install: needs: [build] - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ubuntu, macos, windows] + os: [ubuntu-latest, macos-latest, windows-latest] python: ['3.7', '3.10'] include: - python: '3.7' dist: 'notebook*.tar.gz' - python: '3.10' dist: 'notebook*.whl' - - os: windows + - os: windows-latest py_cmd: python - - os: macos + - os: macos-latest py_cmd: python3 - - os: ubuntu + - os: ubuntu-latest py_cmd: python steps: - name: Install Python @@ -109,3 +109,14 @@ jobs: jupyter server extension list 2>&1 | grep -ie "notebook.*enabled" - jupyter notebook --version jupyter notebook --help + + pre-commit: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v2 + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Install Jupyterlab + run: pip install -e . + - uses: pre-commit/action@v2.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..c82c8f81b --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,72 @@ +ci: + # skip any check that needs internet access + skip: [check-jsonschema, prettier, eslint, integrity] + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.1.0 + hooks: + - id: forbid-new-submodules + # - id: end-of-file-fixer + # - id: check-case-conflict + # - id: check-executables-have-shebangs + # - id: requirements-txt-fixer + # - id: check-added-large-files + # - id: check-case-conflict + # - id: check-toml + # - id: check-yaml + # - id: debug-statements + # - id: check-builtin-literals + # - id: trailing-whitespace + # exclude: .bumpversion.cfg + + # - repo: https://github.com/psf/black + # rev: 22.3.0 + # hooks: + # - id: black + # args: ["--line-length", "100"] + + # - repo: https://github.com/PyCQA/isort + # rev: 5.10.1 + # hooks: + # - id: isort + # files: \.py$ + # args: [--profile=black] + + # - repo: https://github.com/pycqa/flake8 + # rev: 4.0.1 + # hooks: + # - id: flake8 + # additional_dependencies: + # [ + # "flake8-bugbear==20.1.4", + # "flake8-logging-format==0.6.0", + # "flake8-implicit-str-concat==0.2.0", + # ] + + - repo: https://github.com/sirosen/check-jsonschema + rev: 0.10.2 + hooks: + - id: check-jsonschema + name: 'Check GitHub Workflows' + files: ^\.github/workflows/ + types: [yaml] + args: ['--schemafile', 'https://json.schemastore.org/github-workflow'] + + - repo: local + hooks: + - id: prettier + name: prettier + entry: 'npm run prettier:files' + language: node + types_or: [json, markdown, ts, tsx, javascript, jsx, css] + - id: eslint + name: eslint + entry: 'npm run eslint:files' + language: node + types_or: [ts, tsx, javascript, jsx] + - id: integrity + name: integrity + entry: 'npm run integrity --force' + language: node + stages: [push] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 538fcc031..17f5c8490 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,3 +93,47 @@ Checkout the [Playwright Command Line Reference](https://playwright.dev/docs/tes Running the end to end tests in headful mode will trigger something like the following: ![playwight-headed-demo](https://user-images.githubusercontent.com/591645/141274633-ca9f9c2f-eef6-430e-9228-a35827f8133d.gif) + +## Code Styling + +All non-python source code is formatted using [prettier](https://prettier.io) and python source code is formatted using [black](https://github.com/psf/black)s +When code is modified and committed, all staged files will be +automatically formatted using pre-commit git hooks (with help from +[pre-commit](https://github.com/pre-commit/pre-commit). The benefit of +using a code formatters like `prettier` and `black` is that it removes the topic of +code style from the conversation when reviewing pull requests, thereby +speeding up the review process. + +As long as your code is valid, +the pre-commit hook should take care of how it should look. +`pre-commit` and its associated hooks will automatically be installed when +you run `pip install -e ".[test]"` + +To install `pre-commit` manually, run the following: + +```shell +pip install pre-commit +pre-commit install +``` + +You can invoke the pre-commit hook by hand at any time with: + +```shell +pre-commit run +``` + +which should run any autoformatting on your code +and tell you about any errors it couldn't fix automatically. +You may also install [black integration](https://github.com/psf/black#editor-integration) +into your text editor to format code automatically. + +If you have already committed files before setting up the pre-commit +hook with `pre-commit install`, you can fix everything up using +`pre-commit run --all-files`. You need to make the fixing commit +yourself after that. + +You may also use the prettier npm script (e.g. `npm run prettier` or +`yarn prettier` or `jlpm prettier`) to format the entire code base. +We recommend installing a prettier extension for your code editor and +configuring it to format your code with a keyboard shortcut or +automatically on save. diff --git a/docs/jsdoc_plugin.js b/docs/jsdoc_plugin.js index 19974022f..734a15ae9 100644 --- a/docs/jsdoc_plugin.js +++ b/docs/jsdoc_plugin.js @@ -3,7 +3,7 @@ exports.handlers = { // e.doclet will refer to the newly created doclet // you can read and modify properties of that doclet if you wish if (typeof e.doclet.name === 'string') { - if (e.doclet.name[0] == '_') { + if (e.doclet.name[0] === '_') { console.log( 'Private method "' + e.doclet.longname + '" not documented.' ); diff --git a/lint-staged.config.js b/lint-staged.config.js deleted file mode 100644 index 1ddb29249..000000000 --- a/lint-staged.config.js +++ /dev/null @@ -1,27 +0,0 @@ -const escape = require('shell-quote').quote; -const fs = require('fs'); -const isWin = process.platform === 'win32'; - -const escapeFileNames = filenames => - filenames - .filter(filename => fs.existsSync(filename)) - .map(filename => `"${isWin ? filename : escape([filename])}"`) - .join(' '); - -module.exports = { - '**/*{.css,.json,.md}': filenames => { - const escapedFileNames = escapeFileNames(filenames); - return [ - `prettier --write ${escapedFileNames}`, - `git add -f ${escapedFileNames}` - ]; - }, - '**/*{.ts,.tsx,.js,.jsx}': filenames => { - const escapedFileNames = escapeFileNames(filenames); - return [ - `prettier --write ${escapedFileNames}`, - `eslint --fix ${escapedFileNames}`, - `git add -f ${escapedFileNames}` - ]; - } -}; diff --git a/package.json b/package.json index 0f8d273c1..c0636adf5 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,12 @@ "develop": "jupyter labextension develop . --overwrite && node ./buildutils/lib/develop.js --overwrite", "eslint": "eslint . --ext .ts,.tsx --fix", "eslint:check": "eslint . --ext .ts,.tsx", + "eslint:files": "eslint --fix", "install": "lerna bootstrap", "integrity": "node buildutils/lib/ensure-repo.js", "prettier": "prettier --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", "prettier:check": "prettier --list-different \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:files": "prettier --write", "release:bump": "node ./buildutils/lib/release-bump.js", "release:patch": "node ./buildutils/lib/release-patch.js", "test": "lerna run test", @@ -39,11 +41,6 @@ "watch:app": "lerna exec --stream --scope \"@jupyter-notebook/app\" jlpm watch", "watch:lib": "lerna exec --stream --scope @jupyter-notebook/metapackage jlpm watch" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, "devDependencies": { "@jupyterlab/buildutils": "^4.0.0-alpha.7", "@typescript-eslint/eslint-plugin": "^4.2.0", @@ -54,17 +51,14 @@ "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react": "^7.21.5", "extra-watch-webpack-plugin": "^1.0.3", - "husky": "^3", "jest": "^26.4.2", "jest-junit": "^11.1.0", "jest-raw-loader": "^1.0.1", "jest-summary-reporter": "^0.0.2", "lerna": "^3.22.1", - "lint-staged": "^10.4.0", "npm-run-all": "^4.1.5", "prettier": "^1.19.0", "rimraf": "^3.0.2", - "shell-quote": "^1.7.2", "typescript": "~4.1.3" }, "jupyter-releaser": { diff --git a/pyproject.toml b/pyproject.toml index b1dd7a385..e856ee131 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["jupyter_packaging~=0.10", "jupyterlab>=4.0.0a22,<5"] +requires = ["jupyter_packaging~=0.10", "jupyterlab>=4.0.0a22,<5", "pre-commit"] build-backend = "jupyter_packaging.build_api" [license] diff --git a/setup.cfg b/setup.cfg index e9b0749bb..deb7c6677 100644 --- a/setup.cfg +++ b/setup.cfg @@ -44,6 +44,7 @@ test = pytest-tornasync pytest-console-scripts ipykernel + pre-commit [options.entry_points] console_scripts = diff --git a/setup.py b/setup.py index 0efd5c45a..e6a4e8e7f 100755 --- a/setup.py +++ b/setup.py @@ -2,6 +2,8 @@ # Distributed under the terms of the Modified BSD License. from pathlib import Path +import subprocess +import sys import setuptools @@ -42,7 +44,18 @@ try: # In develop mode, just run yarn builder = npm_builder(build_cmd="build", npm="jlpm", force=True) - cmdclass = wrap_installers(post_develop=builder, ensured_targets=ensured_targets) + + def post_develop(*args, **kwargs): + builder(*args, **kwargs) + try: + subprocess.run([sys.executable, "-m", "pre_commit", "install"]) + subprocess.run( + [sys.executable, "-m", "pre_commit", "install", "--hook-type", "pre-push"] + ) + except Exception: + pass + + cmdclass = wrap_installers(post_develop=post_develop, ensured_targets=ensured_targets) setup_args = dict(cmdclass=cmdclass, data_files=get_data_files(data_files_spec)) except ImportError: diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 77a92c3b1..8b69fb600 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,5 +1,11 @@ { "extends": "./tsconfigbase", - "include": ["packages/**/*", "app/**/*", "buildutils/**/*", "ui-tests/**/*"], + "include": [ + "packages/**/*", + "app/**/*", + "buildutils/**/*", + "ui-tests/**/*", + "docs/**/*" + ], "types": ["jest"] } diff --git a/yarn.lock b/yarn.lock index a5cc94823..b3251903b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1253,10 +1253,10 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jupyter-notebook/application-extension@file:packages/application-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/application" "^7.0.0-alpha.1" - "@jupyter-notebook/ui-components" "^7.0.0-alpha.1" + "@jupyter-notebook/application" "^7.0.0-alpha.2" + "@jupyter-notebook/ui-components" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/apputils" "^4.0.0-alpha.7" "@jupyterlab/celltags" "^4.0.0-alpha.7" @@ -1274,7 +1274,7 @@ "@lumino/widgets" "^1.31.1" "@jupyter-notebook/application@file:packages/application": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/coreutils" "^6.0.0-alpha.7" @@ -1289,7 +1289,7 @@ "@lumino/widgets" "^1.31.1" "@jupyter-notebook/console-extension@file:packages/console-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/console" "^4.0.0-alpha.7" @@ -1297,7 +1297,7 @@ "@lumino/algorithm" "^1.9.1" "@jupyter-notebook/docmanager-extension@file:packages/docmanager-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/coreutils" "^6.0.0-alpha.7" @@ -1307,26 +1307,26 @@ "@lumino/algorithm" "^1.9.1" "@jupyter-notebook/documentsearch-extension@file:packages/documentsearch-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/application" "^7.0.0-alpha.1" + "@jupyter-notebook/application" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/documentsearch" "^4.0.0-alpha.7" "@lumino/widgets" "^1.31.1" "@jupyter-notebook/help-extension@file:packages/help-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/ui-components" "^7.0.0-alpha.1" + "@jupyter-notebook/ui-components" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/apputils" "^4.0.0-alpha.7" "@jupyterlab/mainmenu" "^4.0.0-alpha.7" "@jupyterlab/translation" "^4.0.0-alpha.7" "@jupyter-notebook/lab-extension@file:packages/lab-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/application" "^7.0.0-alpha.1" + "@jupyter-notebook/application" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/apputils" "^4.0.0-alpha.7" "@jupyterlab/coreutils" "^6.0.0-alpha.7" @@ -1338,9 +1338,9 @@ "@lumino/disposable" "^1.10.1" "@jupyter-notebook/notebook-extension@file:packages/notebook-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/application" "^7.0.0-alpha.1" + "@jupyter-notebook/application" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/apputils" "^4.0.0-alpha.7" "@jupyterlab/cells" "^4.0.0-alpha.7" @@ -1352,7 +1352,7 @@ "@lumino/widgets" "^1.31.1" "@jupyter-notebook/terminal-extension@file:packages/terminal-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/coreutils" "^6.0.0-alpha.7" @@ -1360,9 +1360,9 @@ "@lumino/algorithm" "^1.9.1" "@jupyter-notebook/tree-extension@file:packages/tree-extension": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: - "@jupyter-notebook/application" "^7.0.0-alpha.1" + "@jupyter-notebook/application" "^7.0.0-alpha.2" "@jupyterlab/application" "^4.0.0-alpha.7" "@jupyterlab/apputils" "^4.0.0-alpha.7" "@jupyterlab/coreutils" "^6.0.0-alpha.7" @@ -1379,7 +1379,7 @@ "@lumino/widgets" "^1.31.1" "@jupyter-notebook/ui-components@file:packages/ui-components": - version "7.0.0-alpha.1" + version "7.0.0-alpha.2" dependencies: "@jupyterlab/ui-components" "^4.0.0-alpha.22" react "^17.0.1" @@ -3752,11 +3752,6 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/prettier@^2.0.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" @@ -4280,7 +4275,7 @@ ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -5135,14 +5130,6 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -5281,7 +5268,7 @@ color@^3.2.1: color-convert "^1.9.3" color-string "^1.6.0" -colorette@^2.0.14, colorette@^2.0.16: +colorette@^2.0.14: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== @@ -5598,7 +5585,7 @@ cors@2.8.5: object-assign "^4" vary "^1" -cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -5608,17 +5595,6 @@ cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - create-react-class@^15.6.2: version "15.7.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" @@ -5916,7 +5892,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -6314,7 +6290,7 @@ enhanced-resolve@^5.9.2: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -6723,7 +6699,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.1.0: +execa@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -7318,11 +7294,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7354,11 +7325,6 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== - get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -7869,23 +7835,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" - integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== - dependencies: - chalk "^2.4.2" - ci-info "^2.0.0" - cosmiconfig "^5.2.1" - execa "^1.0.0" - get-stdin "^7.0.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" - please-upgrade-node "^3.2.0" - read-pkg "^5.2.0" - run-node "^1.0.0" - slash "^3.0.0" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8301,7 +8250,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -8351,11 +8300,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -8404,11 +8348,6 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -9373,41 +9312,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^10.4.0: - version "10.5.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - commander "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - -listr2@^3.2.2: - version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -9608,24 +9512,6 @@ lodash@4, lodash@4.17.21, lodash@4.x, lodash@^4.17.12, lodash@^4.17.15, lodash@^ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10643,11 +10529,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -11093,13 +10974,6 @@ pkginfo@0.4.1: resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -11977,11 +11851,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -12018,11 +11887,6 @@ run-async@^2.2.0, run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -12049,13 +11913,6 @@ rxjs@^6.4.0, rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^7.5.1: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== - dependencies: - tslib "^2.1.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -12162,11 +12019,6 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -12283,7 +12135,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.2: +shell-quote@^1.6.1: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== @@ -12345,15 +12197,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -12660,11 +12503,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -12761,15 +12599,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -13089,7 +12918,7 @@ through2@^4.0.0: dependencies: readable-stream "3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -13269,7 +13098,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.1, tslib@~2.3.1: +tslib@^2.3.1, tslib@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -14558,11 +14387,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"