From dd4bf606eb139a28c2633baaab10fac525f8ac76 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 09:38:47 -0500 Subject: [PATCH 01/17] start binder --- .binder/environment.yml | 24 ++++++++++++++++++++++++ .binder/postBuild | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 .binder/environment.yml create mode 100644 .binder/postBuild diff --git a/.binder/environment.yml b/.binder/environment.yml new file mode 100644 index 0000000..042839e --- /dev/null +++ b/.binder/environment.yml @@ -0,0 +1,24 @@ +name: jupyterlab-pull-requests + +channels: + - conda-forge + - nodefaults + +dependencies: + # runtimes + - python >=3.6,<3.10 + - nodejs >=12,!=13.*,<15 + - git + # client + - jupyterlab >=3,<4 + # packaging + - pip + - wheel + - twine + # test + - asynctest + - pytest + # TODO: use the real stuff + - pip: + - jupyterlab-git >=0.30.0b2 + - nbdime >=3.0.0b1 diff --git a/.binder/postBuild b/.binder/postBuild new file mode 100644 index 0000000..aa3e34e --- /dev/null +++ b/.binder/postBuild @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +jlpm --ignore-optional +jlpm lint +jlpm build +python -m pip install -e . --no-deps --ignore-installed -v +jupyter serverextension enable --py jupyterlab_pullrequests +jupyter labextension lists From e4713528cd5e1fda2211bf99cb6623891027ce63 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 09:46:11 -0500 Subject: [PATCH 02/17] start re-packaging --- .gitignore | 5 +- MANIFEST.in | 4 ++ etc/jupyterlab-pull-requests-notebook.json | 7 +++ etc/jupyterlab-pull-requests-server.json | 7 +++ jupyterlab_pullrequests/__init__.py | 11 +++-- jupyterlab_pullrequests/_version.py | 12 +++++ jupyterlab_pullrequests/base.py | 7 ++- jupyterlab_pullrequests/github_manager.py | 15 ++++-- jupyterlab_pullrequests/handlers.py | 15 +++--- jupyterlab_pullrequests/manager.py | 7 ++- setup.py | 56 +++++++++++++++------- 11 files changed, 108 insertions(+), 38 deletions(-) create mode 100644 MANIFEST.in create mode 100644 etc/jupyterlab-pull-requests-notebook.json create mode 100644 etc/jupyterlab-pull-requests-server.json create mode 100644 jupyterlab_pullrequests/_version.py diff --git a/.gitignore b/.gitignore index 41aff32..044a830 100644 --- a/.gitignore +++ b/.gitignore @@ -111,4 +111,7 @@ yarn.lock .pytest_cache/ .pyc -.DS_Store \ No newline at end of file +.DS_Store + +# built files +jupyterlab_pullrequests/labextension diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..bd445a6 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,4 @@ +include license +recursive-include etc * +recursive-include jupyterlab_pullrequests/labextension * +global-exclude .ipynb_checkpoints node_modules diff --git a/etc/jupyterlab-pull-requests-notebook.json b/etc/jupyterlab-pull-requests-notebook.json new file mode 100644 index 0000000..f1d26ef --- /dev/null +++ b/etc/jupyterlab-pull-requests-notebook.json @@ -0,0 +1,7 @@ +{ + "NotebookApp": { + "nbserver_extensions": { + "jupyterlab_pullrequests": true + } + } +} diff --git a/etc/jupyterlab-pull-requests-server.json b/etc/jupyterlab-pull-requests-server.json new file mode 100644 index 0000000..701ba4f --- /dev/null +++ b/etc/jupyterlab-pull-requests-server.json @@ -0,0 +1,7 @@ +{ + "ServerApp": { + "jpserver_extensions": { + "jupyterlab_pullrequests": true + } + } +} diff --git a/jupyterlab_pullrequests/__init__.py b/jupyterlab_pullrequests/__init__.py index e9b325c..d28cfaf 100644 --- a/jupyterlab_pullrequests/__init__.py +++ b/jupyterlab_pullrequests/__init__.py @@ -1,6 +1,9 @@ -def _jupyter_server_extension_paths(): - return [{"module": "jupyterlab_pullrequests.handlers"}] +""""Pull Requests for JupyterLab""" + +from ._version import __version__, __js__ +__all__ = ["__version__", "__js__"] -def _jupyter_nbextension_paths(): - return [] + +def _jupyter_server_extension_paths(): + return [{"module": "jupyterlab_pullrequests.handlers"}] diff --git a/jupyterlab_pullrequests/_version.py b/jupyterlab_pullrequests/_version.py new file mode 100644 index 0000000..e161be5 --- /dev/null +++ b/jupyterlab_pullrequests/_version.py @@ -0,0 +1,12 @@ +"""version information for jupyterlab_pullrequests""" +import pathlib +import json + +HERE = Path(__file__).parent +PKG = (HERE / "labextension/package.json") + +__js__ = json.loads(HERE.read_text(encoding="utf-8")) + +__version__ = __js__["version"] + +__all__ = ["__version__", "__js__"] diff --git a/jupyterlab_pullrequests/base.py b/jupyterlab_pullrequests/base.py index a246a3d..b58eb63 100644 --- a/jupyterlab_pullrequests/base.py +++ b/jupyterlab_pullrequests/base.py @@ -2,13 +2,16 @@ import traceback import tornado.gen as gen -from jupyterlab_pullrequests.github_manager import PullRequestsGithubManager -from notebook.base.handlers import APIHandler from tornado import web from tornado.httpclient import AsyncHTTPClient + from traitlets import Bool, Unicode from traitlets.config import Configurable +from jupyter_server.base.handlers import APIHandler + +from .github_manager import PullRequestsGithubManager + class GitHubConfig(Configurable): """ diff --git a/jupyterlab_pullrequests/github_manager.py b/jupyterlab_pullrequests/github_manager.py index ab73a3c..632d5c2 100644 --- a/jupyterlab_pullrequests/github_manager.py +++ b/jupyterlab_pullrequests/github_manager.py @@ -1,15 +1,20 @@ import json from http import HTTPStatus -import tornado.gen as gen -from jupyterlab_pullrequests.manager import PullRequestsManager -from notebook.utils import url_path_join +from tornado import gen + +from jupyter_server.utils import url_path_join + from tornado.httpclient import AsyncHTTPClient, HTTPClientError, HTTPRequest from tornado.httputil import url_concat from tornado.web import HTTPError +from .manager import PullRequestsManager + + GITHUB_API_BASE_URL = "https://api.github.com" + class PullRequestsGithubManager(PullRequestsManager): # ----------------------------------------------------------------------------- @@ -27,7 +32,7 @@ def get_current_user(self): git_url = url_path_join(GITHUB_API_BASE_URL, "user") data = yield self.call_github(git_url) - + return {'username': data["login"]} def get_search_filter(self, username, pr_filter): @@ -126,7 +131,7 @@ def get_file_content(self, pr_id, filename): base_content = yield self.get_link_content(base_raw_url) head_content = yield self.get_link_content(head_raw_url) - + return {'base_content':base_content, 'head_content':head_content, 'commit_id':links["commit_id"]} # ----------------------------------------------------------------------------- diff --git a/jupyterlab_pullrequests/handlers.py b/jupyterlab_pullrequests/handlers.py index 8e402a1..d1093ed 100644 --- a/jupyterlab_pullrequests/handlers.py +++ b/jupyterlab_pullrequests/handlers.py @@ -5,11 +5,12 @@ from collections import namedtuple from http import HTTPStatus -import tornado.escape as escape -import tornado.gen as gen -from jupyterlab_pullrequests.base import PullRequestsAPIHandler -from notebook.utils import url_path_join +from tornado import escape, gen from tornado.web import HTTPError, MissingArgumentError +from jupyter_server.utils import url_path_join + +from .base import PullRequestsAPIHandler + # ----------------------------------------------------------------------------- # /pullrequests/prs/user Handler @@ -26,7 +27,7 @@ class ListPullRequestsUserHandler(PullRequestsAPIHandler): def validate_request(self, pr_filter): if not (pr_filter == "created" or pr_filter == "assigned"): raise HTTPError( - status_code=HTTPStatus.BAD_REQUEST, + status_code=HTTPStatus.BAD_REQUEST, reason=f"Invalid parameter 'filter'. Expected value 'created' or 'assigned', received '{pr_filter}'." ) @@ -35,7 +36,7 @@ def get(self): pr_filter = get_request_attr_value(self, "filter") self.validate_request(pr_filter) # handler specific validation - + current_user = yield self.manager.get_current_user() prs = yield self.manager.list_prs(current_user['username'], pr_filter) self.finish(json.dumps(prs)) @@ -128,7 +129,7 @@ def post(self): content = yield self.manager.get_file_nbdiff(prev_content, curr_content) except Exception as e: raise HTTPError( - status_code=HTTPStatus.INTERNAL_SERVER_ERROR, + status_code=HTTPStatus.INTERNAL_SERVER_ERROR, reason=f"Error diffing content: {e}." ) self.finish(json.dumps(content)) diff --git a/jupyterlab_pullrequests/manager.py b/jupyterlab_pullrequests/manager.py index 1e79c01..02fd71c 100644 --- a/jupyterlab_pullrequests/manager.py +++ b/jupyterlab_pullrequests/manager.py @@ -1,9 +1,12 @@ import json +from tornado import gen +from tornado.httpclient import AsyncHTTPClient + import nbformat -import tornado.gen as gen + from nbdime import diff_notebooks -from tornado.httpclient import AsyncHTTPClient + class PullRequestsManager(): diff --git a/setup.py b/setup.py index d8d475d..d0cc4c7 100644 --- a/setup.py +++ b/setup.py @@ -1,27 +1,49 @@ -""" -Basic Setup Module -""" +"""setup for jupyterlab_pullrequests with JupyterLab federated extension""" import setuptools +from pathlib import Path +import json -with open("README.md", "r") as fh: - long_description = fh.read() +HERE = Path(__file__).parent +ETC_DEST = "etc/jupyter" +NAME = "jupyterlab_pullrequests" +EXT = HERE / NAME / "labextension" +PKG = json.loads((EXT / "package.json").read_text(encoding="utf-8")) + +DATA_FILES = [] + +# serverextension +DATA_FILES += [ + (f"{ETC_DEST}/jupyter_{app}_config.d", [f"etc/jupyterlab-pull-requests-{app}.json"]) + for app in ["server", "notebook"] +] -tests_require = ["pytest", "asynctest"] setup_args = dict( - name="jupyterlab_pullrequests", - version="0.3.0", - author="Jupyter Development Team", - license="BSD-3-Clause", - description="A server extension for JupyterLab's pull request extension", - long_description=long_description, + name=NAME, + version=PKG["version"], + author=PKG["author"], + license=PKG["license"], + description=PKG["description"], + long_description=(HERE / "README.md").read_text(encoding="utf-8"), long_description_content_type="text/markdown", - packages=setuptools.find_packages(), - install_requires=["notebook", "nbdime"], - tests_require=tests_require, - extras_require={'test': tests_require}, - package_data={"jupyterlab_pullrequests": ["*"]}, + packages=setuptools.find_packages(".", exclude=["tests*"]), + python_requires=">=3.6", + install_requires=[ + "jupyterlab >=3", + # TODO: replace when real + "nbdime >=3.0.0b1" + ], + extras_require={ + "test": [ + "pytest", + "asynctest" + ] + }, + include_package_data=True, + data_files=DATA_FILES, + zip_safe=False, ) + if __name__ == "__main__": setuptools.setup(**setup_args) From 781f7d1ceb51463ea1d63d25a888806eb6ad34f9 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 10:13:26 -0500 Subject: [PATCH 03/17] start madly upgrading versions --- .eslintignore | 39 +++++++++++++++++++++ .eslintrc.js | 67 ++++++++++++++++++++++++++++++++++++ .gitignore | 2 -- .prettierignore | 40 ++++++++++++++++++++++ .prettierrc | 5 +++ package.json | 91 ++++++++++++++++++++++++++++++------------------- tslint.json | 87 ---------------------------------------------- 7 files changed, 207 insertions(+), 124 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .prettierignore create mode 100644 .prettierrc delete mode 100644 tslint.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..c843bff --- /dev/null +++ b/.eslintignore @@ -0,0 +1,39 @@ +node_modules +**/build +**/lib +**/node_modules +**/mock_packages +**/static +**/typings +**/schemas +**/themes +coverage +*.map.js +*.bundle.js + +dev_mode/index.js +!dev_mode/static/index.out.js +dev_mode/workspaces +docs/_build +docs/api +docs/build +examples/chrome-example-test.js +examples/federated/core_package/index.template.js +jupyterlab/chrome-test.js +jupyterlab/geckodriver +packages/extensionmanager-extension/examples/listings +packages/nbconvert-css/raw.js +packages/ui-components/src/icon/iconimports.ts +packages/ui-components/storybook-static +jupyterlab/staging/yarn.js +jupyterlab/staging/index.js +tsconfigdoc.json +examples/federated/core_package/index.js +examples/federated/labextensions + +# jetbrains IDE stuff +.idea/ + +# ms IDE stuff +.history/ +.vscode/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..8efeb82 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,67 @@ +module.exports = { + env: { + browser: true, + es6: true, + commonjs: true, + node: true, + 'jest/globals': true + }, + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier/@typescript-eslint', + 'plugin:react/recommended', + 'plugin:jest/recommended' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.eslint.json' + }, + plugins: ['@typescript-eslint', 'jest'], + rules: { + '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }], + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'interface', + format: ['PascalCase'], + custom: { + regex: '^I[A-Z]', + match: true + } + } + ], + '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }], + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/camelcase': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/ban-ts-comment': ['warn', { 'ts-ignore': true }], + '@typescript-eslint/ban-types': 'warn', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'warn', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/triple-slash-reference': 'warn', + '@typescript-eslint/no-inferrable-types': 'off', + 'jest/no-conditional-expect': 'warn', + 'jest/valid-title': 'warn', + 'no-inner-declarations': 'off', + 'no-prototype-builtins': 'off', + 'no-control-regex': 'warn', + 'no-undef': 'warn', + 'no-case-declarations': 'warn', + 'no-useless-escape': 'off', + 'prefer-const': 'off', + 'react/prop-types': 'warn' + }, + settings: { + react: { + version: 'detect' + } + } +}; diff --git a/.gitignore b/.gitignore index 044a830..bc5bf8c 100644 --- a/.gitignore +++ b/.gitignore @@ -106,8 +106,6 @@ node_modules/ package-lock.json -yarn.lock - .pytest_cache/ .pyc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b4702e9 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,40 @@ +**/build +**/node_modules +**/lib +**/package.json +**/static +**/.ipynb_checkpoints +tests/**/coverage + +.eggs +dev_mode/index.js +dev_mode/schemas +dev_mode/static +dev_mode/themes +dev_mode/workspaces +docs/_build +docs/api +examples/app/build +examples/app/themes +examples/app/schemas +examples/federated/core_package/index.template.js +jupyterlab/schemas +jupyterlab/themes +jupyterlab/geckodriver +jupyterlab/staging/yarn.js +jupyterlab/staging/index.js +packages/ui-components/src/icon/iconimports.ts +packages/extensionmanager/examples/listings +tsconfigdoc.json +examples/federated/core_package/index.js +examples/federated/labextensions + +# jetbrains IDE stuff +.idea/ + +# ms IDE stuff +.history/ +.vscode/ + +# autogenerated from a lot of css in jlab +packages/nbconvert-css/style/index.css diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..1950328 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid" +} \ No newline at end of file diff --git a/package.json b/package.json index 3ca891a..f8ab35d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jupyterlab/pullrequests", - "version": "0.3.0", + "version": "0.4.0", "description": "Pull Requests for JupyterLab", "keywords": [ "jupyter", @@ -15,7 +15,8 @@ "author": "Jupyter Development Team", "files": [ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", - "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}" + "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}", + "LICENSE" ], "main": "lib/index.js", "style": "style/index.css", @@ -29,57 +30,77 @@ "clean": "rimraf lib", "watch": "tsc -w", "test": "jest", - "lint": "tslint --project .", - "lintfix": "tslint --fix --project ./tsconfig.json", - "tslint-check": "tslint-config-prettier-check ./tslint.json" + "lint": "jlpm && jlpm prettier && jlpm eslint", + "eslint": "eslint --ext .js,.jsx,.ts,.tsx --fix .", + "eslint:check": "eslint --ext .js,.jsx,.ts,.tsx .", + "prettier": "prettier --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:check": "prettier --list-different \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"" }, "dependencies": { - "@jupyterlab/application": "^2.0.0", - "@jupyterlab/filebrowser": "^2.0.0", - "@jupyterlab/git": "^0.20.0", - "@jupyterlab/mainmenu": "^2.0.0", - "base64-js": "^1.3.0", - "json-source-map": "^0.4.0", + "@jupyterlab/application": "^3.0.0", + "@jupyterlab/filebrowser": "^3.0.0", + "@jupyterlab/git": "^0.23.3", + "@jupyterlab/mainmenu": "^3.0.0", + "base64-js": "^1.5.1", + "json-source-map": "^0.6.0", "moment": "^2.24.0", - "monaco-editor": "^0.17.0", - "nbdime": "^6.0.0", - "react-monaco-editor": "^0.26.2", - "react-resize-detector": "^4.2.0", - "react-spinners": "0.5.12" + "monaco-editor": "^0.22.3", + "nbdime": "^6.1.0-beta.1", + "react-monaco-editor": "^0.42.0", + "react-resize-detector": "^6.6.0", + "react-spinners": "^0.10.6" }, "devDependencies": { "@microsoft/tsdoc": "^0.12.9", - "@types/base64-js": "^1.2.5", "@types/codemirror": "^0.0.76", "@types/d3-color": "^1.2.2", "@types/enzyme": "^3.9.3", - "@types/jest": "^24.0.13", + "@types/jest": "^26.0.10", "@types/lodash": "^4.14.135", "@types/node": "^12.6.2", - "@types/react": "^16.8.19", + "@types/react": "^17.0.0", "@types/react-dom": "^16.8.4", "@types/react-resize-detector": "^4.0.1", "d3-color": "^1.2.8", "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.13.2", - "husky": "^3.0.1", - "jest": "^24.8.0", - "jest-fetch-mock": "^2.1.2", + "@typescript-eslint/eslint-plugin": "^4.8.1", + "@typescript-eslint/parser": "^4.8.1", + "eslint": "^7.14.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-react": "^7.21.5", + "husky": "^4.2.5", + "jest": "^26.4.2", + "jest-fetch-mock": "^3.0.3", "lodash": "^4.17.11", - "prettier": "^1.17.1", - "rimraf": "^2.6.1", - "ts-jest": "^24.0.2", - "tslint": "^5.17.0", - "tslint-config-prettier": "^1.18.0", - "tslint-plugin-prettier": "^2.0.1", - "typescript": "~3.7.0", - "webpack": "^4.38.0", - "webpack-cli": "^3.3.6" + "prettier": "^2.1.1", + "rimraf": "~3.0.0", + "typescript": "~4.1.3", + "webpack": "^5.3.1", + "webpack-cli": "^4.1.0" }, "jupyterlab": { - "extension": true - }, - "resolutions": { - "@types/react": "^16.8.19" + "extension": true, + "outputDir": "jupyterlab_pullrequests/labextension", + "sharedPackages": { + "nbdime": { + "bundled": true + }, + "react-monaco-editor": { + "bundled": true + } + }, + "discovery": { + "server": { + "managers": [ + "pip" + ], + "base": { + "name": "jupyterlab_pullrequests" + } + } + } } } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 9546c57..0000000 --- a/tslint.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "rulesDirectory": ["tslint-plugin-prettier"], - "extends": ["tslint-config-prettier"], - "rules": { - "prettier": [true], - "ban": [ - true, - ["_", "forEach"], - ["_", "each"], - ["$", "each"], - ["angular", "forEach"] - ], - "class-name": true, - "comment-format": [true, "check-space"], - "curly": true, - "forin": false, - "interface-name": [true, "always-prefix"], - "jsdoc-format": true, - "label-position": true, - "max-line-length": [false], - "member-access": false, - "member-ordering": [false], - "no-angle-bracket-type-assertion": true, - "no-any": false, - "no-arg": true, - "no-bitwise": true, - "no-conditional-assignment": true, - "no-consecutive-blank-lines": false, - "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], - "no-construct": true, - "no-debugger": true, - "no-default-export": false, - "no-duplicate-variable": true, - "no-eval": true, - "no-inferrable-types": false, - "no-internal-module": true, - "no-invalid-this": [true, "check-function-in-method"], - "no-null-keyword": false, - "no-reference": true, - "no-require-imports": false, - "no-shadowed-variable": false, - "no-string-literal": false, - "no-switch-case-fall-through": true, - "no-unused-expression": true, - "no-use-before-declare": false, - "no-var-keyword": true, - "no-var-requires": true, - "object-literal-sort-keys": false, - "one-variable-per-declaration": [true, "ignore-for-loop"], - "radix": true, - "switch-default": true, - "trailing-comma": [ - false, - { - "multiline": "never", - "singleline": "never" - } - ], - "triple-equals": [true, "allow-null-check", "allow-undefined-check"], - "typedef": [false], - "typedef-whitespace": [ - false, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "space", - "index-signature": "space", - "parameter": "space", - "property-declaration": "space", - "variable-declaration": "space" - } - ], - "use-isnan": true, - "use-strict": [false], - "variable-name": [ - true, - "check-format", - "allow-leading-underscore", - "ban-keywords" - ] - } -} \ No newline at end of file From 55c39dfb7824eef3b86c93621a7f9f6eca528a96 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 10:16:43 -0500 Subject: [PATCH 04/17] add labextension building --- .binder/postBuild | 1 + package.json | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.binder/postBuild b/.binder/postBuild index aa3e34e..37f0415 100644 --- a/.binder/postBuild +++ b/.binder/postBuild @@ -2,6 +2,7 @@ jlpm --ignore-optional jlpm lint jlpm build +jupyter labextension develop --overwrite . python -m pip install -e . --no-deps --ignore-installed -v jupyter serverextension enable --py jupyterlab_pullrequests jupyter labextension lists diff --git a/package.json b/package.json index f8ab35d..33db9f1 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,12 @@ "url": "https://github.com/jupyterlab/pull-requests.git" }, "scripts": { - "build": "webpack && tsc", + "build": "jlpm build:webpack && jlpm build:ts && jlpm build:labext", + "build:webpack": "webpack", + "build:ts": "tsc -b", + "build:labext": "jupyter labextension build .", "clean": "rimraf lib", - "watch": "tsc -w", + "watch": "jlpm build -w", "test": "jest", "lint": "jlpm && jlpm prettier && jlpm eslint", "eslint": "eslint --ext .js,.jsx,.ts,.tsx --fix .", From 9a36cf792377442200074b20e731ee81746733d9 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 10:27:39 -0500 Subject: [PATCH 05/17] more work on linter --- .binder/postBuild | 14 +- .prettierignore | 25 +- package.json | 2 +- tsconfig.eslint.json | 4 + tsconfig.json | 29 +- yarn.lock | 7425 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 7462 insertions(+), 37 deletions(-) create mode 100644 tsconfig.eslint.json create mode 100644 yarn.lock diff --git a/.binder/postBuild b/.binder/postBuild index 37f0415..52d4c54 100644 --- a/.binder/postBuild +++ b/.binder/postBuild @@ -1,8 +1,20 @@ #!/usr/bin/env bash +set -eux + +# prefling node stuff jlpm --ignore-optional jlpm lint jlpm build + +# install labextension in editable mode jupyter labextension develop --overwrite . + +# install python package python -m pip install -e . --no-deps --ignore-installed -v + +# manually enable extension jupyter serverextension enable --py jupyterlab_pullrequests -jupyter labextension lists + +# verify install +jupyter labextension list +jupyter server extension list diff --git a/.prettierignore b/.prettierignore index b4702e9..c4a8517 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,30 +4,10 @@ **/package.json **/static **/.ipynb_checkpoints +**/labextension tests/**/coverage .eggs -dev_mode/index.js -dev_mode/schemas -dev_mode/static -dev_mode/themes -dev_mode/workspaces -docs/_build -docs/api -examples/app/build -examples/app/themes -examples/app/schemas -examples/federated/core_package/index.template.js -jupyterlab/schemas -jupyterlab/themes -jupyterlab/geckodriver -jupyterlab/staging/yarn.js -jupyterlab/staging/index.js -packages/ui-components/src/icon/iconimports.ts -packages/extensionmanager/examples/listings -tsconfigdoc.json -examples/federated/core_package/index.js -examples/federated/labextensions # jetbrains IDE stuff .idea/ @@ -35,6 +15,3 @@ examples/federated/labextensions # ms IDE stuff .history/ .vscode/ - -# autogenerated from a lot of css in jlab -packages/nbconvert-css/style/index.css diff --git a/package.json b/package.json index 33db9f1..e4edf51 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "lint": "jlpm && jlpm prettier && jlpm eslint", "eslint": "eslint --ext .js,.jsx,.ts,.tsx --fix .", "eslint:check": "eslint --ext .js,.jsx,.ts,.tsx .", - "prettier": "prettier --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier": "prettier --list-different --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", "prettier:check": "prettier --list-different \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"" }, "dependencies": { diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 0000000..8c62bfe --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig", + "include": ["src/**/*", ".eslintrc.js", "*"] +} diff --git a/tsconfig.json b/tsconfig.json index 45d8acf..bf48afd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,26 @@ { + "$schema": "http://json.schemastore.org/tsconfig", "compilerOptions": { + "allowSyntheticDefaultImports": true, + "composite": true, "declaration": true, - "lib": ["es2015", "dom"], - "module": "commonjs", + "esModuleInterop": true, + "incremental": true, + "jsx": "react", + "module": "esnext", "moduleResolution": "node", "noEmitOnError": true, + "noImplicitAny": true, "noUnusedLocals": true, - "outDir": "lib", - "strict": true, - "strictNullChecks": false, - "esModuleInterop": true, - "target": "es2015", - "types": ["node"], - "jsx": "react", - "resolveJsonModule": true + "outDir": "./lib/", + "preserveWatchOutput": true, + "resolveJsonModule": true, + "rootDir": "./src/", + "skipLibCheck": true, + "sourceMap": true, + "strictNullChecks": true, + "target": "es2017", + "types": [] }, - "include": ["src/*"] + "include": ["./src/*"] } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..aa9e9fc --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7425 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.0": + version "7.13.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e" + integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw== + +"@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.13.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf" + integrity sha512-FzeKfFBG2rmFtGiiMdXZPFt/5R5DXubVi82uYhjGX4Msf+pgYQMCFIqFXZWs5vbIYbf14VeBIgdGI03CDOOM1w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.0" + "@babel/parser" "^7.13.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "7.0.0" + source-map "^0.5.0" + +"@babel/generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" + integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-compilation-targets@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1" + integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "7.0.0" + +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + +"@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helpers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" + integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" + integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0": + version "7.13.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab" + integrity sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": + version "7.13.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.7.tgz#d494e39d198ee9ca04f4dcb76d25d9d7a1dc961a" + integrity sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.12.13", "@babel/template@^7.3.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@blueprintjs/core@^3.22.2", "@blueprintjs/core@^3.36.0", "@blueprintjs/core@^3.39.0": + version "3.39.0" + resolved "https://registry.yarnpkg.com/@blueprintjs/core/-/core-3.39.0.tgz#77c13aea4e5285568b9ad76f69004567ea7d75e5" + integrity sha512-Pl92Qvfo0iowvJ81hOxfOXgBUuqHdMgtYao7hCvhF5hvz8wYRfOr1GHChVsiD5NvpNmG2rtUTYqkfft06Tyj5A== + dependencies: + "@blueprintjs/icons" "^3.24.0" + "@types/dom4" "^2.0.1" + classnames "^2.2" + dom4 "^2.1.5" + normalize.css "^8.0.1" + popper.js "^1.16.1" + react-lifecycles-compat "^3.0.4" + react-popper "^1.3.7" + react-transition-group "^2.9.0" + resize-observer-polyfill "^1.5.1" + tslib "~1.13.0" + +"@blueprintjs/icons@^3.24.0": + version "3.24.0" + resolved "https://registry.yarnpkg.com/@blueprintjs/icons/-/icons-3.24.0.tgz#aa7e6042e40806d22f85da8d62990ff0296adcf2" + integrity sha512-OvDDI5EUueS1Y3t594iS8LAGoHhLhYjC2GuN/01a85n+ASLSp0jf0/+uix2JeCOj41iTdRRCINbWuRwVQNNGPw== + dependencies: + classnames "^2.2" + tslib "~1.13.0" + +"@blueprintjs/select@^3.11.2", "@blueprintjs/select@^3.15.0": + version "3.15.5" + resolved "https://registry.yarnpkg.com/@blueprintjs/select/-/select-3.15.5.tgz#f3448a21ff596a793c8949d8ac5068b1fcd70bbd" + integrity sha512-ZZaW60v7sKY2NIPvqG9PO+BAvbfeFvL/LQ6wNHias+T63Nk34NZrUx0a3MSELkTsJwdpZLZJLzH7c8zQANBOkg== + dependencies: + "@blueprintjs/core" "^3.39.0" + classnames "^2.2" + tslib "~1.13.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" + integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== + +"@emotion/cache@^10.0.27": + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.35": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" + integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.8.0", "@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + csstype "^2.5.7" + +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/stylis@0.8.5": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.20" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@fortawesome/fontawesome-free@^5.12.0": + version "5.15.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz#218cd7276ab4f9ab57cc3d2efa2697e6a579f25d" + integrity sha512-7l/AX41m609L/EXI9EKH3Vs3v0iA8tKlIOGtw+kgcoanI7p+e4I4GYLqW3UXWiTnjSFymKSmTTPKYrivzbxxqA== + +"@hypnosphi/create-react-context@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" + integrity sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A== + dependencies: + gud "^1.0.0" + warning "^4.0.3" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jupyterlab/application@^2.0.0": + version "2.2.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-2.2.6.tgz#4c505d7196f784c11d533b4539e7b2fbc5d664d6" + integrity sha512-pW/Cu+t3CYii52YncrbcRWSfAFTIlsDy8yMxgYqkG6TSsImca3Rix3o69jTu264Ct2UQzEWP4+6u2IqF5wziuw== + dependencies: + "@fortawesome/fontawesome-free" "^5.12.0" + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/docregistry" "^2.2.4" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/rendermime-interfaces" "^2.2.1" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/statedb" "^2.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/application" "^1.8.4" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/polling" "^1.1.1" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/application@^3.0.0": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.0.6.tgz#9729bd42b24f0191859a34711d7e2f8353d371d1" + integrity sha512-BjFmJGciO984RkxV2ZUtr7z3VEquV+OI+mwzrlM80tUDvxMBjiTn8qUFeOGLnEf1t2MbEnxGXu1cnkpK6nUVNg== + dependencies: + "@fortawesome/fontawesome-free" "^5.12.0" + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/docregistry" "^3.0.6" + "@jupyterlab/rendermime" "^3.0.6" + "@jupyterlab/rendermime-interfaces" "^3.0.5" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/statedb" "^3.0.3" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/application" "^1.13.1" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + +"@jupyterlab/apputils@^2.0.0", "@jupyterlab/apputils@^2.2.6": + version "2.2.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-2.2.6.tgz#13cadd7a4765eca0995bf68313ec9c99d4f534a5" + integrity sha512-aWg0c6edfQC6b1sLFskirG+LqH1aGKnVGj7R7HR1loyOLVVq/HpZ9wkPZLCh8Gi1Wy4Tqvm2R46glmuu84W8xA== + dependencies: + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/settingregistry" "^2.2.5" + "@jupyterlab/statedb" "^2.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/domutils" "^1.1.7" + "@lumino/messaging" "^1.3.3" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" + "@types/react" "~16.9.16" + react "~16.9.0" + react-dom "~16.9.0" + sanitize-html "~1.20.1" + +"@jupyterlab/apputils@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.0.5.tgz#1eb682e20f5da98ea7c1d2b3909ea8c17565f607" + integrity sha512-m09ClizpX/rysqFvlVRVe683xmbG/Lk8d4TDXZDVmApNyWOLhsBHqfk+Im5WSQt2Oe2DiolwiiJXgZdWN57vag== + dependencies: + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/settingregistry" "^3.0.3" + "@jupyterlab/statedb" "^3.0.3" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + "@types/react" "^17.0.0" + buffer "^5.6.0" + react "^17.0.1" + react-dom "^17.0.1" + sanitize-html "~1.27.4" + url "^0.11.0" + +"@jupyterlab/attachments@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-2.2.4.tgz#b41692d32482b68c2663dba648e12a27fe000f1b" + integrity sha512-nc0knPpb6ra67K2TZd67CR8Q9tRyvHMopoa3ndyb30wwopvercs3CQBsOTkaKPeosC/WnEt030zhEdz1u786Hg== + dependencies: + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/rendermime-interfaces" "^2.2.1" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" + +"@jupyterlab/cells@^2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-2.2.7.tgz#7d975ff124b1fbf2564593f797317a391002aeeb" + integrity sha512-/55s6Iud1wARdo2+HTrZNU4stRp/xKk5cpi5xBL8UwsJ1U0DuW58wNXK0QRnNhZtnKFu/athq+CaLdoxO3yNOw== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/attachments" "^2.2.4" + "@jupyterlab/codeeditor" "^2.2.5" + "@jupyterlab/codemirror" "^2.2.4" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/filebrowser" "^2.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/outputarea" "^2.2.4" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/dragdrop" "^1.5.1" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" + react "~16.9.0" + +"@jupyterlab/codeeditor@^2 || ^3", "@jupyterlab/codeeditor@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.0.5.tgz#20022ef1d76361b5ac0319b9ca23939e8f8c2521" + integrity sha512-O1eWSyP4k/MZgaQ94t5BIgE3YNGQL122BfNZpDEGaceNPZei94tLBaAnG4X0HWqn0/h+U9E2E1RlcX0gDluD1Q== + dependencies: + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/nbformat" "^3.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + +"@jupyterlab/codeeditor@^2.0.0", "@jupyterlab/codeeditor@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-2.2.5.tgz#0d5b639e2f3dad829cafa82f7881d8a6d031784c" + integrity sha512-ktc5e/30aabx0GwFBiiNOimtBoDx+ZFWkHeKg1ylpHASGgdQt6Km3E+TQARzFWbwkShyc7WFJySK1ES/uimDVg== + dependencies: + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/dragdrop" "^1.5.1" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/codemirror@^2 || ^3", "@jupyterlab/codemirror@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.0.5.tgz#40b23bbee462613828c7eac312a3083d08e0aaa0" + integrity sha512-rSdI6Y5Se2sEtrTZwRzyaD8Ls9OhZrf91KfhaF6uMeBHQXLb3KkN6diO0rB/Uj1oqoz+rTybFIfbbhAzzzj6UA== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/codeeditor" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/nbformat" "^3.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/statusbar" "^3.0.5" + "@jupyterlab/translation" "^3.0.5" + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + codemirror "~5.57.0" + react "^17.0.1" + +"@jupyterlab/codemirror@^2.0.0", "@jupyterlab/codemirror@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-2.2.4.tgz#e929e4b7e431fe40f30ec0310d99369ee6977fa8" + integrity sha512-arWSgzZxCyLSOGFQvplxnIRdWXJ+VD2skb9OX/Fa/uqknpeyMvGBX5RkaX+edCMjlRfytkWPKlxvMcPgeMVP/Q== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/codeeditor" "^2.2.5" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/statusbar" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/polling" "^1.1.1" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + codemirror "~5.53.2" + react "~16.9.0" + +"@jupyterlab/console@^2.0.0": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@jupyterlab/console/-/console-2.2.7.tgz#d7205aa661441a16d00a57b521cc31ee0f5aaa10" + integrity sha512-+7aWTkAS9ktlktbtg9omsyv0QR0UHLkF9SHZ4yImUPfUcHZQNrh7ISZN67gjdcGg3+xWhf+rhZ8DMP4kL2Nm3Q== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/cells" "^2.2.7" + "@jupyterlab/codeeditor" "^2.2.5" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/dragdrop" "^1.5.1" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/coreutils@^4 || ^5", "@jupyterlab/coreutils@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.0.3.tgz#fddf9d9c80c5c7bbb2dfa3e55569d6974a15fe34" + integrity sha512-PfdtV95/nSEwYjkaZltCTgumT22BekpSaPXF9oWtrCxC2Gc6zP8BxPhMdbPbx67y6FeO8vltr6dxOat93wZ4KA== + dependencies: + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/signaling" "^1.4.3" + minimist "~1.2.0" + moment "^2.24.0" + path-browserify "^1.0.0" + url-parse "~1.4.7" + +"@jupyterlab/coreutils@^4.0.0", "@jupyterlab/coreutils@^4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-4.2.5.tgz#332047e13e3fa62be4d875f186942d6bcbd70272" + integrity sha512-dkU9aD10vthsDulq1o5CEgIu0pe84v2Krxvfu3m4EYC+pSJmGHsxc3wmnb8MQocPiMJFB79brm6zJaXiy68uWA== + dependencies: + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" + minimist "~1.2.0" + moment "^2.24.0" + path-posix "~1.0.0" + url-parse "~1.4.7" + +"@jupyterlab/docmanager@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-2.2.4.tgz#46cabb9a914a303992a750caf3ba7bef8264388b" + integrity sha512-60xRy552l2g7qRpJ+qwVlT/J1isJZikf3g5U2e8qaBwabtb+6UcNGkwIGYr5NSYY8CqDZhtgDVrU/VTI3aOH+w== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/docregistry" "^2.2.4" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/statusbar" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + react "~16.9.0" + +"@jupyterlab/docmanager@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.0.6.tgz#3858805d28eade30716603f1960c020d1e542b9c" + integrity sha512-98/4neCQ5pMLwFkiVOdKnaogmNFiHNl4ibLH3+1af235z/PabywbqKa8sf9RIIN9H8V2H8I+V9L0jU4KG14ZTw== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/docregistry" "^3.0.6" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/statusbar" "^3.0.5" + "@jupyterlab/translation" "^3.0.5" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + +"@jupyterlab/docregistry@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-2.2.4.tgz#94c7eebab4f1637e46b46e96ce48324598e2da43" + integrity sha512-xmwptfXKr7QkpnNOaLVB/PIWaoZ8JpRCY/cKwQSXq42wkpY7D4iCJyX0iGsPqapJHYOq6g0BnQm195ETTYs/BQ== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/codeeditor" "^2.2.5" + "@jupyterlab/codemirror" "^2.2.4" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/rendermime-interfaces" "^2.2.1" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/docregistry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.0.6.tgz#07f5480435c1a8510b2397d4bdf9168aea2371fb" + integrity sha512-e4LEXudcgVWJsuzRnz4zg+lAd0gjsvShAQQQomT8ZYWv6wPTC2ci/6LPKQY9MyeVSw+9JEHIj8650BjmRc7oLA== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/codeeditor" "^3.0.5" + "@jupyterlab/codemirror" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/rendermime" "^3.0.6" + "@jupyterlab/rendermime-interfaces" "^3.0.5" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + +"@jupyterlab/filebrowser@^2.0.0", "@jupyterlab/filebrowser@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-2.2.5.tgz#91583e262ea56de9ce5d7881a7bf1ee6ba812150" + integrity sha512-Ysem2dnxAZ1L6BX31idUHptMIFTCEvDqCkhHKsLF6nnEgZT4ZB5UvyDCu8oWMVVmnMTl6F72ky/qOHV0WOl9rg== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/docmanager" "^2.2.4" + "@jupyterlab/docregistry" "^2.2.4" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/statedb" "^2.2.5" + "@jupyterlab/statusbar" "^2.2.4" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/domutils" "^1.1.7" + "@lumino/dragdrop" "^1.5.1" + "@lumino/messaging" "^1.3.3" + "@lumino/polling" "^1.1.1" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + react "~16.9.0" + +"@jupyterlab/filebrowser@^3.0.0": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.0.6.tgz#66cebfbe97292c9a05842b2efb534c3d4c7e5856" + integrity sha512-26H3XKtnmH8g2tRgAyoIWaL6FISIXkzzjk6rbPxCeKsdgwwv0fS8Eec9V2SjZoFGPjdYj/jnBhAdO57ZeVKWng== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/docmanager" "^3.0.6" + "@jupyterlab/docregistry" "^3.0.6" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/statedb" "^3.0.3" + "@jupyterlab/statusbar" "^3.0.5" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + +"@jupyterlab/git@^0.23.3": + version "0.23.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/git/-/git-0.23.3.tgz#a7081ec2e85db62cccc7557304c62908d5f7469e" + integrity sha512-ayGAKS0XXwysZnjfp6Nr4fZ90+d0ap4bq/JvVpu/5nB3ZJzhBHjkotkajlCzlOfmOVRg3Bhu2TPSH8XXfJOuAQ== + dependencies: + "@jupyterlab/application" "^2.0.0" + "@jupyterlab/apputils" "^2.0.0" + "@jupyterlab/codemirror" "^2.0.0" + "@jupyterlab/console" "^2.0.0" + "@jupyterlab/coreutils" "^4.0.0" + "@jupyterlab/filebrowser" "^2.0.0" + "@jupyterlab/mainmenu" "^2.0.0" + "@jupyterlab/nbformat" "^2.0.0" + "@jupyterlab/services" "^5.0.0" + "@jupyterlab/settingregistry" "^2.0.0" + "@jupyterlab/terminal" "^2.0.0" + "@jupyterlab/ui-components" "^2.0.0" + "@lumino/collections" "^1.2.3" + "@lumino/commands" "^1.11.0" + "@lumino/coreutils" "^1.5.0" + "@lumino/polling" "^1.0.4" + "@lumino/signaling" "^1.4.0" + "@lumino/widgets" "^1.11.1" + "@material-ui/core" "^4.8.2" + "@material-ui/icons" "^4.5.1" + "@material-ui/lab" "^4.0.0-alpha.54" + diff-match-patch "^1.0.4" + nbdime "^6.0.0" + react "~16.9.0" + react-dom "~16.9.0" + react-textarea-autosize "^7.1.2" + react-virtualized-auto-sizer "^1.0.2" + react-window "^1.8.5" + typestyle "^2.0.1" + +"@jupyterlab/mainmenu@^2.0.0": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-2.2.4.tgz#2bef0045986d47223271319d3a419626a3f96ab7" + integrity sha512-5EvpMJ+XTeI8YH3vNldCl/epjk8sEvEvKusuifUc1xXLqhX0YpPRL0ebg4NknX2qgeFag94KfQnnGs+pEoWUbg== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/mainmenu@^3.0.0": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/mainmenu/-/mainmenu-3.0.5.tgz#0376f3202bb61ef83077581ab1155dd2025578cd" + integrity sha512-2rziVmmr3/Sl84PzzGYfcGfvjB1tx9aLQVJF+iMvKLEWtPZAsObCVK0SZLPb1S/f942l6/tC87nNOMinIFujBw== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/widgets" "^1.16.1" + +"@jupyterlab/nbformat@^2 || ^3", "@jupyterlab/nbformat@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.0.3.tgz#da8a6fa3f05059d71bc07cb737ada56da01c7100" + integrity sha512-o7UMbRXQCGjHOoXhclov6JP/xSwFkx2Bv2qZldU5Yey+3RIcSFlnI8OcPHVZWmz+9xzdtXEmEhVnbErESO1fsg== + dependencies: + "@lumino/coreutils" "^1.5.3" + +"@jupyterlab/nbformat@^2.0.0", "@jupyterlab/nbformat@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-2.2.5.tgz#76df45471ba438dc22b3e43ea20fc1c93181d206" + integrity sha512-NXxNDMB0n0GJS634KkqZBAS9tAFkkLubv2YfPkWLOjlYHWPclknQfMLWpjn2VTSdj7C+xk6qqsv4YLziRn5BPA== + dependencies: + "@lumino/coreutils" "^1.4.2" + +"@jupyterlab/observables@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-3.2.5.tgz#332acea88e5b9bfc1e7040750f929cad7dbdb9a5" + integrity sha512-21y72DScc4EsfcPpVgm4VLUcUWi2AvHuBOtrjPpNxrvrl3hNqTVNOOtX1lEeqVOzdWEJAJ7jeEe96rTkY5tptQ== + dependencies: + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + +"@jupyterlab/observables@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.0.3.tgz#0fc5672468b32e8f4a98987454d57e0644104877" + integrity sha512-OrAO201PkaFRJ+hWQB5Ozasnp/TkafMC/hOYcThWEQ9SFZEyanmTJIJh0hiHBmWmCorH2ocgTrp0csCzqVXc5w== + dependencies: + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + +"@jupyterlab/outputarea@^2 || ^3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.0.6.tgz#101c650401859e0b4275b26f6cf6503418a5b4c0" + integrity sha512-5joZ/gpGMRP0sUn5GEHGchcOMaUMa1OxvfoMNQUWLgRMVSo/RiIS1HFgwCMGg9pWPqZQS/jkcSpyyVPcNbbPzw== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/nbformat" "^3.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/rendermime" "^3.0.6" + "@jupyterlab/rendermime-interfaces" "^3.0.5" + "@jupyterlab/services" "^6.0.5" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + resize-observer-polyfill "^1.5.1" + +"@jupyterlab/outputarea@^2.0.0", "@jupyterlab/outputarea@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-2.2.4.tgz#5828f9440f4624073aa12a99586cd4944fb53037" + integrity sha512-eZjT1ee6IgghIZnrXPUggYQ8xeLoSpNX+4teFKXJEEWaXSCtwqSzrTxYWpblmwE0Cmc0LBwUJnAdVeg/OFcG2w== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/rendermime" "^2.2.4" + "@jupyterlab/rendermime-interfaces" "^2.2.1" + "@jupyterlab/services" "^5.2.5" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/rendermime-interfaces@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-2.2.1.tgz#7794b9fd13151b8b4fdc03b1dd45c59f67c7f5b3" + integrity sha512-tjwt3dFfjguV3AeLKhIaCACzaTr2I6F34c4ArJ95WCCRx2DmrRMYFgppLlBo9rKa7BiYeQWZD/lYWvL+GnQZEA== + dependencies: + "@lumino/coreutils" "^1.4.2" + "@lumino/widgets" "^1.11.1" + +"@jupyterlab/rendermime-interfaces@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.0.5.tgz#86e7abd726c0baf485f555e02dc42af151ca9888" + integrity sha512-LrG7B//izECP5LoouuSLa3WIpUhCBVjBDrqFXd+vMsW3hUF8IGc8Ngooj9dmyBn905/uIt6/JVJGB25qh3ed1w== + dependencies: + "@jupyterlab/translation" "^3.0.5" + "@lumino/coreutils" "^1.5.3" + "@lumino/widgets" "^1.16.1" + +"@jupyterlab/rendermime@^2 || ^3", "@jupyterlab/rendermime@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.0.6.tgz#1c8759f21c9dcd0f45ff6b7cfb46350c85885ec2" + integrity sha512-lpiRPQrEVbze+2brvsgCzBQdTeI0piF0dCOAokwDFLb3WAgXxXh8g+voJ+3I41P5LeMoranwV4y/z261nMMk9Q== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/codemirror" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/nbformat" "^3.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/rendermime-interfaces" "^3.0.5" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/translation" "^3.0.5" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + lodash.escape "^4.0.1" + marked "^2.0.0" + +"@jupyterlab/rendermime@^2.0.0", "@jupyterlab/rendermime@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-2.2.4.tgz#4509450539c9e440a28fd9d5318a59e65cc8fce2" + integrity sha512-XhBsUQdyidYrNY71+TZUGJSg/mf3kM90lSwIw+DgHSJJz/BXO5bSyKP5XnTSeKYoz40Ko1PCyRyCmKpmI51J6A== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/codemirror" "^2.2.4" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/rendermime-interfaces" "^2.2.1" + "@jupyterlab/services" "^5.2.5" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/messaging" "^1.3.3" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + lodash.escape "^4.0.1" + marked "^0.8.0" + +"@jupyterlab/services@^5 || ^6", "@jupyterlab/services@^6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.0.5.tgz#06b952d148c098d6befed591bfa5d63518ab96d4" + integrity sha512-hOD9qOqDthpKmlkUoUV+1bj7Uxbe7Pe6nQbftgwfX1rXLgIJjNHkiCce2fkIiSqQh/dd3SFcu3MouTpJ6plglw== + dependencies: + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/nbformat" "^3.0.3" + "@jupyterlab/observables" "^4.0.3" + "@jupyterlab/settingregistry" "^3.0.3" + "@jupyterlab/statedb" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/polling" "^1.3.3" + "@lumino/signaling" "^1.4.3" + node-fetch "^2.6.0" + ws "^7.2.0" + +"@jupyterlab/services@^5.0.0", "@jupyterlab/services@^5.2.5": + version "5.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-5.2.5.tgz#528a16091ddbf6c445bb7f85168e9b02bcb386d8" + integrity sha512-vhWt+rbDUe3SRvv1GD1WOjsDNhDz2lg33xdsT/+WObZRqeQ9CgzUF2K8Zah9UaiyGmTM3tpUUCTIQ62hNi5wrA== + dependencies: + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/nbformat" "^2.2.5" + "@jupyterlab/observables" "^3.2.5" + "@jupyterlab/settingregistry" "^2.2.5" + "@jupyterlab/statedb" "^2.2.5" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/polling" "^1.1.1" + "@lumino/signaling" "^1.3.5" + node-fetch "^2.6.0" + ws "^7.2.0" + +"@jupyterlab/settingregistry@^2.0.0", "@jupyterlab/settingregistry@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-2.2.5.tgz#665d2f5bfb601acd7020e2868f8bba1513d8c9cf" + integrity sha512-LoKa27F1WNmeMT168TYo+MgjsYsVawKCZbmU7OGQS6h6J5dx0xQBQvE38NkhCsjnPYyUv4tYmGIFyHQceCDDaA== + dependencies: + "@jupyterlab/statedb" "^2.2.5" + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/signaling" "^1.3.5" + ajv "^6.10.2" + json5 "^2.1.1" + +"@jupyterlab/settingregistry@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.0.3.tgz#ec7943013c1f433ead920c7d9e67aed713461ef0" + integrity sha512-mxvP4AMi62u6ekarhgCefJeyTV6Z8fnnKb0psvvnWikdSgQT6x7OngV5emuo2N02IXkUqXxM1aHRwYQsLUAbOQ== + dependencies: + "@jupyterlab/statedb" "^3.0.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/signaling" "^1.4.3" + ajv "^6.12.3" + json5 "^2.1.1" + +"@jupyterlab/statedb@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-2.2.5.tgz#2df5ff18d7417c342aa9651281860cabeffc8ee9" + integrity sha512-+hW1bQ6+p18SNZvjM7hZMPv7odkLWkAp17qoRPtky3j+CFnZW7m49U0XA8QezjLBiX9QdHFYgoUhIZEmrKcPDg== + dependencies: + "@lumino/commands" "^1.10.1" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/properties" "^1.1.6" + "@lumino/signaling" "^1.3.5" + +"@jupyterlab/statedb@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.0.3.tgz#3bc36f3a439f514fd28b9c0543e0acac1205c704" + integrity sha512-j+WtWyLszzmlsLEkcEhbc+TAMdc+6X+CCeBSFgOK9GN9RSp+pe9tGU/Y4PS0xPSvUwLSqv7RG0Oj0+/1bmNwlw== + dependencies: + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + +"@jupyterlab/statusbar@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-2.2.4.tgz#e998d93440879985b8e339da03d47271ac054618" + integrity sha512-Wyhd5EZYd5Zs4oAsnG1Dt57wE4jUajkGxwr4SSotXXzccmJOLiZsvmNxPuftcZJHqbisG7EweaZXVlKMnb3SsA== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/codeeditor" "^2.2.5" + "@jupyterlab/coreutils" "^4.2.5" + "@jupyterlab/services" "^5.2.5" + "@jupyterlab/ui-components" "^2.2.4" + "@lumino/algorithm" "^1.2.3" + "@lumino/coreutils" "^1.4.2" + "@lumino/disposable" "^1.3.5" + "@lumino/messaging" "^1.3.3" + "@lumino/polling" "^1.1.1" + "@lumino/signaling" "^1.3.5" + "@lumino/widgets" "^1.11.1" + csstype "~2.6.9" + react "~16.9.0" + typestyle "^2.0.4" + +"@jupyterlab/statusbar@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.0.5.tgz#d4806d64b5f84debc777052acdfcec780c9777f8" + integrity sha512-a6ZZ3xihjpEaoyF9Aoz+eT/mVwedCdBwuMv44+v+r/zuhPyTys4FdihYw71yB6F5SPrhlT+6TlajndDC+DJiUw== + dependencies: + "@jupyterlab/apputils" "^3.0.5" + "@jupyterlab/codeeditor" "^3.0.5" + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/translation" "^3.0.5" + "@jupyterlab/ui-components" "^3.0.4" + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/messaging" "^1.4.3" + "@lumino/signaling" "^1.4.3" + "@lumino/widgets" "^1.16.1" + csstype "~3.0.3" + react "^17.0.1" + typestyle "^2.0.4" + +"@jupyterlab/terminal@^2.0.0": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/terminal/-/terminal-2.2.4.tgz#700fe5fef0468df9d65a2825acc025743aad8755" + integrity sha512-d+pVgHMnpVOFhSdkCD6tSi8Xb9R9HuTs3XDLENdM8CEL/9eX7uVZLpcMzvSd9NxHYS2RiAgbQrvEPZVGhF79Iw== + dependencies: + "@jupyterlab/apputils" "^2.2.6" + "@jupyterlab/services" "^5.2.5" + "@lumino/coreutils" "^1.4.2" + "@lumino/domutils" "^1.1.7" + "@lumino/messaging" "^1.3.3" + "@lumino/widgets" "^1.11.1" + xterm "~4.2.0" + xterm-addon-fit "~0.3.0" + +"@jupyterlab/translation@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.0.5.tgz#8706f48e6989d4aaa8613fa88e348a84ae87eade" + integrity sha512-/ehpYkuUk4RXdKM8WsTW7BTsD4G3FBCviva4nUQ9gCmteySrQpBNhgfCRhG3aFCUKFo28B1BP1s5rza4A7lf6g== + dependencies: + "@jupyterlab/coreutils" "^5.0.3" + "@jupyterlab/services" "^6.0.5" + "@jupyterlab/statedb" "^3.0.3" + "@lumino/coreutils" "^1.5.3" + +"@jupyterlab/ui-components@^2.0.0", "@jupyterlab/ui-components@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-2.2.4.tgz#693b1fe48d3300de17a7b2b435ea85302cee8c6c" + integrity sha512-8OqmlDIlf3OHrKqTGHLBbzY6gDyTGT91o5LSyLuOBhIF2TvPorBYnxWk883pO7n4rSVhZbafBb0U3Hl3X9uT3Q== + dependencies: + "@blueprintjs/core" "^3.22.2" + "@blueprintjs/select" "^3.11.2" + "@jupyterlab/coreutils" "^4.2.5" + "@lumino/coreutils" "^1.4.2" + "@lumino/signaling" "^1.3.5" + "@lumino/virtualdom" "^1.6.1" + "@lumino/widgets" "^1.11.1" + react "~16.9.0" + react-dom "~16.9.0" + typestyle "^2.0.4" + +"@jupyterlab/ui-components@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.0.4.tgz#354b222ef141746e18b1bfda83a5219a9213e8d3" + integrity sha512-6+a5tYQn8HhDNELvQsA190CrgYIJpnKKzRzi5cs8IO2yila+mTHO+xaX2ZOs7jnEbv9dOqdxopjWHRMiKvgGKA== + dependencies: + "@blueprintjs/core" "^3.36.0" + "@blueprintjs/select" "^3.15.0" + "@jupyterlab/coreutils" "^5.0.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + react "^17.0.1" + react-dom "^17.0.1" + typestyle "^2.0.4" + +"@lumino/algorithm@^1.1.2", "@lumino/algorithm@^1.2.3", "@lumino/algorithm@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@lumino/algorithm/-/algorithm-1.3.3.tgz#fdf4daa407a1ce6f233e173add6a2dda0c99eef4" + integrity sha512-I2BkssbOSLq3rDjgAC3fzf/zAIwkRUnAh60MO0lYcaFdSGyI15w4K3gwZHGIO0p9cKEiNHLXKEODGmOjMLOQ3g== + +"@lumino/application@^1.13.1", "@lumino/application@^1.8.4": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.15.0.tgz#8b7e5142bc6d38d1300164507e0a214a55ea6d05" + integrity sha512-W/12+UFk1oBdJ793L3NegQvt0T355k64fPmDVzPhM48TW8vM/0tDc+zBx1KShn52eRMTrVBDc2cG5t6C5/XF1w== + dependencies: + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/widgets" "^1.18.0" + +"@lumino/collections@^1.2.3", "@lumino/collections@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@lumino/collections/-/collections-1.3.3.tgz#fa95c826b93ee6e24b3c4b07c8f595312525f8cc" + integrity sha512-vN3GSV5INkgM6tMLd+WqTgaPnQNTY7L/aFUtTOC8TJQm+vg1eSmR4fNXsoGHM3uA85ctSJThvdZr5triu1Iajg== + dependencies: + "@lumino/algorithm" "^1.3.3" + +"@lumino/commands@^1.10.1", "@lumino/commands@^1.11.0", "@lumino/commands@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@lumino/commands/-/commands-1.12.0.tgz#63a744d034d8bc524455e47f06c0ac5f2eb6ec38" + integrity sha512-5TFlhDzZk1X8rCBjhh0HH3j6CcJ03mx2Pd/1rGa7MB5R+3+yYYk+gTlfHRqsxdehNRmiISaHRSrMnW8bynW7ZQ== + dependencies: + "@lumino/algorithm" "^1.3.3" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/keyboard" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + +"@lumino/coreutils@^1.3.0", "@lumino/coreutils@^1.4.2", "@lumino/coreutils@^1.5.0", "@lumino/coreutils@^1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.5.3.tgz#89dd7b7f381642a1bf568910c5b62c7bde705d71" + integrity sha512-G72jJ6sgOwAUuilz+cri7LpHIJxllK+qz+YZUC3fyyWHK7oRlZemcc43jZAVE+tagTdMxKYSQWNIVzM5lI8sWw== + +"@lumino/disposable@^1.3.5", "@lumino/disposable@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@lumino/disposable/-/disposable-1.4.3.tgz#0a69b15cc5a1e506f93bb390ac44aae338da3c36" + integrity sha512-zKQ9N2AEGcYpG6PJkeMWQXvoXU9w1ocji78z+fboM/SmSgtOIVGeQt3fZeldymf0XrlOPpNXs1ZFg54yWUMnXA== + dependencies: + "@lumino/algorithm" "^1.3.3" + "@lumino/signaling" "^1.4.3" + +"@lumino/domutils@^1.1.7", "@lumino/domutils@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-1.2.3.tgz#7e8e549a97624bfdbd4dd95ae4d1e30b87799822" + integrity sha512-SEi8WZSy+DWMkL5CfAY78MHbi3x83AVmRFxjs9+A6qsFPde+Hr1I4DNtLsSDmfAWsobHHgBnjyNp2ZkQEq0IEA== + +"@lumino/dragdrop@^1.3.0", "@lumino/dragdrop@^1.5.1", "@lumino/dragdrop@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.7.1.tgz#1466206d43a64dadca383e0b9a87cc8a14c8c59b" + integrity sha512-IeSSOTmpqBSWz+EVsbGVeHe/KIaHaUsQXZ4BJCEbCKgNGHbqMfUOtlneiKq7rEhZGF4wYs7gWWjNhMVZbUGO9Q== + dependencies: + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + +"@lumino/keyboard@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@lumino/keyboard/-/keyboard-1.2.3.tgz#594c73233636d85ed035b1a37a095acf956cfe8c" + integrity sha512-ibS0sz0VABeuJXx2JVSz36sUBMUOcQNCNPybVhwzN/GkJFs0dnDKluMu+3Px0tkB2y33bGPZU/RLZY1Xj/faEA== + +"@lumino/messaging@^1.3.3", "@lumino/messaging@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@lumino/messaging/-/messaging-1.4.3.tgz#75a1901f53086c7c0e978a63cb784eae5cc59f3f" + integrity sha512-wa2Pj2KOuLNLS2n0wVBzUVFGbvjL1FLbuCOAUEYfN6xXVleqqtGGzd08uTF7ebu01KCO3VQ38+dkvoaM/C2qPw== + dependencies: + "@lumino/algorithm" "^1.3.3" + "@lumino/collections" "^1.3.3" + +"@lumino/polling@^1.0.4", "@lumino/polling@^1.1.1", "@lumino/polling@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@lumino/polling/-/polling-1.3.3.tgz#6336638cb9ba2f4f4c3ef2529c7f260abbd25148" + integrity sha512-uMRi6sPRnKW8m38WUY3qox1jxwzpvceafUbDJATCwyrZ48+YoY5Fxfmd9dqwioHS1aq9np5c6L35a9ZGuS0Maw== + dependencies: + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/signaling" "^1.4.3" + +"@lumino/properties@^1.1.6", "@lumino/properties@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@lumino/properties/-/properties-1.2.3.tgz#10675e554e4a9dcc4022de01875fd51f33e2c785" + integrity sha512-dbS9V/L+RpQoRjxHMAGh1JYoXaLA6F7xkVbg/vmYXqdXZ7DguO5C3Qteu9tNp7Z7Q31TqFWUCrniTI9UJiJCoQ== + +"@lumino/signaling@^1.2.2", "@lumino/signaling@^1.3.5", "@lumino/signaling@^1.4.0", "@lumino/signaling@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@lumino/signaling/-/signaling-1.4.3.tgz#d29f7f542fdcd70b91ca275d3ca793ae21cebf6a" + integrity sha512-6clc8SMcH0tyKXIX31xw6sxjxJl5hj4YRd1DTHTS62cegQ0FkO8JjJeuv+Nc1pgTg6nEAf65aSOHpUdsFHDAvQ== + dependencies: + "@lumino/algorithm" "^1.3.3" + +"@lumino/virtualdom@^1.6.1", "@lumino/virtualdom@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@lumino/virtualdom/-/virtualdom-1.8.0.tgz#42ea5778e3870e4961ea36697b28aab997c75fa6" + integrity sha512-X/1b8b7TxB9tb4+xQiS8oArcA/AK7NBZrsg2dzu/gHa3JC45R8nzQ+0tObD8Nd0gF/e9w9Ps9M62rLfefcbbKw== + dependencies: + "@lumino/algorithm" "^1.3.3" + +"@lumino/widgets@^1.11.1", "@lumino/widgets@^1.16.1", "@lumino/widgets@^1.18.0", "@lumino/widgets@^1.6.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.18.0.tgz#fa8ce727126a1e91b9f3ba78e08425115046e3ac" + integrity sha512-8i10njkGjctuXrbaoV2dRI2rVUaL7eA5djtHj36pX9cALwciEPHNecF6hoZXmQ4ODv6LTwhr87Uz8LT4Aan77A== + dependencies: + "@lumino/algorithm" "^1.3.3" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/keyboard" "^1.2.3" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + +"@material-ui/core@^4.8.2": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.3.tgz#f22e41775b0bd075e36a7a093d43951bf7f63850" + integrity sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.11.3" + "@material-ui/system" "^4.11.3" + "@material-ui/types" "^5.1.0" + "@material-ui/utils" "^4.11.2" + "@types/react-transition-group" "^4.2.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" + +"@material-ui/icons@^4.5.1": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.11.2.tgz#b3a7353266519cd743b6461ae9fdfcb1b25eb4c5" + integrity sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ== + dependencies: + "@babel/runtime" "^7.4.4" + +"@material-ui/lab@^4.0.0-alpha.54": + version "4.0.0-alpha.57" + resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a" + integrity sha512-qo/IuIQOmEKtzmRD2E4Aa6DB4A87kmY6h0uYhjUmrrgmEAgbbw9etXpWPVXuRK6AGIQCjFzV6WO2i21m1R4FCw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + +"@material-ui/styles@^4.11.3": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2" + integrity sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.8.0" + "@material-ui/types" "^5.1.0" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" + +"@material-ui/system@^4.11.3": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143" + integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + csstype "^2.5.2" + prop-types "^15.7.2" + +"@material-ui/types@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== + +"@material-ui/utils@^4.11.2": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a" + integrity sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + +"@microsoft/tsdoc@^0.12.9": + version "0.12.24" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098" + integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg== + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/cheerio@*": + version "0.22.24" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.24.tgz#fcee47074aa221ac0f31ede0c72c0800bf3bf0aa" + integrity sha512-iKXt/cwltGvN06Dd6zwQG1U35edPwId9lmcSeYfcxSNvvNg4vysnFB+iBQNjj06tSVV7MBj0GWMQ7dwb4Z+p8Q== + dependencies: + "@types/node" "*" + +"@types/codemirror@^0.0.76": + version "0.0.76" + resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.76.tgz#c52719878056a216bc05889b46a41d4eb1434423" + integrity sha512-k/hpUb+Ebyn9z63qM8IbsRiW0eYHZ+pi/1e2reGzBKAZJzkjWmNTXXqLLiNv5d9ekyxkajxRBr5Hu2WZq/nokw== + dependencies: + "@types/tern" "*" + +"@types/d3-color@^1.2.2": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.1.tgz#0d9746c84dfef28807b2989eed4f37b2575e1f33" + integrity sha512-xkPLi+gbgUU9ED6QX4g6jqYL2KCB0/3AlM+ncMGqn49OgH0gFMY/ITGqPF8HwEiLzJaC+2L0I+gNwBgABv1Pvg== + +"@types/dom4@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/dom4/-/dom4-2.0.1.tgz#506d5781b9bcab81bd9a878b198aec7dee2a6033" + integrity sha512-kSkVAvWmMZiCYtvqjqQEwOmvKwcH+V4uiv3qPQ8pAh1Xl39xggGEo8gHUqV4waYGHezdFw0rKBR8Jt0CrQSDZA== + +"@types/enzyme@^3.9.3": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.8.tgz#ad7ac9d3af3de6fd0673773123fafbc63db50d42" + integrity sha512-vlOuzqsTHxog6PV79+tvOHFb6hq4QZKMq1lLD9MaWD1oec2lHTKndn76XOpSwCA0oFTaIbKVPrgM3k78Jjd16g== + dependencies: + "@types/cheerio" "*" + "@types/react" "*" + +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" + integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.46": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^26.0.10": + version "26.0.20" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" + integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/lodash@^4.14.135": + version "4.14.168" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" + integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== + +"@types/node@*": + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== + +"@types/node@^12.6.2": + version "12.20.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.4.tgz#73687043dd00fcb6962c60fbf499553a24d6bdf2" + integrity sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@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.2.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" + integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/react-dom@^16.8.4": + version "16.9.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.11.tgz#752e223a1592a2c10f2668b215a0e0667f4faab1" + integrity sha512-3UuR4MoWf5spNgrG6cwsmT9DdRghcR4IDFOzNZ6+wcmacxkFykcb5ji0nNVm9ckBT4BCxvCrJJbM4+EYsEEVIg== + dependencies: + "@types/react" "^16" + +"@types/react-resize-detector@^4.0.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/react-resize-detector/-/react-resize-detector-4.2.0.tgz#ee8802e25cfb34439aa7f52626932ea62dc5792e" + integrity sha512-y5PPThHUrBGxMhLDNn0BRWglKr84y+gQHvzkyKxF8aW3pox4IySC33V8AOu7ReS0JR1X1dKQgWeF8IOkGrbeBg== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.2.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.1.tgz#e1a3cb278df7f47f17b5082b1b3da17170bd44b1" + integrity sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.0": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.2.tgz#3de24c4efef902dd9795a49c75f760cbe4f7a5a8" + integrity sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/react@^16": + version "16.14.4" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.4.tgz#365f6a1e117d1eec960ba792c7e1e91ecad38e6f" + integrity sha512-ETj7GbkPGjca/A4trkVeGvoIakmLV6ZtX3J8dcmOpzKzWVybbrOxanwaIPG71GZwImoMDY6Fq4wIe34lEqZ0FQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/react@~16.9.16": + version "16.9.56" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.56.tgz#ea25847b53c5bec064933095fc366b1462e2adf0" + integrity sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/resize-observer-browser@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.5.tgz#36d897708172ac2380cd486da7a3daf1161c1e23" + integrity sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/tern@*": + version "0.23.3" + resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" + integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== + dependencies: + "@types/estree" "*" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.8.1": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" + integrity sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q== + dependencies: + "@typescript-eslint/experimental-utils" "4.15.2" + "@typescript-eslint/scope-manager" "4.15.2" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.15.2", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz#5efd12355bd5b535e1831282e6cf465b9a71cf36" + integrity sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.8.1": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.2.tgz#c804474321ef76a3955aec03664808f0d6e7872e" + integrity sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q== + dependencies: + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz#5725bda656995960ae1d004bfd1cd70320f37f4f" + integrity sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + +"@typescript-eslint/types@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.2.tgz#04acf3a2dc8001a88985291744241e732ef22c60" + integrity sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ== + +"@typescript-eslint/typescript-estree@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz#c2f7a1e94f3428d229d5ecff3ead6581ee9b62fa" + integrity sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz#3d1c7979ce75bf6acf9691109bd0d6b5706192b9" + integrity sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg== + dependencies: + "@typescript-eslint/types" "4.15.2" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== + +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== + +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== + +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== + +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== + +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" + +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" + +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" + +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== + dependencies: + "@webassemblyjs/ast" "1.11.0" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" + integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== + +"@webpack-cli/info@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" + integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" + integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.4: + version "8.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" + integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== + +airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== + dependencies: + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" + object.assign "^4.1.0" + object.entries "^1.1.2" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.13.1" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^7.0.2: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.find@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" + integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.4" + +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-plugin-emotion@^10.0.27: + version "10.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" + integrity sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.16" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.0.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.14.5: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-lite@^1.0.30001181: + version "1.0.30001192" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz#b848ebc0ab230cf313d194a4775a30155d50ae40" + integrity sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +cheerio-select-tmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" + integrity sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ== + dependencies: + css-select "^3.1.2" + css-what "^4.0.0" + domelementtype "^2.1.0" + domhandler "^4.0.0" + domutils "^2.4.4" + +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.5" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.5.tgz#88907e1828674e8f9fee375188b27dadd4f0fa2f" + integrity sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw== + dependencies: + cheerio-select-tmp "^0.1.0" + dom-serializer "~1.2.0" + domhandler "^4.0.0" + entities "~2.1.0" + htmlparser2 "^6.0.0" + parse5 "^6.0.0" + parse5-htmlparser2-tree-adapter "^6.0.0" + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clsx@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +codemirror@~5.53.2: + version "5.53.2" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.53.2.tgz#9799121cf8c50809cca487304e9de3a74d33f428" + integrity sha512-wvSQKS4E+P8Fxn/AQ+tQtJnF1qH5UOlxtugFLpubEZ5jcdH2iXTVinb+Xc/4QjshuOxRm4fUsU2QPF1JJKiyXA== + +codemirror@~5.57.0: + version "5.57.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.57.0.tgz#d26365b72f909f5d2dbb6b1209349ca1daeb2d50" + integrity sha512-WGc6UL7Hqt+8a6ZAsj/f1ApQl3NPvHY/UQSzG6fB6l4BjExgVdhFaxd7mRTw1UCiYe/6q86zHP+kfvBQcZGvUg== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + 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" + +cross-fetch@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== + dependencies: + node-fetch "2.6.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== + dependencies: + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" + +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" + integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== + +csstype@^2.5.2, csstype@^2.5.7, csstype@~2.6.9: + version "2.6.16" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.16.tgz#544d69f547013b85a40d15bff75db38f34fe9c39" + integrity sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q== + +csstype@^3.0.2, csstype@~3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== + +d3-color@^1.2.8: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-match-patch@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + +dom-helpers@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" + integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1, dom-serializer@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + entities "^2.0.0" + +dom4@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/dom4/-/dom4-2.1.6.tgz#c90df07134aa0dbd81ed4d6ba1237b36fc164770" + integrity sha512-JkCVGnN4ofKGbjf5Uvc8mmxaATIErKQKSgACdBXpsQ3fY6DlIpAyWfiBSrGkttATssbDCp3psiAKWXk5gmjycA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domhandler@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" + integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-to-chromium@^1.3.649: + version "1.3.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.673.tgz#b4f81c930b388f962b7eba20d0483299aaa40913" + integrity sha512-ms+QR2ckfrrpEAjXweLx6kNCbpAl66DcW//3BZD4BV5KhUgr0RZRce1ON/9J3QyA3JO28nzgb5Xv8DnPr05ILg== + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" + integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +envinfo@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + +enzyme-adapter-react-16@^1.13.2: + version "1.15.6" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" + integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== + dependencies: + enzyme-adapter-utils "^1.14.0" + enzyme-shallow-equal "^1.0.4" + has "^1.0.3" + object.assign "^4.1.2" + object.values "^1.1.2" + prop-types "^15.7.2" + react-is "^16.13.1" + react-test-renderer "^16.0.0-0" + semver "^5.7.0" + +enzyme-adapter-utils@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" + integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== + dependencies: + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.3" + has "^1.0.3" + object.assign "^4.1.2" + object.fromentries "^2.0.3" + prop-types "^15.7.2" + semver "^5.7.1" + +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" + integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== + dependencies: + has "^1.0.3" + object-is "^1.1.2" + +enzyme@^3.9.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== + dependencies: + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" + has "^1.0.3" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.7.0" + object-is "^1.0.2" + object.assign "^4.1.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.2.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.4: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-module-lexer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.0.tgz#21f4181cc8b7eee06855f1c59e6087c7bc4f77b0" + integrity sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ== + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-jest@^24.1.3: + version "24.1.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz#1e866a9f0deac587d0a3d5d7cefe99815a580de2" + integrity sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-prettier@^3.1.4: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react@^7.21.5: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.14.0: + version "7.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" + integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.3.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +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== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-versions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== + dependencies: + semver-regex "^3.1.2" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +free-style@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/free-style/-/free-style-3.1.0.tgz#4e2996029534e6b1731611d843437b9e2f473f08" + integrity sha512-vJujYSIyT30iDoaoeigNAxX4yB1RUrh+N2ZMhIElMr3BvCuGXOw7XNJMEEJkDUeamK2Rnb/IKFGKRKlTWIGRWA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.1.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.4.tgz#e4ea839b9d3672ae99d0efd9f38d9191c5eaac83" + integrity sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +functions-have-names@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +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" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^6.0.0: + version "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-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-element-map@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.0.tgz#fcf226985d7111e6c2b958169312ec750d02f0d3" + integrity sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg== + dependencies: + array-filter "^1.0.0" + call-bind "^1.0.2" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +htmlparser2@^3.10.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +htmlparser2@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.0.tgz#c2da005030390908ca4c91e5629e418e0665ac01" + integrity sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.4.4" + entities "^2.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +husky@^4.2.5: + version "4.3.8" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" + integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^4.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^5.0.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indefinite-observable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" + integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== + dependencies: + symbol-observable "1.2.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-boolean-object@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-fetch-mock@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" + integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== + dependencies: + cross-fetch "^3.0.4" + promise-polyfill "^8.1.3" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^26.4.2: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + dependencies: + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/json-source-map/-/json-source-map-0.6.1.tgz#e0b1f6f4ce13a9ad57e2ae165a24d06e62c79a0f" + integrity sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^2.1.1, json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jss-plugin-camel-case@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz#427b24a9951b4c2eaa7e3d5267acd2e00b0934f9" + integrity sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.5.1" + +jss-plugin-default-unit@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz#2be385d71d50aee2ee81c2a9ac70e00592ed861b" + integrity sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.5.1" + +jss-plugin-global@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz#0e1793dea86c298360a7e2004721351653c7e764" + integrity sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.5.1" + +jss-plugin-nested@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz#8753a80ad31190fb6ac6fdd39f57352dcf1295bb" + integrity sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.5.1" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz#ab1c167fd2d4506fb6a1c1d66c5f3ef545ff1cd8" + integrity sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.5.1" + +jss-plugin-rule-value-function@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz#37f4030523fb3032c8801fab48c36c373004de7e" + integrity sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.5.1" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz#45a183a3a0eb097bdfab0986b858d99920c0bbd8" + integrity sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.5.1" + +jss@10.5.1, jss@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.5.1.tgz#93e6b2428c840408372d8b548c3f3c60fa601c40" + integrity sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + indefinite-observable "^2.0.1" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= + +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.mergewith@^4.6.1: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +marked@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" + integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw== + +marked@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.0.tgz#9662bbcb77ebbded0662a7be66ff929a8611cee5" + integrity sha512-NqRSh2+LlN2NInpqTQnS614Y/3NkVMFFU6sJlRFEpxJ/LHuK/qJECH7/fXZjk4VZstPW/Pevjil/VtSONsLc7Q== + +"memoize-one@>=3.1.1 <6": + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +mime-db@1.46.0: + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +moment@^2.24.0: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +monaco-editor@*, monaco-editor@^0.22.3: + version "0.22.3" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.22.3.tgz#69b42451d3116c6c08d9b8e052007ff891fd85d7" + integrity sha512-RM559z2CJbczZ3k2b+ouacMINkAYWwRit4/vs0g2X/lkYefDiu0k2GmgWjAuiIpQi+AqASPOKvXNmYc8KUSvVQ== + +moo@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nbdime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nbdime/-/nbdime-6.0.0.tgz#722f18e06a072a457f831888e7758b0eec54ddd1" + integrity sha512-N3Ch/5VxnKNYhSh9+dlkM/LRhGMBKUQUhH1BH/nyJoQdmoQyM93fwYbWDuf6ehdk7F3BkoRPHWiw7HrWJJAecA== + dependencies: + "@jupyterlab/codeeditor" "^2.0.0" + "@jupyterlab/codemirror" "^2.0.0" + "@jupyterlab/coreutils" "^4.0.0" + "@jupyterlab/nbformat" "^2.0.0" + "@jupyterlab/outputarea" "^2.0.0" + "@jupyterlab/rendermime" "^2.0.0" + "@jupyterlab/services" "^5.0.0" + "@lumino/algorithm" "^1.1.2" + "@lumino/coreutils" "^1.3.0" + "@lumino/dragdrop" "^1.3.0" + "@lumino/signaling" "^1.2.2" + "@lumino/widgets" "^1.6.0" + json-stable-stringify "^1.0.1" + +nbdime@^6.1.0-beta.1: + version "6.1.0-beta.1" + resolved "https://registry.yarnpkg.com/nbdime/-/nbdime-6.1.0-beta.1.tgz#3b925f1ef3f028a25ae851e5cd5e7f3c50fc2304" + integrity sha512-Rrap6tRT1GDT4OZ1dbt3FG9oWA458LvuTKqR0zkdzREg1pGnkidpVshE7xoPsshpCXmRrqvGOQG3lSSygFPnDA== + dependencies: + "@jupyterlab/codeeditor" "^2 || ^3" + "@jupyterlab/codemirror" "^2 || ^3" + "@jupyterlab/coreutils" "^4 || ^5" + "@jupyterlab/nbformat" "^2 || ^3" + "@jupyterlab/outputarea" "^2 || ^3" + "@jupyterlab/rendermime" "^2 || ^3" + "@jupyterlab/services" "^5 || ^6" + "@lumino/algorithm" "^1.1.2" + "@lumino/coreutils" "^1.3.0" + "@lumino/dragdrop" "^1.3.0" + "@lumino/signaling" "^1.2.2" + "@lumino/widgets" "^1.6.0" + json-stable-stringify "^1.0.1" + +nearley@^2.7.10: + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@2.6.1, node-fetch@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.70: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" + integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0, object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.2, object-is@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.1, object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.2, object.fromentries@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.1, object.values@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + 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== + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-srcset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" + integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.0, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-posix@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-posix/-/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f" + integrity sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +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" + +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== + +popper.js@^1.14.4, popper.js@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss@^7.0.27, postcss@^7.0.5: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== + +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-polyfill@^8.1.3: + version "8.2.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0" + integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g== + +prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== + dependencies: + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" + +prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" + integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-dom@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.1" + +react-dom@~16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.9.0.tgz#5e65527a5e26f22ae3701131bcccaee9fb0d3962" + integrity sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.15.0" + +react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-monaco-editor@^0.42.0: + version "0.42.0" + resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.42.0.tgz#f754842a8c1ac5b14360b46fd8e17eff49882fab" + integrity sha512-LMgiY6XU1To7tjPoMg497eST/Od01QOaUYr/tUUan4GRVBBVi5v9K7MvxMjg1FhViOgeNyD8XemsBb1cLzMxBA== + dependencies: + monaco-editor "*" + prop-types "^15.7.2" + +react-popper@^1.3.7: + version "1.3.10" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.10.tgz#96fd88cc1bf45957e551c5053afea7adc0b1d4d8" + integrity sha512-sZfwHtHCMst0L0G/c83/Y/K1f9fNWMEKsk/cGAor68rQBHB75WuDQ7k95tkce8QNaUHhg9uFXIJbZO0eWRvJbw== + dependencies: + "@babel/runtime" "^7.1.2" + "@hypnosphi/create-react-context" "^0.3.1" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" + +react-resize-detector@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-6.6.0.tgz#8814f224bf917aa856714291a92e69b5682c89f6" + integrity sha512-+Wz9nI/vDGrp/yMPRshwehSvHycUwRSfRh1ElCO/NLqIlsSLUhS8pVUU+X+emjVSCB/hrRDAjK0OZ1eYLsmeyw== + dependencies: + "@types/resize-observer-browser" "^0.1.5" + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + resize-observer-polyfill "^1.5.1" + +react-spinners@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.10.6.tgz#7e780144aaf54372231f6168ca075b4cd70e48ef" + integrity sha512-UPLcaMFhFnLWtS1zVDDT14ssW08gnZ44cjPN6GL27dEGboiCvRSthOilZXRDWESp449GB2iI6gjEbxzaMtA+dg== + dependencies: + "@emotion/core" "^10.0.35" + +react-test-renderer@^16.0.0-0: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.19.1" + +react-textarea-autosize@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz#70fdb333ef86bcca72717e25e623e90c336e2cda" + integrity sha512-uH3ORCsCa3C6LHxExExhF4jHoXYCQwE5oECmrRsunlspaDAbS4mGKNlWZqjLfInWtFQcf0o1n1jC/NGXFdUBCg== + dependencies: + "@babel/runtime" "^7.1.2" + prop-types "^15.6.0" + +react-transition-group@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== + dependencies: + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + +react-transition-group@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react-virtualized-auto-sizer@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.4.tgz#2b83adb5ecdee8dcb33784e96ee0074eb5369665" + integrity sha512-fdrY0ZX4Ywv0IIYPY/grQXcVQ44OLOsftl2u81coKe2Ga1wT3ps4JXaeu1JdlfjQxDI5BVsWjZQbpzmjmtI7Qw== + +react-window@^1.8.5: + version "1.8.6" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112" + integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg== + dependencies: + "@babel/runtime" "^7.0.0" + memoize-one ">=3.1.1 <6" + +react@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +react@~16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" + integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.18.1, resolve@^1.9.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2, rimraf@~3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize-html@~1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85" + integrity sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA== + dependencies: + chalk "^2.4.1" + htmlparser2 "^3.10.0" + lodash.clonedeep "^4.5.0" + lodash.escaperegexp "^4.1.2" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.mergewith "^4.6.1" + postcss "^7.0.5" + srcset "^1.0.0" + xtend "^4.0.1" + +sanitize-html@~1.27.4: + version "1.27.5" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.27.5.tgz#6c8149462adb23e360e1bb71cc0bae7f08c823c7" + integrity sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A== + dependencies: + htmlparser2 "^4.1.0" + lodash "^4.17.15" + parse-srcset "^1.0.2" + postcss "^7.0.27" + +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e" + integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + 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-regex@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" + integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== + +"semver@2 || 3 || 4 || 5", semver@^5.5.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" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +srcset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= + dependencies: + array-uniq "^1.0.2" + number-is-nan "^1.0.0" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" + integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +symbol-observable@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" + integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== + dependencies: + jest-worker "^26.6.2" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.5.1" + +terser@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@~1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@^3.17.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" + integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@~4.1.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" + integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== + +typestyle@^2.0.1, typestyle@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/typestyle/-/typestyle-2.1.0.tgz#7c5cc567de72cd8bfb686813150b92791aaa7636" + integrity sha512-6uCYPdG4xWLeEcl9O0GtNFnNGhami+irKiLsXSuvWHC/aTS7wdj49WeikWAKN+xHN3b1hm+9v0svwwgSBhCsNA== + dependencies: + csstype "2.6.9" + free-style "3.1.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^4.0.2, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-cli@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" + integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.1" + "@webpack-cli/info" "^1.2.2" + "@webpack-cli/serve" "^1.3.0" + colorette "^1.2.1" + commander "^7.0.0" + enquirer "^2.3.6" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" + integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack@^5.3.1: + version "5.24.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.24.2.tgz#33790dad631e8b639f4246d762e257720875fe54" + integrity sha512-uxxKYEY4kMNjP+D2Y+8aw5Vd7ar4pMuKCNemxV26ysr1nk0YDiQTylg9U3VZIdkmI0YHa0uC8ABxL+uGxGWWJg== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.46" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.0.4" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.7.0" + es-module-lexer "^0.4.0" + eslint-scope "^5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.0.0" + webpack-sources "^2.1.1" + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.2.0, ws@^7.2.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" + integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xterm-addon-fit@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.3.0.tgz#341710741027de9d648a9f84415a01ddfdbbe715" + integrity sha512-kvkiqHVrnMXgyCH9Xn0BOBJ7XaWC/4BgpSWQy3SueqximgW630t/QOankgqkvk11iTOCwWdAY9DTyQBXUMN3lw== + +xterm@~4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.2.0.tgz#b9980b2ae18c64ed31bcc95eace3bcecffebbbd9" + integrity sha512-oNfLqt+LmghLPOt5UcskP5Km1fXpTBHsTZ99nxJKY2N0MNFXBKIVXUcNNhHCa74JGZFMGhLT58A/UN3HcPXSfg== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From ab59282b49d2023a399df1cd9ac64f3b97d0d0a1 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 10:35:01 -0500 Subject: [PATCH 06/17] up to actually running linter --- tsconfig.eslint.json | 2 +- tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 8c62bfe..4eaab5a 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig", - "include": ["src/**/*", ".eslintrc.js", "*"] + "include": ["./src/**/*", ".eslintrc.js", "*", "./tests/**/*"] } diff --git a/tsconfig.json b/tsconfig.json index bf48afd..17611f4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,5 +22,5 @@ "target": "es2017", "types": [] }, - "include": ["./src/*"] + "include": ["./src/*", "./tests/*"] } From 1bee0334bcc511abeb705fcd73d0066c3299c938 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 10:40:55 -0500 Subject: [PATCH 07/17] run linter --- CONTRIBUTING.md | 12 +- README.md | 1 - jest.config.js | 11 +- jupyterlab_pullrequests/_version.py | 4 +- setupJest.js | 6 +- src/components/PullRequestPanel.tsx | 26 +- src/components/PullRequestToolbar.tsx | 24 +- src/components/browser/PullRequestBrowser.tsx | 14 +- .../browser/PullRequestBrowserFileItem.tsx | 76 +- .../browser/PullRequestBrowserItem.tsx | 42 +- .../browser/PullRequestBrowserWidget.tsx | 10 +- src/components/diff/NBDiff.tsx | 46 +- src/components/diff/PlainDiffComponent.tsx | 82 +- .../diff/PullRequestCommentThread.tsx | 22 +- .../tab/PullRequestDescriptionTab.tsx | 20 +- src/components/tab/PullRequestFileTab.tsx | 26 +- src/components/tab/PullRequestTabWidget.tsx | 18 +- src/declarations.d.ts | 2 +- src/index.ts | 18 +- src/models.tsx | 96 +- src/utils.ts | 2 +- style/index.css | 101 +- .../PullRequestBrowser.spec.tsx | 77 +- .../PullRequestBrowserItem.spec.tsx | 189 ++-- .../PullRequestCommentThread.spec.tsx | 154 +-- .../sample-responses/samplecomment.json | 12 +- .../sample-responses/samplefile.json | 10 +- .../sample-responses/samplepr.json | 14 +- tests/test-components/testutils.ts | 59 +- .../sample_responses/github_comments_get.json | 882 +++++++++--------- .../github_comments_post.json | 96 +- .../sample_responses/github_current_user.json | 66 +- .../sample_responses/github_list_files.json | 26 +- .../sample_responses/github_list_prs.json | 112 +-- .../sample_responses/github_pr_links.json | 654 +++++++------ .../github_validate_pr_link.json | 36 +- .../sample_responses/ipynb_base.json | 96 +- .../sample_responses/ipynb_nbdiff.json | 134 ++- .../sample_responses/ipynb_remote.json | 103 +- webpack.config.js | 22 +- 40 files changed, 1747 insertions(+), 1654 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dd7b1a4..f2553af 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,9 +15,9 @@ If you have suggestions on how these processes can be improved, please suggest t If you are using this software and encounter some behavior that is unexpected, then you may have come accross a bug! To get this fixed, first creation an issue that should have, ideally: -* The behavior you expected -* The actual behavior (screenshots can be helpful here) -* How someone else could reproduce it (version of the software, as well as your browser and OS can help) +- The behavior you expected +- The actual behavior (screenshots can be helpful here) +- How someone else could reproduce it (version of the software, as well as your browser and OS can help) Once you create this issue, someone with commit rights should come by and try to reproduce the issue locally and comment if they are able to. If they are able to, then they will add the `type:Bug` label. If they are not able to, then they will add the `status: Needs info` label and wait for information from you. @@ -25,7 +25,7 @@ Hopefully, then some nice person will come by to fix your bug! This will likely but it could be anyone. They will fix the bug locally, then push those changes to their fork. Then they will make a pull request, and in the description -say "This fixes bug #xxx". +say "This fixes bug #xxx". Someone who maintains the repo will review this change, and this can lead to some more back and forth about the implementation. @@ -38,7 +38,7 @@ Maybe the current behavior isn't wrong, but you still have an idea on how it cou The flow will be similar to opening a bug, but the process could be longer, as we all work together to agree on what behavior should be added. So when you open an issue, it's helpful to give some context around what you are trying to achieve, -why that is important, where the current functionality falls short, and any ideas you have on how it could be improved. +why that is important, where the current functionality falls short, and any ideas you have on how it could be improved. These issues should get a `type:Enhancement` label. If the solution seems obvious enough and you think others will agree, then anyone is welcome to implement the solution and propose it in a pull request. @@ -47,4 +47,4 @@ However, if the issue is multifaceted or has many different good options, then t first. In this case, a maintainer should add a `status:Needs Discussion` label. Then there will be some period of time where anyone who has a stake in this issue or ideas on how to solve it should work together to come up with a coherent solution. -Once there seem to be some consensus around how to move forward, then someone can proceed to implementing the changes. \ No newline at end of file +Once there seem to be some consensus around how to move forward, then someone can proceed to implementing the changes. diff --git a/README.md b/README.md index 1b91862..aa6cf33 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,6 @@ where "``" is the string value you obtained above. Congrats, you did it! Launch JupyterLab and look for the Pull Request tab on the left! 🎉 - ## Development ### Contributing diff --git a/jest.config.js b/jest.config.js index 32693e7..1054368 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,11 +7,16 @@ module.exports = { }, moduleNameMapper: { '\\.(css|less|sass|scss)$': 'identity-obj-proxy', - "monaco-editor": "/node_modules/react-monaco-editor" + 'monaco-editor': '/node_modules/react-monaco-editor' }, testRegex: '/tests/test-.*/.*.spec.ts[x]?$', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - testPathIgnorePatterns: ['/dev_mode/', '/lib/', '/node_modules/', ".*\\.d\\.ts$"], + testPathIgnorePatterns: [ + '/dev_mode/', + '/lib/', + '/node_modules/', + '.*\\.d\\.ts$' + ], transformIgnorePatterns: ['/node_modules/(?!(@jupyterlab/.*)/)'], setupFiles: ['./setupJest.js'] -}; \ No newline at end of file +}; diff --git a/jupyterlab_pullrequests/_version.py b/jupyterlab_pullrequests/_version.py index e161be5..bf8bae3 100644 --- a/jupyterlab_pullrequests/_version.py +++ b/jupyterlab_pullrequests/_version.py @@ -1,11 +1,11 @@ """version information for jupyterlab_pullrequests""" -import pathlib +from pathlib import Path import json HERE = Path(__file__).parent PKG = (HERE / "labextension/package.json") -__js__ = json.loads(HERE.read_text(encoding="utf-8")) +__js__ = json.loads(PKG.read_text(encoding="utf-8")) __version__ = __js__["version"] diff --git a/setupJest.js b/setupJest.js index ba1f18a..ce1b56a 100644 --- a/setupJest.js +++ b/setupJest.js @@ -1,4 +1,4 @@ global.fetch = require('jest-fetch-mock'); -require("enzyme").configure({ - adapter: new (require('enzyme-adapter-react-16')) -}); \ No newline at end of file +require('enzyme').configure({ + adapter: new (require('enzyme-adapter-react-16'))() +}); diff --git a/src/components/PullRequestPanel.tsx b/src/components/PullRequestPanel.tsx index bd7d2aa..077a180 100644 --- a/src/components/PullRequestPanel.tsx +++ b/src/components/PullRequestPanel.tsx @@ -1,11 +1,11 @@ -import { JupyterFrontEnd } from "@jupyterlab/application"; -import { IThemeManager, Toolbar } from "@jupyterlab/apputils"; -import { IRenderMimeRegistry } from "@jupyterlab/rendermime"; -import { PanelLayout, Widget } from "@lumino/widgets"; -import { PullRequestFileModel, PullRequestModel } from "../models"; -import { PullRequestBrowserWidget } from "./browser/PullRequestBrowserWidget"; -import { PullRequestToolbar } from "./PullRequestToolbar"; -import { PullRequestTabWidget } from "./tab/PullRequestTabWidget"; +import { JupyterFrontEnd } from '@jupyterlab/application'; +import { IThemeManager, Toolbar } from '@jupyterlab/apputils'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { PanelLayout, Widget } from '@lumino/widgets'; +import { PullRequestFileModel, PullRequestModel } from '../models'; +import { PullRequestBrowserWidget } from './browser/PullRequestBrowserWidget'; +import { PullRequestToolbar } from './PullRequestToolbar'; +import { PullRequestTabWidget } from './tab/PullRequestTabWidget'; export class PullRequestPanel extends Widget { private _app: JupyterFrontEnd; @@ -21,12 +21,12 @@ export class PullRequestPanel extends Widget { renderMime: IRenderMimeRegistry ) { super(); - this.addClass("jp-PullRequestPanel"); + this.addClass('jp-PullRequestPanel'); this.layout = new PanelLayout(); - this.title.iconClass = "jp-PullRequest-icon jp-SideBar-tabIcon"; - this.title.caption = "Pull Requests"; - this.id = "pullrequests"; + this.title.iconClass = 'jp-PullRequest-icon jp-SideBar-tabIcon'; + this.title.caption = 'Pull Requests'; + this.id = 'pullrequests'; this._app = app; this._themeManager = themeManager; @@ -53,7 +53,7 @@ export class PullRequestPanel extends Widget { this._tabs.push(tab); } if (!tab.isAttached) { - this._app.shell.add(tab, "main"); + this._app.shell.add(tab, 'main'); } else { tab.update(); } diff --git a/src/components/PullRequestToolbar.tsx b/src/components/PullRequestToolbar.tsx index 83a2549..2a72da6 100644 --- a/src/components/PullRequestToolbar.tsx +++ b/src/components/PullRequestToolbar.tsx @@ -1,31 +1,31 @@ -import { Toolbar, ToolbarButton } from "@jupyterlab/apputils"; -import { Widget } from "@lumino/widgets"; -import { PullRequestPanel } from "./PullRequestPanel"; +import { Toolbar, ToolbarButton } from '@jupyterlab/apputils'; +import { Widget } from '@lumino/widgets'; +import { PullRequestPanel } from './PullRequestPanel'; export class PullRequestToolbar extends Toolbar { private _openRefreshButton: ToolbarButton; constructor(panel: PullRequestPanel) { super(); - this.addClass("jp-PullRequestToolbar"); + this.addClass('jp-PullRequestToolbar'); // Add toolbar header let widget: Widget = new Widget(); - let title = document.createElement("h2"); - title.innerText = "Pull Requests"; - widget.addClass("jp-PullRequestToolbarHeader"); + let title = document.createElement('h2'); + title.innerText = 'Pull Requests'; + widget.addClass('jp-PullRequestToolbarHeader'); widget.node.appendChild(title); - this.addItem("Widget", widget); + this.addItem('Widget', widget); // Add toolbar refresh button this._openRefreshButton = new ToolbarButton({ onClick: () => { panel.update(); }, - iconClass: "jp-Refresh-icon jp-Icon jp-Icon-16", - tooltip: "Refresh" + iconClass: 'jp-Refresh-icon jp-Icon jp-Icon-16', + tooltip: 'Refresh' }); - this._openRefreshButton.addClass("jp-PullRequestToolbarItem"); - this.addItem("Refresh", this._openRefreshButton); + this._openRefreshButton.addClass('jp-PullRequestToolbarItem'); + this.addItem('Refresh', this._openRefreshButton); } } diff --git a/src/components/browser/PullRequestBrowser.tsx b/src/components/browser/PullRequestBrowser.tsx index 491f707..d2d3191 100644 --- a/src/components/browser/PullRequestBrowser.tsx +++ b/src/components/browser/PullRequestBrowser.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; -import { PullRequestFileModel, PullRequestModel } from "../../models"; -import { PullRequestBrowserItem } from "./PullRequestBrowserItem"; +import * as React from 'react'; +import { PullRequestFileModel, PullRequestModel } from '../../models'; +import { PullRequestBrowserItem } from './PullRequestBrowserItem'; export interface IPullRequestBrowserState {} @@ -22,13 +22,13 @@ export class PullRequestBrowser extends React.Component<
diff --git a/src/components/browser/PullRequestBrowserFileItem.tsx b/src/components/browser/PullRequestBrowserFileItem.tsx index 67f2125..407e8d4 100644 --- a/src/components/browser/PullRequestBrowserFileItem.tsx +++ b/src/components/browser/PullRequestBrowserFileItem.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import { PullRequestFileModel } from "../../models"; +import * as React from 'react'; +import { PullRequestFileModel } from '../../models'; export interface IPullRequestBrowserFileItemState {} @@ -24,7 +24,7 @@ export class PullRequestBrowserFileItem extends React.Component< > @@ -51,49 +51,49 @@ export class PullRequestBrowserFileItem extends React.Component< /** Get the extension of a given file */ private getExtensionIcon(ext: string): string { switch (ext) { - case ".ipynb": - return "jp-NotebookIcon"; - case ".md": - return "jp-MarkdownIcon"; - case ".py": - return "jp-PythonIcon"; - case ".json": - return "jp-JSONIcon"; - case ".csv": - return "jp-SpreadsheetIcon"; - case ".xls": - return "jp-FileIcon"; - case ".r": - return "jp-RKernelIcon"; - case ".yml": - return "jp-YamlIcon"; - case ".yaml": - return "jp-YamlIcon"; - case ".svg": - return "jp-ImageIcon"; - case ".tiff": - return "jp-ImageIcon"; - case ".jpeg": - return "jp-ImageIcon"; - case ".jpg": - return "jp-ImageIcon"; - case ".gif": - return "jp-ImageIcon"; - case ".png": - return "jp-ImageIcon"; - case ".raw": - return "jp-ImageIcon"; + case '.ipynb': + return 'jp-NotebookIcon'; + case '.md': + return 'jp-MarkdownIcon'; + case '.py': + return 'jp-PythonIcon'; + case '.json': + return 'jp-JSONIcon'; + case '.csv': + return 'jp-SpreadsheetIcon'; + case '.xls': + return 'jp-FileIcon'; + case '.r': + return 'jp-RKernelIcon'; + case '.yml': + return 'jp-YamlIcon'; + case '.yaml': + return 'jp-YamlIcon'; + case '.svg': + return 'jp-ImageIcon'; + case '.tiff': + return 'jp-ImageIcon'; + case '.jpeg': + return 'jp-ImageIcon'; + case '.jpg': + return 'jp-ImageIcon'; + case '.gif': + return 'jp-ImageIcon'; + case '.png': + return 'jp-ImageIcon'; + case '.raw': + return 'jp-ImageIcon'; default: - return "jp-FileIcon"; + return 'jp-FileIcon'; } } /** Get the filename from a path */ private extractFilename(path: string): string { - if (path[path.length - 1] === "/") { + if (path[path.length - 1] === '/') { return path; } else { - let temp = path.split("/"); + let temp = path.split('/'); return temp[temp.length - 1]; } } diff --git a/src/components/browser/PullRequestBrowserItem.tsx b/src/components/browser/PullRequestBrowserItem.tsx index 2ecef28..a0ed240 100644 --- a/src/components/browser/PullRequestBrowserItem.tsx +++ b/src/components/browser/PullRequestBrowserItem.tsx @@ -1,8 +1,8 @@ -import * as React from "react"; -import { BeatLoader } from "react-spinners"; -import { PullRequestFileModel, PullRequestModel } from "../../models"; -import { doRequest } from "../../utils"; -import { PullRequestBrowserFileItem } from "./PullRequestBrowserFileItem"; +import * as React from 'react'; +import { BeatLoader } from 'react-spinners'; +import { PullRequestFileModel, PullRequestModel } from '../../models'; +import { doRequest } from '../../utils'; +import { PullRequestBrowserFileItem } from './PullRequestBrowserFileItem'; export interface IPullRequestBrowserItemState { data: PullRequestModel[]; @@ -32,18 +32,18 @@ export class PullRequestBrowserItem extends React.Component< private async fetchPRs() { try { let jsonresults = await doRequest( - "pullrequests/prs/user?filter=" + this.props.filter, - "GET" + 'pullrequests/prs/user?filter=' + this.props.filter, + 'GET' ); let results: PullRequestModel[] = []; for (let jsonresult of jsonresults) { results.push( new PullRequestModel( - jsonresult["id"], - jsonresult["title"], - jsonresult["body"], - jsonresult["url"], - jsonresult["internal_id"] + jsonresult['id'], + jsonresult['title'], + jsonresult['body'], + jsonresult['url'], + jsonresult['internal_id'] ) ); } @@ -52,7 +52,7 @@ export class PullRequestBrowserItem extends React.Component< this.fetchFiles(results); }); } catch (err) { - let msg = "Unknown Error"; + let msg = 'Unknown Error'; if ( err.response != null && err.response.status != null && @@ -98,7 +98,7 @@ export class PullRequestBrowserItem extends React.Component< link: string ) { e.stopPropagation(); - window.open(link, "_blank"); + window.open(link, '_blank'); } private showFileTab( @@ -115,17 +115,17 @@ export class PullRequestBrowserItem extends React.Component<

{this.props.header}

{this.state.error != null ? (

- + Error Listing Pull Requests: - {" "} + {' '} {this.state.error}

) : ( @@ -141,10 +141,10 @@ export class PullRequestBrowserItem extends React.Component< /> this.toggleFilesExpanded(e, i)} /> diff --git a/src/components/browser/PullRequestBrowserWidget.tsx b/src/components/browser/PullRequestBrowserWidget.tsx index 0548256..db30836 100644 --- a/src/components/browser/PullRequestBrowserWidget.tsx +++ b/src/components/browser/PullRequestBrowserWidget.tsx @@ -1,8 +1,8 @@ -import { Widget } from "@lumino/widgets"; -import * as React from "react"; -import * as ReactDOM from "react-dom"; -import { PullRequestFileModel, PullRequestModel } from "../../models"; -import { PullRequestBrowser } from "./PullRequestBrowser"; +import { Widget } from '@lumino/widgets'; +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; +import { PullRequestFileModel, PullRequestModel } from '../../models'; +import { PullRequestBrowser } from './PullRequestBrowser'; export class PullRequestBrowserWidget extends Widget { private _showTab: ( diff --git a/src/components/diff/NBDiff.tsx b/src/components/diff/NBDiff.tsx index 80a51b6..244293a 100644 --- a/src/components/diff/NBDiff.tsx +++ b/src/components/diff/NBDiff.tsx @@ -1,17 +1,17 @@ -import * as nbformat from "@jupyterlab/nbformat"; -import { RenderMimeProvider } from "@jupyterlab/git/lib/components/diff/Diff"; -import { CellDiff } from "@jupyterlab/git/lib/components/diff/NbDiff"; -import { IRenderMimeRegistry } from "@jupyterlab/rendermime"; -import { isNull, isUndefined } from "lodash"; -import { IDiffEntry } from "nbdime/lib/diff/diffentries"; -import { CellDiffModel, NotebookDiffModel } from "nbdime/lib/diff/model"; -import * as React from "react"; +import * as nbformat from '@jupyterlab/nbformat'; +import { RenderMimeProvider } from '@jupyterlab/git/lib/components/diff/Diff'; +import { CellDiff } from '@jupyterlab/git/lib/components/diff/NbDiff'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { isNull, isUndefined } from 'lodash'; +import { IDiffEntry } from 'nbdime/lib/diff/diffentries'; +import { CellDiffModel, NotebookDiffModel } from 'nbdime/lib/diff/model'; +import * as React from 'react'; import { PullRequestCommentThreadModel, PullRequestFileModel -} from "../../models"; -import { doRequest } from "../../utils"; -import { PullRequestCommentThread } from "./PullRequestCommentThread"; +} from '../../models'; +import { doRequest } from '../../utils'; +import { PullRequestCommentThread } from './PullRequestCommentThread'; export interface IDiffProps { file: PullRequestFileModel; @@ -39,9 +39,9 @@ export class NBDiff extends React.Component { if (!isUndefined(this.state.error)) { return (

- + Error Loading File: - {" "} + {' '} {this.state.error}

); @@ -98,12 +98,12 @@ export class NBDiff extends React.Component { private async performDiff() { try { - let jsonresults = await doRequest("pullrequests/files/nbdiff", "POST", { + let jsonresults = await doRequest('pullrequests/files/nbdiff', 'POST', { prev_content: this.props.file.basecontent, curr_content: this.props.file.headcontent }); - let base = jsonresults["base"] as nbformat.INotebookContent; - let diff = (jsonresults["diff"] as any) as IDiffEntry[]; + let base = jsonresults['base'] as nbformat.INotebookContent; + let diff = (jsonresults['diff'] as any) as IDiffEntry[]; let nbdModel = new NotebookDiffModel(base, diff); this.setState({ nbdModel: nbdModel, @@ -188,7 +188,7 @@ export class NBDiff extends React.Component { originalChunks: CellDiffModel[][] ): PullRequestChunkModel[] { // Parse headContent - let jsonMap = require("json-source-map"); + let jsonMap = require('json-source-map'); let contentCells = jsonMap.parse(this.props.file.headcontent); // Unchunk, add line numbers if applicable, and rechunk @@ -203,22 +203,22 @@ export class NBDiff extends React.Component { this.props.file ); let headNbdimeSource = cell.source.remote; - let headContentSource: string = ""; + let headContentSource: string = ''; for (let line of contentCells.data.cells[i].source) { headContentSource += line; } if (headNbdimeSource !== headContentSource) { throw new Error( - "Error parsing line numbers: Mismatched source nbdime (" + + 'Error parsing line numbers: Mismatched source nbdime (' + headNbdimeSource + - ") and content (" + + ') and content (' + headContentSource + - ")" + ')' ); } prChunk.lineNumber = { - lineNumberStart: contentCells.pointers["/cells/" + i].value.line, - lineNumberEnd: contentCells.pointers["/cells/" + i].valueEnd.line + lineNumberStart: contentCells.pointers['/cells/' + i].value.line, + lineNumberEnd: contentCells.pointers['/cells/' + i].valueEnd.line }; // Add any comments within the range let prCellComments: PullRequestCommentThreadModel[] = []; diff --git a/src/components/diff/PlainDiffComponent.tsx b/src/components/diff/PlainDiffComponent.tsx index 5e983d3..0f39483 100644 --- a/src/components/diff/PlainDiffComponent.tsx +++ b/src/components/diff/PlainDiffComponent.tsx @@ -1,25 +1,25 @@ -import { IThemeManager } from "@jupyterlab/apputils"; -import * as d3 from "d3-color"; -import { isNull, isUndefined } from "lodash"; -import * as monaco from "monaco-editor"; -import * as React from "react"; -import ReactResizeDetector from "react-resize-detector"; +import { IThemeManager } from '@jupyterlab/apputils'; +import * as d3 from 'd3-color'; +import { isNull, isUndefined } from 'lodash'; +import * as monaco from 'monaco-editor'; +import * as React from 'react'; +import ReactResizeDetector from 'react-resize-detector'; import { PullRequestCommentThreadModel, PullRequestFileModel, PullRequestPlainDiffCommentThreadModel -} from "../../models"; +} from '../../models'; /** * Worker implementation for the Monaco editor * From https://github.com/jupyterlab/jupyterlab-monaco */ -import * as monacoCSS from "file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-css.worker.bundle.js"; -import * as monacoEditor from "file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-editor.worker.bundle.js"; -import * as monacoHTML from "file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-html.worker.bundle.js"; -import * as monacoJSON from "file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-json.worker.bundle.js"; -import * as monacoTS from "file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-ts.worker.bundle.js"; +import * as monacoCSS from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-css.worker.bundle.js'; +import * as monacoEditor from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-editor.worker.bundle.js'; +import * as monacoHTML from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-html.worker.bundle.js'; +import * as monacoJSON from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-json.worker.bundle.js'; +import * as monacoTS from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-ts.worker.bundle.js'; let URLS: { [key: string]: string } = { css: monacoCSS, @@ -30,7 +30,7 @@ let URLS: { [key: string]: string } = { }; (self as any).MonacoEnvironment = { - getWorkerUrl: function(moduleId: string, label: string): string { + getWorkerUrl: function (moduleId: string, label: string): string { let url = URLS[label] || monacoEditor; return url; } @@ -68,10 +68,10 @@ export class PlainDiffComponent extends React.Component< render() { return ( -
+
0) { - return lang["mimetypes"][0]; + if (lang['extensions'].indexOf(ext) !== -1) { + if (!isUndefined(lang['mimetypes']) && lang['mimetypes'].length > 0) { + return lang['mimetypes'][0]; } else { - return lang["id"]; + return lang['id']; } } } - return "text/plain"; + return 'text/plain'; } private getVariableHex(varname: string): string { return d3 - .color( - getComputedStyle(document.body) - .getPropertyValue(varname) - .trim() - ) + .color(getComputedStyle(document.body).getPropertyValue(varname).trim()) .hex(); } @@ -110,18 +106,18 @@ export class PlainDiffComponent extends React.Component< let isLight: boolean = this.props.themeManager.isLight( this.props.themeManager.theme ); - monaco.editor.defineTheme("PlainDiffComponent", { - base: isLight ? "vs" : "vs-dark", + monaco.editor.defineTheme('PlainDiffComponent', { + base: isLight ? 'vs' : 'vs-dark', inherit: true, colors: { - "editor.background": this.getVariableHex("--jp-layout-color1"), - "editor.lineHighlightBorder": this.getVariableHex("--jp-layout-color1"), - "editorLineNumber.foreground": this.getVariableHex( - "--jp-ui-font-color2" + 'editor.background': this.getVariableHex('--jp-layout-color1'), + 'editor.lineHighlightBorder': this.getVariableHex('--jp-layout-color1'), + 'editorLineNumber.foreground': this.getVariableHex( + '--jp-ui-font-color2' ), - "editorGutter.background": this.getVariableHex("--jp-layout-color1"), - "diffEditor.insertedTextBackground": "#C9F3C24D", // #80 - "diffEditor.removedTextBackground": "#FF96964D" + 'editorGutter.background': this.getVariableHex('--jp-layout-color1'), + 'diffEditor.insertedTextBackground': '#C9F3C24D', // #80 + 'diffEditor.removedTextBackground': '#FF96964D' }, rules: [] }); @@ -132,7 +128,7 @@ export class PlainDiffComponent extends React.Component< readOnly: true, selectionHighlight: false, scrollBeyondLastLine: false, - renderLineHighlight: "gutter", + renderLineHighlight: 'gutter', glyphMargin: false, renderFinalNewline: false // renderSideBySide: false @@ -148,7 +144,7 @@ export class PlainDiffComponent extends React.Component< language ); this.updateTheme(); - monaco.editor.setTheme("PlainDiffComponent"); + monaco.editor.setTheme('PlainDiffComponent'); let diffEditor = monaco.editor.createDiffEditor( document.getElementById(`monacocontainer-${this.props.file.id}`), @@ -200,9 +196,9 @@ export class PlainDiffComponent extends React.Component< private handleMouseEvents() { // Show add comment decoration on mouse move this.state.diffEditor.getModifiedEditor().onMouseMove(e => { - if (!isNull(e.target["position"])) { - this.updateCommentDecoration(e.target["position"]["lineNumber"]); - } else if (this.state.decorations.length > 0 && e.target["type"] === 12) { + if (!isNull(e.target['position'])) { + this.updateCommentDecoration(e.target['position']['lineNumber']); + } else if (this.state.decorations.length > 0 && e.target['type'] === 12) { this.removeCommentDecoration(); } }); @@ -212,12 +208,12 @@ export class PlainDiffComponent extends React.Component< }); this.state.diffEditor.getModifiedEditor().onMouseDown(e => { if ( - e.target["element"]["classList"].contains( - "jp-PullRequestCommentDecoration" + e.target['element']['classList'].contains( + 'jp-PullRequestCommentDecoration' ) ) { let lineNumber = parseInt( - e.target["element"]["parentElement"]["innerText"], + e.target['element']['parentElement']['innerText'], 10 ); for (let comment of this.state.comments) { @@ -246,7 +242,7 @@ export class PlainDiffComponent extends React.Component< range: new monaco.Range(lineNumber, 1, lineNumber, 1), options: { isWholeLine: true, - linesDecorationsClassName: "jp-PullRequestCommentDecoration" + linesDecorationsClassName: 'jp-PullRequestCommentDecoration' } } ]); diff --git a/src/components/diff/PullRequestCommentThread.tsx b/src/components/diff/PullRequestCommentThread.tsx index 4b0ad4c..444ecc5 100644 --- a/src/components/diff/PullRequestCommentThread.tsx +++ b/src/components/diff/PullRequestCommentThread.tsx @@ -1,12 +1,12 @@ -import { isNull, isUndefined } from "lodash"; -import * as React from "react"; -import ReactResizeDetector from "react-resize-detector"; +import { isNull, isUndefined } from 'lodash'; +import * as React from 'react'; +import ReactResizeDetector from 'react-resize-detector'; import { IPullRequestCommentModel, PullRequestCommentThreadModel, PullRequestPlainDiffCommentThreadModel -} from "../../models"; -import moment from "moment"; +} from '../../models'; +import moment from 'moment'; export interface IPullRequestCommentThreadState { isExpanded: boolean; @@ -30,7 +30,7 @@ export class PullRequestCommentThread extends React.Component< this.state = { isExpanded: true, isInput: isNull(this.props.thread.comment) ? true : false, - inputText: "", + inputText: '', thread: this.props.thread }; } @@ -67,7 +67,7 @@ export class PullRequestCommentThread extends React.Component< } await _thread.postComment(payload); this.setState({ thread: _thread, isInput: false }); - this.setState({ inputText: "" }); + this.setState({ inputText: '' }); } handleCancel() { @@ -102,14 +102,14 @@ export class PullRequestCommentThread extends React.Component<
{!this.state.isExpanded && !isNull(this.state.thread.comment) && (

- {this.state.thread.comment.username}:{" "} + {this.state.thread.comment.username}:{' '} {this.state.thread.comment.text}

)} this.setState({ isExpanded: !this.state.isExpanded }) @@ -140,7 +140,7 @@ export class PullRequestCommentThread extends React.Component<
) : (

- + Error Loading File: - {" "} + {' '} {this.state.error}

) diff --git a/src/components/tab/PullRequestFileTab.tsx b/src/components/tab/PullRequestFileTab.tsx index 8e53000..52977c1 100644 --- a/src/components/tab/PullRequestFileTab.tsx +++ b/src/components/tab/PullRequestFileTab.tsx @@ -1,11 +1,11 @@ -import { IThemeManager, Spinner } from "@jupyterlab/apputils"; -import { IRenderMimeRegistry } from "@jupyterlab/rendermime"; -import { isNull } from "lodash"; -import * as React from "react"; -import { RefObject } from "react"; -import { PullRequestFileModel } from "../../models"; -import { NBDiff } from "../diff/NBDiff"; -import { PlainDiffComponent } from "../diff/PlainDiffComponent"; +import { IThemeManager, Spinner } from '@jupyterlab/apputils'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { isNull } from 'lodash'; +import * as React from 'react'; +import { RefObject } from 'react'; +import { PullRequestFileModel } from '../../models'; +import { NBDiff } from '../diff/NBDiff'; +import { PlainDiffComponent } from '../diff/PlainDiffComponent'; export interface IPullRequestFileTabState { file: PullRequestFileModel; @@ -23,9 +23,7 @@ export class PullRequestFileTab extends React.Component< IPullRequestFileTabProps, IPullRequestFileTabState > { - private spinnerContainer: RefObject = React.createRef< - HTMLDivElement - >(); + private spinnerContainer: RefObject = React.createRef(); constructor(props: IPullRequestFileTabProps) { super(props); @@ -58,7 +56,7 @@ export class PullRequestFileTab extends React.Component<
{!this.state.isLoading ? ( isNull(this.state.error) && !isNull(this.state.file) ? ( - this.state.file.extension === ".ipynb" ? ( + this.state.file.extension === '.ipynb' ? ( - + Error Loading File: - {" "} + {' '} {this.state.error} ) diff --git a/src/components/tab/PullRequestTabWidget.tsx b/src/components/tab/PullRequestTabWidget.tsx index 4fe9f5b..24916f6 100644 --- a/src/components/tab/PullRequestTabWidget.tsx +++ b/src/components/tab/PullRequestTabWidget.tsx @@ -1,12 +1,12 @@ -import { IThemeManager } from "@jupyterlab/apputils"; -import { Widget } from "@lumino/widgets"; -import * as React from "react"; -import * as ReactDOM from "react-dom"; -import { PullRequestFileModel, PullRequestModel } from "../../models"; -import { PullRequestFileTab } from "./PullRequestFileTab"; -import { PullRequestDescriptionTab } from "./PullRequestDescriptionTab"; -import { isUndefined } from "lodash"; -import { IRenderMimeRegistry } from "@jupyterlab/rendermime"; +import { IThemeManager } from '@jupyterlab/apputils'; +import { Widget } from '@lumino/widgets'; +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; +import { PullRequestFileModel, PullRequestModel } from '../../models'; +import { PullRequestFileTab } from './PullRequestFileTab'; +import { PullRequestDescriptionTab } from './PullRequestDescriptionTab'; +import { isUndefined } from 'lodash'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; // Assumes valid json export class PullRequestTabWidget extends Widget { diff --git a/src/declarations.d.ts b/src/declarations.d.ts index efbd9a7..1052fd4 100644 --- a/src/declarations.d.ts +++ b/src/declarations.d.ts @@ -3,4 +3,4 @@ declare module 'file-loader!*' { let url: string; export = url; -} \ No newline at end of file +} diff --git a/src/index.ts b/src/index.ts index d21fa30..dd807f1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,16 +2,16 @@ import { ILayoutRestorer, JupyterFrontEnd, JupyterFrontEndPlugin -} from "@jupyterlab/application"; -import { IThemeManager } from "@jupyterlab/apputils"; -import { IRenderMimeRegistry } from "@jupyterlab/rendermime"; -import { PullRequestPanel } from "./components/PullRequestPanel"; +} from '@jupyterlab/application'; +import { IThemeManager } from '@jupyterlab/apputils'; +import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { PullRequestPanel } from './components/PullRequestPanel'; -import "@jupyterlab/git/style/index.css"; -import "@jupyterlab/git/style/variables.css"; +import '@jupyterlab/git/style/index.css'; +import '@jupyterlab/git/style/variables.css'; -const NAMESPACE = "pullrequests"; -const PLUGIN_ID = "@jupyterlab/pullrequests"; +const NAMESPACE = 'pullrequests'; +const PLUGIN_ID = '@jupyterlab/pullrequests'; // JupyterLab plugin props const pullRequestPlugin: JupyterFrontEndPlugin = { @@ -30,7 +30,7 @@ function activate( ): void { const prPanel = new PullRequestPanel(app, themeManager, renderMime); restorer.add(prPanel, NAMESPACE); - app.shell.add(prPanel, "left", { rank: 200 }); // rank chosen from similar open source extensions + app.shell.add(prPanel, 'left', { rank: 200 }); // rank chosen from similar open source extensions return; } diff --git a/src/models.tsx b/src/models.tsx index 503b106..ff3184e 100644 --- a/src/models.tsx +++ b/src/models.tsx @@ -1,9 +1,9 @@ -import { isUndefined, uniqueId } from "lodash"; -import * as React from "react"; -import * as ReactDOM from "react-dom"; -import { PullRequestCommentThread } from "./components/diff/PullRequestCommentThread"; -import { PlainDiffComponent } from "./components/diff/PlainDiffComponent"; -import { doRequest } from "./utils"; +import { isUndefined, uniqueId } from 'lodash'; +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; +import { PullRequestCommentThread } from './components/diff/PullRequestCommentThread'; +import { PlainDiffComponent } from './components/diff/PlainDiffComponent'; +import { doRequest } from './utils'; // ----------------------------------------------------------------------------- // Pull Request Model @@ -29,17 +29,17 @@ export class PullRequestModel { async getFiles(): Promise { let jsonresults = await doRequest( - "pullrequests/prs/files?id=" + this.id, - "GET" + 'pullrequests/prs/files?id=' + this.id, + 'GET' ); let results: PullRequestFileModel[] = []; for (let jsonresult of jsonresults) { results.push( new PullRequestFileModel( - jsonresult["name"], - jsonresult["status"], - jsonresult["additions"], - jsonresult["deletions"], + jsonresult['name'], + jsonresult['status'], + jsonresult['additions'], + jsonresult['deletions'], this ) ); @@ -73,38 +73,38 @@ export class PullRequestFileModel { this.additions = additions; this.deletions = deletions; this.pr = pr; - this.id = this.pr.internalId + "-" + this.name; + this.id = this.pr.internalId + '-' + this.name; this.extension = this.getExtension(this.name); } async loadFile(): Promise { let jsonresults = await doRequest( `pullrequests/files/content?id=${this.pr.id}&filename=${this.name}`, - "GET" + 'GET' ); - this.commitId = jsonresults["commit_id"]; - this.basecontent = jsonresults["base_content"]; - this.headcontent = jsonresults["head_content"]; + this.commitId = jsonresults['commit_id']; + this.basecontent = jsonresults['base_content']; + this.headcontent = jsonresults['head_content']; } async loadComments() { let jsonresults = await doRequest( `pullrequests/files/comments?id=${this.pr.id}&filename=${this.name}`, - "GET" + 'GET' ); let results: PullRequestCommentThreadModel[] = []; for (let jsonresult of jsonresults) { const item = new PullRequestCommentThreadModel(this, { - id: jsonresult["id"], - text: jsonresult["text"], - updatedAt: jsonresult["updated_at"], - lineNumber: jsonresult["line_number"], - username: jsonresult["user_name"], - userpic: jsonresult["user_pic"] + id: jsonresult['id'], + text: jsonresult['text'], + updatedAt: jsonresult['updated_at'], + lineNumber: jsonresult['line_number'], + username: jsonresult['user_name'], + userpic: jsonresult['user_pic'] }); - if (!isUndefined(jsonresult["in_reply_to_id"])) { + if (!isUndefined(jsonresult['in_reply_to_id'])) { for (let result of results) { - if (result.id === jsonresult["in_reply_to_id"]) { + if (result.id === jsonresult['in_reply_to_id']) { result.replies.push(item.comment); } } @@ -116,10 +116,10 @@ export class PullRequestFileModel { } private getExtension(filename: string): string { - return `.${filename.substring( - filename.lastIndexOf(".") + 1, - filename.length - ) || filename}`; + return `.${ + filename.substring(filename.lastIndexOf('.') + 1, filename.length) || + filename + }`; } id: string; @@ -157,8 +157,8 @@ export class PullRequestCommentThreadModel { this.file = file; this.replies = []; this.commitId = file.commitId; - this.id = uniqueId(file.id + "-"); - if (typeof given === "number") { + this.id = uniqueId(file.id + '-'); + if (typeof given === 'number') { this.lineNumber = given; this.comment = null; } else { @@ -188,16 +188,16 @@ export class PullRequestCommentThreadModel { async postComment(body: any) { let jsonresult = await doRequest( `pullrequests/files/comments?id=${this.file.pr.id}&filename=${this.file.name}`, - "POST", + 'POST', body ); const item = new PullRequestCommentThreadModel(this.file, { - id: jsonresult["id"], - text: jsonresult["text"], - updatedAt: jsonresult["updated_at"], - lineNumber: jsonresult["line_number"], - username: jsonresult["user_name"], - userpic: jsonresult["user_pic"] + id: jsonresult['id'], + text: jsonresult['text'], + updatedAt: jsonresult['updated_at'], + lineNumber: jsonresult['line_number'], + username: jsonresult['user_name'], + userpic: jsonresult['user_pic'] }); if (this.comment == null) { this.comment = item.comment; @@ -235,12 +235,12 @@ export class PullRequestPlainDiffCommentThreadModel { } initComment() { - let overlayDom = document.createElement("div"); - overlayDom.style.width = "100%"; - overlayDom.style.visibility = "visible"; + let overlayDom = document.createElement('div'); + overlayDom.style.width = '100%'; + overlayDom.style.visibility = 'visible'; let overlayWidget = { - getId: () => "overlay.zone.widget." + this.thread.id, + getId: () => 'overlay.zone.widget.' + this.thread.id, getDomNode: () => overlayDom, getPosition: (): any => null }; @@ -273,9 +273,9 @@ export class PullRequestPlainDiffCommentThreadModel { } private addToEditor() { - let zoneNode = document.createElement("div"); + let zoneNode = document.createElement('div'); zoneNode.id = this.thread.id; - let marginZoneNode = document.createElement("div"); + let marginZoneNode = document.createElement('div'); this.plainDiff.state.diffEditor .getModifiedEditor() @@ -286,8 +286,8 @@ export class PullRequestPlainDiffCommentThreadModel { domNode: zoneNode, marginDomNode: marginZoneNode, onDomNodeTop: top => { - this.domNode.style.top = top + "px"; - this.domNode.style.visibility = "visible"; + this.domNode.style.top = top + 'px'; + this.domNode.style.visibility = 'visible'; } }); }); @@ -297,7 +297,7 @@ export class PullRequestPlainDiffCommentThreadModel { const tempViewZoneId = this.viewZoneId; this.plainDiff.state.diffEditor .getModifiedEditor() - .changeViewZones(function(changeAccessor) { + .changeViewZones(function (changeAccessor) { changeAccessor.removeZone(tempViewZoneId); }); this.viewZoneId = null; diff --git a/src/utils.ts b/src/utils.ts index a1f7bb2..c3dfb9e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,4 @@ -import { ServerConnection } from "@jupyterlab/services"; +import { ServerConnection } from '@jupyterlab/services'; // API request wrapper function httpRequest( diff --git a/style/index.css b/style/index.css index 40dd0c0..93faad1 100644 --- a/style/index.css +++ b/style/index.css @@ -54,7 +54,10 @@ margin: 0; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserItemListItem { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserItemListItem { display: flex; overflow: hidden; text-overflow: ellipsis; @@ -62,11 +65,18 @@ margin: auto; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserItemListItem:hover { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserItemListItem:hover { background-color: var(--jp-layout-color2); } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserItemListItem h2 { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserItemListItem + h2 { font-size: var(--jp-ui-font-size1); color: var(--jp-ui-font-color1); font-weight: 400; @@ -78,18 +88,29 @@ text-overflow: ellipsis; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserItemListItem .jp-PullRequestBrowserItemListItemIconWrapper { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserItemListItem + .jp-PullRequestBrowserItemListItemIconWrapper { display: flex; flex: 1; justify-content: flex-end; padding: 4px 12px 4px 4px; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserItemListItem span { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserItemListItem + span { margin: 0; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserFileItem { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserFileItem { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -98,7 +119,10 @@ padding: 4px 12px 4px 12px; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemList .jp-PullRequestBrowserFileItem:hover { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemList + .jp-PullRequestBrowserFileItem:hover { background-color: var(--jp-layout-color2); } @@ -156,7 +180,9 @@ background-image: url(pullrequest-deletion-dark.svg); } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemError { +.jp-PullRequestBrowser + .jp-PullRequestBrowserItem + .jp-PullRequestBrowserItemError { font-size: var(--jp-ui-font-size0); font-weight: 400; letter-spacing: 1px; @@ -274,18 +300,26 @@ font-weight: 400; } -.jp-PullRequestTab .jp-PullRequestComment .jp-PullRequestInputContainer .jp-PullRequestInputButtonContainer { +.jp-PullRequestTab + .jp-PullRequestComment + .jp-PullRequestInputContainer + .jp-PullRequestInputButtonContainer { display: flex; flex: 1; justify-content: flex-end; } -.jp-PullRequestTab .jp-PullRequestComment .jp-PullRequestInputContainer .jp-PullRequestInputButtonContainer button { +.jp-PullRequestTab + .jp-PullRequestComment + .jp-PullRequestInputContainer + .jp-PullRequestInputButtonContainer + button { margin-top: 4px; margin-left: 4px; } -.jp-PullRequestInputContainer button.jp-Button-flat.jp-mod-styled.jp-mod-accept:disabled { +.jp-PullRequestInputContainer + button.jp-Button-flat.jp-mod-styled.jp-mod-accept:disabled { opacity: 0.4; } @@ -323,7 +357,7 @@ padding: 8px; width: 100%; resize: none; - box-sizing:border-box; + box-sizing: border-box; } .jp-PullRequestCommentItem { @@ -352,11 +386,16 @@ margin: 0; } -.jp-PullRequestCommentItem .jp-PullRequestCommentItemContent .jp-PullRequestCommentItemContentTitle { +.jp-PullRequestCommentItem + .jp-PullRequestCommentItemContent + .jp-PullRequestCommentItemContentTitle { display: flex; } -.jp-PullRequestCommentItem .jp-PullRequestCommentItemContent .jp-PullRequestCommentItemContentTitle p { +.jp-PullRequestCommentItem + .jp-PullRequestCommentItemContent + .jp-PullRequestCommentItemContentTitle + p { color: var(--jp-ui-font-color2); margin-left: 4px; padding: 0; @@ -369,7 +408,8 @@ } .jp-PullRequestCommentDecoration { - background-image: url(pullrequest-plus.svg), linear-gradient(var(--jp-brand-color1), var(--jp-brand-color1)); + background-image: url(pullrequest-plus.svg), + linear-gradient(var(--jp-brand-color1), var(--jp-brand-color1)); border-radius: var(--jp-border-radius); background-size: contain; background-repeat: no-repeat; @@ -378,7 +418,7 @@ height: 18px !important; margin-left: 2px; z-index: 1; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; } .jp-PullRequestCommentDecoration:hover { @@ -389,11 +429,19 @@ text-align: right !important; } -[data-jp-theme-light='true'] .jp-PullRequestTab .monaco-editor .current-line ~ .line-numbers { +[data-jp-theme-light='true'] + .jp-PullRequestTab + .monaco-editor + .current-line + ~ .line-numbers { color: var(--jp-ui-font-color0); } -[data-jp-theme-light='false'] .jp-PullRequestTab .monaco-editor .current-line ~ .line-numbers { +[data-jp-theme-light='false'] + .jp-PullRequestTab + .monaco-editor + .current-line + ~ .line-numbers { color: var(--jp-ui-font-color2); } @@ -429,20 +477,27 @@ margin-left: 8px; } -.jp-PullRequestCellDiff .jp-PullRequestCellDiffCommentContainer .jp-PullRequestCellDiffComment { +.jp-PullRequestCellDiff + .jp-PullRequestCellDiffCommentContainer + .jp-PullRequestCellDiffComment { width: 100%; height: 100%; border: 2px solid var(--jp-brand-color1); border-radius: var(--jp-border-radius); border-left: 0; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; } -.jp-PullRequestCellDiff .jp-PullRequestCellDiffCommentContainer .jp-PullRequestCellDiffComment:hover { +.jp-PullRequestCellDiff + .jp-PullRequestCellDiffCommentContainer + .jp-PullRequestCellDiffComment:hover { transform: scale(1.1); } -.jp-PullRequestCellDiff .jp-PullRequestCellDiffCommentContainer .jp-PullRequestCellDiffComment .jp-PullRequestCommentDecoration { +.jp-PullRequestCellDiff + .jp-PullRequestCellDiffCommentContainer + .jp-PullRequestCellDiffComment + .jp-PullRequestCommentDecoration { position: absolute; margin-left: 8px; top: 50%; @@ -458,4 +513,4 @@ width: 49%; margin-left: 50%; } -} \ No newline at end of file +} diff --git a/tests/test-components/PullRequestBrowser.spec.tsx b/tests/test-components/PullRequestBrowser.spec.tsx index 4296bc2..44d78ec 100644 --- a/tests/test-components/PullRequestBrowser.spec.tsx +++ b/tests/test-components/PullRequestBrowser.spec.tsx @@ -1,41 +1,58 @@ import { shallow } from 'enzyme'; -import 'jest'; import * as React from 'react'; -import { IPullRequestBrowserProps, PullRequestBrowser } from '../../src/components/browser/PullRequestBrowser'; +import { + IPullRequestBrowserProps, + PullRequestBrowser +} from '../../src/components/browser/PullRequestBrowser'; import { PullRequestBrowserItem } from '../../src/components/browser/PullRequestBrowserItem'; import { PullRequestFileModel, PullRequestModel } from '../../src/models'; // Unit tests for PullRequestTab describe('PullRequestBrowser', () => { - - let props: IPullRequestBrowserProps = { - showTab: async (data: PullRequestFileModel | PullRequestModel) => { - console.log('Show tab test.') - } - }; + let props: IPullRequestBrowserProps = { + showTab: async (data: PullRequestFileModel | PullRequestModel) => { + console.log('Show tab test.'); + } + }; - // Test constructor - describe('#constructor()', () => { - const pullRequestBrowser = new PullRequestBrowser(props); - it('should construct a new branch header', () => { - expect(pullRequestBrowser).toBeInstanceOf(PullRequestBrowser); - }); + // Test constructor + describe('#constructor()', () => { + const pullRequestBrowser = new PullRequestBrowser(props); + it('should construct a new branch header', () => { + expect(pullRequestBrowser).toBeInstanceOf(PullRequestBrowser); }); + }); - // Test render - describe('#render()', () => { - const component = shallow(); - it('should be a div', () => { - expect(component.find('div')).toHaveLength(1); - expect(component.find('.jp-PullRequestBrowser')).toHaveLength(1); - }); - it('should have a list', () => { - expect(component.find('ul')).toHaveLength(1); - }); - it('should have two PullRequestBrowserItems', () => { - expect(component.find('PullRequestBrowserItem')).toHaveLength(2); - expect(component.contains([])).toEqual(true); - expect(component.contains([])).toEqual(true); - }); + // Test render + describe('#render()', () => { + const component = shallow(); + it('should be a div', () => { + expect(component.find('div')).toHaveLength(1); + expect(component.find('.jp-PullRequestBrowser')).toHaveLength(1); }); -}); \ No newline at end of file + it('should have a list', () => { + expect(component.find('ul')).toHaveLength(1); + }); + it('should have two PullRequestBrowserItems', () => { + expect(component.find('PullRequestBrowserItem')).toHaveLength(2); + expect( + component.contains([ + + ]) + ).toEqual(true); + expect( + component.contains([ + + ]) + ).toEqual(true); + }); + }); +}); diff --git a/tests/test-components/PullRequestBrowserItem.spec.tsx b/tests/test-components/PullRequestBrowserItem.spec.tsx index e985caa..d03b6e7 100644 --- a/tests/test-components/PullRequestBrowserItem.spec.tsx +++ b/tests/test-components/PullRequestBrowserItem.spec.tsx @@ -1,97 +1,116 @@ import { shallow } from 'enzyme'; -import 'jest'; import * as React from 'react'; -import { IPullRequestBrowserItemProps, PullRequestBrowserItem } from '../../src/components/browser/PullRequestBrowserItem'; +import { + IPullRequestBrowserItemProps, + PullRequestBrowserItem +} from '../../src/components/browser/PullRequestBrowserItem'; import { PullRequestFileModel, PullRequestModel } from '../../src/models'; import { SAMPLE_PR_JSON } from './testutils'; // Unit tests for PullRequestBrowserItem describe('PullRequestBrowserItem', () => { - - let props: IPullRequestBrowserItemProps = { - header: 'Created by Me', - filter: 'created', - showTab: async (data: PullRequestFileModel | PullRequestModel) => { - console.log('Show tab test.') - } - }; + let props: IPullRequestBrowserItemProps = { + header: 'Created by Me', + filter: 'created', + showTab: async (data: PullRequestFileModel | PullRequestModel) => { + console.log('Show tab test.'); + } + }; - // Test constructor - describe('#constructor()', () => { - const pullRequestBrowser = new PullRequestBrowserItem(props); - it('should construct a new branch header', () => { - expect(pullRequestBrowser).toBeInstanceOf(PullRequestBrowserItem); - }); + // Test constructor + describe('#constructor()', () => { + const pullRequestBrowser = new PullRequestBrowserItem(props); + it('should construct a new branch header', () => { + expect(pullRequestBrowser).toBeInstanceOf(PullRequestBrowserItem); }); + }); - // Test render - describe('#render()', () => { - const component = shallow(); - it('should be a list', () => { - expect(component.find('li')).toHaveLength(1); - expect(component.find('.jp-PullRequestBrowserItem')).toHaveLength(1); - }); - it('should have a header with text props.header', () => { - expect(component.find('header h2')).toHaveLength(1); - expect(component.contains([

{props.header}

])).toEqual(true); - }); - it('should not load list item if failed api request', () => { - component.setState({data: [], isLoading: false, error: null}); - expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength(0); - }); - it('should not load list item if empty api response', () => { - component.setState({data: [], isLoading: false, error: null}); - expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength(0); - }); - it('should load list item if nonempty api response', () => { - component.setState({data: [JSON.parse(SAMPLE_PR_JSON)]}); - expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength(1); - }) - it('should load list item files if nonempty api response and expanded', () => { - let _data = [JSON.parse(SAMPLE_PR_JSON)]; - _data[0].isExpanded = true; - _data[0].files = []; - _data[0].files.push(new PullRequestFileModel("test.ipynb", "modified", 12, 23, _data[0])); - component.setState({data:_data}) - expect(component.find('.jp-PullRequestBrowserItemFileList')).toHaveLength(1); - }) - it('should not load list item files if nonempty api response and unexpanded', () => { - let _data = [JSON.parse(SAMPLE_PR_JSON)]; - _data[0].isExpanded = false; - component.setState({data:_data}) - expect(component.find('.jp-PullRequestBrowserItemFileList')).toHaveLength(0); - }) - it('should have a sublist if there is not an error', () => { - component.setState({data: [], isLoading: false, error: null}); - expect(component.find('ul')).toHaveLength(1); - expect(component.find('.jp-PullRequestBrowserItemList')).toHaveLength(1); - }); - it('should not have a sublist if there is an error', () => { - component.setState({data: [], isLoading: false, error: "error"}); - expect(component.find('ul')).toHaveLength(0); - expect(component.find('.jp-PullRequestBrowserItemList')).toHaveLength(0); - }); - it('should display error if one exists', () => { - component.setState({data: [], isLoading: false, error: "error"}); - expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(1); - expect(component.contains([ -

- - Error Listing Pull Requests: - error -

- ])).toEqual(true); - }); - it('should not display error if one does not exist', () => { - component.setState({data: [], isLoading: false, error: null}); - expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(0); - expect(component.contains([ -

- - Error Listing Pull Requests: - error -

- ])).toEqual(false); - }); + // Test render + describe('#render()', () => { + const component = shallow(); + it('should be a list', () => { + expect(component.find('li')).toHaveLength(1); + expect(component.find('.jp-PullRequestBrowserItem')).toHaveLength(1); }); + it('should have a header with text props.header', () => { + expect(component.find('header h2')).toHaveLength(1); + expect(component.contains([

{props.header}

])).toEqual(true); + }); + it('should not load list item if failed api request', () => { + component.setState({ data: [], isLoading: false, error: null }); + expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength( + 0 + ); + }); + it('should not load list item if empty api response', () => { + component.setState({ data: [], isLoading: false, error: null }); + expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength( + 0 + ); + }); + it('should load list item if nonempty api response', () => { + component.setState({ data: [JSON.parse(SAMPLE_PR_JSON)] }); + expect(component.find('.jp-PullRequestBrowserItemListItem')).toHaveLength( + 1 + ); + }); + it('should load list item files if nonempty api response and expanded', () => { + let _data = [JSON.parse(SAMPLE_PR_JSON)]; + _data[0].isExpanded = true; + _data[0].files = []; + _data[0].files.push( + new PullRequestFileModel('test.ipynb', 'modified', 12, 23, _data[0]) + ); + component.setState({ data: _data }); + expect(component.find('.jp-PullRequestBrowserItemFileList')).toHaveLength( + 1 + ); + }); + it('should not load list item files if nonempty api response and unexpanded', () => { + let _data = [JSON.parse(SAMPLE_PR_JSON)]; + _data[0].isExpanded = false; + component.setState({ data: _data }); + expect(component.find('.jp-PullRequestBrowserItemFileList')).toHaveLength( + 0 + ); + }); + it('should have a sublist if there is not an error', () => { + component.setState({ data: [], isLoading: false, error: null }); + expect(component.find('ul')).toHaveLength(1); + expect(component.find('.jp-PullRequestBrowserItemList')).toHaveLength(1); + }); + it('should not have a sublist if there is an error', () => { + component.setState({ data: [], isLoading: false, error: 'error' }); + expect(component.find('ul')).toHaveLength(0); + expect(component.find('.jp-PullRequestBrowserItemList')).toHaveLength(0); + }); + it('should display error if one exists', () => { + component.setState({ data: [], isLoading: false, error: 'error' }); + expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(1); + expect( + component.contains([ +

+ + Error Listing Pull Requests: + {' '} + error +

+ ]) + ).toEqual(true); + }); + it('should not display error if one does not exist', () => { + component.setState({ data: [], isLoading: false, error: null }); + expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(0); + expect( + component.contains([ +

+ + Error Listing Pull Requests: + {' '} + error +

+ ]) + ).toEqual(false); + }); + }); }); diff --git a/tests/test-components/PullRequestCommentThread.spec.tsx b/tests/test-components/PullRequestCommentThread.spec.tsx index 41590c1..e74fe69 100644 --- a/tests/test-components/PullRequestCommentThread.spec.tsx +++ b/tests/test-components/PullRequestCommentThread.spec.tsx @@ -1,69 +1,105 @@ import { shallow } from 'enzyme'; -import 'jest'; import * as React from 'react'; -import { IPullRequestCommentThreadProps, PullRequestCommentThread } from '../../src/components/diff/PullRequestCommentThread'; -import { SamplePullRequestCommentThreadItemNew, SamplePullRequestCommentThreadItemReply } from "./testutils"; +import { + IPullRequestCommentThreadProps, + PullRequestCommentThread +} from '../../src/components/diff/PullRequestCommentThread'; +import { + SamplePullRequestCommentThreadItemNew, + SamplePullRequestCommentThreadItemReply +} from './testutils'; // Unit tests for PullRequestBrowserItem describe('PullRequestBrowserItem', () => { - - let newProps: IPullRequestCommentThreadProps = { - thread: SamplePullRequestCommentThreadItemNew, - handleRemove: () => {} - }; + let newProps: IPullRequestCommentThreadProps = { + thread: SamplePullRequestCommentThreadItemNew, + handleRemove: () => {} + }; - let replyProps: IPullRequestCommentThreadProps = { - thread: SamplePullRequestCommentThreadItemReply, - handleRemove: () => {} - }; + let replyProps: IPullRequestCommentThreadProps = { + thread: SamplePullRequestCommentThreadItemReply, + handleRemove: () => {} + }; - // Test constructor - describe('#constructor()', () => { - it('should construct a new thread', () => { - const pullRequestBrowser = new PullRequestCommentThread(newProps); - expect(pullRequestBrowser).toBeInstanceOf(PullRequestCommentThread); - }); - it('should construct a reply thread', () => { - const pullRequestBrowser = new PullRequestCommentThread(replyProps); - expect(pullRequestBrowser).toBeInstanceOf(PullRequestCommentThread); - }); + // Test constructor + describe('#constructor()', () => { + it('should construct a new thread', () => { + const pullRequestBrowser = new PullRequestCommentThread(newProps); + expect(pullRequestBrowser).toBeInstanceOf(PullRequestCommentThread); }); + it('should construct a reply thread', () => { + const pullRequestBrowser = new PullRequestCommentThread(replyProps); + expect(pullRequestBrowser).toBeInstanceOf(PullRequestCommentThread); + }); + }); - // Test render - describe('#render()', () => { - const newComponent = shallow(); - const replyComponent = shallow() - it('should show existing comments if there are any', () => { - expect(newComponent.find('.jp-PullRequestCommentItem')).toHaveLength(0); - expect(replyComponent.find('.jp-PullRequestCommentItem')).toHaveLength(1); - }); - it('should show inputs for both components', () => { - expect(newComponent.find('.jp-PullRequestInputContainer')).toHaveLength(1); - expect(replyComponent.find('.jp-PullRequestInputContainer')).toHaveLength(1); - }); - it('should show headers for both components', () => { - expect(newComponent.find('.jp-PullRequestCommentHeader')).toHaveLength(1); - expect(replyComponent.find('.jp-PullRequestCommentHeader')).toHaveLength(1); - }); - it('should init with input if new, init without input if reply', () => { - expect(newComponent.find('.jp-PullRequestInputFormTextArea')).toHaveLength(1); - expect(newComponent.find('.jp-PullRequestInputButtonContainer')).toHaveLength(1); - expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength(0); - expect(replyComponent.find('.jp-PullRequestInputFormTextArea')).toHaveLength(0); - expect(replyComponent.find('.jp-PullRequestInputButtonContainer')).toHaveLength(0); - expect(replyComponent.find('.jp-PullRequestInputFormButton')).toHaveLength(1); - }); - it('should show input if isInput is true', () => { - newComponent.setState({isInput: true}) - expect(newComponent.find('.jp-PullRequestInputFormTextArea')).toHaveLength(1); - expect(newComponent.find('.jp-PullRequestInputButtonContainer')).toHaveLength(1); - expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength(0); - }); - it('should show not input if isInput is false', () => { - newComponent.setState({isInput: false}) - expect(newComponent.find('.jp-PullRequestInputFormTextArea')).toHaveLength(0); - expect(newComponent.find('.jp-PullRequestInputButtonContainer')).toHaveLength(0); - expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength(1); - }); + // Test render + describe('#render()', () => { + const newComponent = shallow(); + const replyComponent = shallow( + + ); + it('should show existing comments if there are any', () => { + expect(newComponent.find('.jp-PullRequestCommentItem')).toHaveLength(0); + expect(replyComponent.find('.jp-PullRequestCommentItem')).toHaveLength(1); + }); + it('should show inputs for both components', () => { + expect(newComponent.find('.jp-PullRequestInputContainer')).toHaveLength( + 1 + ); + expect(replyComponent.find('.jp-PullRequestInputContainer')).toHaveLength( + 1 + ); + }); + it('should show headers for both components', () => { + expect(newComponent.find('.jp-PullRequestCommentHeader')).toHaveLength(1); + expect(replyComponent.find('.jp-PullRequestCommentHeader')).toHaveLength( + 1 + ); + }); + it('should init with input if new, init without input if reply', () => { + expect( + newComponent.find('.jp-PullRequestInputFormTextArea') + ).toHaveLength(1); + expect( + newComponent.find('.jp-PullRequestInputButtonContainer') + ).toHaveLength(1); + expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength( + 0 + ); + expect( + replyComponent.find('.jp-PullRequestInputFormTextArea') + ).toHaveLength(0); + expect( + replyComponent.find('.jp-PullRequestInputButtonContainer') + ).toHaveLength(0); + expect( + replyComponent.find('.jp-PullRequestInputFormButton') + ).toHaveLength(1); + }); + it('should show input if isInput is true', () => { + newComponent.setState({ isInput: true }); + expect( + newComponent.find('.jp-PullRequestInputFormTextArea') + ).toHaveLength(1); + expect( + newComponent.find('.jp-PullRequestInputButtonContainer') + ).toHaveLength(1); + expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength( + 0 + ); + }); + it('should show not input if isInput is false', () => { + newComponent.setState({ isInput: false }); + expect( + newComponent.find('.jp-PullRequestInputFormTextArea') + ).toHaveLength(0); + expect( + newComponent.find('.jp-PullRequestInputButtonContainer') + ).toHaveLength(0); + expect(newComponent.find('.jp-PullRequestInputFormButton')).toHaveLength( + 1 + ); }); -}); \ No newline at end of file + }); +}); diff --git a/tests/test-components/sample-responses/samplecomment.json b/tests/test-components/sample-responses/samplecomment.json index 60432c8..c421b73 100644 --- a/tests/test-components/sample-responses/samplecomment.json +++ b/tests/test-components/sample-responses/samplecomment.json @@ -1,7 +1,7 @@ { - "id": 296364299, - "line_number": 9, - "text": "too boring", - "user_name": "timnlupo", - "user_pic": "https://avatars1.githubusercontent.com/u/9003282?v=4" -} \ No newline at end of file + "id": 296364299, + "line_number": 9, + "text": "too boring", + "user_name": "timnlupo", + "user_pic": "https://avatars1.githubusercontent.com/u/9003282?v=4" +} diff --git a/tests/test-components/sample-responses/samplefile.json b/tests/test-components/sample-responses/samplefile.json index 71d64f2..fda4125 100644 --- a/tests/test-components/sample-responses/samplefile.json +++ b/tests/test-components/sample-responses/samplefile.json @@ -1,6 +1,6 @@ [ - { - "name": "test.ipynb", - "status": "modified" - } -] \ No newline at end of file + { + "name": "test.ipynb", + "status": "modified" + } +] diff --git a/tests/test-components/sample-responses/samplepr.json b/tests/test-components/sample-responses/samplepr.json index e8b6f57..adeec1f 100644 --- a/tests/test-components/sample-responses/samplepr.json +++ b/tests/test-components/sample-responses/samplepr.json @@ -1,8 +1,8 @@ [ - { - "id": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "title": "Interesting PR for feature", - "body": "This is a feature that tests a bunch of different types", - "internal_id": 457075994 - } -] \ No newline at end of file + { + "id": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "title": "Interesting PR for feature", + "body": "This is a feature that tests a bunch of different types", + "internal_id": 457075994 + } +] diff --git a/tests/test-components/testutils.ts b/tests/test-components/testutils.ts index 64dfca3..dcbae54 100644 --- a/tests/test-components/testutils.ts +++ b/tests/test-components/testutils.ts @@ -1,47 +1,52 @@ import * as samplepr from './sample-responses/samplepr.json'; -import { PullRequestCommentThreadModel, PullRequestFileModel, IPullRequestCommentModel, PullRequestModel } from '../../src/models'; +import { + PullRequestCommentThreadModel, + PullRequestFileModel, + IPullRequestCommentModel, + PullRequestModel +} from '../../src/models'; export let SAMPLE_PR_JSON: string = JSON.stringify(samplepr); export let SamplePullRequestItem = new PullRequestModel( - "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "Interesting PR for feature", - "This is a feature that tests a bunch of different types", - "https://github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "457075994" + 'https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1', + 'Interesting PR for feature', + 'This is a feature that tests a bunch of different types', + 'https://github.com/repos/timnlupo/juypterlabpr-test/pulls/1', + '457075994' ); export let SamplePullRequestIpynbFileItem = new PullRequestFileModel( - "test.ipynb", - "modified", - 12, - 23, - SamplePullRequestItem + 'test.ipynb', + 'modified', + 12, + 23, + SamplePullRequestItem ); export let SamplePullRequestPlainFileItem = new PullRequestFileModel( - "test.js", - "modified", - 12, - 23, - SamplePullRequestItem + 'test.js', + 'modified', + 12, + 23, + SamplePullRequestItem ); export let SamplePullRequestCommentItem: IPullRequestCommentModel = { - id: 296364299, - text: "too boring", - lineNumber: 9, - username: "timnlupo", - userpic: "https://avatars1.githubusercontent.com/u/9003282?v=4", - updatedAt: "2011-04-14T16:00:49Z" -} + id: 296364299, + text: 'too boring', + lineNumber: 9, + username: 'timnlupo', + userpic: 'https://avatars1.githubusercontent.com/u/9003282?v=4', + updatedAt: '2011-04-14T16:00:49Z' +}; export let SamplePullRequestCommentThreadItemNew = new PullRequestCommentThreadModel( - SamplePullRequestIpynbFileItem, - 3 + SamplePullRequestIpynbFileItem, + 3 ); export let SamplePullRequestCommentThreadItemReply = new PullRequestCommentThreadModel( - SamplePullRequestIpynbFileItem, - SamplePullRequestCommentItem + SamplePullRequestIpynbFileItem, + SamplePullRequestCommentItem ); diff --git a/tests/test-server/sample_responses/github_comments_get.json b/tests/test-server/sample_responses/github_comments_get.json index 90a8251..ea49f67 100644 --- a/tests/test-server/sample_responses/github_comments_get.json +++ b/tests/test-server/sample_responses/github_comments_get.json @@ -1,449 +1,449 @@ -[ - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296362189", - "pull_request_review_id":252989788, - "id":296362189, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2MjE4OQ==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", - "path":"test.js", - "position":4, - "original_position":4, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"too generic tim", - "created_at":"2019-06-21T19:14:08Z", - "updated_at":"2019-06-21T19:14:08Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296362189", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296362189" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296362189" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - } +[ + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296362189", + "pull_request_review_id": 252989788, + "id": 296362189, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2MjE4OQ==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", + "path": "test.js", + "position": 4, + "original_position": 4, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364299", - "pull_request_review_id":252992495, - "id":296364299, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2NDI5OQ==", - "diff_hunk":"@@ -25,6 +25,33 @@\n \"print('hi')\\n\",\n \"print(1+1)\"\n ]\n+ },\n+ {\n+ \"cell_type\": \"markdown\",\n+ \"metadata\": {},\n+ \"source\": [\n+ \"## Some information\\n\",", - "path":"test.ipynb", - "position":9, - "original_position":9, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"too boring", - "created_at":"2019-06-21T19:21:20Z", - "updated_at":"2019-06-21T19:21:20Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364299", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364299" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364299" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - } + "body": "too generic tim", + "created_at": "2019-06-21T19:14:08Z", + "updated_at": "2019-06-21T19:14:08Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296362189", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296362189" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296362189" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + } + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364299", + "pull_request_review_id": 252992495, + "id": 296364299, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2NDI5OQ==", + "diff_hunk": "@@ -25,6 +25,33 @@\n \"print('hi')\\n\",\n \"print(1+1)\"\n ]\n+ },\n+ {\n+ \"cell_type\": \"markdown\",\n+ \"metadata\": {},\n+ \"source\": [\n+ \"## Some information\\n\",", + "path": "test.ipynb", + "position": 9, + "original_position": 9, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "too boring", + "created_at": "2019-06-21T19:21:20Z", + "updated_at": "2019-06-21T19:21:20Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364299", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364299" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364299" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + } + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364357", + "pull_request_review_id": 252992564, + "id": 296364357, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2NDM1Nw==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", + "path": "test.js", + "position": 2, + "original_position": 2, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364357", - "pull_request_review_id":252992564, - "id":296364357, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM2NDM1Nw==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", - "path":"test.js", - "position":2, - "original_position":2, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"kinda hype", - "created_at":"2019-06-21T19:21:31Z", - "updated_at":"2019-06-21T19:21:31Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364357", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364357" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364357" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - } + "body": "kinda hype", + "created_at": "2019-06-21T19:21:31Z", + "updated_at": "2019-06-21T19:21:31Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364357", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296364357" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296364357" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + } + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296375528", + "pull_request_review_id": 253007450, + "id": 296375528, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM3NTUyOA==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", + "path": "test.js", + "position": 2, + "original_position": 2, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296375528", - "pull_request_review_id":253007450, - "id":296375528, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjM3NTUyOA==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", - "path":"test.js", - "position":2, - "original_position":2, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"this is a solid reply", - "created_at":"2019-06-21T20:00:00Z", - "updated_at":"2019-06-21T20:00:00Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296375528", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296375528" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296375528" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296364357 + "body": "this is a solid reply", + "created_at": "2019-06-21T20:00:00Z", + "updated_at": "2019-06-21T20:00:00Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296375528", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296375528" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296375528" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296404880", - "pull_request_review_id":253046255, - "id":296404880, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjQwNDg4MA==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", - "path":"test.js", - "position":4, - "original_position":4, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text ", - "created_at":"2019-06-21T21:51:17Z", - "updated_at":"2019-06-21T21:51:17Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296404880", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296404880" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296404880" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296362189 + "in_reply_to_id": 296364357 + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296404880", + "pull_request_review_id": 253046255, + "id": 296404880, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5NjQwNDg4MA==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", + "path": "test.js", + "position": 4, + "original_position": 4, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299248433", - "pull_request_review_id":256599237, - "id":299248433, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI0ODQzMw==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", - "path":"test.js", - "position":2, - "original_position":2, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"test", - "created_at":"2019-07-01T23:03:05Z", - "updated_at":"2019-07-01T23:03:05Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299248433", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299248433" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299248433" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296364357 + "body": "this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text this is a test long block of text ", + "created_at": "2019-06-21T21:51:17Z", + "updated_at": "2019-06-21T21:51:17Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296404880", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/296404880" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r296404880" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299249773", - "pull_request_review_id":256600772, - "id":299249773, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI0OTc3Mw==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", - "path":"test.js", - "position":4, - "original_position":4, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"test 2", - "created_at":"2019-07-01T23:09:27Z", - "updated_at":"2019-07-01T23:09:28Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299249773", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299249773" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299249773" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296362189 + "in_reply_to_id": 296362189 + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299248433", + "pull_request_review_id": 256599237, + "id": 299248433, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI0ODQzMw==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", + "path": "test.js", + "position": 2, + "original_position": 2, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299250585", - "pull_request_review_id":256601722, - "id":299250585, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI1MDU4NQ==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", - "path":"test.js", - "position":4, - "original_position":4, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"yooo test", - "created_at":"2019-07-01T23:13:37Z", - "updated_at":"2019-07-01T23:13:37Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299250585", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299250585" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299250585" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296362189 + "body": "test", + "created_at": "2019-07-01T23:03:05Z", + "updated_at": "2019-07-01T23:03:05Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299248433", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299248433" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299248433" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } }, - { - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299257452", - "pull_request_review_id":256610062, - "id":299257452, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI1NzQ1Mg==", - "diff_hunk":"@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", - "path":"test.js", - "position":2, - "original_position":2, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "body":"test 2", - "created_at":"2019-07-01T23:50:10Z", - "updated_at":"2019-07-01T23:50:10Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299257452", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299257452" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299257452" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } - }, - "in_reply_to_id":296364357 - } -] \ No newline at end of file + "in_reply_to_id": 296364357 + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299249773", + "pull_request_review_id": 256600772, + "id": 299249773, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI0OTc3Mw==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", + "path": "test.js", + "position": 4, + "original_position": 4, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "test 2", + "created_at": "2019-07-01T23:09:27Z", + "updated_at": "2019-07-01T23:09:28Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299249773", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299249773" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299249773" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + }, + "in_reply_to_id": 296362189 + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299250585", + "pull_request_review_id": 256601722, + "id": 299250585, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI1MDU4NQ==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+\n+// this is a comment\n+function helloworld() {", + "path": "test.js", + "position": 4, + "original_position": 4, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "yooo test", + "created_at": "2019-07-01T23:13:37Z", + "updated_at": "2019-07-01T23:13:37Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299250585", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299250585" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299250585" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + }, + "in_reply_to_id": 296362189 + }, + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299257452", + "pull_request_review_id": 256610062, + "id": 299257452, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTI1NzQ1Mg==", + "diff_hunk": "@@ -0,0 +1,6 @@\n+var test = \"hello\";\n+", + "path": "test.js", + "position": 2, + "original_position": 2, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "test 2", + "created_at": "2019-07-01T23:50:10Z", + "updated_at": "2019-07-01T23:50:10Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299257452", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299257452" + }, + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299257452" + }, + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + }, + "in_reply_to_id": 296364357 + } +] diff --git a/tests/test-server/sample_responses/github_comments_post.json b/tests/test-server/sample_responses/github_comments_post.json index 979fc01..aeef3cc 100644 --- a/tests/test-server/sample_responses/github_comments_post.json +++ b/tests/test-server/sample_responses/github_comments_post.json @@ -1,50 +1,50 @@ -{ - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299659626", - "pull_request_review_id":257117322, - "id":299659626, - "node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTY1OTYyNg==", - "diff_hunk":"@@ -25,6 +25,33 @@\n \"print('hi')\\n\",\n \"print(1+1)\"\n ]\n+ },\n+ {\n+ \"cell_type\": \"markdown\",\n+ \"metadata\": {},\n+ \"source\": [\n+ \"## Some information\\n\",", - "path":"test.ipynb", - "position":9, - "original_position":9, - "commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "original_commit_id":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false +{ + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299659626", + "pull_request_review_id": 257117322, + "id": 299659626, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5OTY1OTYyNg==", + "diff_hunk": "@@ -25,6 +25,33 @@\n \"print('hi')\\n\",\n \"print(1+1)\"\n ]\n+ },\n+ {\n+ \"cell_type\": \"markdown\",\n+ \"metadata\": {},\n+ \"source\": [\n+ \"## Some information\\n\",", + "path": "test.ipynb", + "position": 9, + "original_position": 9, + "commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "original_commit_id": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "test", + "created_at": "2019-07-02T19:58:38Z", + "updated_at": "2019-07-02T19:58:38Z", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299659626", + "pull_request_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "author_association": "OWNER", + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299659626" }, - "body":"test", - "created_at":"2019-07-02T19:58:38Z", - "updated_at":"2019-07-02T19:58:38Z", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299659626", - "pull_request_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "author_association":"OWNER", - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments/299659626" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299659626" - }, - "pull_request":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - } + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1#discussion_r299659626" }, - "in_reply_to_id":296364299 -} \ No newline at end of file + "pull_request": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" + } + }, + "in_reply_to_id": 296364299 +} diff --git a/tests/test-server/sample_responses/github_current_user.json b/tests/test-server/sample_responses/github_current_user.json index 42efcf4..5c84b6f 100644 --- a/tests/test-server/sample_responses/github_current_user.json +++ b/tests/test-server/sample_responses/github_current_user.json @@ -1,33 +1,33 @@ -{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false, - "name":"Tim Lupo", - "company":"@amazon", - "blog":"http://timlupo.com", - "location":"Los Angeles, CA", - "email":"tlupo@usc.edu", - "hireable":null, - "bio":null, - "public_repos":10, - "public_gists":0, - "followers":24, - "following":14, - "created_at":"2014-10-03T00:35:16Z", - "updated_at":"2019-06-18T16:15:26Z" -} \ No newline at end of file +{ + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false, + "name": "Tim Lupo", + "company": "@amazon", + "blog": "http://timlupo.com", + "location": "Los Angeles, CA", + "email": "tlupo@usc.edu", + "hireable": null, + "bio": null, + "public_repos": 10, + "public_gists": 0, + "followers": 24, + "following": 14, + "created_at": "2014-10-03T00:35:16Z", + "updated_at": "2019-06-18T16:15:26Z" +} diff --git a/tests/test-server/sample_responses/github_list_files.json b/tests/test-server/sample_responses/github_list_files.json index 5e1cd75..377a12b 100644 --- a/tests/test-server/sample_responses/github_list_files.json +++ b/tests/test-server/sample_responses/github_list_files.json @@ -1,14 +1,14 @@ [ - { - "sha": "2969be3e8ee1c0222396a5611407e4769f14e54b", - "filename": "README.md", - "status": "added", - "additions": 1, - "deletions": 0, - "changes": 1, - "blob_url": "https://github.com/timnlupo/VINCI-iOS-old/blob/667de86d4f4a1ccbdb3c5ab4314777adf136aab4/README.md", - "raw_url": "https://github.com/timnlupo/VINCI-iOS-old/raw/667de86d4f4a1ccbdb3c5ab4314777adf136aab4/README.md", - "contents_url": "https://api.github.com/repos/timnlupo/VINCI-iOS-old/contents/README.md?ref=667de86d4f4a1ccbdb3c5ab4314777adf136aab4", - "patch": "@@ -0,0 +1 @@\n+test 2" - } -] \ No newline at end of file + { + "sha": "2969be3e8ee1c0222396a5611407e4769f14e54b", + "filename": "README.md", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/timnlupo/VINCI-iOS-old/blob/667de86d4f4a1ccbdb3c5ab4314777adf136aab4/README.md", + "raw_url": "https://github.com/timnlupo/VINCI-iOS-old/raw/667de86d4f4a1ccbdb3c5ab4314777adf136aab4/README.md", + "contents_url": "https://api.github.com/repos/timnlupo/VINCI-iOS-old/contents/README.md?ref=667de86d4f4a1ccbdb3c5ab4314777adf136aab4", + "patch": "@@ -0,0 +1 @@\n+test 2" + } +] diff --git a/tests/test-server/sample_responses/github_list_prs.json b/tests/test-server/sample_responses/github_list_prs.json index c39645a..7c41e8f 100644 --- a/tests/test-server/sample_responses/github_list_prs.json +++ b/tests/test-server/sample_responses/github_list_prs.json @@ -1,57 +1,57 @@ { - "total_count": 1, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1", - "repository_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test", - "labels_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/labels{/name}", - "comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments", - "events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/events", - "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1", - "id": 457075994, - "node_id": "MDExOlB1bGxSZXF1ZXN0Mjg4OTYxNDU4", - "number": 1, - "title": "Interesting PR for feature", - "user": { - "login": "timnlupo", - "id": 9003282, - "node_id": "MDQ6VXNlcjkwMDMyODI=", - "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/timnlupo", - "html_url": "https://github.com/timnlupo", - "followers_url": "https://api.github.com/users/timnlupo/followers", - "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", - "organizations_url": "https://api.github.com/users/timnlupo/orgs", - "repos_url": "https://api.github.com/users/timnlupo/repos", - "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url": "https://api.github.com/users/timnlupo/received_events", - "type": "User", - "site_admin": false - }, - "labels": [], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2019-06-17T18:02:42Z", - "updated_at": "2019-06-21T21:51:17Z", - "closed_at": null, - "author_association": "OWNER", - "pull_request": { - "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1", - "diff_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.diff", - "patch_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.patch" - }, - "body": "This is a feature that tests a bunch of different types", - "score": 1 - } - ] -} \ No newline at end of file + "total_count": 1, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1", + "repository_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test", + "labels_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/labels{/name}", + "comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments", + "events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/events", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1", + "id": 457075994, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjg4OTYxNDU4", + "number": 1, + "title": "Interesting PR for feature", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2019-06-17T18:02:42Z", + "updated_at": "2019-06-21T21:51:17Z", + "closed_at": null, + "author_association": "OWNER", + "pull_request": { + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1", + "diff_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.diff", + "patch_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.patch" + }, + "body": "This is a feature that tests a bunch of different types", + "score": 1 + } + ] +} diff --git a/tests/test-server/sample_responses/github_pr_links.json b/tests/test-server/sample_responses/github_pr_links.json index f2ad19f..731048a 100644 --- a/tests/test-server/sample_responses/github_pr_links.json +++ b/tests/test-server/sample_responses/github_pr_links.json @@ -1,335 +1,327 @@ -{ - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", - "id":288961458, - "node_id":"MDExOlB1bGxSZXF1ZXN0Mjg4OTYxNDU4", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1", - "diff_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1.diff", - "patch_url":"https://github.com/timnlupo/juypterlabpr-test/pull/1.patch", - "issue_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1", - "number":1, - "state":"open", - "locked":false, - "title":"Interesting PR for feature", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false +{ + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1", + "id": 288961458, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjg4OTYxNDU4", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1", + "diff_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.diff", + "patch_url": "https://github.com/timnlupo/juypterlabpr-test/pull/1.patch", + "issue_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1", + "number": 1, + "state": "open", + "locked": false, + "title": "Interesting PR for feature", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "body": "This is a feature that tests a bunch of different types", + "created_at": "2019-06-17T18:02:42Z", + "updated_at": "2019-06-21T21:51:17Z", + "closed_at": null, + "merged_at": null, + "merge_commit_sha": "772df7611b807a40903e579bd521d0574437efec", + "assignee": null, + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "commits_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/commits", + "review_comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/comments", + "review_comment_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments", + "statuses_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "head": { + "label": "timnlupo:dev", + "ref": "dev", + "sha": "02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - "body":"This is a feature that tests a bunch of different types", - "created_at":"2019-06-17T18:02:42Z", - "updated_at":"2019-06-21T21:51:17Z", - "closed_at":null, - "merged_at":null, - "merge_commit_sha":"772df7611b807a40903e579bd521d0574437efec", - "assignee":null, - "assignees":[ - - ], - "requested_reviewers":[ - - ], - "requested_teams":[ - - ], - "labels":[ - - ], - "milestone":null, - "commits_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/commits", - "review_comments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/comments", - "review_comment_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments{/number}", - "comments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments", - "statuses_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "head":{ - "label":"timnlupo:dev", - "ref":"dev", - "sha":"02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "repo":{ - "id":192394642, - "node_id":"MDEwOlJlcG9zaXRvcnkxOTIzOTQ2NDI=", - "name":"juypterlabpr-test", - "full_name":"timnlupo/juypterlabpr-test", - "private":false, - "owner":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "html_url":"https://github.com/timnlupo/juypterlabpr-test", - "description":null, - "fork":false, - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test", - "forks_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/forks", - "keys_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/keys{/key_id}", - "collaborators_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/collaborators{/collaborator}", - "teams_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/teams", - "hooks_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/hooks", - "issue_events_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/events{/number}", - "events_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/events", - "assignees_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/assignees{/user}", - "branches_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/branches{/branch}", - "tags_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/tags", - "blobs_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs{/sha}", - "git_tags_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/tags{/sha}", - "git_refs_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/refs{/sha}", - "trees_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/trees{/sha}", - "statuses_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/{sha}", - "languages_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/languages", - "stargazers_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/stargazers", - "contributors_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contributors", - "subscribers_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/subscribers", - "subscription_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/subscription", - "commits_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/commits{/sha}", - "git_commits_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/commits{/sha}", - "comments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/comments{/number}", - "issue_comment_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/comments{/number}", - "contents_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/{+path}", - "compare_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/compare/{base}...{head}", - "merges_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/merges", - "archive_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/{archive_format}{/ref}", - "downloads_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/downloads", - "issues_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues{/number}", - "pulls_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls{/number}", - "milestones_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/milestones{/number}", - "notifications_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/notifications{?since,all,participating}", - "labels_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/labels{/name}", - "releases_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/releases{/id}", - "deployments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/deployments", - "created_at":"2019-06-17T18:01:22Z", - "updated_at":"2019-06-17T18:02:06Z", - "pushed_at":"2019-06-17T18:02:43Z", - "git_url":"git://github.com/timnlupo/juypterlabpr-test.git", - "ssh_url":"git@github.com:timnlupo/juypterlabpr-test.git", - "clone_url":"https://github.com/timnlupo/juypterlabpr-test.git", - "svn_url":"https://github.com/timnlupo/juypterlabpr-test", - "homepage":null, - "size":1, - "stargazers_count":0, - "watchers_count":0, - "language":"Jupyter Notebook", - "has_issues":true, - "has_projects":true, - "has_downloads":true, - "has_wiki":true, - "has_pages":false, - "forks_count":0, - "mirror_url":null, - "archived":false, - "disabled":false, - "open_issues_count":1, - "license":null, - "forks":0, - "open_issues":1, - "watchers":0, - "default_branch":"master" - } + "repo": { + "id": 192394642, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTIzOTQ2NDI=", + "name": "juypterlabpr-test", + "full_name": "timnlupo/juypterlabpr-test", + "private": false, + "owner": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/timnlupo/juypterlabpr-test", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test", + "forks_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/forks", + "keys_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/teams", + "hooks_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/hooks", + "issue_events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/events{/number}", + "events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/events", + "assignees_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/assignees{/user}", + "branches_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/branches{/branch}", + "tags_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/tags", + "blobs_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/{sha}", + "languages_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/languages", + "stargazers_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/stargazers", + "contributors_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contributors", + "subscribers_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/subscribers", + "subscription_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/subscription", + "commits_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/{+path}", + "compare_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/merges", + "archive_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/downloads", + "issues_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues{/number}", + "pulls_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls{/number}", + "milestones_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/milestones{/number}", + "notifications_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/labels{/name}", + "releases_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/releases{/id}", + "deployments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/deployments", + "created_at": "2019-06-17T18:01:22Z", + "updated_at": "2019-06-17T18:02:06Z", + "pushed_at": "2019-06-17T18:02:43Z", + "git_url": "git://github.com/timnlupo/juypterlabpr-test.git", + "ssh_url": "git@github.com:timnlupo/juypterlabpr-test.git", + "clone_url": "https://github.com/timnlupo/juypterlabpr-test.git", + "svn_url": "https://github.com/timnlupo/juypterlabpr-test", + "homepage": null, + "size": 1, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Jupyter Notebook", + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": null, + "forks": 0, + "open_issues": 1, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "timnlupo:master", + "ref": "master", + "sha": "a221b6d04be7fff0737c24e1e335a3091eca81e7", + "user": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false }, - "base":{ - "label":"timnlupo:master", - "ref":"master", - "sha":"a221b6d04be7fff0737c24e1e335a3091eca81e7", - "user":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "repo":{ - "id":192394642, - "node_id":"MDEwOlJlcG9zaXRvcnkxOTIzOTQ2NDI=", - "name":"juypterlabpr-test", - "full_name":"timnlupo/juypterlabpr-test", - "private":false, - "owner":{ - "login":"timnlupo", - "id":9003282, - "node_id":"MDQ6VXNlcjkwMDMyODI=", - "avatar_url":"https://avatars1.githubusercontent.com/u/9003282?v=4", - "gravatar_id":"", - "url":"https://api.github.com/users/timnlupo", - "html_url":"https://github.com/timnlupo", - "followers_url":"https://api.github.com/users/timnlupo/followers", - "following_url":"https://api.github.com/users/timnlupo/following{/other_user}", - "gists_url":"https://api.github.com/users/timnlupo/gists{/gist_id}", - "starred_url":"https://api.github.com/users/timnlupo/starred{/owner}{/repo}", - "subscriptions_url":"https://api.github.com/users/timnlupo/subscriptions", - "organizations_url":"https://api.github.com/users/timnlupo/orgs", - "repos_url":"https://api.github.com/users/timnlupo/repos", - "events_url":"https://api.github.com/users/timnlupo/events{/privacy}", - "received_events_url":"https://api.github.com/users/timnlupo/received_events", - "type":"User", - "site_admin":false - }, - "html_url":"https://github.com/timnlupo/juypterlabpr-test", - "description":null, - "fork":false, - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test", - "forks_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/forks", - "keys_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/keys{/key_id}", - "collaborators_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/collaborators{/collaborator}", - "teams_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/teams", - "hooks_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/hooks", - "issue_events_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/events{/number}", - "events_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/events", - "assignees_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/assignees{/user}", - "branches_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/branches{/branch}", - "tags_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/tags", - "blobs_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs{/sha}", - "git_tags_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/tags{/sha}", - "git_refs_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/refs{/sha}", - "trees_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/trees{/sha}", - "statuses_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/{sha}", - "languages_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/languages", - "stargazers_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/stargazers", - "contributors_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contributors", - "subscribers_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/subscribers", - "subscription_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/subscription", - "commits_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/commits{/sha}", - "git_commits_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/commits{/sha}", - "comments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/comments{/number}", - "issue_comment_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/comments{/number}", - "contents_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/{+path}", - "compare_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/compare/{base}...{head}", - "merges_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/merges", - "archive_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/{archive_format}{/ref}", - "downloads_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/downloads", - "issues_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues{/number}", - "pulls_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls{/number}", - "milestones_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/milestones{/number}", - "notifications_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/notifications{?since,all,participating}", - "labels_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/labels{/name}", - "releases_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/releases{/id}", - "deployments_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/deployments", - "created_at":"2019-06-17T18:01:22Z", - "updated_at":"2019-06-17T18:02:06Z", - "pushed_at":"2019-06-17T18:02:43Z", - "git_url":"git://github.com/timnlupo/juypterlabpr-test.git", - "ssh_url":"git@github.com:timnlupo/juypterlabpr-test.git", - "clone_url":"https://github.com/timnlupo/juypterlabpr-test.git", - "svn_url":"https://github.com/timnlupo/juypterlabpr-test", - "homepage":null, - "size":1, - "stargazers_count":0, - "watchers_count":0, - "language":"Jupyter Notebook", - "has_issues":true, - "has_projects":true, - "has_downloads":true, - "has_wiki":true, - "has_pages":false, - "forks_count":0, - "mirror_url":null, - "archived":false, - "disabled":false, - "open_issues_count":1, - "license":null, - "forks":0, - "open_issues":1, - "watchers":0, - "default_branch":"master" - } + "repo": { + "id": 192394642, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTIzOTQ2NDI=", + "name": "juypterlabpr-test", + "full_name": "timnlupo/juypterlabpr-test", + "private": false, + "owner": { + "login": "timnlupo", + "id": 9003282, + "node_id": "MDQ6VXNlcjkwMDMyODI=", + "avatar_url": "https://avatars1.githubusercontent.com/u/9003282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timnlupo", + "html_url": "https://github.com/timnlupo", + "followers_url": "https://api.github.com/users/timnlupo/followers", + "following_url": "https://api.github.com/users/timnlupo/following{/other_user}", + "gists_url": "https://api.github.com/users/timnlupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timnlupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timnlupo/subscriptions", + "organizations_url": "https://api.github.com/users/timnlupo/orgs", + "repos_url": "https://api.github.com/users/timnlupo/repos", + "events_url": "https://api.github.com/users/timnlupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/timnlupo/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/timnlupo/juypterlabpr-test", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test", + "forks_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/forks", + "keys_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/teams", + "hooks_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/hooks", + "issue_events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/events{/number}", + "events_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/events", + "assignees_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/assignees{/user}", + "branches_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/branches{/branch}", + "tags_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/tags", + "blobs_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/{sha}", + "languages_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/languages", + "stargazers_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/stargazers", + "contributors_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contributors", + "subscribers_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/subscribers", + "subscription_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/subscription", + "commits_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/{+path}", + "compare_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/merges", + "archive_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/downloads", + "issues_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues{/number}", + "pulls_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls{/number}", + "milestones_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/milestones{/number}", + "notifications_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/labels{/name}", + "releases_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/releases{/id}", + "deployments_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/deployments", + "created_at": "2019-06-17T18:01:22Z", + "updated_at": "2019-06-17T18:02:06Z", + "pushed_at": "2019-06-17T18:02:43Z", + "git_url": "git://github.com/timnlupo/juypterlabpr-test.git", + "ssh_url": "git@github.com:timnlupo/juypterlabpr-test.git", + "clone_url": "https://github.com/timnlupo/juypterlabpr-test.git", + "svn_url": "https://github.com/timnlupo/juypterlabpr-test", + "homepage": null, + "size": 1, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Jupyter Notebook", + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": null, + "forks": 0, + "open_issues": 1, + "watchers": 0, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" }, - "_links":{ - "self":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1" - }, - "html":{ - "href":"https://github.com/timnlupo/juypterlabpr-test/pull/1" - }, - "issue":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1" - }, - "comments":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments" - }, - "review_comments":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/comments" - }, - "review_comment":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments{/number}" - }, - "commits":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/commits" - }, - "statuses":{ - "href":"https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa" - } + "html": { + "href": "https://github.com/timnlupo/juypterlabpr-test/pull/1" }, - "author_association":"OWNER", - "merged":false, - "mergeable":true, - "rebaseable":true, - "mergeable_state":"clean", - "merged_by":null, - "comments":0, - "review_comments":5, - "maintainer_can_modify":false, - "commits":1, - "additions":111, - "deletions":0, - "changed_files":3 -} \ No newline at end of file + "issue": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1" + }, + "comments": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/issues/1/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/pulls/1/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/timnlupo/juypterlabpr-test/statuses/02fb374e022fbe7aaa4cd69c0dc3928e6422dfaa" + } + }, + "author_association": "OWNER", + "merged": false, + "mergeable": true, + "rebaseable": true, + "mergeable_state": "clean", + "merged_by": null, + "comments": 0, + "review_comments": 5, + "maintainer_can_modify": false, + "commits": 1, + "additions": 111, + "deletions": 0, + "changed_files": 3 +} diff --git a/tests/test-server/sample_responses/github_validate_pr_link.json b/tests/test-server/sample_responses/github_validate_pr_link.json index 3483c89..6c51552 100644 --- a/tests/test-server/sample_responses/github_validate_pr_link.json +++ b/tests/test-server/sample_responses/github_validate_pr_link.json @@ -1,18 +1,18 @@ -{ - "name":"test.js", - "path":"test.js", - "sha":"397950886ede641da60df51e291109256b56f95f", - "size":81, - "url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/test.js?ref=dev", - "html_url":"https://github.com/timnlupo/juypterlabpr-test/blob/dev/test.js", - "git_url":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs/397950886ede641da60df51e291109256b56f95f", - "download_url":"https://raw.githubusercontent.com/timnlupo/juypterlabpr-test/dev/test.js", - "type":"file", - "content":"dmFyIHRlc3QgPSAiaGVsbG8iOwoKLy8gdGhpcyBpcyBhIGNvbW1lbnQKZnVuY3Rpb24gaGVsbG93b3JsZCgpIHsKCXJldHVybiB0ZXN0Owp9", - "encoding":"base64", - "_links":{ - "self":"https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/test.js?ref=dev", - "git":"https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs/397950886ede641da60df51e291109256b56f95f", - "html":"https://github.com/timnlupo/juypterlabpr-test/blob/dev/test.js" - } -} \ No newline at end of file +{ + "name": "test.js", + "path": "test.js", + "sha": "397950886ede641da60df51e291109256b56f95f", + "size": 81, + "url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/test.js?ref=dev", + "html_url": "https://github.com/timnlupo/juypterlabpr-test/blob/dev/test.js", + "git_url": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs/397950886ede641da60df51e291109256b56f95f", + "download_url": "https://raw.githubusercontent.com/timnlupo/juypterlabpr-test/dev/test.js", + "type": "file", + "content": "dmFyIHRlc3QgPSAiaGVsbG8iOwoKLy8gdGhpcyBpcyBhIGNvbW1lbnQKZnVuY3Rpb24gaGVsbG93b3JsZCgpIHsKCXJldHVybiB0ZXN0Owp9", + "encoding": "base64", + "_links": { + "self": "https://api.github.com/repos/timnlupo/juypterlabpr-test/contents/test.js?ref=dev", + "git": "https://api.github.com/repos/timnlupo/juypterlabpr-test/git/blobs/397950886ede641da60df51e291109256b56f95f", + "html": "https://github.com/timnlupo/juypterlabpr-test/blob/dev/test.js" + } +} diff --git a/tests/test-server/sample_responses/ipynb_base.json b/tests/test-server/sample_responses/ipynb_base.json index f761235..6a8411f 100644 --- a/tests/test-server/sample_responses/ipynb_base.json +++ b/tests/test-server/sample_responses/ipynb_base.json @@ -1,61 +1,53 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cool Header" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Some information\n", - "* Item 1\n", - "* Item 2\n", - "* Item 3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "hi\n", - "2\n" + { + "cell_type": "markdown", + "metadata": {}, + "source": ["## Cool Header"] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Some information\n", + "* Item 1\n", + "* Item 2\n", + "* Item 3" ] - } - ], - "source": [ - "print('hi')\n", - "print(1+1)" - ] - } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": ["hi\n", "2\n"] + } + ], + "source": ["print('hi')\n", "print(1+1)"] + } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } }, "nbformat": 4, "nbformat_minor": 2 - } \ No newline at end of file +} diff --git a/tests/test-server/sample_responses/ipynb_nbdiff.json b/tests/test-server/sample_responses/ipynb_nbdiff.json index ed484b8..76dd066 100644 --- a/tests/test-server/sample_responses/ipynb_nbdiff.json +++ b/tests/test-server/sample_responses/ipynb_nbdiff.json @@ -1,99 +1,87 @@ { - "base":{ - "cells":[ + "base": { + "cells": [ { - "cell_type":"markdown", - "metadata":{ - - }, - "source":"## Cool Header" + "cell_type": "markdown", + "metadata": {}, + "source": "## Cool Header" }, { - "cell_type":"markdown", - "metadata":{ - - }, - "source":"## Some information\n* Item 1\n* Item 2\n* Item 3" + "cell_type": "markdown", + "metadata": {}, + "source": "## Some information\n* Item 1\n* Item 2\n* Item 3" }, { - "cell_type":"code", - "execution_count":1, - "metadata":{ - - }, - "outputs":[ + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ { - "name":"stdout", - "output_type":"stream", - "text":"hi\n2\n" + "name": "stdout", + "output_type": "stream", + "text": "hi\n2\n" } ], - "source":"print('hi')\nprint(1+1)" + "source": "print('hi')\nprint(1+1)" } ], - "metadata":{ - "kernelspec":{ - "display_name":"Python 3", - "language":"python", - "name":"python3" + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "language_info":{ - "codemirror_mode":{ - "name":"ipython", - "version":3 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 }, - "file_extension":".py", - "mimetype":"text/x-python", - "name":"python", - "nbconvert_exporter":"python", - "pygments_lexer":"ipython3", - "version":"3.7.3" + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } }, - "nbformat":4, - "nbformat_minor":2 + "nbformat": 4, + "nbformat_minor": 2 }, - "diff":[ + "diff": [ { - "op":"patch", - "key":"cells", - "diff":[ + "op": "patch", + "key": "cells", + "diff": [ { - "op":"addrange", - "key":0, - "valuelist":[ + "op": "addrange", + "key": 0, + "valuelist": [ { - "cell_type":"code", - "execution_count":1, - "metadata":{ - - }, - "outputs":[ - - ], - "source":"def hello():\n print(\"hello!\")" + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": "def hello():\n print(\"hello!\")" } ] }, { - "op":"removerange", - "key":0, - "length":1 + "op": "removerange", + "key": 0, + "length": 1 }, { - "op":"patch", - "key":1, - "diff":[ + "op": "patch", + "key": 1, + "diff": [ { - "op":"patch", - "key":"source", - "diff":[ + "op": "patch", + "key": "source", + "diff": [ { - "op":"addrange", - "key":3, - "valuelist":[ - "* Item 2.5\n" - ] + "op": "addrange", + "key": 3, + "valuelist": ["* Item 2.5\n"] } ] } @@ -102,9 +90,9 @@ ] }, { - "op":"replace", - "key":"nbformat_minor", - "value":4 + "op": "replace", + "key": "nbformat_minor", + "value": 4 } ] -} \ No newline at end of file +} diff --git a/tests/test-server/sample_responses/ipynb_remote.json b/tests/test-server/sample_responses/ipynb_remote.json index 7579808..5856cc8 100644 --- a/tests/test-server/sample_responses/ipynb_remote.json +++ b/tests/test-server/sample_responses/ipynb_remote.json @@ -1,65 +1,56 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def hello():\n", - " print(\"hello!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Some information\n", - "* Item 1\n", - "* Item 2\n", - "* Item 2.5\n", - "* Item 3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "hi\n", - "2\n" + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": ["def hello():\n", " print(\"hello!\")"] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Some information\n", + "* Item 1\n", + "* Item 2\n", + "* Item 2.5\n", + "* Item 3" ] - } - ], - "source": [ - "print('hi')\n", - "print(1+1)" - ] - } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": ["hi\n", "2\n"] + } + ], + "source": ["print('hi')\n", "print(1+1)"] + } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } }, "nbformat": 4, "nbformat_minor": 4 - } \ No newline at end of file +} diff --git a/webpack.config.js b/webpack.config.js index 42683e0..806a744 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,11 +6,11 @@ const webpack = require('webpack'); module.exports = { entry: { // Package each language's worker and give these filenames in `getWorkerUrl` - "editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js', - "json.worker": 'monaco-editor/esm/vs/language/json/json.worker', - "css.worker": 'monaco-editor/esm/vs/language/css/css.worker', - "html.worker": 'monaco-editor/esm/vs/language/html/html.worker', - "ts.worker": 'monaco-editor/esm/vs/language/typescript/ts.worker', + 'editor.worker': 'monaco-editor/esm/vs/editor/editor.worker.js', + 'json.worker': 'monaco-editor/esm/vs/language/json/json.worker', + 'css.worker': 'monaco-editor/esm/vs/language/css/css.worker', + 'html.worker': 'monaco-editor/esm/vs/language/html/html.worker', + 'ts.worker': 'monaco-editor/esm/vs/language/typescript/ts.worker' }, output: { filename: 'JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-[name].bundle.js', @@ -18,10 +18,12 @@ module.exports = { globalObject: 'self' }, module: { - rules: [{ - test: /\.css$/, - use: ['style-loader', 'css-loader'] - }] + rules: [ + { + test: /\.css$/, + use: ['style-loader', 'css-loader'] + } + ] }, mode: 'development', devtool: 'source-map', @@ -32,4 +34,4 @@ module.exports = { /vs\/language\/typescript\/lib/ ) ] -}; \ No newline at end of file +}; From 4560f9ada27f00c7ae621a8b65f5389f8c9112ed Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 11:40:29 -0500 Subject: [PATCH 08/17] fix all the lint --- .eslintrc.js | 3 + src/components/PullRequestPanel.tsx | 6 +- src/components/browser/PullRequestBrowser.tsx | 2 +- .../browser/PullRequestBrowserFileItem.tsx | 2 +- .../browser/PullRequestBrowserItem.tsx | 10 +- src/components/diff/NBDiff.tsx | 120 ++++++++++-------- src/components/diff/PlainDiffComponent.tsx | 81 +++++++----- .../diff/PullRequestCommentThread.tsx | 16 +-- .../tab/PullRequestDescriptionTab.tsx | 8 +- src/components/tab/PullRequestFileTab.tsx | 10 +- src/models.tsx | 51 ++++---- src/utils.ts | 16 +-- .../PullRequestBrowser.spec.tsx | 2 + .../PullRequestBrowserItem.spec.tsx | 8 +- .../PullRequestCommentThread.spec.tsx | 8 +- tsconfig.json | 2 +- 16 files changed, 194 insertions(+), 151 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 8efeb82..187d2db 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,6 +6,9 @@ module.exports = { node: true, 'jest/globals': true }, + globals: { + JSX: 'readonly' + }, root: true, extends: [ 'eslint:recommended', diff --git a/src/components/PullRequestPanel.tsx b/src/components/PullRequestPanel.tsx index 077a180..ee9b145 100644 --- a/src/components/PullRequestPanel.tsx +++ b/src/components/PullRequestPanel.tsx @@ -41,7 +41,9 @@ export class PullRequestPanel extends Widget { } // Show tab window for specific PR - showTab = async (data: PullRequestFileModel | PullRequestModel) => { + showTab = async ( + data: PullRequestFileModel | PullRequestModel + ): Promise => { let tab = this.getTab(data.id); if (tab == null) { tab = new PullRequestTabWidget( @@ -69,7 +71,7 @@ export class PullRequestPanel extends Widget { return null; } - getApp() { + getApp(): JupyterFrontEnd { return this._app; } diff --git a/src/components/browser/PullRequestBrowser.tsx b/src/components/browser/PullRequestBrowser.tsx index d2d3191..9190c49 100644 --- a/src/components/browser/PullRequestBrowser.tsx +++ b/src/components/browser/PullRequestBrowser.tsx @@ -16,7 +16,7 @@ export class PullRequestBrowser extends React.Component< super(props); } - render() { + render(): JSX.Element { return (
    diff --git a/src/components/browser/PullRequestBrowserFileItem.tsx b/src/components/browser/PullRequestBrowserFileItem.tsx index 407e8d4..0941384 100644 --- a/src/components/browser/PullRequestBrowserFileItem.tsx +++ b/src/components/browser/PullRequestBrowserFileItem.tsx @@ -16,7 +16,7 @@ export class PullRequestBrowserFileItem extends React.Component< this.state = { data: [], isLoading: true, error: null }; } - render() { + render(): JSX.Element { return (
    { await this.fetchPRs(); } @@ -49,7 +49,7 @@ export class PullRequestBrowserItem extends React.Component< } // render PRs while files load this.setState({ data: results, isLoading: true, error: null }, () => { - this.fetchFiles(results); + void this.fetchFiles(results); }); } catch (err) { let msg = 'Unknown Error'; @@ -106,10 +106,10 @@ export class PullRequestBrowserItem extends React.Component< file: PullRequestFileModel ) { e.stopPropagation(); - this.props.showTab(file); + void this.props.showTab(file); } - render() { + render(): JSX.Element { return (
  • diff --git a/src/components/diff/NBDiff.tsx b/src/components/diff/NBDiff.tsx index 244293a..f572cc6 100644 --- a/src/components/diff/NBDiff.tsx +++ b/src/components/diff/NBDiff.tsx @@ -19,23 +19,23 @@ export interface IDiffProps { } export interface INBDiffState { - nbdModel: NotebookDiffModel; - prChunks: PullRequestChunkModel[]; - error: string; + nbdModel: NotebookDiffModel | null; + prChunks: PullRequestChunkModel[] | null; + error: string | null; } export class NBDiff extends React.Component { constructor(props: IDiffProps) { super(props); this.state = { - nbdModel: undefined, - prChunks: undefined, - error: undefined + nbdModel: null, + prChunks: null, + error: null }; - this.performDiff(); + void this.performDiff(); } - render() { + render(): JSX.Element { if (!isUndefined(this.state.error)) { return (

    @@ -49,36 +49,38 @@ export class NBDiff extends React.Component { !isUndefined(this.state.nbdModel) && !isUndefined(this.state.prChunks) ) { - const cellComponents = this.state.prChunks.map((prChunk, index) => ( -
    -
    -
    - -
    -
    - {!isUndefined(prChunk.lineNumber.lineNumberStart) && ( -
    this.addComment(index)} - > -
    -
    - )} + const cellComponents = (this.state.prChunks || []).map( + (prChunk, index) => ( +
    +
    +
    + +
    +
    + {prChunk.lineNumber?.lineNumberStart != null && ( +
    this.addComment(index)} + > +
    +
    + )} +
    + {!isUndefined(prChunk.comments) && + prChunk.comments.map((comment, i) => ( + this.removeComment(index, comment)} + /> + ))}
    - {!isUndefined(prChunk.comments) && - prChunk.comments.map((comment, i) => ( - this.removeComment(index, comment)} - /> - ))} -
    - )); + ) + ); return (
    @@ -156,29 +158,41 @@ export class NBDiff extends React.Component { } private addComment(i: number) { - for (let comment of this.state.prChunks[i].comments) { - if (isNull(comment.comment)) { + const oldChunk = (this.state.prChunks || [])[i]; + + if (oldChunk == null || oldChunk.lineNumber == null) { + return; + } + + for (let comment of oldChunk.comments || []) { + if (comment.comment == null) { return; } } let commentToAdd: PullRequestCommentThreadModel = new PullRequestCommentThreadModel( this.props.file, - this.state.prChunks[i].lineNumber.lineNumberStart + oldChunk.lineNumber.lineNumberStart ); - let prChunks = [...this.state.prChunks]; + let prChunks = [...(this.state.prChunks || [])]; let prChunk = { ...prChunks[i] }; - prChunk.comments = [...prChunk.comments, commentToAdd]; + prChunk.comments = [...(prChunk.comments || []), commentToAdd]; prChunks[i] = prChunk; - this.setState({ prChunks: prChunks }); + this.setState({ prChunks }); } - removeComment(i: number, commentToRemove: PullRequestCommentThreadModel) { + removeComment( + i: number, + commentToRemove: PullRequestCommentThreadModel + ): void { + if (this.state.prChunks == null) { + return; + } let prChunks = [...this.state.prChunks]; let prChunk = { ...prChunks[i] }; prChunk.comments = [ - ...prChunk.comments.filter(comment => comment !== commentToRemove) + ...(prChunk.comments || []).filter(comment => comment !== commentToRemove) ]; prChunks[i] = prChunk; this.setState({ prChunks: prChunks }); @@ -198,10 +212,7 @@ export class NBDiff extends React.Component { for (let cell of chunk) { // Add line numbers if it exists in remote if (!isNull(cell.source.remote)) { - let prChunk: PullRequestChunkModel = new PullRequestChunkModel( - chunk, - this.props.file - ); + let prChunk = new PullRequestChunkModel(chunk, this.props.file); let headNbdimeSource = cell.source.remote; let headContentSource: string = ''; for (let line of contentCells.data.cells[i].source) { @@ -224,8 +235,10 @@ export class NBDiff extends React.Component { let prCellComments: PullRequestCommentThreadModel[] = []; this.props.file.comments.forEach(thread => { if ( + prChunk.lineNumber && thread.lineNumber >= prChunk.lineNumber.lineNumberStart && - thread.lineNumber <= prChunk.lineNumber.lineNumberEnd + thread.lineNumber <= prChunk.lineNumber.lineNumberEnd && + thread.comment != null ) { prCellComments.push( new PullRequestCommentThreadModel( @@ -248,7 +261,10 @@ export class NBDiff extends React.Component { } export class ModifiedChunkPair { - constructor(addedCell: CellDiffModel, removedCell: CellDiffModel) { + constructor( + addedCell: CellDiffModel | null, + removedCell: CellDiffModel | null + ) { this.addedCell = addedCell; this.removedCell = removedCell; } @@ -268,8 +284,8 @@ export class ModifiedChunkPair { return arr; } - addedCell: CellDiffModel; - removedCell: CellDiffModel; + addedCell: CellDiffModel | null; + removedCell: CellDiffModel | null; } export interface IPullRequestLineNumber { diff --git a/src/components/diff/PlainDiffComponent.tsx b/src/components/diff/PlainDiffComponent.tsx index 0f39483..77ab9b7 100644 --- a/src/components/diff/PlainDiffComponent.tsx +++ b/src/components/diff/PlainDiffComponent.tsx @@ -1,6 +1,6 @@ import { IThemeManager } from '@jupyterlab/apputils'; import * as d3 from 'd3-color'; -import { isNull, isUndefined } from 'lodash'; +import { isNull } from 'lodash'; import * as monaco from 'monaco-editor'; import * as React from 'react'; import ReactResizeDetector from 'react-resize-detector'; @@ -37,7 +37,7 @@ let URLS: { [key: string]: string } = { }; export interface IPlainDiffComponentState { - diffEditor: monaco.editor.IStandaloneDiffEditor; + diffEditor: monaco.editor.IStandaloneDiffEditor | null; comments: PullRequestPlainDiffCommentThreadModel[]; decorations: string[]; } @@ -56,17 +56,17 @@ export class PlainDiffComponent extends React.Component< this.state = { diffEditor: null, comments: [], decorations: [] }; } - componentDidMount() { + componentDidMount(): void { this.addMonacoEditor(); } - onResize = () => { - if (!isNull(this.state.diffEditor)) { + onResize = (): void => { + if (this.state.diffEditor != null) { this.state.diffEditor.layout(); } }; - render() { + render(): JSX.Element { return (
    0) { + if ((lang.extensions || []).indexOf(ext) !== -1) { + if (lang.mimetypes != null && lang['mimetypes'].length > 0) { return lang['mimetypes'][0]; } else { return lang['id']; @@ -97,15 +97,15 @@ export class PlainDiffComponent extends React.Component< } private getVariableHex(varname: string): string { - return d3 - .color(getComputedStyle(document.body).getPropertyValue(varname).trim()) - .hex(); + const color = d3.color( + getComputedStyle(document.body).getPropertyValue(varname).trim() + ); + return color != null ? color.formatHex() : '#616161'; } private updateTheme() { - let isLight: boolean = this.props.themeManager.isLight( - this.props.themeManager.theme - ); + const { theme } = this.props.themeManager; + let isLight = theme == null ? true : this.props.themeManager.isLight(theme); monaco.editor.defineTheme('PlainDiffComponent', { base: isLight ? 'vs' : 'vs-dark', inherit: true, @@ -146,25 +146,31 @@ export class PlainDiffComponent extends React.Component< this.updateTheme(); monaco.editor.setTheme('PlainDiffComponent'); - let diffEditor = monaco.editor.createDiffEditor( - document.getElementById(`monacocontainer-${this.props.file.id}`), - options + const container = document.getElementById( + `monacocontainer-${this.props.file.id}` ); - diffEditor.setModel({ - original: baseModel, - modified: headModel - }); - this.props.themeManager.themeChanged.connect(() => this.updateTheme()); - this.setState({ diffEditor: diffEditor }, () => { - this.initComments(); - this.handleMouseEvents(); - }); + if (container != null) { + let diffEditor = monaco.editor.createDiffEditor(container, options); + diffEditor.setModel({ + original: baseModel, + modified: headModel + }); + + this.props.themeManager.themeChanged.connect(() => this.updateTheme()); + this.setState({ diffEditor }, () => { + this.initComments(); + this.handleMouseEvents(); + }); + } } private initComments() { let pdcomments: PullRequestPlainDiffCommentThreadModel[] = []; for (let thread of this.props.file.comments) { + if (thread.comment == null) { + continue; + } const pdcomment = new PullRequestPlainDiffCommentThreadModel( new PullRequestCommentThreadModel(this.props.file, thread.comment), this @@ -180,7 +186,7 @@ export class PlainDiffComponent extends React.Component< })); } - removeComment(commentToRemove: PullRequestPlainDiffCommentThreadModel) { + removeComment(commentToRemove: PullRequestPlainDiffCommentThreadModel): void { this.setState( prevState => ({ comments: [ @@ -194,6 +200,9 @@ export class PlainDiffComponent extends React.Component< } private handleMouseEvents() { + if (this.state.diffEditor == null) { + return; + } // Show add comment decoration on mouse move this.state.diffEditor.getModifiedEditor().onMouseMove(e => { if (!isNull(e.target['position'])) { @@ -208,14 +217,13 @@ export class PlainDiffComponent extends React.Component< }); this.state.diffEditor.getModifiedEditor().onMouseDown(e => { if ( - e.target['element']['classList'].contains( - 'jp-PullRequestCommentDecoration' - ) + e.target.element != null && + e.target.element.classList.contains('jp-PullRequestCommentDecoration') ) { - let lineNumber = parseInt( - e.target['element']['parentElement']['innerText'], - 10 - ); + if (e.target.element.parentElement?.innerText == null) { + return; + } + let lineNumber = parseInt(e.target.element.parentElement.innerText, 10); for (let comment of this.state.comments) { if ( isNull(comment.thread.comment) && @@ -235,6 +243,9 @@ export class PlainDiffComponent extends React.Component< } private updateCommentDecoration(lineNumber: number) { + if (this.state.diffEditor == null) { + return; + } let newDecorations = this.state.diffEditor .getModifiedEditor() .deltaDecorations(this.state.decorations, [ @@ -250,7 +261,7 @@ export class PlainDiffComponent extends React.Component< } private removeCommentDecoration() { - if (this.state.decorations.length > 0) { + if (this.state.diffEditor != null && this.state.decorations.length > 0) { let newDecorations = this.state.diffEditor .getModifiedEditor() .deltaDecorations(this.state.decorations, []); diff --git a/src/components/diff/PullRequestCommentThread.tsx b/src/components/diff/PullRequestCommentThread.tsx index 444ecc5..27302c2 100644 --- a/src/components/diff/PullRequestCommentThread.tsx +++ b/src/components/diff/PullRequestCommentThread.tsx @@ -38,18 +38,18 @@ export class PullRequestCommentThread extends React.Component< componentDidUpdate( prevProps: IPullRequestCommentThreadProps, prevState: IPullRequestCommentThreadState - ) { + ): void { // Don't update plain diff it its only a input text change if (this.state.inputText !== prevState.inputText) { return; } } - handleInputChange = (event: any) => { - this.setState({ inputText: event.target.value }); + handleInputChange = (event: React.FormEvent): void => { + this.setState({ inputText: (event.target as HTMLInputElement).value }); }; - onResize = () => { + onResize = (): void => { if (!isUndefined(this.props.plainDiff)) { for (let comment of this.props.plainDiff.plainDiff.state.comments) { comment.toggleUpdate(); @@ -57,7 +57,7 @@ export class PullRequestCommentThread extends React.Component< } }; - async handleSubmit() { + async handleSubmit(): Promise { let _thread = this.props.thread; let payload; if (!isNull(this.state.thread.comment)) { @@ -70,7 +70,7 @@ export class PullRequestCommentThread extends React.Component< this.setState({ inputText: '' }); } - handleCancel() { + handleCancel(): void { // If no other comments, canceling should remove this thread if (isNull(this.state.thread.comment)) { this.props.handleRemove(); // for component specific remove methods @@ -79,7 +79,7 @@ export class PullRequestCommentThread extends React.Component< } } - getCommentItemDom(item: IPullRequestCommentModel) { + getCommentItemDom(item: IPullRequestCommentModel): JSX.Element { return (
    @@ -96,7 +96,7 @@ export class PullRequestCommentThread extends React.Component< ); } - render() { + render(): JSX.Element { return (
    diff --git a/src/components/tab/PullRequestDescriptionTab.tsx b/src/components/tab/PullRequestDescriptionTab.tsx index ce10abf..84d02b5 100644 --- a/src/components/tab/PullRequestDescriptionTab.tsx +++ b/src/components/tab/PullRequestDescriptionTab.tsx @@ -7,7 +7,7 @@ import { PullRequestModel } from '../../models'; export interface IPullRequestDescriptionTabState { pr: PullRequestModel; isLoading: boolean; - error: string; + error: string | null; } export interface IPullRequestDescriptionTabProps { @@ -26,12 +26,12 @@ export class PullRequestDescriptionTab extends React.Component< this.state = { pr: props.pr, isLoading: true, error: null }; } - componentDidMount() { - this.spinnerContainer.current.appendChild(new Spinner().node); + componentDidMount(): void { + this.spinnerContainer.current?.appendChild(new Spinner().node); this.setState({ isLoading: false }); } - render() { + render(): JSX.Element { return (
    {!this.state.isLoading ? ( diff --git a/src/components/tab/PullRequestFileTab.tsx b/src/components/tab/PullRequestFileTab.tsx index 52977c1..c10c7a1 100644 --- a/src/components/tab/PullRequestFileTab.tsx +++ b/src/components/tab/PullRequestFileTab.tsx @@ -8,9 +8,9 @@ import { NBDiff } from '../diff/NBDiff'; import { PlainDiffComponent } from '../diff/PlainDiffComponent'; export interface IPullRequestFileTabState { - file: PullRequestFileModel; + file: PullRequestFileModel | null; isLoading: boolean; - error: string; + error: string | null; } export interface IPullRequestFileTabProps { @@ -30,8 +30,8 @@ export class PullRequestFileTab extends React.Component< this.state = { file: null, isLoading: true, error: null }; } - async componentDidMount() { - this.spinnerContainer.current.appendChild(new Spinner().node); + async componentDidMount(): Promise { + this.spinnerContainer.current?.appendChild(new Spinner().node); await this.loadDiff(); } @@ -51,7 +51,7 @@ export class PullRequestFileTab extends React.Component< this.setState({ file: _data, isLoading: false, error: null }); } - render() { + render(): JSX.Element { return (
    {!this.state.isLoading ? ( diff --git a/src/models.tsx b/src/models.tsx index ff3184e..ee1b2c3 100644 --- a/src/models.tsx +++ b/src/models.tsx @@ -87,7 +87,7 @@ export class PullRequestFileModel { this.headcontent = jsonresults['head_content']; } - async loadComments() { + async loadComments(): Promise { let jsonresults = await doRequest( `pullrequests/files/comments?id=${this.pr.id}&filename=${this.name}`, 'GET' @@ -105,7 +105,9 @@ export class PullRequestFileModel { if (!isUndefined(jsonresult['in_reply_to_id'])) { for (let result of results) { if (result.id === jsonresult['in_reply_to_id']) { - result.replies.push(item.comment); + if (item.comment != null) { + result.replies.push(item.comment); + } } } } else { @@ -167,15 +169,15 @@ export class PullRequestCommentThreadModel { } } - getCommentReplyBody(text: string): any { + getCommentReplyBody(text: string): Record { const request = { text: text, - in_reply_to: this.comment.id + in_reply_to: this.comment?.id }; return request; } - getCommentNewBody(text: string): any { + getCommentNewBody(text: string): Record { const request = { text: text, filename: this.file.name, @@ -185,7 +187,7 @@ export class PullRequestCommentThreadModel { return request; } - async postComment(body: any) { + async postComment(body: Record): Promise { let jsonresult = await doRequest( `pullrequests/files/comments?id=${this.file.pr.id}&filename=${this.file.name}`, 'POST', @@ -199,10 +201,11 @@ export class PullRequestCommentThreadModel { username: jsonresult['user_name'], userpic: jsonresult['user_pic'] }); - if (this.comment == null) { - this.comment = item.comment; + const { comment } = item; + if (comment == null) { + this.comment = comment; } else { - this.replies.push(item.comment); + this.replies.push(comment); } } @@ -210,7 +213,7 @@ export class PullRequestCommentThreadModel { file: PullRequestFileModel; commitId: string; lineNumber: number; - comment: IPullRequestCommentModel; + comment: IPullRequestCommentModel | null; replies: IPullRequestCommentModel[]; } @@ -234,7 +237,7 @@ export class PullRequestPlainDiffCommentThreadModel { this.initComment(); } - initComment() { + initComment(): void { let overlayDom = document.createElement('div'); overlayDom.style.width = '100%'; overlayDom.style.visibility = 'visible'; @@ -262,17 +265,17 @@ export class PullRequestPlainDiffCommentThreadModel { ); } - toggleUpdate() { + toggleUpdate(): void { this.removeFromEditor(); this.addToEditor(); } - deleteComment() { + deleteComment(): void { this.removeFromEditor(); - this.domNode.remove(); + this.domNode?.remove(); } - private addToEditor() { + private addToEditor(): void { let zoneNode = document.createElement('div'); zoneNode.id = this.thread.id; let marginZoneNode = document.createElement('div'); @@ -282,29 +285,33 @@ export class PullRequestPlainDiffCommentThreadModel { .changeViewZones(changeAccessor => { this.viewZoneId = changeAccessor.addZone({ afterLineNumber: this.thread.lineNumber, - heightInPx: this.domNode.clientHeight, + heightInPx: this.domNode?.clientHeight || 0, domNode: zoneNode, marginDomNode: marginZoneNode, onDomNodeTop: top => { - this.domNode.style.top = top + 'px'; - this.domNode.style.visibility = 'visible'; + if (this.domNode != null) { + this.domNode.style.top = `${top}px`; + this.domNode.style.visibility = 'visible'; + } } }); }); } - removeFromEditor() { + removeFromEditor(): void { const tempViewZoneId = this.viewZoneId; this.plainDiff.state.diffEditor .getModifiedEditor() .changeViewZones(function (changeAccessor) { - changeAccessor.removeZone(tempViewZoneId); + if (tempViewZoneId != null) { + changeAccessor.removeZone(tempViewZoneId); + } }); this.viewZoneId = null; } - viewZoneId: number; - domNode: HTMLElement; + viewZoneId: string | null; + domNode: HTMLElement | null; plainDiff: PlainDiffComponent; thread: PullRequestCommentThreadModel; } diff --git a/src/utils.ts b/src/utils.ts index c3dfb9e..dcf3eac 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,7 +4,7 @@ import { ServerConnection } from '@jupyterlab/services'; function httpRequest( url: string, method: string, - request?: Object + request?: Record ): Promise { let fullRequest = { method: method, @@ -18,15 +18,11 @@ function httpRequest( export async function doRequest( url: string, method: string, - request?: object + request?: Record ): Promise { - try { - let response = await httpRequest(url, method, request); - if (response.status !== 200) { - throw new ServerConnection.ResponseError(response); - } - return response.json(); - } catch (err) { - throw err; + let response = await httpRequest(url, method, request); + if (response.status !== 200) { + throw new ServerConnection.ResponseError(response); } + return response.json(); } diff --git a/tests/test-components/PullRequestBrowser.spec.tsx b/tests/test-components/PullRequestBrowser.spec.tsx index 44d78ec..b3b9446 100644 --- a/tests/test-components/PullRequestBrowser.spec.tsx +++ b/tests/test-components/PullRequestBrowser.spec.tsx @@ -41,6 +41,7 @@ describe('PullRequestBrowser', () => { showTab={props.showTab} header={'Created by Me'} filter={'created'} + key="noop" > ]) ).toEqual(true); @@ -50,6 +51,7 @@ describe('PullRequestBrowser', () => { showTab={props.showTab} header={'Assigned to Me'} filter={'assigned'} + key="noop" > ]) ).toEqual(true); diff --git a/tests/test-components/PullRequestBrowserItem.spec.tsx b/tests/test-components/PullRequestBrowserItem.spec.tsx index d03b6e7..13e6d0f 100644 --- a/tests/test-components/PullRequestBrowserItem.spec.tsx +++ b/tests/test-components/PullRequestBrowserItem.spec.tsx @@ -34,7 +34,9 @@ describe('PullRequestBrowserItem', () => { }); it('should have a header with text props.header', () => { expect(component.find('header h2')).toHaveLength(1); - expect(component.contains([

    {props.header}

    ])).toEqual(true); + expect(component.contains([

    {props.header}

    ])).toEqual( + true + ); }); it('should not load list item if failed api request', () => { component.setState({ data: [], isLoading: false, error: null }); @@ -89,7 +91,7 @@ describe('PullRequestBrowserItem', () => { expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(1); expect( component.contains([ -

    +

    Error Listing Pull Requests: {' '} @@ -103,7 +105,7 @@ describe('PullRequestBrowserItem', () => { expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(0); expect( component.contains([ -

    +

    Error Listing Pull Requests: {' '} diff --git a/tests/test-components/PullRequestCommentThread.spec.tsx b/tests/test-components/PullRequestCommentThread.spec.tsx index e74fe69..eb146c5 100644 --- a/tests/test-components/PullRequestCommentThread.spec.tsx +++ b/tests/test-components/PullRequestCommentThread.spec.tsx @@ -13,12 +13,16 @@ import { describe('PullRequestBrowserItem', () => { let newProps: IPullRequestCommentThreadProps = { thread: SamplePullRequestCommentThreadItemNew, - handleRemove: () => {} + handleRemove: () => { + // empty line for lint + } }; let replyProps: IPullRequestCommentThreadProps = { thread: SamplePullRequestCommentThreadItemReply, - handleRemove: () => {} + handleRemove: () => { + // empty line for lint + } }; // Test constructor diff --git a/tsconfig.json b/tsconfig.json index 17611f4..08a5773 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,5 +22,5 @@ "target": "es2017", "types": [] }, - "include": ["./src/*", "./tests/*"] + "include": ["./src/**/*", "./tests/**/*"] } From cbde6f61d672d4c5bebe2b888b2a9d480dfb5825 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 12:51:24 -0500 Subject: [PATCH 09/17] pass jest --- .binder/environment.yml | 1 + jest.config.js | 1 + package.json | 9 +-- .../browser/PullRequestBrowserItem.tsx | 1 - .../diff/PullRequestCommentThread.tsx | 4 +- src/models.tsx | 27 +++++--- tsconfig.json | 4 +- yarn.lock | 63 +++++++++++++++---- 8 files changed, 78 insertions(+), 32 deletions(-) diff --git a/.binder/environment.yml b/.binder/environment.yml index 042839e..af69340 100644 --- a/.binder/environment.yml +++ b/.binder/environment.yml @@ -18,6 +18,7 @@ dependencies: # test - asynctest - pytest + - pytest-cov # TODO: use the real stuff - pip: - jupyterlab-git >=0.30.0b2 diff --git a/jest.config.js b/jest.config.js index 1054368..312c1f5 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,6 +5,7 @@ module.exports = { transform: { '^.+\\.tsx?$': 'ts-jest' }, + globals: { 'ts-jest': { tsconfig: 'tsconfig.json' } }, moduleNameMapper: { '\\.(css|less|sass|scss)$': 'identity-obj-proxy', 'monaco-editor': '/node_modules/react-monaco-editor' diff --git a/package.json b/package.json index e4edf51..246e111 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "scripts": { "build": "jlpm build:webpack && jlpm build:ts && jlpm build:labext", "build:webpack": "webpack", - "build:ts": "tsc -b", + "build:ts": "tsc", "build:labext": "jupyter labextension build .", "clean": "rimraf lib", "watch": "jlpm build -w", @@ -58,17 +58,17 @@ "@types/codemirror": "^0.0.76", "@types/d3-color": "^1.2.2", "@types/enzyme": "^3.9.3", - "@types/jest": "^26.0.10", + "@types/jest": "^26.0.20", "@types/lodash": "^4.14.135", "@types/node": "^12.6.2", "@types/react": "^17.0.0", "@types/react-dom": "^16.8.4", "@types/react-resize-detector": "^4.0.1", + "@typescript-eslint/eslint-plugin": "^4.8.1", + "@typescript-eslint/parser": "^4.8.1", "d3-color": "^1.2.8", "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.13.2", - "@typescript-eslint/eslint-plugin": "^4.8.1", - "@typescript-eslint/parser": "^4.8.1", "eslint": "^7.14.0", "eslint-config-prettier": "^6.15.0", "eslint-plugin-jest": "^24.1.3", @@ -80,6 +80,7 @@ "lodash": "^4.17.11", "prettier": "^2.1.1", "rimraf": "~3.0.0", + "ts-jest": "^26.5.2", "typescript": "~4.1.3", "webpack": "^5.3.1", "webpack-cli": "^4.1.0" diff --git a/src/components/browser/PullRequestBrowserItem.tsx b/src/components/browser/PullRequestBrowserItem.tsx index fb8d3b3..96aeb4e 100644 --- a/src/components/browser/PullRequestBrowserItem.tsx +++ b/src/components/browser/PullRequestBrowserItem.tsx @@ -115,7 +115,6 @@ export class PullRequestBrowserItem extends React.Component<

    {this.props.header}

    ): void => { - this.setState({ inputText: (event.target as HTMLInputElement).value }); + handleInputChange = (event: React.FormEvent): void => { + this.setState({ inputText: (event.target as HTMLTextAreaElement).value }); }; onResize = (): void => { diff --git a/src/models.tsx b/src/models.tsx index ee1b2c3..0cc6344 100644 --- a/src/models.tsx +++ b/src/models.tsx @@ -247,9 +247,11 @@ export class PullRequestPlainDiffCommentThreadModel { getDomNode: () => overlayDom, getPosition: (): any => null }; - this.plainDiff.state.diffEditor - .getModifiedEditor() - .addOverlayWidget(overlayWidget); + if (this.plainDiff.state.diffEditor) { + this.plainDiff.state.diffEditor + .getModifiedEditor() + .addOverlayWidget(overlayWidget); + } ReactDOM.render( { @@ -300,13 +305,15 @@ export class PullRequestPlainDiffCommentThreadModel { removeFromEditor(): void { const tempViewZoneId = this.viewZoneId; - this.plainDiff.state.diffEditor - .getModifiedEditor() - .changeViewZones(function (changeAccessor) { - if (tempViewZoneId != null) { - changeAccessor.removeZone(tempViewZoneId); - } - }); + if (this.plainDiff.state.diffEditor != null) { + this.plainDiff.state.diffEditor + .getModifiedEditor() + .changeViewZones(function (changeAccessor) { + if (tempViewZoneId != null) { + changeAccessor.removeZone(tempViewZoneId); + } + }); + } this.viewZoneId = null; } diff --git a/tsconfig.json b/tsconfig.json index 08a5773..d20fb04 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,6 @@ "$schema": "http://json.schemastore.org/tsconfig", "compilerOptions": { "allowSyntheticDefaultImports": true, - "composite": true, "declaration": true, "esModuleInterop": true, "incremental": true, @@ -15,12 +14,11 @@ "outDir": "./lib/", "preserveWatchOutput": true, "resolveJsonModule": true, - "rootDir": "./src/", "skipLibCheck": true, "sourceMap": true, "strictNullChecks": true, "target": "es2017", - "types": [] + "types": ["jest", "node"] }, "include": ["./src/**/*", "./tests/**/*"] } diff --git a/yarn.lock b/yarn.lock index aa9e9fc..f57ca4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1773,7 +1773,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^26.0.10": +"@types/jest@26.x", "@types/jest@^26.0.20": version "26.0.20" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== @@ -2528,6 +2528,13 @@ browserslist@^4.14.5: escalade "^3.1.1" node-releases "^1.1.70" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2535,7 +2542,7 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -3654,7 +3661,7 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -4800,7 +4807,7 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^26.6.2: +jest-util@^26.1.0, jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== @@ -4957,7 +4964,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.1, json5@^2.1.2: +json5@2.x, json5@^2.1.1, json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -5187,7 +5194,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@4.x, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5213,6 +5220,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -5321,6 +5333,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp@1.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + moment@^2.24.0: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" @@ -6454,18 +6471,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -6974,6 +6991,23 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" +ts-jest@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.2.tgz#5281d6b44c2f94f71205728a389edc3d7995b0c4" + integrity sha512-bwyJ2zJieSugf7RB+o8fgkMeoMVMM2KPDE0UklRLuACxjwJsOrZNo6chrcScmK33YavPSwhARffy8dZx5LJdUQ== + dependencies: + "@types/jest" "26.x" + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^26.1.0" + json5 "2.x" + lodash "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -7394,6 +7428,11 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yargs-parser@20.x: + version "20.2.6" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" + integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" From 993e1762d26ba674604c6d1aa1023cce6b02953d Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 13:09:07 -0500 Subject: [PATCH 10/17] finish rest of build --- .prettierignore | 1 + jupyterlab_pullrequests/__init__.py | 9 + package.json | 7 +- src/components/diff/NBDiff.tsx | 2 +- tsconfig.json | 2 +- yarn.lock | 926 ++++++++++++++++++++++++++-- 6 files changed, 892 insertions(+), 55 deletions(-) diff --git a/.prettierignore b/.prettierignore index c4a8517..ceb0b1e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,6 +5,7 @@ **/static **/.ipynb_checkpoints **/labextension +**/.pytest_cache tests/**/coverage .eggs diff --git a/jupyterlab_pullrequests/__init__.py b/jupyterlab_pullrequests/__init__.py index d28cfaf..f80093d 100644 --- a/jupyterlab_pullrequests/__init__.py +++ b/jupyterlab_pullrequests/__init__.py @@ -7,3 +7,12 @@ def _jupyter_server_extension_paths(): return [{"module": "jupyterlab_pullrequests.handlers"}] + + +def _jupyter_labextension_paths(): + return [ + { + "src": "labextension", + "dest": "@jupyterlab/pull-requests", + } + ] diff --git a/package.json b/package.json index 246e111..be149f3 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "react-spinners": "^0.10.6" }, "devDependencies": { + "@jupyterlab/builder": "^3.0.4", "@microsoft/tsdoc": "^0.12.9", "@types/codemirror": "^0.0.76", "@types/d3-color": "^1.2.2", @@ -85,15 +86,15 @@ "webpack": "^5.3.1", "webpack-cli": "^4.1.0" }, + "resolutions": { + "nbdime": "6.1.0-beta.1" + }, "jupyterlab": { "extension": true, "outputDir": "jupyterlab_pullrequests/labextension", "sharedPackages": { "nbdime": { "bundled": true - }, - "react-monaco-editor": { - "bundled": true } }, "discovery": { diff --git a/src/components/diff/NBDiff.tsx b/src/components/diff/NBDiff.tsx index f572cc6..68f7a2e 100644 --- a/src/components/diff/NBDiff.tsx +++ b/src/components/diff/NBDiff.tsx @@ -35,7 +35,7 @@ export class NBDiff extends React.Component { void this.performDiff(); } - render(): JSX.Element { + render(): JSX.Element | null { if (!isUndefined(this.state.error)) { return (

    diff --git a/tsconfig.json b/tsconfig.json index d20fb04..1831ece 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,5 +20,5 @@ "target": "es2017", "types": ["jest", "node"] }, - "include": ["./src/**/*", "./tests/**/*"] + "include": ["./src/**/*"] } diff --git a/yarn.lock b/yarn.lock index f57ca4d..b72fd59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -761,6 +761,65 @@ "@lumino/disposable" "^1.3.5" "@lumino/signaling" "^1.3.5" +"@jupyterlab/builder@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.0.4.tgz#de065d84946df8d5045fa67685e4ea321b37ae14" + integrity sha512-8wQd9QpCCjze2cBDq0CyztA8D+Ig/ZpHDpzR4Z4ZHFgwdk8SukxI+qkfj2NMumDXz83+bEv/+GOZVk60DtbjpQ== + dependencies: + "@jupyterlab/buildutils" "^3.0.3" + "@lumino/algorithm" "^1.3.3" + "@lumino/application" "^1.13.1" + "@lumino/commands" "^1.12.0" + "@lumino/coreutils" "^1.5.3" + "@lumino/disposable" "^1.4.3" + "@lumino/domutils" "^1.2.3" + "@lumino/dragdrop" "^1.7.1" + "@lumino/messaging" "^1.4.3" + "@lumino/properties" "^1.2.3" + "@lumino/signaling" "^1.4.3" + "@lumino/virtualdom" "^1.8.0" + "@lumino/widgets" "^1.16.1" + ajv "^6.12.3" + commander "~6.0.0" + css-loader "^5.0.1" + duplicate-package-checker-webpack-plugin "^3.0.0" + file-loader "~6.0.0" + fs-extra "^9.0.1" + glob "~7.1.6" + mini-css-extract-plugin "~1.3.2" + path-browserify "^1.0.0" + raw-loader "~4.0.0" + style-loader "~2.0.0" + supports-color "^7.2.0" + svg-url-loader "~6.0.0" + terser-webpack-plugin "^4.1.0" + to-string-loader "^1.1.6" + url-loader "~4.1.0" + webpack "^5.3.1" + webpack-cli "^4.1.0" + webpack-merge "^5.1.2" + worker-loader "^3.0.2" + +"@jupyterlab/buildutils@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/buildutils/-/buildutils-3.0.3.tgz#b56a920cec69560e859eba5112e8b75c58e08d6d" + integrity sha512-sAk4BTcbP6ZP7N8WTEuZM4XfN7+KAwaqvvRX2rLwgeKhJeZkeFgidkGacXcGt3TuKQIgySins6UWejs68P8/Aw== + dependencies: + "@lumino/coreutils" "^1.5.3" + "@yarnpkg/lockfile" "^1.1.0" + child_process "~1.0.2" + commander "~6.0.0" + crypto "~1.0.1" + dependency-graph "^0.9.0" + fs-extra "^9.0.1" + glob "~7.1.6" + inquirer "^7.0.0" + package-json "^6.5.0" + prettier "^2.1.1" + semver "^7.3.2" + sort-package-json "~1.44.0" + typescript "~4.1.3" + "@jupyterlab/cells@^2.2.7": version "2.2.7" resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-2.2.7.tgz#7d975ff124b1fbf2564593f797317a391002aeeb" @@ -804,7 +863,7 @@ "@lumino/signaling" "^1.4.3" "@lumino/widgets" "^1.16.1" -"@jupyterlab/codeeditor@^2.0.0", "@jupyterlab/codeeditor@^2.2.5": +"@jupyterlab/codeeditor@^2.2.5": version "2.2.5" resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-2.2.5.tgz#0d5b639e2f3dad829cafa82f7881d8a6d031784c" integrity sha512-ktc5e/30aabx0GwFBiiNOimtBoDx+ZFWkHeKg1ylpHASGgdQt6Km3E+TQARzFWbwkShyc7WFJySK1ES/uimDVg== @@ -1162,7 +1221,7 @@ "@lumino/widgets" "^1.16.1" resize-observer-polyfill "^1.5.1" -"@jupyterlab/outputarea@^2.0.0", "@jupyterlab/outputarea@^2.2.4": +"@jupyterlab/outputarea@^2.2.4": version "2.2.4" resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-2.2.4.tgz#5828f9440f4624073aa12a99586cd4944fb53037" integrity sha512-eZjT1ee6IgghIZnrXPUggYQ8xeLoSpNX+4teFKXJEEWaXSCtwqSzrTxYWpblmwE0Cmc0LBwUJnAdVeg/OFcG2w== @@ -1219,7 +1278,7 @@ lodash.escape "^4.0.1" marked "^2.0.0" -"@jupyterlab/rendermime@^2.0.0", "@jupyterlab/rendermime@^2.2.4": +"@jupyterlab/rendermime@^2.2.4": version "2.2.4" resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-2.2.4.tgz#4509450539c9e440a28fd9d5318a59e65cc8fce2" integrity sha512-XhBsUQdyidYrNY71+TZUGJSg/mf3kM90lSwIw+DgHSJJz/BXO5bSyKP5XnTSeKYoz40Ko1PCyRyCmKpmI51J6A== @@ -1647,6 +1706,19 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "@sinonjs/commons@^1.7.0": version "1.8.2" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" @@ -1661,6 +1733,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" @@ -1747,6 +1826,14 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -1781,7 +1868,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -1791,6 +1878,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node@*": version "14.14.31" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" @@ -2113,6 +2205,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -2146,6 +2243,14 @@ acorn@^8.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + airbnb-prop-types@^2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" @@ -2340,6 +2445,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2476,6 +2586,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -2555,6 +2670,29 @@ buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2570,6 +2708,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -2588,7 +2739,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== @@ -2610,7 +2761,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2619,7 +2770,7 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -2632,6 +2783,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + cheerio-select-tmp@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" @@ -2656,6 +2812,16 @@ cheerio@^1.0.0-rc.3: parse5 "^6.0.0" parse5-htmlparser2-tree-adapter "^6.0.0" +child_process@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" + integrity sha1-sffn/HPSXn/R1FWtyU4UODAYK1o= + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -2688,6 +2854,23 @@ classnames@^2.2: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -2706,6 +2889,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clsx@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" @@ -2785,6 +2975,16 @@ commander@^7.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== +commander@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.0.0.tgz#2b270da94f8fb9014455312f829a1129dbf8887e" + integrity sha512-s7EA+hDtTYNhuXkTlhqew4txMZVdszBmKWSPEMxGr8ru8JXR7bLUFIAtPhcSuFdJQ0ILMxnJi8GkQL0yvDy/YA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + compare-versions@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" @@ -2866,6 +3066,29 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037" + integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== + +css-loader@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.1.0.tgz#7c39af036c6674712659ca43a43a80d972bff506" + integrity sha512-mFs3Xe2UrzRzL0+ML6e7Q2e/Ozp/WpDcam0l1X+rXgkuFjjsNSrjiyimG6malUOZGVuEjzKp1NqEqN3exG7ZqQ== + dependencies: + camelcase "^6.2.0" + cssesc "^3.0.0" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.6" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.4" + css-select@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" @@ -2890,6 +3113,11 @@ css-what@^4.0.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -2972,6 +3200,18 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2982,6 +3222,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3016,7 +3261,17 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -detect-newline@^3.0.0: +dependency-graph@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318" + integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w== + +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + +detect-newline@3.1.0, detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== @@ -3149,6 +3404,21 @@ domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4: domelementtype "^2.0.1" domhandler "^4.0.0" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplicate-package-checker-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/duplicate-package-checker-webpack-plugin/-/duplicate-package-checker-webpack-plugin-3.0.0.tgz#78bb89e625fa7cf8c2a59c53f62b495fda9ba287" + integrity sha512-aO50/qPC7X2ChjRFniRiscxBLT/K01bALqfcDaf8Ih5OqQ1N4iT/Abx9Ofu3/ms446vHTm46FACIuJUmgUQcDQ== + dependencies: + chalk "^2.3.0" + find-root "^1.0.0" + lodash "^4.17.4" + semver "^5.4.1" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3172,6 +3442,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3615,6 +3890,15 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3649,7 +3933,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1: +fast-glob@^3.0.3, fast-glob@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -3690,6 +3974,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3697,6 +3988,14 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" +file-loader@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3714,7 +4013,16 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-root@^1.1.0: +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.0.0, find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== @@ -3786,6 +4094,23 @@ free-style@3.1.0: resolved "https://registry.yarnpkg.com/free-style/-/free-style-3.1.0.tgz#4e2996029534e6b1731611d843437b9e2f473f08" integrity sha512-vJujYSIyT30iDoaoeigNAxX4yB1RUrh+N2ZMhIElMr3BvCuGXOw7XNJMEEJkDUeamK2Rnb/IKFGKRKlTWIGRWA== +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3850,14 +4175,14 @@ 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-stream@^4.0.0: +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" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -3881,6 +4206,11 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-hooks-list@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-1.0.3.tgz#be5baaf78203ce342f2f844a9d2b03dba1b45156" + integrity sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ== + glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -3893,7 +4223,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3917,6 +4247,20 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globby@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.0.tgz#abfcd0630037ae174a88590132c2f6804e291072" + integrity sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + globby@^11.0.1: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" @@ -3929,7 +4273,24 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.2.4: +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -4074,6 +4435,11 @@ htmlparser2@^6.0.0: domutils "^2.4.4" entities "^2.0.0" +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4114,13 +4480,18 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -4131,7 +4502,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4: +ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -4164,6 +4535,21 @@ indefinite-observable@^2.0.1: dependencies: symbol-observable "1.2.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4177,6 +4563,30 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -4349,6 +4759,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4844,7 +5259,7 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^26.6.2: +jest-worker@^26.5.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -4917,6 +5332,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -4971,6 +5391,22 @@ json5@2.x, json5@^2.1.1, json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -5065,6 +5501,13 @@ jss@10.5.1, jss@^10.5.1: array-includes "^3.1.2" object.assign "^4.1.2" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5125,6 +5568,24 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== +loader-utils@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0, loader-utils@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -5194,7 +5655,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@4.x, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@4.x, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5206,6 +5667,16 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -5213,7 +5684,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -5264,7 +5735,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -5313,6 +5784,20 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-css-extract-plugin@~1.3.2: + version "1.3.9" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.9.tgz#47a32132b0fd97a119acd530e8421e8f6ab16d5e" + integrity sha512-Ac4s+xhVbqlyhXS5J/Vh/QXUz3ycXlCqoCPpg0vdfhsIBH9eg/It/9L1r1XhSCH737M1lqcWnMuWL13zcygn5A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + webpack-sources "^1.1.0" + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -5325,6 +5810,42 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5333,7 +5854,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@1.x: +mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -5363,6 +5884,16 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -5385,26 +5916,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nbdime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nbdime/-/nbdime-6.0.0.tgz#722f18e06a072a457f831888e7758b0eec54ddd1" - integrity sha512-N3Ch/5VxnKNYhSh9+dlkM/LRhGMBKUQUhH1BH/nyJoQdmoQyM93fwYbWDuf6ehdk7F3BkoRPHWiw7HrWJJAecA== - dependencies: - "@jupyterlab/codeeditor" "^2.0.0" - "@jupyterlab/codemirror" "^2.0.0" - "@jupyterlab/coreutils" "^4.0.0" - "@jupyterlab/nbformat" "^2.0.0" - "@jupyterlab/outputarea" "^2.0.0" - "@jupyterlab/rendermime" "^2.0.0" - "@jupyterlab/services" "^5.0.0" - "@lumino/algorithm" "^1.1.2" - "@lumino/coreutils" "^1.3.0" - "@lumino/dragdrop" "^1.3.0" - "@lumino/signaling" "^1.2.2" - "@lumino/widgets" "^1.6.0" - json-stable-stringify "^1.0.1" - -nbdime@^6.1.0-beta.1: +nbdime@6.1.0-beta.1, nbdime@^6.0.0, nbdime@^6.1.0-beta.1: version "6.1.0-beta.1" resolved "https://registry.yarnpkg.com/nbdime/-/nbdime-6.1.0-beta.1.tgz#3b925f1ef3f028a25ae851e5cd5e7f3c50fc2304" integrity sha512-Rrap6tRT1GDT4OZ1dbt3FG9oWA458LvuTKqR0zkdzREg1pGnkidpVshE7xoPsshpCXmRrqvGOQG3lSSygFPnDA== @@ -5497,6 +6009,11 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + normalize.css@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" @@ -5667,6 +6184,16 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" @@ -5705,11 +6232,28 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5811,7 +6355,7 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^4.2.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -5847,6 +6391,49 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + postcss@^7.0.27, postcss@^7.0.5: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" @@ -5856,6 +6443,15 @@ postcss@^7.0.27, postcss@^7.0.5: source-map "^0.6.1" supports-color "^6.1.0" +postcss@^8.2.6: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -5866,6 +6462,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -5893,6 +6494,11 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + promise-polyfill@^8.1.3: version "8.2.0" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0" @@ -5994,6 +6600,24 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +raw-loader@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-dom@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" @@ -6199,6 +6823,20 @@ regexpp@^3.0.0, regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -6311,6 +6949,21 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.18.1, resolve@^1.9.0: is-core-module "^2.2.0" path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -6341,6 +6994,11 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -6348,6 +7006,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^6.6.0: + version "6.6.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" + integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -6442,6 +7107,15 @@ scheduler@^0.20.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" @@ -6461,7 +7135,7 @@ semver-regex@^3.1.2: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.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" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6471,14 +7145,14 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.x, semver@^7.2.1, semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6604,7 +7278,24 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -source-list-map@^2.0.1: +sort-object-keys@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" + integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== + +sort-package-json@~1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.44.0.tgz#470330be868f8a524a4607b26f2a0233e93d8b6d" + integrity sha512-u9GUZvpavUCXV5SbEqXu9FRbsJrYU6WM10r3zA0gymGPufK5X82MblCLh9GW9l46pXKEZvK+FA3eVTqC4oMp4A== + dependencies: + detect-indent "^6.0.0" + detect-newline "3.1.0" + git-hooks-list "1.0.3" + globby "10.0.0" + is-plain-obj "2.1.0" + sort-object-keys "^1.1.3" + +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -6709,6 +7400,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stack-utils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" @@ -6818,6 +7516,19 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-loader@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -6832,7 +7543,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -6847,6 +7558,14 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +svg-url-loader@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/svg-url-loader/-/svg-url-loader-6.0.0.tgz#b94861d9f6badfb8ca3e7d3ec4655c1bf732ac5d" + integrity sha512-Qr5SCKxyxKcRnvnVrO3iQj9EX/v40UiGEMshgegzV7vpo3yc+HexELOdtWcA3MKjL8IyZZ1zOdcILmDEa/8JJQ== + dependencies: + file-loader "~6.0.0" + loader-utils "~2.0.0" + symbol-observable@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6872,6 +7591,18 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -6880,6 +7611,21 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terser-webpack-plugin@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + terser-webpack-plugin@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" @@ -6892,7 +7638,7 @@ terser-webpack-plugin@^5.1.1: source-map "^0.6.1" terser "^5.5.1" -terser@^5.5.1: +terser@^5.3.4, terser@^5.5.1: version "5.6.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== @@ -6920,11 +7666,23 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +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= + tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -6942,6 +7700,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -6967,6 +7730,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-string-loader@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/to-string-loader/-/to-string-loader-1.1.6.tgz#230529ccc63dd0ecca052a85e1fb82afe946b0ab" + integrity sha512-VNg62//PS1WfNwrK3n7t6wtK5Vdtx/qeYLLEioW46VMlYUwAYT6wnfB+OwS2FMTCalIHu0tk79D3RXX8ttmZTQ== + dependencies: + loader-utils "^1.0.0" + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -7106,6 +7876,30 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -7126,6 +7920,22 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-loader@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url-parse@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -7147,7 +7957,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -7259,7 +8069,7 @@ webpack-cli@^4.1.0: v8-compile-cache "^2.2.0" webpack-merge "^5.7.3" -webpack-merge@^5.7.3: +webpack-merge@^5.1.2, webpack-merge@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== @@ -7267,6 +8077,14 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" +webpack-sources@^1.1.0, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack-sources@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" @@ -7359,6 +8177,14 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +worker-loader@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37" + integrity sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" From 9fb897e13da68a63ef4f8703476568f3abcb2be7 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 13:11:33 -0500 Subject: [PATCH 11/17] add .yarnrc for local caching --- .binder/postBuild | 4 ++-- .yarnrc | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 .yarnrc diff --git a/.binder/postBuild b/.binder/postBuild index 52d4c54..4b79bc5 100644 --- a/.binder/postBuild +++ b/.binder/postBuild @@ -1,8 +1,8 @@ #!/usr/bin/env bash set -eux -# prefling node stuff -jlpm --ignore-optional +# preflight node stuff +jlpm --ignore-optional --prefer-offline jlpm lint jlpm build diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 0000000..c8a06d0 --- /dev/null +++ b/.yarnrc @@ -0,0 +1,2 @@ +yarn-offline-mirror "./.yarn-packages" +yarn-offline-mirror-pruning true From e3ea4da0d78bda64b89fce10b20dd4f05af80738 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 13:23:02 -0500 Subject: [PATCH 12/17] tune up some watching --- jupyterlab_pullrequests/__init__.py | 2 +- package.json | 2 +- src/index.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jupyterlab_pullrequests/__init__.py b/jupyterlab_pullrequests/__init__.py index f80093d..e0faf69 100644 --- a/jupyterlab_pullrequests/__init__.py +++ b/jupyterlab_pullrequests/__init__.py @@ -13,6 +13,6 @@ def _jupyter_labextension_paths(): return [ { "src": "labextension", - "dest": "@jupyterlab/pull-requests", + "dest": "@jupyterlab/pullrequests", } ] diff --git a/package.json b/package.json index be149f3..7c0dc1f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "build:ts": "tsc", "build:labext": "jupyter labextension build .", "clean": "rimraf lib", - "watch": "jlpm build -w", + "watch": "jlpm build:ts -w", "test": "jest", "lint": "jlpm && jlpm prettier && jlpm eslint", "eslint": "eslint --ext .js,.jsx,.ts,.tsx --fix .", diff --git a/src/index.ts b/src/index.ts index dd807f1..067479e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,8 +30,8 @@ function activate( ): void { const prPanel = new PullRequestPanel(app, themeManager, renderMime); restorer.add(prPanel, NAMESPACE); - app.shell.add(prPanel, 'left', { rank: 200 }); // rank chosen from similar open source extensions - return; + // rank chosen from similar open source extensions + app.shell.add(prPanel, 'left', { rank: 200 }); } export default pullRequestPlugin; From cd261ff164c0074ca6dcdcea4bac5f3750621342 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 13:26:10 -0500 Subject: [PATCH 13/17] more server extension stuff --- .binder/postBuild | 1 + package.json | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.binder/postBuild b/.binder/postBuild index 4b79bc5..7c6c11c 100644 --- a/.binder/postBuild +++ b/.binder/postBuild @@ -14,6 +14,7 @@ python -m pip install -e . --no-deps --ignore-installed -v # manually enable extension jupyter serverextension enable --py jupyterlab_pullrequests +jupyter server extension enable --py jupyterlab_pullrequests # verify install jupyter labextension list diff --git a/package.json b/package.json index 7c0dc1f..69d9e72 100644 --- a/package.json +++ b/package.json @@ -92,11 +92,6 @@ "jupyterlab": { "extension": true, "outputDir": "jupyterlab_pullrequests/labextension", - "sharedPackages": { - "nbdime": { - "bundled": true - } - }, "discovery": { "server": { "managers": [ From 7d25452a352124f719c14ed6dd975ee7e300739b Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 15:12:00 -0500 Subject: [PATCH 14/17] keep fighting with monaco and webpack --- .binder/environment.yml | 1 + .gitignore | 1 + package.json | 4 ++- src/components/diff/PlainDiffComponent.tsx | 14 +++++---- src/index.ts | 14 +++++++-- webpack.extension.config.js | 31 +++++++++++++++++++ webpack.config.js => webpack.monaco.config.js | 0 yarn.lock | 8 +++++ 8 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 webpack.extension.config.js rename webpack.config.js => webpack.monaco.config.js (100%) diff --git a/.binder/environment.yml b/.binder/environment.yml index af69340..4b98584 100644 --- a/.binder/environment.yml +++ b/.binder/environment.yml @@ -22,4 +22,5 @@ dependencies: # TODO: use the real stuff - pip: - jupyterlab-git >=0.30.0b2 + # doesn't actually start in lab - nbdime >=3.0.0b1 diff --git a/.gitignore b/.gitignore index bc5bf8c..9fd7601 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,4 @@ package-lock.json # built files jupyterlab_pullrequests/labextension +.yarn-packages diff --git a/package.json b/package.json index 69d9e72..6b0a17b 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "scripts": { "build": "jlpm build:webpack && jlpm build:ts && jlpm build:labext", - "build:webpack": "webpack", + "build:webpack": "webpack -c webpack.monaco.config.js", "build:ts": "tsc", "build:labext": "jupyter labextension build .", "clean": "rimraf lib", @@ -81,6 +81,7 @@ "lodash": "^4.17.11", "prettier": "^2.1.1", "rimraf": "~3.0.0", + "string-replace-loader": "^3.0.1", "ts-jest": "^26.5.2", "typescript": "~4.1.3", "webpack": "^5.3.1", @@ -92,6 +93,7 @@ "jupyterlab": { "extension": true, "outputDir": "jupyterlab_pullrequests/labextension", + "webpackConfig": "./webpack.extension.config.js", "discovery": { "server": { "managers": [ diff --git a/src/components/diff/PlainDiffComponent.tsx b/src/components/diff/PlainDiffComponent.tsx index 77ab9b7..4b42661 100644 --- a/src/components/diff/PlainDiffComponent.tsx +++ b/src/components/diff/PlainDiffComponent.tsx @@ -1,7 +1,9 @@ import { IThemeManager } from '@jupyterlab/apputils'; import * as d3 from 'd3-color'; import { isNull } from 'lodash'; + import * as monaco from 'monaco-editor'; + import * as React from 'react'; import ReactResizeDetector from 'react-resize-detector'; import { @@ -22,16 +24,16 @@ import * as monacoJSON from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jup import * as monacoTS from 'file-loader!../../../lib/JUPYTERLAB_FILE_LOADER_jupyterlab-pullrequests-ts.worker.bundle.js'; let URLS: { [key: string]: string } = { - css: monacoCSS, - html: monacoHTML, - javascript: monacoTS, - json: monacoJSON, - typescript: monacoTS + css: (monacoCSS as any).default, + html: (monacoHTML as any).default, + javascript: (monacoTS as any).default, + json: (monacoJSON as any).default, + typescript: (monacoTS as any).default }; (self as any).MonacoEnvironment = { getWorkerUrl: function (moduleId: string, label: string): string { - let url = URLS[label] || monacoEditor; + let url = URLS[label] || (monacoEditor as any).default; return url; } }; diff --git a/src/index.ts b/src/index.ts index 067479e..35b0ebf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,6 @@ import { } from '@jupyterlab/application'; import { IThemeManager } from '@jupyterlab/apputils'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; -import { PullRequestPanel } from './components/PullRequestPanel'; import '@jupyterlab/git/style/index.css'; import '@jupyterlab/git/style/variables.css'; @@ -13,6 +12,13 @@ import '@jupyterlab/git/style/variables.css'; const NAMESPACE = 'pullrequests'; const PLUGIN_ID = '@jupyterlab/pullrequests'; +// appease monaco startup +(window as any)['vscode'] = { + process: { + sandboxed: true + } +}; + // JupyterLab plugin props const pullRequestPlugin: JupyterFrontEndPlugin = { id: PLUGIN_ID, @@ -22,12 +28,14 @@ const pullRequestPlugin: JupyterFrontEndPlugin = { }; // Master extension activate -function activate( +async function activate( app: JupyterFrontEnd, restorer: ILayoutRestorer, themeManager: IThemeManager, renderMime: IRenderMimeRegistry -): void { +): Promise { + const { PullRequestPanel } = await import('./components/PullRequestPanel'); + const prPanel = new PullRequestPanel(app, themeManager, renderMime); restorer.add(prPanel, NAMESPACE); // rank chosen from similar open source extensions diff --git a/webpack.extension.config.js b/webpack.extension.config.js new file mode 100644 index 0000000..b4626ef --- /dev/null +++ b/webpack.extension.config.js @@ -0,0 +1,31 @@ +/** + export const browserCodeLoadingCacheStrategy = (() => { + // Always enabled when sandbox is enabled + if (isElectronSandboxed) { + return 'bypassHeatCheck'; + } + // Otherwise, only enabled conditionally + const env = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.env['ENABLE_VSCODE_BROWSER_CODE_LOADING']; + if (typeof env === 'string') { + if (env === 'none' || env === 'code' || env === 'bypassHeatCheck' || env === 'bypassHeatCheckAndEagerCompile') { + return env; + } + return 'bypassHeatCheck'; + } + return undefined; +})(); + */ +module.exports = { + module: { + rules: [ + { + test: /monaco-editor\/esm\/vs\/base\/common\/platform.js/, + loader: 'string-replace-loader', + options: { + search: 'if (isElectronSandboxed) {', + replace: 'if (1) {' + } + } + ] + } +}; diff --git a/webpack.config.js b/webpack.monaco.config.js similarity index 100% rename from webpack.config.js rename to webpack.monaco.config.js diff --git a/yarn.lock b/yarn.lock index b72fd59..f7c810f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7435,6 +7435,14 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-replace-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-3.0.1.tgz#a899de524a4dfaa296e4be73f1667de150bed8d2" + integrity sha512-G6UD9HX1XaKXnWpKgNHPVc/pYYLtP8+UWfORY5n3GTLSUNUo2hU2ABBnC9B3hg7ATWVSIGTisiP8zGq1DlvTbg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" From f08fadc3d5b2edbfeaae8a2c9a24ae3cceb24c57 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 18:09:35 -0500 Subject: [PATCH 15/17] icons, much css --- jupyterlab_pullrequests/github_manager.py | 20 +- package.json | 2 - src/components/PullRequestPanel.tsx | 3 +- src/components/PullRequestToolbar.tsx | 6 +- .../browser/PullRequestBrowserFileItem.tsx | 21 +- .../browser/PullRequestBrowserItem.tsx | 45 +++-- src/components/diff/NBDiff.tsx | 16 +- src/components/diff/PlainDiffComponent.tsx | 5 +- .../diff/PullRequestCommentThread.tsx | 32 +-- .../tab/PullRequestDescriptionTab.tsx | 29 +-- src/components/tab/PullRequestFileTab.tsx | 12 +- src/components/tab/PullRequestTabWidget.tsx | 5 +- src/icons.ts | 30 +++ src/models.tsx | 9 +- src/typings.d.ts | 4 + style/index.css | 191 ++++++------------ style/pullrequest-dark.svg | 11 - style/pullrequest-deletion-dark.svg | 4 - style/pullrequest-deletion-light.svg | 4 - style/pullrequest-deletion.svg | 5 + style/pullrequest-insertion-dark.svg | 4 - style/pullrequest-insertion-light.svg | 4 - style/pullrequest-insertion.svg | 5 + style/pullrequest-light.svg | 11 - style/pullrequest-plus.svg | 8 +- style/pullrequest.svg | 5 + .../PullRequestBrowserItem.spec.tsx | 14 +- yarn.lock | 7 +- 28 files changed, 233 insertions(+), 279 deletions(-) create mode 100644 src/icons.ts create mode 100644 src/typings.d.ts delete mode 100644 style/pullrequest-dark.svg delete mode 100644 style/pullrequest-deletion-dark.svg delete mode 100644 style/pullrequest-deletion-light.svg create mode 100644 style/pullrequest-deletion.svg delete mode 100644 style/pullrequest-insertion-dark.svg delete mode 100644 style/pullrequest-insertion-light.svg create mode 100644 style/pullrequest-insertion.svg delete mode 100644 style/pullrequest-light.svg create mode 100644 style/pullrequest.svg diff --git a/jupyterlab_pullrequests/github_manager.py b/jupyterlab_pullrequests/github_manager.py index 632d5c2..582a3d2 100644 --- a/jupyterlab_pullrequests/github_manager.py +++ b/jupyterlab_pullrequests/github_manager.py @@ -10,10 +10,13 @@ from tornado.web import HTTPError from .manager import PullRequestsManager - +from ._version import __version__ GITHUB_API_BASE_URL = "https://api.github.com" +# User agents required for Github API, see https://developer.github.com/v3/#user-agent-required +USER_AGENT = f"jupyterlab-pullrequests-v{__version__}" + class PullRequestsGithubManager(PullRequestsManager): @@ -176,17 +179,20 @@ def post_file_comment(self, pr_id, filename, body): @gen.coroutine def call_github(self, git_url, load_json=True, method="GET", body=None): - params = {"Accept": "application/vnd.github.v3+json", "access_token": self.access_token} + params = {"Accept": "application/vnd.github.v3+json"} + headers = {"Authorization": f"token {self.access_token}"} + url = url_concat(git_url, params) + request_kwargs = dict(user_agent=USER_AGENT, headers=headers) - # User agents required for Github API, see https://developer.github.com/v3/#user-agent-required try: if method.lower() == "get": - request = HTTPRequest( - url_concat(git_url, params), validate_cert=True, user_agent="JupyterLab Pull Requests" - ) + request = HTTPRequest(url, **request_kwargs) elif method.lower() == "post": request = HTTPRequest( - url_concat(git_url, params), validate_cert=True, user_agent="JupyterLab Pull Requests", method="POST", body=json.dumps(body) + url, + method="POST", + body=json.dumps(body), + **request_kwargs, ) else: raise ValueError() diff --git a/package.json b/package.json index 6b0a17b..ad0a007 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "@types/d3-color": "^1.2.2", "@types/enzyme": "^3.9.3", "@types/jest": "^26.0.20", - "@types/lodash": "^4.14.135", "@types/node": "^12.6.2", "@types/react": "^17.0.0", "@types/react-dom": "^16.8.4", @@ -78,7 +77,6 @@ "husky": "^4.2.5", "jest": "^26.4.2", "jest-fetch-mock": "^3.0.3", - "lodash": "^4.17.11", "prettier": "^2.1.1", "rimraf": "~3.0.0", "string-replace-loader": "^3.0.1", diff --git a/src/components/PullRequestPanel.tsx b/src/components/PullRequestPanel.tsx index ee9b145..6874aaf 100644 --- a/src/components/PullRequestPanel.tsx +++ b/src/components/PullRequestPanel.tsx @@ -6,6 +6,7 @@ import { PullRequestFileModel, PullRequestModel } from '../models'; import { PullRequestBrowserWidget } from './browser/PullRequestBrowserWidget'; import { PullRequestToolbar } from './PullRequestToolbar'; import { PullRequestTabWidget } from './tab/PullRequestTabWidget'; +import { prIcon } from '../icons'; export class PullRequestPanel extends Widget { private _app: JupyterFrontEnd; @@ -24,7 +25,7 @@ export class PullRequestPanel extends Widget { this.addClass('jp-PullRequestPanel'); this.layout = new PanelLayout(); - this.title.iconClass = 'jp-PullRequest-icon jp-SideBar-tabIcon'; + this.title.icon = prIcon; this.title.caption = 'Pull Requests'; this.id = 'pullrequests'; diff --git a/src/components/PullRequestToolbar.tsx b/src/components/PullRequestToolbar.tsx index 2a72da6..6bf0eb3 100644 --- a/src/components/PullRequestToolbar.tsx +++ b/src/components/PullRequestToolbar.tsx @@ -2,6 +2,8 @@ import { Toolbar, ToolbarButton } from '@jupyterlab/apputils'; import { Widget } from '@lumino/widgets'; import { PullRequestPanel } from './PullRequestPanel'; +import { refreshIcon } from '@jupyterlab/ui-components'; + export class PullRequestToolbar extends Toolbar { private _openRefreshButton: ToolbarButton; @@ -11,7 +13,7 @@ export class PullRequestToolbar extends Toolbar { // Add toolbar header let widget: Widget = new Widget(); - let title = document.createElement('h2'); + let title = document.createElement('label'); title.innerText = 'Pull Requests'; widget.addClass('jp-PullRequestToolbarHeader'); widget.node.appendChild(title); @@ -22,7 +24,7 @@ export class PullRequestToolbar extends Toolbar { onClick: () => { panel.update(); }, - iconClass: 'jp-Refresh-icon jp-Icon jp-Icon-16', + icon: refreshIcon, tooltip: 'Refresh' }); this._openRefreshButton.addClass('jp-PullRequestToolbarItem'); diff --git a/src/components/browser/PullRequestBrowserFileItem.tsx b/src/components/browser/PullRequestBrowserFileItem.tsx index 0941384..eace0b0 100644 --- a/src/components/browser/PullRequestBrowserFileItem.tsx +++ b/src/components/browser/PullRequestBrowserFileItem.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import { PullRequestFileModel } from '../../models'; +import * as icons from '../../icons'; export interface IPullRequestBrowserFileItemState {} @@ -22,6 +23,9 @@ export class PullRequestBrowserFileItem extends React.Component< className="jp-PullRequestBrowserFileItem" title={this.props.file.name} > + + {this.props.file.status} + {this.extractFilename(this.props.file.name)} - - {this.props.file.status} -
    - - {this.props.file.additions} - - - - {this.props.file.deletions} - - + + +
    +
    + +

    ); diff --git a/src/components/browser/PullRequestBrowserItem.tsx b/src/components/browser/PullRequestBrowserItem.tsx index 96aeb4e..c0ac846 100644 --- a/src/components/browser/PullRequestBrowserItem.tsx +++ b/src/components/browser/PullRequestBrowserItem.tsx @@ -3,6 +3,12 @@ import { BeatLoader } from 'react-spinners'; import { PullRequestFileModel, PullRequestModel } from '../../models'; import { doRequest } from '../../utils'; import { PullRequestBrowserFileItem } from './PullRequestBrowserFileItem'; +import { + launcherIcon, + caretUpIcon, + caretDownIcon +} from '@jupyterlab/ui-components'; +import { BUTTON_CLASS } from '../../icons'; export interface IPullRequestBrowserItemState { data: PullRequestModel[]; @@ -113,7 +119,7 @@ export class PullRequestBrowserItem extends React.Component< return (
  • -

    {this.props.header}

    +
    {this.state.error != null ? ( -

    +
    Error Listing Pull Requests: {' '} {this.state.error} -

    + ) : (
      {this.state.data.map((result, i) => (
      this.props.showTab(result)}>
    • -

      {result.title}

      -
      - this.openLink(e, result.link)} - /> - this.toggleFilesExpanded(e, i)} - /> -
      + + +
    • {result.isExpanded && (
        diff --git a/src/components/diff/NBDiff.tsx b/src/components/diff/NBDiff.tsx index 68f7a2e..92f3fc7 100644 --- a/src/components/diff/NBDiff.tsx +++ b/src/components/diff/NBDiff.tsx @@ -2,7 +2,6 @@ import * as nbformat from '@jupyterlab/nbformat'; import { RenderMimeProvider } from '@jupyterlab/git/lib/components/diff/Diff'; import { CellDiff } from '@jupyterlab/git/lib/components/diff/NbDiff'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; -import { isNull, isUndefined } from 'lodash'; import { IDiffEntry } from 'nbdime/lib/diff/diffentries'; import { CellDiffModel, NotebookDiffModel } from 'nbdime/lib/diff/model'; import * as React from 'react'; @@ -36,19 +35,16 @@ export class NBDiff extends React.Component { } render(): JSX.Element | null { - if (!isUndefined(this.state.error)) { + if (this.state.error == null) { return ( -

        +
        Error Loading File: {' '} {this.state.error} -

        + ); - } else if ( - !isUndefined(this.state.nbdModel) && - !isUndefined(this.state.prChunks) - ) { + } else if (this.state.nbdModel != null && this.state.prChunks != null) { const cellComponents = (this.state.prChunks || []).map( (prChunk, index) => (
        @@ -70,7 +66,7 @@ export class NBDiff extends React.Component { )}
      - {!isUndefined(prChunk.comments) && + {prChunk.comments != null && prChunk.comments.map((comment, i) => ( { for (let chunk of originalChunks) { for (let cell of chunk) { // Add line numbers if it exists in remote - if (!isNull(cell.source.remote)) { + if (cell.source.remote != null) { let prChunk = new PullRequestChunkModel(chunk, this.props.file); let headNbdimeSource = cell.source.remote; let headContentSource: string = ''; diff --git a/src/components/diff/PlainDiffComponent.tsx b/src/components/diff/PlainDiffComponent.tsx index 4b42661..e3e2b2a 100644 --- a/src/components/diff/PlainDiffComponent.tsx +++ b/src/components/diff/PlainDiffComponent.tsx @@ -1,6 +1,5 @@ import { IThemeManager } from '@jupyterlab/apputils'; import * as d3 from 'd3-color'; -import { isNull } from 'lodash'; import * as monaco from 'monaco-editor'; @@ -207,7 +206,7 @@ export class PlainDiffComponent extends React.Component< } // Show add comment decoration on mouse move this.state.diffEditor.getModifiedEditor().onMouseMove(e => { - if (!isNull(e.target['position'])) { + if (e.target['position'] != null) { this.updateCommentDecoration(e.target['position']['lineNumber']); } else if (this.state.decorations.length > 0 && e.target['type'] === 12) { this.removeCommentDecoration(); @@ -228,7 +227,7 @@ export class PlainDiffComponent extends React.Component< let lineNumber = parseInt(e.target.element.parentElement.innerText, 10); for (let comment of this.state.comments) { if ( - isNull(comment.thread.comment) && + comment.thread.comment == null && comment.thread.lineNumber === lineNumber ) { return; diff --git a/src/components/diff/PullRequestCommentThread.tsx b/src/components/diff/PullRequestCommentThread.tsx index 3416a7c..2069a74 100644 --- a/src/components/diff/PullRequestCommentThread.tsx +++ b/src/components/diff/PullRequestCommentThread.tsx @@ -1,5 +1,5 @@ -import { isNull, isUndefined } from 'lodash'; import * as React from 'react'; +import { caretUpIcon, caretDownIcon } from '@jupyterlab/ui-components'; import ReactResizeDetector from 'react-resize-detector'; import { IPullRequestCommentModel, @@ -8,6 +8,7 @@ import { } from '../../models'; import moment from 'moment'; +import { BUTTON_CLASS } from '../../icons'; export interface IPullRequestCommentThreadState { isExpanded: boolean; isInput: boolean; @@ -29,7 +30,7 @@ export class PullRequestCommentThread extends React.Component< super(props); this.state = { isExpanded: true, - isInput: isNull(this.props.thread.comment) ? true : false, + isInput: this.props.thread.comment == null ? true : false, inputText: '', thread: this.props.thread }; @@ -50,7 +51,7 @@ export class PullRequestCommentThread extends React.Component< }; onResize = (): void => { - if (!isUndefined(this.props.plainDiff)) { + if (this.props.plainDiff != null) { for (let comment of this.props.plainDiff.plainDiff.state.comments) { comment.toggleUpdate(); } @@ -60,7 +61,7 @@ export class PullRequestCommentThread extends React.Component< async handleSubmit(): Promise { let _thread = this.props.thread; let payload; - if (!isNull(this.state.thread.comment)) { + if (this.state.thread.comment != null) { payload = _thread.getCommentReplyBody(this.state.inputText); } else { payload = _thread.getCommentNewBody(this.state.inputText); @@ -72,7 +73,7 @@ export class PullRequestCommentThread extends React.Component< handleCancel(): void { // If no other comments, canceling should remove this thread - if (isNull(this.state.thread.comment)) { + if (this.state.thread.comment == null) { this.props.handleRemove(); // for component specific remove methods } else { this.setState({ isInput: false }); @@ -87,7 +88,7 @@ export class PullRequestCommentThread extends React.Component<
  • -

    {item.username}

    +

    {moment(item.updatedAt).fromNow()}

    {item.text}

    @@ -100,25 +101,28 @@ export class PullRequestCommentThread extends React.Component< return (
    - {!this.state.isExpanded && !isNull(this.state.thread.comment) && ( + {!this.state.isExpanded && this.state.thread.comment != null && (

    {this.state.thread.comment.username}:{' '} {this.state.thread.comment.text}

    )} - this.setState({ isExpanded: !this.state.isExpanded }) } - /> + > + {this.state.isExpanded ? ( + + ) : ( + + )} +
    {this.state.isExpanded && (
    - {!isNull(this.state.thread.comment) && ( + {this.state.thread.comment != null && (
    {this.getCommentItemDom(this.state.thread.comment)}
    diff --git a/src/components/tab/PullRequestDescriptionTab.tsx b/src/components/tab/PullRequestDescriptionTab.tsx index 84d02b5..44ec788 100644 --- a/src/components/tab/PullRequestDescriptionTab.tsx +++ b/src/components/tab/PullRequestDescriptionTab.tsx @@ -1,8 +1,8 @@ import { IThemeManager, Spinner } from '@jupyterlab/apputils'; -import { isNull } from 'lodash'; import * as React from 'react'; import { RefObject } from 'react'; import { PullRequestModel } from '../../models'; +import { launcherIcon } from '@jupyterlab/ui-components'; export interface IPullRequestDescriptionTabState { pr: PullRequestModel; @@ -35,24 +35,29 @@ export class PullRequestDescriptionTab extends React.Component< return (
    {!this.state.isLoading ? ( - isNull(this.state.error) && !isNull(this.state.pr) ? ( + this.state.error == null && this.state.pr != null ? (
    -

    {this.state.pr.title}

    -

    {this.state.pr.body}

    - +
    +

    + {this.state.pr.title} +

    + +
    +

    {this.state.pr.body}

    ) : ( -

    +
    Error Loading File: {' '} {this.state.error} -

    + ) ) : (
    diff --git a/src/components/tab/PullRequestFileTab.tsx b/src/components/tab/PullRequestFileTab.tsx index c10c7a1..f68af0f 100644 --- a/src/components/tab/PullRequestFileTab.tsx +++ b/src/components/tab/PullRequestFileTab.tsx @@ -1,6 +1,5 @@ import { IThemeManager, Spinner } from '@jupyterlab/apputils'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; -import { isNull } from 'lodash'; import * as React from 'react'; import { RefObject } from 'react'; import { PullRequestFileModel } from '../../models'; @@ -55,7 +54,7 @@ export class PullRequestFileTab extends React.Component< return (
    {!this.state.isLoading ? ( - isNull(this.state.error) && !isNull(this.state.file) ? ( + this.state.error == null && this.state.file != null ? ( this.state.file.extension === '.ipynb' ? ( ) ) : ( -

    - - Error Loading File: - {' '} - {this.state.error} -

    +
    + Error Loading File: {this.state.error} +
    ) ) : (
    diff --git a/src/components/tab/PullRequestTabWidget.tsx b/src/components/tab/PullRequestTabWidget.tsx index 24916f6..d92a622 100644 --- a/src/components/tab/PullRequestTabWidget.tsx +++ b/src/components/tab/PullRequestTabWidget.tsx @@ -5,7 +5,6 @@ import * as ReactDOM from 'react-dom'; import { PullRequestFileModel, PullRequestModel } from '../../models'; import { PullRequestFileTab } from './PullRequestFileTab'; import { PullRequestDescriptionTab } from './PullRequestDescriptionTab'; -import { isUndefined } from 'lodash'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; // Assumes valid json @@ -52,7 +51,7 @@ export class PullRequestTabWidget extends Widget { onUpdateRequest(): void { ReactDOM.unmountComponentAtNode(this.node); - if (!isUndefined(this._file)) { + if (this._file != null) { ReactDOM.render( , this.node ); - } else if (!isUndefined(this._pr)) { + } else if (this._pr != null) { ReactDOM.render( :last-child { + flex: 1; + overflow-y: auto; } .jp-PullRequestBrowser { - background-color: var(--jp-layout-color1); - margin: 0; - height: 100vh; font-size: var(--jp-ui-font-size1); + flex: 1; } .jp-PullRequestBrowser ul { @@ -44,8 +33,7 @@ padding-top: 8px; } -.jp-PullRequestBrowser .jp-PullRequestBrowserItem header h2 { - font-size: var(--jp-ui-font-size0); +.jp-PullRequestBrowserItem header label { font-weight: 600; text-transform: uppercase; letter-spacing: 1px; @@ -54,75 +42,43 @@ margin: 0; } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserItemListItem { +.jp-PullRequestBrowserItemListItem { display: flex; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: auto; + align-items: center; } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserItemListItem:hover { - background-color: var(--jp-layout-color2); -} - -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserItemListItem - h2 { - font-size: var(--jp-ui-font-size1); - color: var(--jp-ui-font-color1); - font-weight: 400; - padding: 4px 4px 4px 12px; +.jp-PullRequestBrowserItemListItem button.bp3-button { + flex: initial; margin: 0; - min-width: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + padding: 0; } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserItemListItem - .jp-PullRequestBrowserItemListItemIconWrapper { - display: flex; - flex: 1; - justify-content: flex-end; - padding: 4px 12px 4px 4px; +.jp-PullRequestBrowserItemListItem button.bp3-button:hover { + background-color: var(--jp-layout-color2); } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserItemListItem - span { - margin: 0; +.jp-PullRequestBrowserItemListItem:hover { + background-color: var(--jp-layout-color2); } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserFileItem { +.jp-PullRequestBrowserItemListItem label { + flex: 1; overflow: hidden; text-overflow: ellipsis; +} + +.jp-PullRequestBrowserFileItem { white-space: nowrap; display: flex; align-items: center; - padding: 4px 12px 4px 12px; + padding: 0.5em; } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemList - .jp-PullRequestBrowserFileItem:hover { +.jp-PullRequestBrowserFileItem:hover { background-color: var(--jp-layout-color2); } @@ -133,57 +89,25 @@ .jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemName { color: var(--jp-ui-font-color1); + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemChanged { color: var(--jp-ui-font-color2); - font-size: 10px; - height: 10px; - margin-left: 5px; } .jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemDiff { - flex: 1; - display: flex; - align-items: center; - background-size: contain; - background-repeat: no-repeat; - background-position: center; - margin-left: 4px; -} - -.jp-Icon-13 { - margin: 0; - min-width: 13px; - min-height: 13px; - background-size: 13px; -} - -.jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemDiffText { - color: var(--jp-ui-font-color2); - font-size: 11px; -} - -[data-jp-theme-light='true'] .jp-PullRequestBrowserFileItemDiffInserted { - background-image: url(pullrequest-insertion-light.svg); -} - -[data-jp-theme-light='true'] .jp-PullRequestBrowserFileItemDiffDeleted { - background-image: url(pullrequest-deletion-light.svg); -} - -[data-jp-theme-light='false'] .jp-PullRequestBrowserFileItemDiffInserted { - background-image: url(pullrequest-insertion-dark.svg); -} - -[data-jp-theme-light='false'] .jp-PullRequestBrowserFileItemDiffDeleted { - background-image: url(pullrequest-deletion-dark.svg); + flex: initial; + text-align: right; + max-width: 4em; } .jp-PullRequestBrowser .jp-PullRequestBrowserItem .jp-PullRequestBrowserItemError { - font-size: var(--jp-ui-font-size0); font-weight: 400; letter-spacing: 1px; padding: 4px 12px 4px 12px; @@ -194,18 +118,17 @@ } .jp-PullRequestToolbar { - /* border-bottom: var(--jp-border-width) solid var(--jp-border-color2); */ border-bottom: none; box-shadow: none; padding: 0; + flex: initial; } .jp-PullRequestToolbar .jp-PullRequestToolbarHeader { padding: 0; } -.jp-PullRequestToolbar .jp-PullRequestToolbarHeader h2 { - font-size: var(--jp-ui-font-size0); +.jp-PullRequestToolbar .jp-PullRequestToolbarHeader label { font-weight: 600; text-transform: uppercase; letter-spacing: 1px; @@ -228,24 +151,38 @@ } .jp-PullRequestTab .jp-PullRequestDescriptionTab { - margin: 16px; + margin: 1.6em; } -.jp-PullRequestTab .jp-PullRequestDescriptionTab * { - margin-top: 8px !important; - margin-bottom: 8px !important; +.jp-PullRequestDescriptionTab header { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 1.6em; } -.jp-PullRequestTab .jp-PullRequestDescriptionTab h1 { - font-size: var(--jp-ui-font-size3); - color: var(--jp-ui-font-color0); - font-weight: 600; +.jp-PullRequestDescriptionTab header h1 { + flex: 1; + margin: 0; } -.jp-PullRequestTab .jp-PullRequestDescriptionTab h2 { - font-size: var(--jp-ui-font-size); - color: var(--jp-ui-font-color2); - font-weight: 400; +.jp-PullRequestDescriptionTab header .jp-mod-accept { + flex: initial; +} + +.jp-PullRequestDescriptionTab .jp-mod-accept { + margin-left: 1em; + display: flex; + align-items: center; +} + +.jp-PullRequestDescriptionTab .jp-mod-accept :first-child { + line-height: normal; + margin-right: 0.25em; +} + +.jp-PullRequestDescriptionTab .jp-mod-accept svg *[fill] { + fill: white; } .jp-PullRequestTab .jp-PullRequestTabLoadingContainer { @@ -257,7 +194,6 @@ } .jp-PullRequestTab .jp-PullRequestTabError { - font-size: var(--jp-ui-font-size1); font-weight: 400; letter-spacing: 1px; padding: 20px; @@ -281,7 +217,6 @@ } .jp-PullRequestTab .jp-PullRequestComment .jp-PullRequestCommentHeader p { - font-size: var(--jp-ui-font-size1); color: var(--jp-ui-font-color1); font-weight: 400; margin: 0; @@ -296,7 +231,6 @@ .jp-PullRequestTab .jp-PullRequestComment .jp-PullRequestInputContainer { padding: 8px 16px; - font-size: var(--jp-ui-font-size1); font-weight: 400; } @@ -325,7 +259,6 @@ .jp-PullRequestTab .jp-PullRequestComment .jp-PullRequestInputForm { color: var(--jp-ui-font-color0); - font-size: var(--jp-ui-font-size1); background-color: var(--jp-layout-color1); border: var(--jp-border-width) solid var(--jp-border-color0); background-position: right 8px center; @@ -371,15 +304,13 @@ padding-left: 16px; } -.jp-PullRequestCommentItem .jp-PullRequestCommentItemContent h2 { - font-size: var(--jp-ui-font-size1); +.jp-PullRequestCommentItem .jp-PullRequestCommentItemContent label { color: var(--jp-ui-font-color0); font-weight: 600; margin: 0; } .jp-PullRequestCommentItem .jp-PullRequestCommentItemContent p { - font-size: var(--jp-ui-font-size1); color: var(--jp-ui-font-color1); font-weight: 400; padding-top: 4px; diff --git a/style/pullrequest-dark.svg b/style/pullrequest-dark.svg deleted file mode 100644 index 528c258..0000000 --- a/style/pullrequest-dark.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - background - - - - Layer 1 - - - \ No newline at end of file diff --git a/style/pullrequest-deletion-dark.svg b/style/pullrequest-deletion-dark.svg deleted file mode 100644 index 6fadbc4..0000000 --- a/style/pullrequest-deletion-dark.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/style/pullrequest-deletion-light.svg b/style/pullrequest-deletion-light.svg deleted file mode 100644 index 9e2be98..0000000 --- a/style/pullrequest-deletion-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/style/pullrequest-deletion.svg b/style/pullrequest-deletion.svg new file mode 100644 index 0000000..f6321f3 --- /dev/null +++ b/style/pullrequest-deletion.svg @@ -0,0 +1,5 @@ + + + diff --git a/style/pullrequest-insertion-dark.svg b/style/pullrequest-insertion-dark.svg deleted file mode 100644 index a033146..0000000 --- a/style/pullrequest-insertion-dark.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/style/pullrequest-insertion-light.svg b/style/pullrequest-insertion-light.svg deleted file mode 100644 index 62c16bd..0000000 --- a/style/pullrequest-insertion-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/style/pullrequest-insertion.svg b/style/pullrequest-insertion.svg new file mode 100644 index 0000000..4ed9fc9 --- /dev/null +++ b/style/pullrequest-insertion.svg @@ -0,0 +1,5 @@ + + + diff --git a/style/pullrequest-light.svg b/style/pullrequest-light.svg deleted file mode 100644 index a9e2a53..0000000 --- a/style/pullrequest-light.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - background - - - - Layer 1 - - - \ No newline at end of file diff --git a/style/pullrequest-plus.svg b/style/pullrequest-plus.svg index be0f2aa..7b34df4 100644 --- a/style/pullrequest-plus.svg +++ b/style/pullrequest-plus.svg @@ -1,3 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/style/pullrequest.svg b/style/pullrequest.svg new file mode 100644 index 0000000..13f8675 --- /dev/null +++ b/style/pullrequest.svg @@ -0,0 +1,5 @@ + + + diff --git a/tests/test-components/PullRequestBrowserItem.spec.tsx b/tests/test-components/PullRequestBrowserItem.spec.tsx index 13e6d0f..c288936 100644 --- a/tests/test-components/PullRequestBrowserItem.spec.tsx +++ b/tests/test-components/PullRequestBrowserItem.spec.tsx @@ -34,9 +34,9 @@ describe('PullRequestBrowserItem', () => { }); it('should have a header with text props.header', () => { expect(component.find('header h2')).toHaveLength(1); - expect(component.contains([

    {props.header}

    ])).toEqual( - true - ); + expect( + component.contains([]) + ).toEqual(true); }); it('should not load list item if failed api request', () => { component.setState({ data: [], isLoading: false, error: null }); @@ -91,12 +91,12 @@ describe('PullRequestBrowserItem', () => { expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(1); expect( component.contains([ -

    +
    Error Listing Pull Requests: {' '} error -

    + ]) ).toEqual(true); }); @@ -105,12 +105,12 @@ describe('PullRequestBrowserItem', () => { expect(component.find('.jp-PullRequestBrowserItemError')).toHaveLength(0); expect( component.contains([ -

    +
    Error Listing Pull Requests: {' '} error -

    + ]) ).toEqual(false); }); diff --git a/yarn.lock b/yarn.lock index f7c810f..ab2f10f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1873,11 +1873,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== -"@types/lodash@^4.14.135": - version "4.14.168" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" - integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== - "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -5655,7 +5650,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@4.x, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: +lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== From 498c9c3cad22339b432b61c5791aaaae30441a51 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Thu, 25 Feb 2021 18:17:41 -0500 Subject: [PATCH 16/17] fix pr icon --- src/components/tab/PullRequestTabWidget.tsx | 4 ++++ style/pullrequest.svg | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/tab/PullRequestTabWidget.tsx b/src/components/tab/PullRequestTabWidget.tsx index d92a622..c5cf6f4 100644 --- a/src/components/tab/PullRequestTabWidget.tsx +++ b/src/components/tab/PullRequestTabWidget.tsx @@ -7,6 +7,8 @@ import { PullRequestFileTab } from './PullRequestFileTab'; import { PullRequestDescriptionTab } from './PullRequestDescriptionTab'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { prIcon } from '../../icons'; + // Assumes valid json export class PullRequestTabWidget extends Widget { private _file: PullRequestFileModel; @@ -26,6 +28,7 @@ export class PullRequestTabWidget extends Widget { if (model instanceof PullRequestFileModel) { this.id = model.id; // IDs in format 123456-README.md this.title.label = model.name; + this.title.icon = prIcon; this._file = model; ReactDOM.render( From f357346c90ac660eb3a1f85543f399f794f06163 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Fri, 26 Feb 2021 07:57:11 -0500 Subject: [PATCH 17/17] more css --- src/components/PullRequestPanel.tsx | 34 +++++---- .../browser/PullRequestBrowserFileItem.tsx | 28 ++++--- .../browser/PullRequestBrowserItem.tsx | 63 ++++++++------- .../diff/PullRequestCommentThread.tsx | 4 +- .../tab/PullRequestDescriptionTab.tsx | 24 +++++- src/components/tab/PullRequestTabWidget.tsx | 9 ++- src/icons.ts | 12 ++- style/index.css | 76 ++++++++++++++----- style/pullrequest-deletion.svg | 4 +- style/pullrequest-insertion.svg | 4 +- style/pullrequest-plus.svg | 4 +- style/pullrequest.svg | 4 +- 12 files changed, 179 insertions(+), 87 deletions(-) diff --git a/src/components/PullRequestPanel.tsx b/src/components/PullRequestPanel.tsx index 6874aaf..9bc8651 100644 --- a/src/components/PullRequestPanel.tsx +++ b/src/components/PullRequestPanel.tsx @@ -1,5 +1,6 @@ import { JupyterFrontEnd } from '@jupyterlab/application'; import { IThemeManager, Toolbar } from '@jupyterlab/apputils'; +import { MainAreaWidget } from '@jupyterlab/apputils'; import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; import { PanelLayout, Widget } from '@lumino/widgets'; import { PullRequestFileModel, PullRequestModel } from '../models'; @@ -14,7 +15,7 @@ export class PullRequestPanel extends Widget { private _renderMime: IRenderMimeRegistry; private _toolbar: Toolbar; private _browser: PullRequestBrowserWidget; - private _tabs: PullRequestTabWidget[]; + private _tabs: MainAreaWidget[]; constructor( app: JupyterFrontEnd, @@ -45,28 +46,35 @@ export class PullRequestPanel extends Widget { showTab = async ( data: PullRequestFileModel | PullRequestModel ): Promise => { - let tab = this.getTab(data.id); - if (tab == null) { - tab = new PullRequestTabWidget( + let main = this.getTab(data.id); + if (main == null) { + const tab = new PullRequestTabWidget( data, this._themeManager, this._renderMime ); + main = new MainAreaWidget({ content: tab }); + main.disposed.connect(() => { + if (main != null) { + this._tabs.splice(this._tabs.indexOf(main)); + } + }); tab.update(); - this._tabs.push(tab); + this._tabs.push(main); } - if (!tab.isAttached) { - this._app.shell.add(tab, 'main'); + + if (!main.isAttached) { + this._app.shell.add(main, 'main'); } else { - tab.update(); + main.content.update(); } - this._app.shell.activateById(tab.id); + this._app.shell.activateById(main.id); }; - private getTab(id: string) { - for (let tab of this._tabs) { - if (tab.id.toString() === id.toString()) { - return tab; + private getTab(id: string): MainAreaWidget | null { + for (let main of this._tabs) { + if (main.content.id.toString() === id.toString()) { + return main; } } return null; diff --git a/src/components/browser/PullRequestBrowserFileItem.tsx b/src/components/browser/PullRequestBrowserFileItem.tsx index eace0b0..37d410e 100644 --- a/src/components/browser/PullRequestBrowserFileItem.tsx +++ b/src/components/browser/PullRequestBrowserFileItem.tsx @@ -6,6 +6,7 @@ export interface IPullRequestBrowserFileItemState {} export interface IPullRequestBrowserFileItemProps { file: PullRequestFileModel; + onClick: (event: React.MouseEvent) => void; } export class PullRequestBrowserFileItem extends React.Component< @@ -19,31 +20,34 @@ export class PullRequestBrowserFileItem extends React.Component< render(): JSX.Element { return ( -
    {this.props.file.status} +
    + + +
    +
    + + +
    - + {this.extractFilename(this.props.file.name)} - -
    - - -
    -
    - - -
    -
    + +

  • ); } diff --git a/src/components/browser/PullRequestBrowserItem.tsx b/src/components/browser/PullRequestBrowserItem.tsx index c0ac846..f28604b 100644 --- a/src/components/browser/PullRequestBrowserItem.tsx +++ b/src/components/browser/PullRequestBrowserItem.tsx @@ -5,10 +5,10 @@ import { doRequest } from '../../utils'; import { PullRequestBrowserFileItem } from './PullRequestBrowserFileItem'; import { launcherIcon, - caretUpIcon, - caretDownIcon + caretDownIcon, + caretRightIcon } from '@jupyterlab/ui-components'; -import { BUTTON_CLASS } from '../../icons'; +import { DANGER_BUTTON, MINIMAL_BUTTON } from '../../icons'; export interface IPullRequestBrowserItemState { data: PullRequestModel[]; @@ -136,37 +136,46 @@ export class PullRequestBrowserItem extends React.Component< ) : (
      {this.state.data.map((result, i) => ( -
      this.props.showTab(result)}> -
    • - - - -
    • +
    • + + this.props.showTab(result)}> + {result.title} + + {result.isExpanded && (
        {result.files != null && result.files.map((file, k) => ( -
      • this.showFileTab(e, file)}> - -
      • + this.showFileTab(e, file)} + /> ))}
      )} -
    • + ))}
    )} diff --git a/src/components/diff/PullRequestCommentThread.tsx b/src/components/diff/PullRequestCommentThread.tsx index 2069a74..c7966d5 100644 --- a/src/components/diff/PullRequestCommentThread.tsx +++ b/src/components/diff/PullRequestCommentThread.tsx @@ -8,7 +8,7 @@ import { } from '../../models'; import moment from 'moment'; -import { BUTTON_CLASS } from '../../icons'; +import { MINIMAL_BUTTON } from '../../icons'; export interface IPullRequestCommentThreadState { isExpanded: boolean; isInput: boolean; @@ -108,7 +108,7 @@ export class PullRequestCommentThread extends React.Component<

    )} -

    {this.state.pr.body}

    +
    {this.state.pr.body}
    ) : (
    diff --git a/src/components/tab/PullRequestTabWidget.tsx b/src/components/tab/PullRequestTabWidget.tsx index c5cf6f4..c7aea55 100644 --- a/src/components/tab/PullRequestTabWidget.tsx +++ b/src/components/tab/PullRequestTabWidget.tsx @@ -5,7 +5,7 @@ import * as ReactDOM from 'react-dom'; import { PullRequestFileModel, PullRequestModel } from '../../models'; import { PullRequestFileTab } from './PullRequestFileTab'; import { PullRequestDescriptionTab } from './PullRequestDescriptionTab'; -import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; +import { IRenderMimeRegistry, RenderedMarkdown } from '@jupyterlab/rendermime'; import { prIcon } from '../../icons'; @@ -15,6 +15,7 @@ export class PullRequestTabWidget extends Widget { private _pr: PullRequestModel; private _themeManager: IThemeManager; private _renderMime: IRenderMimeRegistry; + private _markdown: RenderedMarkdown; constructor( model: PullRequestFileModel | PullRequestModel, @@ -25,6 +26,10 @@ export class PullRequestTabWidget extends Widget { this.title.closable = true; this._themeManager = themeManager; this._renderMime = renderMime; + this._markdown = renderMime.createRenderer( + 'text/markdown' + ) as RenderedMarkdown; + if (model instanceof PullRequestFileModel) { this.id = model.id; // IDs in format 123456-README.md this.title.label = model.name; @@ -47,6 +52,7 @@ export class PullRequestTabWidget extends Widget { , this.node ); @@ -69,6 +75,7 @@ export class PullRequestTabWidget extends Widget { , this.node ); diff --git a/src/icons.ts b/src/icons.ts index 11844c5..b120f99 100644 --- a/src/icons.ts +++ b/src/icons.ts @@ -5,8 +5,16 @@ import prInsertionSvgstr from '../style/pullrequest-insertion.svg'; import prDeletionSvgstr from '../style/pullrequest-deletion.svg'; import prPlusSvgstr from '../style/pullrequest-plus.svg'; -export const BUTTON_CLASS = { - className: 'bp3-button bp3-minimal minimal jp-Button' +export const A_BUTTON = { + className: 'bp3-button jp-Button' +}; + +export const MINIMAL_BUTTON = { + className: `${A_BUTTON.className} bp3-minimal minimal` +}; + +export const DANGER_BUTTON = { + className: `${MINIMAL_BUTTON.className} jp-PullRequestDangerHover` }; export const prIcon = new LabIcon({ diff --git a/style/index.css b/style/index.css index 2a11f33..de2fe07 100644 --- a/style/index.css +++ b/style/index.css @@ -24,6 +24,11 @@ list-style-type: none; } +.jp-PullRequestBrowser a { + color: var(--jp-ui-font-color1); + font-weight: 700; +} + .jp-PullRequestBrowser .jp-PullRequestBrowserItem header { flex: 0 0 auto; align-items: center; @@ -33,51 +38,73 @@ padding-top: 8px; } +.jp-PullRequestBrowserItem label { + color: var(--jp-ui-font-color1); +} + .jp-PullRequestBrowserItem header label { font-weight: 600; text-transform: uppercase; letter-spacing: 1px; - color: var(--jp-ui-font-color1); - padding: 8px 8px 8px 12px; + padding: 0.5em 0.5em 0.5em 1em; margin: 0; } .jp-PullRequestBrowserItemListItem { + width: 100%; display: flex; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin: auto; + flex-direction: row; + flex-wrap: wrap; align-items: center; } +.jp-PullRequestBrowserItemListItem .jp-PullRequestBrowserItemFileList { + display: table; + margin: 0px auto; + width: 100%; +} + .jp-PullRequestBrowserItemListItem button.bp3-button { - flex: initial; margin: 0; padding: 0; } -.jp-PullRequestBrowserItemListItem button.bp3-button:hover { +.jp-PullRequestBrowserItemListItem:hover:not(.jp-mod-expanded) { background-color: var(--jp-layout-color2); } -.jp-PullRequestBrowserItemListItem:hover { - background-color: var(--jp-layout-color2); +.jp-PullRequestBrowserItemListItem + button.jp-Button.bp3-button.bp3-minimal:hover { + background-color: var(--jp-layout-color3); } -.jp-PullRequestBrowserItemListItem label { +.jp-PullRequestBrowserItemListItem > a { flex: 1; overflow: hidden; text-overflow: ellipsis; + padding-left: 0.5em; } -.jp-PullRequestBrowserFileItem { - white-space: nowrap; - display: flex; - align-items: center; +.jp-PullRequestBrowserFileItem:hover a { + background-color: var(--jp-brand-color0); + color: white; +} + +.jp-PullRequestBrowserItemFileList > .jp-PullRequestBrowserFileItem { + display: table-row; +} + +.jp-PullRequestBrowserItemFileList > .jp-PullRequestBrowserFileItem > * { + display: table-cell; padding: 0.5em; } +.jp-PullRequestBrowserItemFileList + > .jp-PullRequestBrowserFileItem + > :last-child { + padding-right: 1em; +} + .jp-PullRequestBrowserFileItem:hover { background-color: var(--jp-layout-color2); } @@ -93,6 +120,7 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + display: block; } .jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemChanged { @@ -100,14 +128,11 @@ } .jp-PullRequestBrowserFileItem .jp-PullRequestBrowserFileItemDiff { - flex: initial; text-align: right; - max-width: 4em; + white-space: nowrap; } -.jp-PullRequestBrowser - .jp-PullRequestBrowserItem - .jp-PullRequestBrowserItemError { +.jp-PullRequestBrowserItemError { font-weight: 400; letter-spacing: 1px; padding: 4px 12px 4px 12px; @@ -439,6 +464,17 @@ flex: 1; } +/* color utilities */ +.jp-PullRequestDangerHover:hover, +.jp-PullRequestDangerHover:active { + background-color: var(--jp-warn-color0) !important; +} + +.jp-PullRequestDangerHover:hover svg *[fill], +.jp-PullRequestDangerHover:active svg *[fill] { + fill: var(--jp-layout-color0) !important; +} + @media (min-width: 1000px) { .jp-PullRequestTab .jp-PullRequestNBDiff .jp-PullRequestComment { width: 49%; diff --git a/style/pullrequest-deletion.svg b/style/pullrequest-deletion.svg index f6321f3..8560d68 100644 --- a/style/pullrequest-deletion.svg +++ b/style/pullrequest-deletion.svg @@ -1,5 +1,5 @@ - diff --git a/style/pullrequest-insertion.svg b/style/pullrequest-insertion.svg index 4ed9fc9..ab679f4 100644 --- a/style/pullrequest-insertion.svg +++ b/style/pullrequest-insertion.svg @@ -1,5 +1,5 @@ - diff --git a/style/pullrequest-plus.svg b/style/pullrequest-plus.svg index 7b34df4..0b12778 100644 --- a/style/pullrequest-plus.svg +++ b/style/pullrequest-plus.svg @@ -1,5 +1,5 @@ - diff --git a/style/pullrequest.svg b/style/pullrequest.svg index 27af375..8e43582 100644 --- a/style/pullrequest.svg +++ b/style/pullrequest.svg @@ -1,5 +1,5 @@ -