"] == "./news"
diff --git a/noxfile.py b/noxfile.py
new file mode 100644
index 000000000000..8fe5842ee348
--- /dev/null
+++ b/noxfile.py
@@ -0,0 +1,196 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import nox
+import shutil
+import sys
+import sysconfig
+import uuid
+
+EXT_ROOT = pathlib.Path(__file__).parent
+
+
+@nox.session()
+def install_python_libs(session: nox.Session):
+ requirements = [
+ ("./python_files/lib/python", "./requirements.txt"),
+ (
+ "./python_files/lib/jedilsp",
+ "./python_files/jedilsp_requirements/requirements.txt",
+ ),
+ ]
+ for target, file in requirements:
+ session.install(
+ "-t",
+ target,
+ "--no-cache-dir",
+ "--implementation",
+ "py",
+ "--no-deps",
+ "--require-hashes",
+ "--only-binary",
+ ":all:",
+ "-r",
+ file,
+ )
+
+ session.install("packaging")
+
+ # Download get-pip script
+ session.run(
+ "python",
+ "./python_files/download_get_pip.py",
+ env={"PYTHONPATH": "./python_files/lib/temp"},
+ )
+
+ if pathlib.Path("./python_files/lib/temp").exists():
+ shutil.rmtree("./python_files/lib/temp")
+
+
+@nox.session()
+def azure_pet_build_before(session: nox.Session):
+ source_dir = pathlib.Path(pathlib.Path.cwd() / "python-env-tools").resolve()
+ config_toml_disabled = source_dir / ".cargo" / "config.toml.disabled"
+ config_toml = source_dir / ".cargo" / "config.toml"
+ if config_toml_disabled.exists() and not config_toml.exists():
+ config_toml.write_bytes(config_toml_disabled.read_bytes())
+
+
+@nox.session()
+def azure_pet_build_after(session: nox.Session):
+ source_dir = pathlib.Path(pathlib.Path.cwd() / "python-env-tools").resolve()
+ ext = sysconfig.get_config_var("EXE") or ""
+ bin_name = f"pet{ext}"
+
+ abs_bin_path = None
+ for root, _, files in os.walk(os.fspath(source_dir / "target")):
+ bin_path = pathlib.Path(root) / "release" / bin_name
+ if bin_path.exists():
+ abs_bin_path = bin_path.absolute()
+ break
+
+ assert abs_bin_path
+
+ dest_dir = pathlib.Path(pathlib.Path.cwd() / "python-env-tools").resolve()
+ if not pathlib.Path(dest_dir / "bin").exists():
+ pathlib.Path(dest_dir / "bin").mkdir()
+ bin_dest = dest_dir / "bin" / bin_name
+ shutil.copyfile(abs_bin_path, bin_dest)
+
+ if sys.platform != "win32":
+ os.chmod(os.fspath(bin_dest), 0o755)
+
+
+@nox.session()
+def native_build(session: nox.Session):
+ source_dir = pathlib.Path(pathlib.Path.cwd() / "python-env-tools").resolve()
+ dest_dir = pathlib.Path(pathlib.Path.cwd() / "python-env-tools").resolve()
+
+ with session.cd(source_dir):
+ if not pathlib.Path(dest_dir / "bin").exists():
+ pathlib.Path(dest_dir / "bin").mkdir()
+
+ if not pathlib.Path(dest_dir / "bin" / ".gitignore").exists():
+ pathlib.Path(dest_dir / "bin" / ".gitignore").write_text(
+ "*\n", encoding="utf-8"
+ )
+
+ ext = sysconfig.get_config_var("EXE") or ""
+ target = os.environ.get("CARGO_TARGET", None)
+
+ session.run("cargo", "fetch", external=True)
+ if target:
+ session.run(
+ "cargo",
+ "build",
+ "--frozen",
+ "--release",
+ "--target",
+ target,
+ external=True,
+ )
+ source = source_dir / "target" / target / "release" / f"pet{ext}"
+ else:
+ session.run(
+ "cargo",
+ "build",
+ "--frozen",
+ "--release",
+ external=True,
+ )
+ source = source_dir / "target" / "release" / f"pet{ext}"
+ dest = dest_dir / "bin" / f"pet{ext}"
+ shutil.copy(source, dest)
+
+ # Remove python-env-tools/bin exclusion from .vscodeignore
+ vscode_ignore = EXT_ROOT / ".vscodeignore"
+ remove_patterns = ("python-env-tools/bin/**",)
+ lines = vscode_ignore.read_text(encoding="utf-8").splitlines()
+ filtered_lines = [line for line in lines if not line.startswith(remove_patterns)]
+ vscode_ignore.write_text("\n".join(filtered_lines) + "\n", encoding="utf-8")
+
+
+def delete_dir(path: pathlib.Path, ignore_errors=None):
+ attempt = 0
+ known = []
+ while attempt < 5:
+ try:
+ shutil.rmtree(os.fspath(path), ignore_errors=ignore_errors)
+ return
+ except PermissionError as pe:
+ if os.fspath(pe.filename) in known:
+ break
+ print(f"Changing permissions on {pe.filename}")
+ os.chmod(pe.filename, 0o666)
+
+ shutil.rmtree(os.fspath(path))
+
+
+@nox.session()
+def checkout_native(session: nox.Session):
+ dest = (pathlib.Path.cwd() / "python-env-tools").resolve()
+ if dest.exists():
+ shutil.rmtree(os.fspath(dest))
+
+ tempdir = os.getenv("TEMP") or os.getenv("TMP") or "/tmp"
+ tempdir = pathlib.Path(tempdir) / str(uuid.uuid4()) / "python-env-tools"
+ tempdir.mkdir(0o666, parents=True)
+
+ session.log(f"Temp dir: {tempdir}")
+
+ session.log(f"Cloning python-environment-tools to {tempdir}")
+ try:
+ with session.cd(tempdir):
+ session.run("git", "init", external=True)
+ session.run(
+ "git",
+ "remote",
+ "add",
+ "origin",
+ "https://github.com/microsoft/python-environment-tools",
+ external=True,
+ )
+ session.run("git", "fetch", "origin", "main", external=True)
+ session.run(
+ "git", "checkout", "--force", "-B", "main", "origin/main", external=True
+ )
+ delete_dir(tempdir / ".git")
+ delete_dir(tempdir / ".github")
+ delete_dir(tempdir / ".vscode")
+ (tempdir / "CODE_OF_CONDUCT.md").unlink()
+ shutil.move(os.fspath(tempdir), os.fspath(dest))
+ except PermissionError as e:
+ print(f"Permission error: {e}")
+ if not dest.exists():
+ raise
+ finally:
+ delete_dir(tempdir.parent, ignore_errors=True)
+
+
+@nox.session()
+def setup_repo(session: nox.Session):
+ install_python_libs(session)
+ checkout_native(session)
+ native_build(session)
diff --git a/package-lock.json b/package-lock.json
index c4fed7057c7e..6419b9f3393e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,2931 +1,3162 @@
{
"name": "python",
- "version": "2021.7.0-dev",
- "lockfileVersion": 1,
+ "version": "2024.11.0-dev",
+ "lockfileVersion": 2,
"requires": true,
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
- "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "packages": {
+ "": {
+ "name": "python",
+ "version": "2024.11.0-dev",
+ "license": "MIT",
+ "dependencies": {
+ "@iarna/toml": "^2.2.5",
+ "@vscode/extension-telemetry": "^0.8.4",
+ "arch": "^2.1.0",
+ "fs-extra": "^10.0.1",
+ "glob": "^7.2.0",
+ "hash.js": "^1.1.7",
+ "iconv-lite": "^0.6.3",
+ "inversify": "^5.0.4",
+ "jsonc-parser": "^3.0.0",
+ "lodash": "^4.17.21",
+ "minimatch": "^5.0.1",
+ "named-js-regexp": "^1.3.3",
+ "node-stream-zip": "^1.6.0",
+ "reflect-metadata": "^0.1.12",
+ "rxjs": "^6.5.4",
+ "rxjs-compat": "^6.5.4",
+ "semver": "^7.5.2",
+ "stack-trace": "0.0.10",
+ "sudo-prompt": "^9.2.1",
+ "tmp": "^0.0.33",
+ "uint64be": "^3.0.0",
+ "unicode": "^14.0.0",
+ "untildify": "^4.0.0",
+ "vscode-debugprotocol": "^1.28.0",
+ "vscode-jsonrpc": "^9.0.0-next.4",
+ "vscode-languageclient": "^10.0.0-next.8",
+ "vscode-languageserver-protocol": "^3.17.6-next.6",
+ "vscode-tas-client": "^0.1.84",
+ "which": "^2.0.2",
+ "winreg": "^1.2.4",
+ "xml2js": "^0.5.0"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
+ "@types/bent": "^7.3.0",
+ "@types/chai": "^4.1.2",
+ "@types/chai-arrays": "^2.0.0",
+ "@types/chai-as-promised": "^7.1.0",
+ "@types/download": "^8.0.1",
+ "@types/fs-extra": "^9.0.13",
+ "@types/glob": "^7.2.0",
+ "@types/lodash": "^4.14.104",
+ "@types/mocha": "^9.1.0",
+ "@types/node": "^18.17.1",
+ "@types/semver": "^5.5.0",
+ "@types/shortid": "^0.0.29",
+ "@types/sinon": "^10.0.11",
+ "@types/stack-trace": "0.0.29",
+ "@types/tmp": "^0.0.33",
+ "@types/vscode": "^1.81.0",
+ "@types/which": "^2.0.1",
+ "@types/winreg": "^1.2.30",
+ "@types/xml2js": "^0.4.2",
+ "@typescript-eslint/eslint-plugin": "^3.7.0",
+ "@typescript-eslint/parser": "^3.7.0",
+ "@vscode/test-electron": "^2.3.8",
+ "@vscode/vsce": "^2.27.0",
+ "bent": "^7.3.12",
+ "chai": "^4.1.2",
+ "chai-arrays": "^2.0.0",
+ "chai-as-promised": "^7.1.1",
+ "copy-webpack-plugin": "^9.1.0",
+ "cross-spawn": "^6.0.5",
+ "del": "^6.0.0",
+ "download": "^8.0.0",
+ "eslint": "^7.2.0",
+ "eslint-config-airbnb": "^18.2.0",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-import": "^2.25.4",
+ "eslint-plugin-jsx-a11y": "^6.3.1",
+ "eslint-plugin-react": "^7.20.3",
+ "eslint-plugin-react-hooks": "^4.0.0",
+ "expose-loader": "^3.1.0",
+ "flat": "^5.0.2",
+ "get-port": "^5.1.1",
+ "gulp": "^5.0.0",
+ "gulp-typescript": "^5.0.0",
+ "mocha": "^9.2.2",
+ "mocha-junit-reporter": "^2.0.2",
+ "mocha-multi-reporters": "^1.1.7",
+ "node-has-native-dependencies": "^1.0.2",
+ "node-loader": "^1.0.2",
+ "node-polyfill-webpack-plugin": "^1.1.4",
+ "nyc": "^15.0.0",
+ "prettier": "^2.0.2",
+ "rewiremock": "^3.13.0",
+ "shortid": "^2.2.8",
+ "sinon": "^13.0.1",
+ "source-map-support": "^0.5.12",
+ "ts-loader": "^9.2.8",
+ "ts-mockito": "^2.5.0",
+ "ts-node": "^10.7.0",
+ "tsconfig-paths-webpack-plugin": "^3.2.0",
+ "typemoq": "^2.1.0",
+ "typescript": "4.5.5",
+ "uuid": "^8.3.2",
+ "webpack": "^5.76.0",
+ "webpack-bundle-analyzer": "^4.5.0",
+ "webpack-cli": "^4.9.2",
+ "webpack-fix-default-import-plugin": "^1.0.3",
+ "webpack-merge": "^5.8.0",
+ "webpack-node-externals": "^3.0.0",
+ "webpack-require-from": "^1.8.6",
+ "worker-loader": "^3.0.8",
+ "yargs": "^15.3.1"
+ },
+ "engines": {
+ "vscode": "^1.89.0-20240415"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
"dev": true,
- "requires": {
- "@babel/highlight": "^7.0.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@babel/helper-validator-identifier": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
- "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
- "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
"dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "@babel/runtime": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.4.tgz",
- "integrity": "sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q==",
+ "node_modules/@azure/abort-controller": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
+ "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/abort-controller/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/core-auth": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
+ "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/core-auth/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/core-client": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz",
+ "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==",
"dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.2"
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.9.1",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "@babel/runtime-corejs3": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.5.tgz",
- "integrity": "sha512-RMafpmrNB5E/bwdSphLr8a8++9TosnyJp98RZzI6VOx2R2CCMpsXXXRvmI700O9oEKpXdZat6oEK68/F0zjd4A==",
+ "node_modules/@azure/core-client/node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
"dev": true,
- "requires": {
- "core-js-pure": "^3.0.0",
- "regenerator-runtime": "^0.13.4"
+ "dependencies": {
+ "tslib": "^2.6.2"
},
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-client/node_modules/@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
"dependencies": {
- "regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
- "dev": true
- }
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "@enonic/fnv-plus": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@enonic/fnv-plus/-/fnv-plus-1.3.0.tgz",
- "integrity": "sha512-BCN9uNWH8AmiP7BXBJqEinUY9KXalmRzo+L0cB/mQsmFfzODxwQrbvxCHXUNH2iP+qKkWYtB4vyy8N62PViMFw==",
+ "node_modules/@azure/core-client/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
- "@eslint/eslintrc": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz",
- "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==",
- "dev": true,
- "requires": {
- "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.19",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
+ "node_modules/@azure/core-rest-pipeline": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz",
+ "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==",
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-tracing": "^1.0.1",
+ "@azure/core-util": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "form-data": "^4.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "tslib": "^2.2.0",
+ "uuid": "^8.3.0"
},
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline/node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "ajv": {
- "version": "6.12.4",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
- "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "globals": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
- "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
- "dev": true,
- "requires": {
- "type-fest": "^0.8.1"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
- "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "@gulp-sourcemaps/identity-map": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz",
- "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==",
- "dev": true,
- "requires": {
- "acorn": "^5.0.3",
- "css": "^2.2.1",
- "normalize-path": "^2.1.1",
- "source-map": "^0.6.0",
- "through2": "^2.0.3"
- },
+ "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dependencies": {
- "acorn": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
- "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
- "dev": true
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "@gulp-sourcemaps/map-sources": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz",
- "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=",
- "dev": true,
- "requires": {
- "normalize-path": "^2.0.1",
- "through2": "^2.0.3"
+ "node_modules/@azure/core-rest-pipeline/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/core-tracing": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
+ "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
+ "dependencies": {
+ "tslib": "^2.2.0"
},
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-tracing/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/core-util": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz",
+ "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==",
"dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "@azure/abort-controller": "^1.0.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "@istanbuljs/load-nyc-config": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz",
- "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==",
+ "node_modules/@azure/core-util/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/identity": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.1.tgz",
+ "integrity": "sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-client": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^3.11.1",
+ "@azure/msal-node": "^2.9.2",
+ "events": "^3.0.0",
+ "jws": "^4.0.0",
+ "open": "^8.0.0",
+ "stoppable": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
"dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
},
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/@azure/core-util/node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
"dependencies": {
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "@istanbuljs/nyc-config-typescript": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-0.1.3.tgz",
- "integrity": "sha512-EzRFg92bRSD1W/zeuNkeGwph0nkWf+pP2l/lYW4/5hav7RjKKBN5kV1Ix7Tvi0CMu3pC4Wi/U7rNisiJMR3ORg==",
+ "node_modules/@azure/identity/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
- "@istanbuljs/schema": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
- "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
- "dev": true
+ "node_modules/@azure/logger": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
+ "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "@nodelib/fs.scandir": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
- "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
+ "node_modules/@azure/logger/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@azure/msal-browser": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.14.0.tgz",
+ "integrity": "sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA==",
"dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.4",
- "run-parallel": "^1.1.9"
+ "dependencies": {
+ "@azure/msal-common": "14.10.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "@nodelib/fs.stat": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
- "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
- "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
+ "node_modules/@azure/msal-common": {
+ "version": "14.10.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.10.0.tgz",
+ "integrity": "sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA==",
"dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.4",
- "fastq": "^1.6.0"
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "@npmcli/move-file": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz",
- "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==",
+ "node_modules/@azure/msal-node": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.9.2.tgz",
+ "integrity": "sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==",
"dev": true,
- "requires": {
- "mkdirp": "^1.0.4"
- },
"dependencies": {
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- }
+ "@azure/msal-common": "14.12.0",
+ "jsonwebtoken": "^9.0.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=16"
}
},
- "@sindresorhus/df": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/df/-/df-2.1.0.tgz",
- "integrity": "sha1-0gjPJ+BvC7R20U197M19cm6ao4k=",
+ "node_modules/@azure/msal-node/node_modules/@azure/msal-common": {
+ "version": "14.12.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz",
+ "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==",
"dev": true,
- "requires": {
- "execa": "^0.2.2"
- },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": {
+ "version": "1.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz",
+ "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==",
"dependencies": {
- "execa": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
- "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
- "dev": true,
- "requires": {
- "cross-spawn-async": "^2.1.1",
- "npm-run-path": "^1.0.0",
- "object-assign": "^4.0.1",
- "path-key": "^1.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
- "dev": true,
- "requires": {
- "path-key": "^1.0.0"
- }
- },
- "path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
- "dev": true
- }
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/instrumentation": "^0.41.2",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "@sindresorhus/is": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
- "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
- "dev": true
+ "node_modules/@azure/opentelemetry-instrumentation-azure-sdk/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
- "@sinonjs/commons": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz",
- "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==",
+ "node_modules/@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+ "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
"dev": true,
- "requires": {
- "type-detect": "4.0.8"
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
}
},
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+ "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
"dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@sinonjs/formatio": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz",
- "integrity": "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==",
+ "node_modules/@babel/core": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz",
+ "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==",
"dev": true,
- "requires": {
- "@sinonjs/commons": "^1",
- "@sinonjs/samsam": "^4.2.0"
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.6",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "@sinonjs/samsam": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.0.tgz",
- "integrity": "sha512-yG7QbUz38ZPIegfuSMEcbOo0kkLGmPa8a0Qlz4dk7+cXYALDScWjIZzAm/u2+Frh+bcdZF6wZJZwwuJjY0WAjA==",
+ "node_modules/@babel/core/node_modules/@babel/code-frame": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
"dev": true,
- "requires": {
- "@sinonjs/commons": "^1.6.0",
- "array-from": "^2.1.1",
- "lodash.get": "^4.4.2"
+ "dependencies": {
+ "@babel/highlight": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@sinonjs/text-encoding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
- "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
- "dev": true
- },
- "@stroncium/procfs": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@stroncium/procfs/-/procfs-1.1.1.tgz",
- "integrity": "sha512-c8A7hTAu1FgWJTfOQNqp0N9K/9amlVktNRQidzeeX4dTJpSNl2Y65s9BSfnMlFFGMGP+rBvrb0WTTv7ad6MJ9A==",
- "dev": true
- },
- "@types/ansi-regex": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/ansi-regex/-/ansi-regex-4.0.0.tgz",
- "integrity": "sha512-r1W316vjsZXn1/csLC4HcCJs6jIHIzksHJd7xx+Dl+PAb0S2Dh9cR8ZsIMEfGmbBtP7JNWlf2KKahSkDP6rg3g==",
- "dev": true
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
},
- "@types/anymatch": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
- "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
- "dev": true
+ "node_modules/@babel/generator": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/body-parser": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz",
- "integrity": "sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w==",
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+ "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
"dev": true,
- "requires": {
- "@types/connect": "*",
- "@types/node": "*"
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "@types/caseless": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
- "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
- "dev": true
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
},
- "@types/chai": {
- "version": "4.1.7",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz",
- "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==",
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
- "@types/chai-arrays": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/chai-arrays/-/chai-arrays-1.0.2.tgz",
- "integrity": "sha512-/kgYvj5Pwiv/bOlJ6c5GlRF/W6lUGSLrpQGl/7Gg6w7tvBYcf0iF91+wwyuwDYGO2zM0wNpcoPixZVif8I/r6g==",
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true,
- "requires": {
- "@types/chai": "*"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/chai-as-promised": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz",
- "integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==",
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
- "requires": {
- "@types/chai": "*"
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/cheerio": {
- "version": "0.22.12",
- "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.12.tgz",
- "integrity": "sha512-aczowyAJNfrkBV+HS8DyAA87OnvkqGrrOmm5s7V6Jbgimzv/1ZoAy91cLJX8GQrUS60KufD7EIzA2LbK8HV4hg==",
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/clean-css": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.1.tgz",
- "integrity": "sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ==",
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+ "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
- "dev": true
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
+ "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/connect": {
- "version": "3.4.32",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
- "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/cookiejar": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz",
- "integrity": "sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw==",
- "dev": true
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/copy-webpack-plugin": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-4.4.4.tgz",
- "integrity": "sha512-D8NyCMfHFWi638Cn5gi88mELGrISQdzDAcmOk4j70bzm0kLey99Zp5xsFsL44qPi+a22tcB39U5jiJiV2XMd9A==",
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*",
- "@types/webpack": "*"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/cors": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.6.tgz",
- "integrity": "sha512-invOmosX0DqbpA+cE2yoHGUlF/blyf7nB0OGYBBiH27crcVm5NmFaZkLP4Ta1hGaesckCi5lVLlydNJCxkTOSg==",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true,
- "requires": {
- "@types/express": "*"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/debug": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
- "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==",
- "dev": true
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/decompress": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.3.tgz",
- "integrity": "sha512-W24e3Ycz1UZPgr1ZEDHlK4XnvOr+CpJH3qNsFeqXwwlW/9END9gxn3oJSsp7gYdiQxrXUHwUUd3xuzVz37MrZQ==",
+ "node_modules/@babel/helpers": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A==",
- "dev": true
+ "node_modules/@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/del": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/del/-/del-3.0.1.tgz",
- "integrity": "sha512-y6qRq6raBuu965clKgx6FHuiPu3oHdtmzMPXi8Uahsjdq1L6DL5fS/aY5/s71YwM7k6K1QIWvem5vNwlnNGIkQ==",
+ "node_modules/@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
"dev": true,
- "requires": {
- "@types/glob": "*"
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "@types/diff-match-patch": {
- "version": "1.0.32",
- "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.32.tgz",
- "integrity": "sha512-bPYT5ECFiblzsVzyURaNhljBH2Gh1t9LowgUwciMrNAhFewLkHT2H0Mto07Y4/3KCOGZHRQll3CTtQZ0X11D/A==",
- "dev": true
+ "node_modules/@babel/runtime": {
+ "version": "7.17.8",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz",
+ "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/download": {
- "version": "6.2.4",
- "resolved": "https://registry.npmjs.org/@types/download/-/download-6.2.4.tgz",
- "integrity": "sha512-Lo5dy3ai6LNnbL663sgdzqL1eib11u1yKH6w3v3IXEOO4kRfQpMn1qWUTaumcHLACjFp1RcBx9tUXEvJoR3vcA==",
+ "node_modules/@babel/runtime-corejs3": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.5.tgz",
+ "integrity": "sha512-RMafpmrNB5E/bwdSphLr8a8++9TosnyJp98RZzI6VOx2R2CCMpsXXXRvmI700O9oEKpXdZat6oEK68/F0zjd4A==",
"dev": true,
- "requires": {
- "@types/decompress": "*",
- "@types/got": "^8",
- "@types/node": "*"
+ "dependencies": {
+ "core-js-pure": "^3.0.0",
+ "regenerator-runtime": "^0.13.4"
}
},
- "@types/enzyme": {
- "version": "3.10.2",
- "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.2.tgz",
- "integrity": "sha512-tAFqfBVAxaxOCCcCpFrv6yFDg/hwL1KtJc7dsOaO+BBdSppTcyRP7jO2ze5va7NDa8iSFfAaZ9NeuybmMulu0w==",
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dev": true,
- "requires": {
- "@types/cheerio": "*",
- "@types/react": "*"
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/enzyme-adapter-react-16": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.5.tgz",
- "integrity": "sha512-K7HLFTkBDN5RyRmU90JuYt8OWEY2iKUn43SDWEoBOXd/PowUWjLZ3Q6qMBiQuZeFYK/TOstaZxsnI0fXoAfLpg==",
+ "node_modules/@babel/template/node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
- "requires": {
- "@types/enzyme": "*"
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/eslint-visitor-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
- "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
- "dev": true
+ "node_modules/@babel/traverse": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@types/event-stream": {
- "version": "3.3.34",
- "resolved": "https://registry.npmjs.org/@types/event-stream/-/event-stream-3.3.34.tgz",
- "integrity": "sha512-LLiivgWKii4JeMzFy3trrxqkRrVSdue8WmbXyHuSJLwNrhIQU5MTrc65jhxEPwMyh5HR1xevSdD+k2nnSRKw9g==",
+ "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/events": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
- "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
- "dev": true
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
},
- "@types/express": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz",
- "integrity": "sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==",
+ "node_modules/@babel/types": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
- "requires": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "*",
- "@types/serve-static": "*"
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@types/express-serve-static-core": {
- "version": "4.17.0",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.0.tgz",
- "integrity": "sha512-Xnub7w57uvcBqFdIGoRg1KhNOeEj0vB6ykUM7uFWyxvbdE89GFyqgmUcanAriMr4YOxNFZBAWkfcWIb4WBPt3g==",
+ "node_modules/@cspotcode/source-map-consumer": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
+ "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
"dev": true,
- "requires": {
- "@types/node": "*",
- "@types/range-parser": "*"
+ "engines": {
+ "node": ">= 12"
}
},
- "@types/form-data": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz",
- "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==",
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
+ "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@cspotcode/source-map-consumer": "0.8.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "@types/fs-extra": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.1.0.tgz",
- "integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==",
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "@types/get-port": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==",
- "dev": true
+ "node_modules/@eslint/eslintrc": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+ "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^13.9.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
},
- "@types/glob": {
- "version": "5.0.36",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.36.tgz",
- "integrity": "sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg==",
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
- "requires": {
- "@types/events": "*",
- "@types/minimatch": "*",
- "@types/node": "*"
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "@types/got": {
- "version": "8.3.5",
- "resolved": "https://registry.npmjs.org/@types/got/-/got-8.3.5.tgz",
- "integrity": "sha512-AaXSrIF99SjjtPVNmCmYb388HML+PKEJb/xmj4SbL2ZO0hHuETZZzyDIKfOqaEoAHZEuX4sC+FRFrHYJoIby6A==",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
+ "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "@types/html-minifier": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/@types/html-minifier/-/html-minifier-3.5.3.tgz",
- "integrity": "sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg==",
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true,
- "requires": {
- "@types/clean-css": "*",
- "@types/relateurl": "*",
- "@types/uglify-js": "*"
+ "engines": {
+ "node": ">= 4"
}
},
- "@types/html-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
- "integrity": "sha512-in9rViBsTRB4ZApndZ12It68nGzSMHVK30JD7c49iLIHMFeTPbP7I7wevzMv7re2o0k5TlU6Ry/beyrmgWX7Bg==",
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "requires": {
- "@types/html-minifier": "*",
- "@types/tapable": "*",
- "@types/webpack": "*"
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "@types/iconv-lite": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/@types/iconv-lite/-/iconv-lite-0.0.1.tgz",
- "integrity": "sha1-qjuL2ivlErGuCgV7lC6GnDcKVWk=",
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "@types/jsdom": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-11.12.0.tgz",
- "integrity": "sha512-XHMNZFQ0Ih3A4/NTWAO15+OsQafPKnQCanN0FYGbsTM/EoI5EoEAvvkF51/DQC2BT5low4tomp7k2RLMlriA5Q==",
+ "node_modules/@gulpjs/messages": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz",
+ "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==",
"dev": true,
- "requires": {
- "@types/events": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "parse5": "^4.0.0"
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "@types/json-schema": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
- "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==",
- "dev": true
- },
- "@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true
- },
- "@types/lodash": {
- "version": "4.14.136",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.136.tgz",
- "integrity": "sha512-0GJhzBdvsW2RUccNHOBkabI8HZVdOXmXbXhuKlDEd5Vv12P7oAVGfomGp3Ne21o5D/qu1WmthlNKFaoZJJeErA==",
- "dev": true
+ "node_modules/@gulpjs/to-absolute-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz",
+ "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==",
+ "dev": true,
+ "dependencies": {
+ "is-negated-glob": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
},
- "@types/md5": {
- "version": "2.1.33",
- "resolved": "https://registry.npmjs.org/@types/md5/-/md5-2.1.33.tgz",
- "integrity": "sha512-8+X960EtKLoSblhauxLKy3zzotagjoj3Jt1Tx9oaxUdZEPIBl+mkrUz6PNKpzJgkrKSN9YgkWTA29c0KnLshmA==",
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+ "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.0",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10.10.0"
}
},
- "@types/memoize-one": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@types/memoize-one/-/memoize-one-4.1.1.tgz",
- "integrity": "sha512-+9djKUUn8hOyktLCfCy4hLaIPgDNovaU36fsnZe9trFHr6ddlbIn2q0SEsnkCkNR+pBWEU440Molz/+Mpyf+gQ==",
- "dev": true
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
},
- "@types/mime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
- "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==",
- "dev": true
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
},
- "@types/minimatch": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
- "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
- "@types/mocha": {
- "version": "5.2.7",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
- "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
- "dev": true
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
},
- "@types/nock": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@types/nock/-/nock-10.0.3.tgz",
- "integrity": "sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow==",
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz",
+ "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@types/node": {
- "version": "12.19.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz",
- "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==",
- "dev": true
- },
- "@types/promisify-node": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@types/promisify-node/-/promisify-node-0.4.0.tgz",
- "integrity": "sha1-3MceY8Cr9oYbrn0S9swzlceDk2s=",
- "dev": true
+ "node_modules/@istanbuljs/nyc-config-typescript": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz",
+ "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "peerDependencies": {
+ "nyc": ">=15"
+ }
},
- "@types/prop-types": {
- "version": "15.7.1",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz",
- "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==",
- "dev": true
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
+ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "@types/range-parser": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
- "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
- "dev": true
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
- "@types/react": {
- "version": "16.8.23",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.23.tgz",
- "integrity": "sha512-abkEOIeljniUN9qB5onp++g0EY38h7atnDHxwKUFz1r3VH1+yG1OKi2sNPTyObL40goBmfKFpdii2lEzwLX1cA==",
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
- "requires": {
- "@types/prop-types": "*",
- "csstype": "^2.2.0"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "@types/react-dom": {
- "version": "16.8.4",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.4.tgz",
- "integrity": "sha512-eIRpEW73DCzPIMaNBDP5pPIpK1KXyZwNgfxiVagb5iGiz6da+9A5hslSX6GAQKdO7SayVCS/Fr2kjqprgAvkfA==",
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"dev": true,
- "requires": {
- "@types/react": "*"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "@types/react-json-tree": {
- "version": "0.6.11",
- "resolved": "https://registry.npmjs.org/@types/react-json-tree/-/react-json-tree-0.6.11.tgz",
- "integrity": "sha512-HP0Sf0ZHjCi1FHLJxh/pLaxaevEW6ILlV2C5Dn3EZFTkLjWkv+EVf/l/zvtmoU9ZwuO/3TKVeWK/700UDxunTw==",
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+ "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
"dev": true,
- "requires": {
- "@types/react": "*"
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
}
},
- "@types/relateurl": {
- "version": "0.2.28",
- "resolved": "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.28.tgz",
- "integrity": "sha1-a9p9uGU/piZD9e5p6facEaOS46Y=",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
"dev": true
},
- "@types/request": {
- "version": "2.48.1",
- "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz",
- "integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==",
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true,
- "requires": {
- "@types/caseless": "*",
- "@types/form-data": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*"
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
}
},
- "@types/semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==",
- "dev": true
+ "node_modules/@microsoft/1ds-core-js": {
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.13.tgz",
+ "integrity": "sha512-CluYTRWcEk0ObG5EWFNWhs87e2qchJUn0p2D21ZUa3PWojPZfPSBs4//WIE0MYV8Qg1Hdif2ZTwlM7TbYUjfAg==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "2.8.15",
+ "@microsoft/applicationinsights-shims": "^2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.7"
+ }
},
- "@types/serve-static": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz",
- "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==",
- "dev": true,
- "requires": {
- "@types/express-serve-static-core": "*",
- "@types/mime": "*"
+ "node_modules/@microsoft/1ds-post-js": {
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.13.tgz",
+ "integrity": "sha512-HgS574fdD19Bo2vPguyznL4eDw7Pcm1cVNpvbvBLWiW3x4e1FCQ3VMXChWnAxCae8Hb0XqlA2sz332ZobBavTA==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "3.2.13",
+ "@microsoft/applicationinsights-shims": "^2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.7"
}
},
- "@types/shortid": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
- "integrity": "sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-channel-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.2.tgz",
+ "integrity": "sha512-jDBNKbCHsJgmpv0CKNhJ/uN9ZphvfGdb93Svk+R4LjO8L3apNNMbDDPxBvXXi0uigRmA1TBcmyBG4IRKjabGhw==",
+ "dependencies": {
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
},
- "@types/sinon": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.1.tgz",
- "integrity": "sha512-EZQUP3hSZQyTQRfiLqelC9NMWd1kqLcmQE0dMiklxBkgi84T+cHOhnKpgk4NnOWpGX863yE6+IaGnOXUNFqDnQ==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
},
- "@types/sinonjs__fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz",
- "integrity": "sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
},
- "@types/socket.io": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-2.1.4.tgz",
- "integrity": "sha512-cI98INy7tYnweTsUlp8ocveVdAxENUThO0JsLSCs51cjOP2yV5Mqo5QszMDPckyRRA+PO6+wBgKvGvHUCc23TQ==",
- "dev": true,
- "requires": {
- "@types/node": "*"
+ "node_modules/@microsoft/applicationinsights-channel-js/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
}
},
- "@types/source-list-map": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
- "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.2.tgz",
+ "integrity": "sha512-y+WXWop+OVim954Cu1uyYMnNx6PWO8okHpZIQi/1YSqtqaYdtJVPv4P0AVzwJdohxzVfgzKvqj9nec/VWqE2Zg==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
},
- "@types/stack-trace": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz",
- "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
},
- "@types/superagent": {
- "version": "3.8.7",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz",
- "integrity": "sha512-9KhCkyXv268A2nZ1Wvu7rQWM+BmdYUVkycFeNnYrUL5Zwu7o8wPQ3wBfW59dDP+wuoxw0ww8YKgTNv8j/cgscA==",
- "dev": true,
- "requires": {
- "@types/cookiejar": "*",
- "@types/node": "*"
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
}
},
- "@types/tapable": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.4.tgz",
- "integrity": "sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-common/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
},
- "@types/temp": {
- "version": "0.8.34",
- "resolved": "https://registry.npmjs.org/@types/temp/-/temp-0.8.34.tgz",
- "integrity": "sha512-oLa9c5LHXgS6UimpEVp08De7QvZ+Dfu5bMQuWyMhf92Z26Q10ubEMOWy9OEfUdzW7Y/sDWVHmUaLFtmnX/2j0w==",
- "dev": true,
- "requires": {
- "@types/node": "*"
+ "node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "2.8.15",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.15.tgz",
+ "integrity": "sha512-yYAs9MyjGr2YijQdUSN9mVgT1ijI1FPMgcffpaPmYbHAVbQmF7bXudrBWHxmLzJlwl5rfep+Zgjli2e67lwUqQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.9"
+ },
+ "peerDependencies": {
+ "tslib": "*"
}
},
- "@types/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-shims": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.2.tgz",
+ "integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg=="
},
- "@types/tough-cookie": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz",
- "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-web-basic": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.2.tgz",
+ "integrity": "sha512-6Lq0DE/pZp9RvSV+weGbcxN1NDmfczj6gNPhvZKV2YSQ3RK0LZE3+wjTWLXfuStq8a+nCBdsRpWk8tOKgsoxcg==",
+ "dependencies": {
+ "@microsoft/applicationinsights-channel-js": "3.0.2",
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
},
- "@types/uglify-js": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.4.tgz",
- "integrity": "sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ==",
- "dev": true,
- "requires": {
- "source-map": "^0.6.1"
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
}
},
- "@types/untildify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/untildify/-/untildify-3.0.0.tgz",
- "integrity": "sha512-FTktI3Y1h+gP9GTjTvXBP5v8xpH4RU6uS9POoBcGy4XkS2Np6LNtnP1eiNNth4S7P+qw2c/rugkwBasSHFzJEg==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
},
- "@types/uuid": {
- "version": "3.4.5",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz",
- "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==",
- "dev": true,
- "requires": {
- "@types/node": "*"
+ "node_modules/@microsoft/applicationinsights-web-basic/node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
}
},
- "@types/vscode": {
- "version": "1.53.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.53.0.tgz",
- "integrity": "sha512-XjFWbSPOM0EKIT2XhhYm3D3cx3nn3lshMUcWNy1eqefk+oqRuBq8unVb6BYIZqXy9lQZyeUl7eaBCOZWv+LcXQ==",
- "dev": true
+ "node_modules/@microsoft/applicationinsights-web-snippet": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz",
+ "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ=="
},
- "@types/webpack": {
- "version": "4.4.34",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.4.34.tgz",
- "integrity": "sha512-GnEBgjHsfO1M7DIQ0dAupSofcmDItE3Zsu3reK8SQpl/6N0rtUQxUmQzVFAS5ou/FGjsYKjXAWfItLZ0kNFTfQ==",
- "dev": true,
- "requires": {
- "@types/anymatch": "*",
- "@types/node": "*",
- "@types/tapable": "*",
- "@types/uglify-js": "*",
- "source-map": "^0.6.0"
+ "node_modules/@microsoft/dynamicproto-js": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.9.tgz",
+ "integrity": "sha512-n1VPsljTSkthsAFYdiWfC+DKzK2WwcRp83Y1YAqdX552BstvsDjft9YXppjUzp11BPsapDoO1LDgrDB0XVsfNQ=="
+ },
+ "node_modules/@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
}
},
- "@types/webpack-bundle-analyzer": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz",
- "integrity": "sha512-9M9jingj0izx1VfglYYJ+dvd0YCMlFgtrSCeb+C3VIQP8hmTXGJ5qqVeqiBnv0ffMyeKWqyij4K2F4VBcazQNw==",
+ "node_modules/@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "node_modules/@nicolo-ribaudo/semver-v6": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+ "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
"dev": true,
- "requires": {
- "@types/webpack": "*"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "@types/webpack-sources": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz",
- "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
- "requires": {
- "@types/node": "*",
- "@types/source-list-map": "*",
- "source-map": "^0.6.1"
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "@types/winreg": {
- "version": "1.2.30",
- "resolved": "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.30.tgz",
- "integrity": "sha1-kdZxDlNtNFucmwF8V0z2qNpkxRg=",
- "dev": true
- },
- "@types/xml2js": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.4.tgz",
- "integrity": "sha512-O6Xgai01b9PB3IGA0lRIp1Ex3JBcxGDhdO0n3NIIpCyDOAjxcIGQFmkvgJpP8anTrthxOUQjBfLdRRi0Zn/TXA==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "engines": {
+ "node": ">= 8"
}
},
- "@typescript-eslint/eslint-plugin": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz",
- "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "3.10.1",
- "debug": "^4.1.1",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.0.0",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
- },
"dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
- }
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "@typescript-eslint/experimental-utils": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
- "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/typescript-estree": "3.10.1",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^2.0.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
- "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- }
+ "node_modules/@opentelemetry/api": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
+ "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==",
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "@typescript-eslint/parser": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz",
- "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==",
- "dev": true,
- "requires": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "3.10.1",
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/typescript-estree": "3.10.1",
- "eslint-visitor-keys": "^1.1.0"
+ "node_modules/@opentelemetry/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
}
},
- "@typescript-eslint/types": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz",
- "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==",
+ "node_modules/@opentelemetry/instrumentation": {
+ "version": "0.41.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz",
+ "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==",
+ "dependencies": {
+ "@types/shimmer": "^1.0.2",
+ "import-in-the-middle": "1.4.2",
+ "require-in-the-middle": "^7.1.1",
+ "semver": "^7.5.1",
+ "shimmer": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/resources": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz",
+ "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==",
+ "dependencies": {
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
+ }
+ },
+ "node_modules/@opentelemetry/sdk-trace-base": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz",
+ "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==",
+ "dependencies": {
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/resources": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.5.0"
+ }
+ },
+ "node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz",
+ "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.21",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
- "@typescript-eslint/typescript-estree": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz",
- "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==",
+ "node_modules/@sindresorhus/is": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
"dev": true,
- "requires": {
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/visitor-keys": "3.10.1",
- "debug": "^4.1.1",
- "glob": "^7.1.6",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.15",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
- },
"dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
- }
+ "type-detect": "4.0.8"
}
},
- "@typescript-eslint/visitor-keys": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
- "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz",
+ "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==",
"dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
}
},
- "@webassemblyjs/ast": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
- "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "node_modules/@sinonjs/samsam": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
+ "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
"dev": true,
- "requires": {
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5"
+ "dependencies": {
+ "@sinonjs/commons": "^1.6.0",
+ "lodash.get": "^4.4.2",
+ "type-detect": "^4.0.8"
}
},
- "@webassemblyjs/floating-point-hex-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
- "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "node_modules/@sinonjs/text-encoding": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
"dev": true
},
- "@webassemblyjs/helper-api-error": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
- "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
+ "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
"dev": true
},
- "@webassemblyjs/helper-buffer": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
- "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
+ "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
"dev": true
},
- "@webassemblyjs/helper-code-frame": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
- "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/wast-printer": "1.8.5"
- }
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
+ "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
+ "dev": true
},
- "@webassemblyjs/helper-fsm": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
- "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
+ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
"dev": true
},
- "@webassemblyjs/helper-module-context": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
- "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "node_modules/@types/bent": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@types/bent/-/bent-7.3.3.tgz",
+ "integrity": "sha512-5NEIhVzHiZ6wMjFBmJ3gwjxwGug6amMoAn93rtDBttwrODxm+bt63u+MJA7H9NGGM4X1m73sJrAxDapktl036Q==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "mamacro": "^0.0.3"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
- "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "node_modules/@types/chai": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz",
+ "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==",
"dev": true
},
- "@webassemblyjs/helper-wasm-section": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
- "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "node_modules/@types/chai-arrays": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/chai-arrays/-/chai-arrays-2.0.0.tgz",
+ "integrity": "sha512-5h5jnAC9C64YnD7WJpA5gBG7CppF/QmoWytOssJ6ysENllW49NBdpsTx6uuIBOpnzAnXThb8jBICgB62wezTLQ==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5"
+ "dependencies": {
+ "@types/chai": "*"
}
},
- "@webassemblyjs/ieee754": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
- "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "node_modules/@types/chai-as-promised": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz",
+ "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==",
"dev": true,
- "requires": {
- "@xtuc/ieee754": "^1.2.0"
+ "dependencies": {
+ "@types/chai": "*"
}
},
- "@webassemblyjs/leb128": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
- "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "node_modules/@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
+ "node_modules/@types/decompress": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.5.tgz",
+ "integrity": "sha512-LdL+kbcKGs9TzvB/K+OBGzPfDoP6gwwTsykYjodlzUJUUYp/43c1p1jE5YTtz3z4Ml90iruvBXbJ6+kDvb3WSQ==",
"dev": true,
- "requires": {
- "@xtuc/long": "4.2.2"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "@webassemblyjs/utf8": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
- "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
- "dev": true
+ "node_modules/@types/download": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.3.tgz",
+ "integrity": "sha512-IDwXjU7zCtuFVvI0Plnb02TpXyj3RA4YeOKQvEfsjdJeWxZ9hTl6lxeNsU2bLWn0aeAS7fyMl74w/TbdOlS2KQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/decompress": "*",
+ "@types/got": "^9",
+ "@types/node": "*"
+ }
},
- "@webassemblyjs/wasm-edit": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
- "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "node_modules/@types/eslint": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
+ "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/helper-wasm-section": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-opt": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "@webassemblyjs/wast-printer": "1.8.5"
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
}
},
- "@webassemblyjs/wasm-gen": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
- "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
}
},
- "@webassemblyjs/wasm-opt": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
- "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "node_modules/@types/eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "dev": true
+ },
+ "node_modules/@types/estree": {
+ "version": "0.0.51",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
+ "dev": true
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "@webassemblyjs/wasm-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
- "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
}
},
- "@webassemblyjs/wast-parser": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
- "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "node_modules/@types/got": {
+ "version": "9.6.12",
+ "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz",
+ "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/floating-point-hex-parser": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-code-frame": "1.8.5",
- "@webassemblyjs/helper-fsm": "1.8.5",
- "@xtuc/long": "4.2.2"
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
}
},
- "@webassemblyjs/wast-printer": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
- "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "node_modules/@types/got/node_modules/form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5",
- "@xtuc/long": "4.2.2"
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
}
},
- "@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "node_modules/@types/json-schema": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
"dev": true
},
- "@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
- "abab": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
- "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
+ "node_modules/@types/lodash": {
+ "version": "4.14.181",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.181.tgz",
+ "integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==",
"dev": true
},
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "optional": true
+ "node_modules/@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "dev": true
},
- "accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "dev": true,
- "requires": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- }
+ "node_modules/@types/mocha": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz",
+ "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
+ "dev": true
},
- "acorn": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
- "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
+ "node_modules/@types/node": {
+ "version": "18.17.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.14.tgz",
+ "integrity": "sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==",
"dev": true
},
- "acorn-globals": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz",
- "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==",
+ "node_modules/@types/semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==",
+ "dev": true
+ },
+ "node_modules/@types/shimmer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz",
+ "integrity": "sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg=="
+ },
+ "node_modules/@types/shortid": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
+ "integrity": "sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=",
+ "dev": true
+ },
+ "node_modules/@types/sinon": {
+ "version": "10.0.11",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.11.tgz",
+ "integrity": "sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g==",
"dev": true,
- "requires": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
+ "dependencies": {
+ "@types/sinonjs__fake-timers": "*"
}
},
- "acorn-jsx": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
- "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
+ "node_modules/@types/sinonjs__fake-timers": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz",
+ "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==",
"dev": true
},
- "acorn-walk": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "node_modules/@types/stack-trace": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz",
+ "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==",
"dev": true
},
- "address": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz",
- "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==",
+ "node_modules/@types/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=",
+ "dev": true
+ },
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz",
+ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==",
"dev": true
},
- "after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+ "node_modules/@types/vscode": {
+ "version": "1.81.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.81.0.tgz",
+ "integrity": "sha512-YIaCwpT+O2E7WOMq0eCgBEABE++SX3Yl/O02GoMIF2DO3qAtvw7m6BXFYsxnc6XyzwZgh6/s/UG78LSSombl2w==",
"dev": true
},
- "agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
+ "node_modules/@types/which": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.1.tgz",
+ "integrity": "sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ==",
+ "dev": true
+ },
+ "node_modules/@types/winreg": {
+ "version": "1.2.31",
+ "resolved": "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.31.tgz",
+ "integrity": "sha512-SDatEMEtQ1cJK3esIdH6colduWBP+42Xw9Guq1sf/N6rM3ZxgljBduvZOwBsxRps/k5+Wwf5HJun6pH8OnD2gg==",
+ "dev": true
+ },
+ "node_modules/@types/xml2js": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz",
+ "integrity": "sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw==",
"dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "aggregate-error": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
- "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz",
+ "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==",
"dev": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
+ "dependencies": {
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "debug": "^4.1.1",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^3.0.0",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^3.0.0",
+ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "airbnb-prop-types": {
- "version": "2.13.2",
- "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz",
- "integrity": "sha512-2FN6DlHr6JCSxPPi25EnqGaXC4OC3/B3k1lCd6MMYrZ51/Gf/1qDfaR+JElzWa+Tl7cY2aYOlsYJGFeQyVHIeQ==",
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
- "requires": {
- "array.prototype.find": "^2.0.4",
- "function.prototype.name": "^1.1.0",
- "has": "^1.0.3",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object.assign": "^4.1.0",
- "object.entries": "^1.1.0",
- "prop-types": "^15.7.2",
- "prop-types-exact": "^1.2.0",
- "react-is": "^16.8.6"
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "ajv": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.1.tgz",
- "integrity": "sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==",
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "node_modules/@typescript-eslint/experimental-utils": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
+ "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.3",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
}
},
- "ajv-errors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
- "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
- "dev": true
- },
- "ajv-keywords": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
- "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
- "dev": true
+ "node_modules/@typescript-eslint/parser": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz",
+ "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
},
- "ansi-colors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
- "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "node_modules/@typescript-eslint/types": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz",
+ "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==",
"dev": true,
- "requires": {
- "ansi-wrap": "^0.1.0"
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "ansi-cyan": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
- "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz",
+ "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/visitor-keys": "3.10.1",
+ "debug": "^4.1.1",
+ "glob": "^7.1.6",
+ "is-glob": "^4.0.1",
+ "lodash": "^4.17.15",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "ansi-red": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
- "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
+ "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ "node_modules/@ungap/promise-all-settled": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+ "dev": true
},
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@vscode/extension-telemetry": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.4.tgz",
+ "integrity": "sha512-UqM9+KZDDK3MyoHTsg6XNM+XO6pweQxzCpqJz33BoBEYAGsbBviRYcVpJglgay2oReuDD2pOI1Nio3BKNDLhWA==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "^3.2.13",
+ "@microsoft/1ds-post-js": "^3.2.13",
+ "@microsoft/applicationinsights-web-basic": "^3.0.2",
+ "applicationinsights": "^2.7.1"
+ },
+ "engines": {
+ "vscode": "^1.75.0"
+ }
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
+ "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
"dev": true,
- "requires": {
- "color-convert": "^1.9.0"
+ "dependencies": {
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "jszip": "^3.10.1",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=16"
}
},
- "ansi-to-html": {
- "version": "0.6.11",
- "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.11.tgz",
- "integrity": "sha512-88XZtrcwrfkyn6fGstHnkaF1kl7hGtNCYh4vSmItgEV+6JnQHryDBf7udF4f2RhTRQmYvJvPcTtqgaqrxzc9oA==",
+ "node_modules/@vscode/vsce": {
+ "version": "2.27.0",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.27.0.tgz",
+ "integrity": "sha512-FFUMBVSyyjjJpWszwqk7d4U3YllY8FdWslbUDMRki1x4ZjA3Z0hmRMfypWrjP9sptbSR9nyPFU4uqjhy2qRB/w==",
"dev": true,
- "requires": {
- "entities": "^1.1.1"
+ "dependencies": {
+ "@azure/identity": "^4.1.0",
+ "@vscode/vsce-sign": "^2.0.0",
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^6.2.1",
+ "form-data": "^4.0.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "bin": {
+ "vsce": "vsce"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "optionalDependencies": {
+ "keytar": "^7.7.0"
}
},
- "ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
- "dev": true
+ "node_modules/@vscode/vsce-sign": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz",
+ "integrity": "sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optionalDependencies": {
+ "@vscode/vsce-sign-alpine-arm64": "2.0.2",
+ "@vscode/vsce-sign-alpine-x64": "2.0.2",
+ "@vscode/vsce-sign-darwin-arm64": "2.0.2",
+ "@vscode/vsce-sign-darwin-x64": "2.0.2",
+ "@vscode/vsce-sign-linux-arm": "2.0.2",
+ "@vscode/vsce-sign-linux-arm64": "2.0.2",
+ "@vscode/vsce-sign-linux-x64": "2.0.2",
+ "@vscode/vsce-sign-win32-arm64": "2.0.2",
+ "@vscode/vsce-sign-win32-x64": "2.0.2"
+ }
+ },
+ "node_modules/@vscode/vsce-sign-alpine-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz",
+ "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "alpine"
+ ]
},
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "node_modules/@vscode/vsce-sign-alpine-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz",
+ "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "optional": true,
+ "os": [
+ "alpine"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-darwin-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz",
+ "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-darwin-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz",
+ "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-arm": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz",
+ "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz",
+ "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz",
+ "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-win32-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz",
+ "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-win32-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz",
+ "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vscode/vsce/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
}
},
- "append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "node_modules/@vscode/vsce/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
"dev": true,
- "requires": {
- "buffer-equal": "^1.0.0"
+ "dependencies": {
+ "lru-cache": "^6.0.0"
},
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
- "buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
- "dev": true
- }
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "append-transform": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
- "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
+ "node_modules/@vscode/vsce/node_modules/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"dev": true,
- "requires": {
- "default-require-extensions": "^3.0.0"
+ "dependencies": {
+ "rimraf": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.17.0"
}
},
- "applicationinsights": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.7.4.tgz",
- "integrity": "sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==",
- "requires": {
- "cls-hooked": "^4.2.2",
- "continuation-local-storage": "^3.2.1",
- "diagnostic-channel": "0.2.0",
- "diagnostic-channel-publishers": "^0.3.3"
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
}
},
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
+ "dev": true
},
- "arch": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz",
- "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg=="
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
+ "dev": true
},
- "archive-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
- "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
- "requires": {
- "file-type": "^4.2.0"
- },
"dependencies": {
- "file-type": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
- "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
- "dev": true
- }
+ "@webassemblyjs/floating-point-hex-parser": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@xtuc/long": "4.2.2"
}
},
- "archiver": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
- "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
- "requires": {
- "archiver-utils": "^2.1.0",
- "async": "^2.6.3",
- "buffer-crc32": "^0.2.1",
- "glob": "^7.1.4",
- "readable-stream": "^3.4.0",
- "tar-stream": "^2.1.0",
- "zip-stream": "^2.1.2"
- },
"dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "bl": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
- "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
- "dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "buffer": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
- "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
- }
- },
- "tar-stream": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz",
- "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==",
- "dev": true,
- "requires": {
- "bl": "^4.0.1",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- }
- }
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1"
}
},
- "archiver-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
- "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
- "requires": {
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.0",
- "lazystream": "^1.0.0",
- "lodash.defaults": "^4.2.0",
- "lodash.difference": "^4.5.0",
- "lodash.flatten": "^4.4.0",
- "lodash.isplainobject": "^4.0.6",
- "lodash.union": "^4.6.0",
- "normalize-path": "^3.0.0",
- "readable-stream": "^2.0.0"
- },
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "@xtuc/ieee754": "^1.2.0"
}
},
- "archy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
+ "dev": true,
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "optional": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "@xtuc/long": "4.2.2"
}
},
- "arg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
- "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
"dev": true
},
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/helper-wasm-section": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-opt": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "@webassemblyjs/wast-printer": "1.11.1"
}
},
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
}
},
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
- "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1"
}
},
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
- "dev": true
- },
- "array-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
- "dev": true
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
+ }
},
- "array-filter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
- "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=",
- "dev": true
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@xtuc/long": "4.2.2"
+ }
},
- "array-flatten": {
+ "node_modules/@webpack-cli/configtest": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
- "dev": true
- },
- "array-from": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
- "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
- "dev": true
- },
- "array-includes": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
- "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
+ "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0",
- "is-string": "^1.0.5"
- },
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "is-string": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
- "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
- "dev": true
- }
+ "peerDependencies": {
+ "webpack": "4.x.x || 5.x.x",
+ "webpack-cli": "4.x.x"
}
},
- "array-initial": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
- "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
+ "node_modules/@webpack-cli/info": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz",
+ "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==",
"dev": true,
- "requires": {
- "array-slice": "^1.0.0",
- "is-number": "^4.0.0"
- },
"dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
+ "envinfo": "^7.7.3"
+ },
+ "peerDependencies": {
+ "webpack-cli": "4.x.x"
}
},
- "array-last": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
- "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
+ "node_modules/@webpack-cli/serve": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz",
+ "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==",
"dev": true,
- "requires": {
- "is-number": "^4.0.0"
+ "peerDependencies": {
+ "webpack-cli": "4.x.x"
},
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
+ "peerDependenciesMeta": {
+ "webpack-dev-server": {
+ "optional": true
}
}
},
- "array-map": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
- "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
- "dev": true
- },
- "array-reduce": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
- "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true
},
- "array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "array-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
- "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
- "dev": true,
- "requires": {
- "default-compare": "^1.0.0",
- "get-value": "^2.0.6",
- "kind-of": "^5.0.2"
+ "node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "bin": {
+ "acorn": "bin/acorn"
},
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "peerDependencies": {
+ "acorn": "^8"
}
},
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "array.prototype.find": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.0.tgz",
- "integrity": "sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.13.0"
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "array.prototype.flat": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz",
- "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==",
+ "node_modules/acorn-walk": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.10.0",
- "function-bind": "^1.1.1"
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "array.prototype.flatmap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz",
- "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1"
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
},
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "array.prototype.map": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz",
- "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==",
+ "node_modules/aggregate-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
+ "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.4"
- },
"dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-wrap": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/append-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+ "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/append-buffer/node_modules/buffer-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
+ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/append-transform": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
+ "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
+ "dev": true,
+ "dependencies": {
+ "default-require-extensions": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/applicationinsights": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.7.3.tgz",
+ "integrity": "sha512-JY8+kTEkjbA+kAVNWDtpfW2lqsrDALfDXuxOs74KLPu2y13fy/9WB52V4LfYVTVcW1/jYOXjTxNS2gPZIDh1iw==",
+ "dependencies": {
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-rest-pipeline": "1.10.1",
+ "@azure/core-util": "1.2.0",
+ "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5",
+ "@microsoft/applicationinsights-web-snippet": "^1.0.1",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/sdk-trace-base": "^1.15.2",
+ "@opentelemetry/semantic-conventions": "^1.15.2",
+ "cls-hooked": "^4.2.2",
+ "continuation-local-storage": "^3.2.1",
+ "diagnostic-channel": "1.1.1",
+ "diagnostic-channel-publishers": "1.0.7"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "applicationinsights-native-metrics": "*"
+ },
+ "peerDependenciesMeta": {
+ "applicationinsights-native-metrics": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
+ ]
+ },
+ "node_modules/archive-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
+ "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "arraybuffer.slice": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
- "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
+ "node_modules/archive-type/node_modules/file-type": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
+ "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "node_modules/arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true,
- "requires": {
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
+ "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz",
+ "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
}
},
- "assert": {
+ "node_modules/assert": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
"integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
"dev": true,
- "requires": {
+ "dependencies": {
"object-assign": "^4.1.1",
"util": "0.10.3"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- },
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dev": true,
- "requires": {
- "inherits": "2.0.1"
- }
- }
}
},
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ "node_modules/assert/node_modules/inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
},
- "assertion-error": {
+ "node_modules/assert/node_modules/util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "dependencies": {
+ "inherits": "2.0.1"
+ }
+ },
+ "node_modules/assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
},
- "assign-symbols": {
+ "node_modules/assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "ast-types-flow": {
+ "node_modules/ast-types-flow": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
"integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
"dev": true
},
- "astral-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
- "dev": true
- },
- "async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
- "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
- "requires": {
- "lodash": "^4.17.11"
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "async-done": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
- "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "node_modules/async": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
+ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
+ "dev": true
+ },
+ "node_modules/async-done": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz",
+ "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==",
"dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.2",
- "process-nextick-args": "^2.0.0",
- "stream-exhaust": "^1.0.1"
- },
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- }
+ "end-of-stream": "^1.4.4",
+ "once": "^1.4.0",
+ "stream-exhaust": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "async-hook-jl": {
+ "node_modules/async-hook-jl": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz",
"integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==",
- "requires": {
+ "dependencies": {
"stack-chain": "^1.3.7"
+ },
+ "engines": {
+ "node": "^4.7 || >=6.9 || >=7.3"
}
},
- "async-limiter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
- "dev": true
- },
- "async-listener": {
+ "node_modules/async-listener": {
"version": "0.6.10",
"resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
"integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
- "requires": {
+ "dependencies": {
"semver": "^5.3.0",
"shimmer": "^1.1.0"
+ },
+ "engines": {
+ "node": "<=0.11.8 || >0.11.10"
}
},
- "async-settle": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
- "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
- "dev": true,
- "requires": {
- "async-done": "^1.2.2"
+ "node_modules/async-listener/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
}
},
- "asynckit": {
+ "node_modules/async-settle": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz",
+ "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==",
+ "dev": true,
+ "dependencies": {
+ "async-done": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
- "autoprefixer": {
- "version": "7.2.6",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
- "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true,
- "requires": {
- "browserslist": "^2.11.3",
- "caniuse-lite": "^1.0.30000805",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^6.0.17",
- "postcss-value-parser": "^3.2.3"
+ "engines": {
+ "node": ">= 0.4"
},
- "dependencies": {
- "browserslist": {
- "version": "2.11.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
- "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30000792",
- "electron-to-chromium": "^1.3.30"
- }
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
- "axe-core": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.5.5.tgz",
- "integrity": "sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q==",
- "dev": true
- },
- "axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "requires": {
- "follow-redirects": "^1.10.0"
+ "node_modules/axe-core": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
+ "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
}
},
- "axobject-query": {
+ "node_modules/axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
"dev": true
},
- "azure-devops-node-api": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz",
- "integrity": "sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==",
+ "node_modules/azure-devops-node-api": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
"dev": true,
- "requires": {
+ "dependencies": {
"tunnel": "0.0.6",
"typed-rest-client": "^1.8.4"
}
},
- "azure-storage": {
- "version": "2.10.4",
- "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.10.4.tgz",
- "integrity": "sha512-zlfRPl4js92JC6+79C2EUmNGYjSknRl8pOiHQF78zy+pbOFOHtlBF6BU/OxPeHQX3gaa6NdEZnVydFxhhndkEw==",
- "requires": {
- "browserify-mime": "~1.2.9",
- "extend": "^3.0.2",
- "json-edm-parser": "0.1.2",
- "md5.js": "1.3.4",
- "readable-stream": "~2.0.0",
- "request": "^2.86.0",
- "underscore": "^1.12.1",
- "uuid": "^3.0.0",
- "validator": "~9.4.1",
- "xml2js": "0.2.8",
- "xmlbuilder": "^9.0.7"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "xml2js": {
- "version": "0.2.8",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz",
- "integrity": "sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I=",
- "requires": {
- "sax": "0.5.x"
- }
- }
- }
+ "node_modules/b4a": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+ "dev": true
},
- "babel-code-frame": {
+ "node_modules/babel-runtime": {
"version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.2"
- },
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "babel-loader": {
- "version": "8.0.6",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
- "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
- "dev": true,
- "requires": {
- "find-cache-dir": "^2.0.0",
- "loader-utils": "^1.0.2",
- "mkdirp": "^0.5.1",
- "pify": "^4.0.1"
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
}
},
- "babel-plugin-inline-json-import": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-inline-json-import/-/babel-plugin-inline-json-import-0.3.2.tgz",
- "integrity": "sha512-QNNJx08KjmMT25Cw7rAPQ6dlREDPiZGDyApHL8KQ9vrQHbrr4PTi7W8g1tMMZPz0jEMd39nx/eH7xjnDNxq5sA==",
+ "node_modules/babel-runtime/node_modules/core-js": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
+ "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
"dev": true,
- "requires": {
- "decache": "^4.5.1"
- }
+ "hasInstallScript": true
},
- "babel-plugin-syntax-jsx": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
- "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
+ "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
},
- "babel-plugin-transform-runtime": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz",
- "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.22.0"
- }
- },
- "babel-polyfill": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
- "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
+ "node_modules/bach": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz",
+ "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==",
"dev": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "core-js": "^2.5.0",
- "regenerator-runtime": "^0.10.5"
- },
"dependencies": {
- "core-js": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
- "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
- "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
- "dev": true
- }
- }
- },
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
- "requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
+ "async-done": "^2.0.0",
+ "async-settle": "^2.0.0",
+ "now-and-later": "^3.0.0"
},
- "dependencies": {
- "core-js": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
- "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- }
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "node_modules/bach/node_modules/now-and-later": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz",
+ "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==",
"dev": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "esutils": "^2.0.2",
- "lodash": "^4.17.4",
- "to-fast-properties": "^1.0.3"
- },
"dependencies": {
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true
- }
- }
- },
- "bach": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
- "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
- "dev": true,
- "requires": {
- "arr-filter": "^1.1.1",
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "array-each": "^1.0.0",
- "array-initial": "^1.0.0",
- "array-last": "^1.1.1",
- "async-done": "^1.2.2",
- "async-settle": "^1.0.0",
- "now-and-later": "^2.0.0"
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
- "dev": true
- },
- "balanced-match": {
+ "node_modules/balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "node_modules/bare-events": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.3.1.tgz",
+ "integrity": "sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
- "requires": {
- "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"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
- },
- "base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=",
- "dev": true
- },
- "base64-js": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
- "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
- "dev": true
+ ]
},
- "base64id": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
- "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "requires": {
- "tweetnacl": "^0.14.3"
+ "node_modules/bent": {
+ "version": "7.3.12",
+ "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz",
+ "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==",
+ "dev": true,
+ "dependencies": {
+ "bytesish": "^0.4.1",
+ "caseless": "~0.12.0",
+ "is-stream": "^2.0.0"
}
},
- "bfj": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz",
- "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "node_modules/bent/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
- "requires": {
- "bluebird": "^3.5.5",
- "check-types": "^8.0.3",
- "hoopy": "^0.1.4",
- "tryer": "^1.0.1"
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "big.js": {
+ "node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
- "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ=="
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
},
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true,
- "optional": true,
- "requires": {
- "file-uri-to-path": "1.0.0"
+ "engines": {
+ "node": ">=8"
}
},
- "bl": {
+ "node_modules/bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
"dev": true,
- "requires": {
+ "dependencies": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "blob": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
- "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
- "dev": true
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
}
},
- "bluebird": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
- "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
- "dev": true
- },
- "bn.js": {
+ "node_modules/bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
"dev": true
},
- "body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "dev": true,
- "requires": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
- "http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "dev": true
- }
- }
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
- "requires": {
- "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"
- },
"dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "brorand": {
+ "node_modules/brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
"dev": true
},
- "browser-process-hrtime": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
- "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
- "dev": true
- },
- "browser-stdout": {
+ "node_modules/browser-stdout": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
- "browserify-aes": {
+ "node_modules/browserify-aes": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
- "requires": {
+ "dependencies": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
"create-hash": "^1.1.0",
@@ -2934,355 +3165,237 @@
"safe-buffer": "^5.0.1"
}
},
- "browserify-cipher": {
+ "node_modules/browserify-cipher": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
"dev": true,
- "requires": {
+ "dependencies": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
"evp_bytestokey": "^1.0.0"
}
},
- "browserify-des": {
+ "node_modules/browserify-des": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"dev": true,
- "requires": {
+ "dependencies": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
"inherits": "^2.0.1",
"safe-buffer": "^5.1.2"
}
},
- "browserify-mime": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/browserify-mime/-/browserify-mime-1.2.9.tgz",
- "integrity": "sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8="
- },
- "browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "node_modules/browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
"dev": true,
- "requires": {
- "bn.js": "^4.1.0",
+ "dependencies": {
+ "bn.js": "^5.0.0",
"randombytes": "^2.0.1"
}
},
- "browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "node_modules/browserify-rsa/node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "node_modules/browserify-sign": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
- "requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "dependencies": {
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.4",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 4"
}
},
- "browserify-zlib": {
+ "node_modules/browserify-sign/node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "node_modules/browserify-sign/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
"dev": true,
- "requires": {
- "pako": "~1.0.5"
- },
"dependencies": {
- "pako": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
- "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
- "dev": true
- }
+ "pako": "~1.0.5"
}
},
- "browserslist": {
- "version": "4.14.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz",
- "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+ "node_modules/browserslist": {
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
+ "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
"dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001125",
- "electron-to-chromium": "^1.3.564",
- "escalade": "^3.0.2",
- "node-releases": "^1.1.61"
- },
- "dependencies": {
- "caniuse-lite": {
- "version": "1.0.30001198",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001198.tgz",
- "integrity": "sha512-r5GGgESqOPZzwvdLVER374FpQu2WluCF1Z2DSiFJ89KSmGjT0LVKjgv4NcAqHmGWF9ihNpqRI9KXO9Ex4sKsgA==",
- "dev": true
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
},
- "electron-to-chromium": {
- "version": "1.3.686",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.686.tgz",
- "integrity": "sha512-SOJT3m00NX/gT3sD6E3PcZX6u3+zUmQq4+yp8QCKLOwf2ECnmh9eAY+eonhC/AAu5Gg2WrtUU2m7/+e85O0l6A==",
- "dev": true
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001503",
+ "electron-to-chromium": "^1.4.431",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
- "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
}
},
- "buffer-alloc": {
+ "node_modules/buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dev": true,
- "requires": {
+ "dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
- "buffer-alloc-unsafe": {
+ "node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"dev": true
},
- "buffer-crc32": {
+ "node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
"dev": true
},
- "buffer-fill": {
+ "node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
"dev": true
},
- "buffer-from": {
+ "node_modules/buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
- "buffer-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
- "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
- "dev": true
- },
- "buffer-xor": {
+ "node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
"dev": true
},
- "builtin-status-codes": {
+ "node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "node_modules/bytesish": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz",
+ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==",
"dev": true
},
- "cacache": {
- "version": "12.0.3",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
- "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
- "figgy-pudding": "^3.5.1",
- "glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- }
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "cache-loader": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz",
- "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==",
- "dev": true,
- "requires": {
- "buffer-json": "^2.0.0",
- "find-cache-dir": "^3.0.0",
- "loader-utils": "^1.2.3",
- "mkdirp": "^0.5.1",
- "neo-async": "^2.6.1",
- "schema-utils": "^2.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
- "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
- "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
- "dev": true
- },
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "schema-utils": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
- "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.0",
- "ajv-keywords": "^3.4.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "cacheable-request": {
+ "node_modules/cacheable-request": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
- "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
+ "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"clone-response": "1.0.2",
"get-stream": "3.0.0",
"http-cache-semantics": "3.8.1",
@@ -3290,237 +3403,163 @@
"lowercase-keys": "1.0.0",
"normalize-url": "2.0.1",
"responselike": "1.0.2"
- },
- "dependencies": {
- "lowercase-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
- "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
- "dev": true
- }
}
},
- "caching-transform": {
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/caching-transform": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
"integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
"dev": true,
- "requires": {
+ "dependencies": {
"hasha": "^5.0.0",
"make-dir": "^3.0.0",
"package-hash": "^4.0.0",
"write-file-atomic": "^3.0.0"
},
- "dependencies": {
- "make-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
- "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=8"
}
},
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
- "dev": true,
- "requires": {
- "callsites": "^2.0.0"
- }
- },
- "caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
- "dev": true,
- "requires": {
- "caller-callsite": "^2.0.0"
- }
- },
- "callsite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
- "dev": true
- },
- "callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
- "dev": true
- },
- "camel-case": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
- "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
- "requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.1.1"
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "camelcase": {
+ "node_modules/camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "caniuse-api": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-2.0.0.tgz",
- "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=",
"dev": true,
- "requires": {
- "browserslist": "^2.0.0",
- "caniuse-lite": "^1.0.0",
- "lodash.memoize": "^4.1.2",
- "lodash.uniq": "^4.5.0"
- },
- "dependencies": {
- "browserslist": {
- "version": "2.11.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
- "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30000792",
- "electron-to-chromium": "^1.3.30"
- }
- }
+ "engines": {
+ "node": ">=6"
}
},
- "caniuse-lite": {
- "version": "1.0.30000983",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000983.tgz",
- "integrity": "sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ==",
- "dev": true
- },
- "canvas": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.7.0.tgz",
- "integrity": "sha512-pzCxtkHb+5su5MQjTtepMDlIOtaXo277x0C0u3nMOxtkhTyQ+h2yNKhlROAaDllWgRyePAUitC08sXw26Eb6aw==",
- "optional": true,
- "requires": {
- "nan": "^2.14.0",
- "node-pre-gyp": "^0.15.0",
- "simple-get": "^3.0.3"
- }
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001512",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
+ "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
},
- "caseless": {
+ "node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "caw": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
- "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==",
- "dev": true,
- "requires": {
- "get-proxy": "^2.0.0",
- "isurl": "^1.0.0-alpha5",
- "tunnel-agent": "^0.6.0",
- "url-to-options": "^1.0.1"
- }
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
},
- "chai": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
- "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
+ "node_modules/chai": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
- "requires": {
+ "dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^3.0.1",
"get-func-name": "^2.0.0",
- "pathval": "^1.1.0",
+ "loupe": "^2.3.1",
+ "pathval": "^1.1.1",
"type-detect": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "chai-arrays": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.0.0.tgz",
- "integrity": "sha512-jWAvZu1BV8tL3pj0iosBECzzHEg+XB1zSnMjJGX83bGi/1GlGdDO7J/A0sbBBS6KJT0FVqZIzZW9C6WLiMkHpQ==",
- "dev": true
+ "node_modules/chai-arrays": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz",
+ "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
},
- "chai-as-promised": {
+ "node_modules/chai-as-promised": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
"integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
"dev": true,
- "requires": {
+ "dependencies": {
"check-error": "^1.0.2"
+ },
+ "peerDependencies": {
+ "chai": ">= 2.1.2 < 5"
}
},
- "chai-http": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.3.0.tgz",
- "integrity": "sha512-zFTxlN7HLMv+7+SPXZdkd5wUlK+KxH6Q7bIEMiEx0FK3zuuMqL7cwICAQ0V1+yYRozBburYuxN1qZstgHpFZQg==",
- "dev": true,
- "requires": {
- "@types/chai": "4",
- "@types/superagent": "^3.8.3",
- "cookiejar": "^2.1.1",
- "is-ip": "^2.0.0",
- "methods": "^1.1.2",
- "qs": "^6.5.1",
- "superagent": "^3.7.0"
- }
- },
- "chalk": {
+ "node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "charenc": {
+ "node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
+ "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
},
- "check-error": {
+ "node_modules/check-error": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
- "dev": true
- },
- "check-types": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz",
- "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
},
- "cheerio": {
+ "node_modules/cheerio": {
"version": "1.0.0-rc.10",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
"dev": true,
- "requires": {
+ "dependencies": {
"cheerio-select": "^1.5.0",
"dom-serializer": "^1.3.2",
"domhandler": "^4.2.0",
@@ -3529,953 +3568,591 @@
"parse5-htmlparser2-tree-adapter": "^6.0.1",
"tslib": "^2.2.0"
},
- "dependencies": {
- "dom-serializer": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
- "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- }
- },
- "domelementtype": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
- "dev": true
- },
- "domhandler": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
- "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
- "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
- "dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true
- },
- "htmlparser2": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
- },
- "tslib": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
- "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
- "dev": true
- }
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
- "cheerio-select": {
+ "node_modules/cheerio-select": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
"integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
"dev": true,
- "requires": {
+ "dependencies": {
"css-select": "^4.1.3",
"css-what": "^5.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0",
"domutils": "^2.7.0"
},
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cheerio-select/node_modules/css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "dev": true,
"dependencies": {
- "css-select": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
- "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^5.0.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.6.0",
- "nth-check": "^2.0.0"
- }
- },
- "css-what": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
- "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
- "dev": true
- },
- "dom-serializer": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
- "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- }
- },
- "domelementtype": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
- "dev": true
- },
- "domhandler": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
- "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
- "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
- "dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true
- },
- "nth-check": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0"
- }
- }
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "chokidar": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
- "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.1.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
+ "node_modules/cheerio-select/node_modules/css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
},
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cheerio-select/node_modules/dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dev": true,
"dependencies": {
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.0.0"
- }
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select/node_modules/domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
}
+ ]
+ },
+ "node_modules/cheerio-select/node_modules/domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "chownr": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
- "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A=="
+ "node_modules/cheerio-select/node_modules/domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
},
- "chrome-trace-event": {
+ "node_modules/cheerio-select/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/cheerio/node_modules/dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/cheerio/node_modules/domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/cheerio/node_modules/domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/cheerio/node_modules/domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/cheerio/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/cheerio/node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/cheerio/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/cheerio/node_modules/tslib": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
+ "dev": true
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/chrome-trace-event": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
"integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"tslib": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6.0"
}
},
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "cipher-base": {
+ "node_modules/cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"dev": true,
- "requires": {
+ "dependencies": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
- "circular-json": {
+ "node_modules/circular-json": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "deprecated": "CircularJSON is in maintenance only, flatted is its successor.",
"dev": true
},
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "clean-css": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
- "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
- "dev": true,
- "requires": {
- "source-map": "~0.6.0"
- }
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
},
- "clean-stack": {
+ "node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- },
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
},
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
},
- "clone-buffer": {
+ "node_modules/clone-buffer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
"integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
},
- "clone-response": {
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
"integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
"dev": true,
- "requires": {
+ "dependencies": {
"mimic-response": "^1.0.0"
}
},
- "clone-stats": {
+ "node_modules/clone-stats": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
"integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
"dev": true
},
- "cloneable-readable": {
+ "node_modules/cloneable-readable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
"integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"inherits": "^2.0.1",
"process-nextick-args": "^2.0.0",
"readable-stream": "^2.3.5"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
- "cls-hooked": {
+ "node_modules/cls-hooked": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz",
"integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==",
- "requires": {
+ "dependencies": {
"async-hook-jl": "^1.7.6",
"emitter-listener": "^1.0.1",
"semver": "^5.4.1"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "collection-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
- "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
- "dev": true,
- "requires": {
- "arr-map": "^2.0.2",
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
},
- "dependencies": {
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- }
+ "engines": {
+ "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1"
}
},
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
+ "node_modules/cls-hooked/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
}
},
- "color": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
- "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
- "requires": {
- "color-convert": "^1.9.1",
- "color-string": "^1.5.2"
+ "node_modules/cockatiel": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.3.tgz",
+ "integrity": "sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
}
},
- "color-convert": {
+ "node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
+ "dev": true,
+ "dependencies": {
"color-name": "1.1.3"
}
},
- "color-name": {
+ "node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "color-string": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
- "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
- "requires": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
- "colorette": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
- "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
+ "node_modules/colorette": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
- "colornames": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz",
- "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
- },
- "colors": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
- "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg=="
- },
- "colorspace": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
- "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
- "requires": {
- "color": "3.0.x",
- "text-hex": "1.0.x"
- }
- },
- "combined-stream": {
+ "node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
+ "dependencies": {
"delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "commander": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
- "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
- "dev": true
- },
- "commandpost": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz",
- "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==",
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "commondir": {
+ "node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
- "compare-module-exports": {
+ "node_modules/compare-module-exports": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/compare-module-exports/-/compare-module-exports-2.1.0.tgz",
"integrity": "sha512-3Lc0sTIuX1jmY2K2RrXRJOND6KsRTX2D4v3+eu1PDptsuJZVK4LZc852eZa9I+avj0NrUKlTNgqvccNOH6mbGg==",
"dev": true
},
- "component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
- "dev": true
- },
- "compress-commons": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
- "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
- "dev": true,
- "requires": {
- "buffer-crc32": "^0.2.13",
- "crc32-stream": "^3.0.1",
- "normalize-path": "^3.0.0",
- "readable-stream": "^2.3.6"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "concat-map": {
+ "node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "config-chain": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
- "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
- "dev": true,
- "requires": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "confusing-browser-globals": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz",
- "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==",
+ "node_modules/confusing-browser-globals": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
"dev": true
},
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "dev": true,
- "requires": {
- "date-now": "^0.1.4"
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "optional": true
+ "node_modules/console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
},
- "constants-browserify": {
+ "node_modules/constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
"dev": true
},
- "contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
- "dev": true
- },
- "content-disposition": {
+ "node_modules/content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
"dev": true,
- "requires": {
+ "dependencies": {
"safe-buffer": "5.1.2"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
- },
- "continuation-local-storage": {
+ "node_modules/continuation-local-storage": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
"integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
- "requires": {
+ "dependencies": {
"async-listener": "^0.6.0",
"emitter-listener": "^1.1.1"
}
},
- "convert-source-map": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
- "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
- "dev": true
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
- "dev": true
- },
- "cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true
},
- "copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "node_modules/copy-props": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz",
+ "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==",
"dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- },
"dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "each-props": "^3.0.0",
+ "is-plain-object": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "copy-props": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
- "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
+ "node_modules/copy-props/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
- "requires": {
- "each-props": "^1.3.0",
- "is-plain-object": "^2.0.1"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "copy-webpack-plugin": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
- "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
+ "node_modules/copy-webpack-plugin": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz",
+ "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==",
"dev": true,
- "requires": {
- "cacache": "^12.0.3",
- "find-cache-dir": "^2.1.0",
- "glob-parent": "^3.1.0",
- "globby": "^7.1.1",
- "is-glob": "^4.0.1",
- "loader-utils": "^1.2.3",
- "minimatch": "^3.0.4",
+ "dependencies": {
+ "fast-glob": "^3.2.7",
+ "glob-parent": "^6.0.1",
+ "globby": "^11.0.3",
"normalize-path": "^3.0.0",
- "p-limit": "^2.2.1",
- "schema-utils": "^1.0.0",
- "serialize-javascript": "^4.0.0",
- "webpack-log": "^2.0.0"
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
},
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
"dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- }
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "core-js-pure": {
+ "node_modules/core-js-pure": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz",
"integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==",
- "dev": true
+ "dev": true,
+ "hasInstallScript": true
},
- "core-util-is": {
+ "node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dev": true,
- "requires": {
- "object-assign": "^4",
- "vary": "^1"
- }
- },
- "cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
- "requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- }
- },
- "cp-file": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz",
- "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "make-dir": "^2.0.0",
- "nested-error-stacks": "^2.0.0",
- "pify": "^4.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "cpx-fixed": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/cpx-fixed/-/cpx-fixed-1.6.0.tgz",
- "integrity": "sha512-0X6cfGWup886yM/ma/3I2DASv+QSDhlvPoSzHi1DZrYwl7QIFvSKtk60i2kTyRvUbxzrqLwP1At/1TSD2pGCqg==",
- "dev": true,
- "requires": {
- "co": "^4.6.0",
- "debounce": "^1.1.0",
- "debug": "^3.1.0",
- "duplexer": "^0.1.1",
- "fs-extra": "^6.0.1",
- "glob": "^7.1.2",
- "glob2base": "0.0.12",
- "minimatch": "^3.0.4",
- "resolve": "^1.8.1",
- "safe-buffer": "^5.1.2",
- "shell-quote": "^1.6.1",
- "subarg": "^1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "fs-extra": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
- "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- }
- }
- },
- "crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "dev": true,
- "requires": {
- "buffer": "^5.1.0"
- }
- },
- "crc32-stream": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
- "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
- "dev": true,
- "requires": {
- "crc": "^3.4.4",
- "readable-stream": "^3.4.0"
- }
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
},
- "create-ecdh": {
+ "node_modules/create-ecdh": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
"integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
"dev": true,
- "requires": {
+ "dependencies": {
"bn.js": "^4.1.0",
"elliptic": "^6.0.0"
}
},
- "create-hash": {
+ "node_modules/create-hash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
- "requires": {
+ "dependencies": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
"md5.js": "^1.3.4",
@@ -4483,12 +4160,12 @@
"sha.js": "^2.4.0"
}
},
- "create-hmac": {
+ "node_modules/create-hmac": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
- "requires": {
+ "dependencies": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
"inherits": "^2.0.1",
@@ -4497,92 +4174,64 @@
"sha.js": "^2.4.8"
}
},
- "cross-env": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz",
- "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==",
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
- "requires": {
- "cross-spawn": "^7.0.0"
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"dependencies": {
- "cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "cross-spawn-async": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
- "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.0",
- "which": "^1.2.8"
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
}
},
- "crypt": {
+ "node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
+ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
},
- "crypto-browserify": {
+ "node_modules/crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"dev": true,
- "requires": {
+ "dependencies": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
"create-ecdh": "^4.0.0",
@@ -4594,331 +4243,56 @@
"public-encrypt": "^4.0.0",
"randombytes": "^2.0.0",
"randomfill": "^1.0.3"
- }
- },
- "css": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
- "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "source-map": "^0.6.1",
- "source-map-resolve": "^0.5.2",
- "urix": "^0.1.0"
- }
- },
- "css-color-function": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
- "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=",
- "dev": true,
- "requires": {
- "balanced-match": "0.1.0",
- "color": "^0.11.0",
- "debug": "^3.1.0",
- "rgb": "~0.1.0"
- },
- "dependencies": {
- "balanced-match": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
- "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=",
- "dev": true
- },
- "color": {
- "version": "0.11.4",
- "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
- "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
- "dev": true,
- "requires": {
- "clone": "^1.0.2",
- "color-convert": "^1.3.0",
- "color-string": "^0.3.0"
- }
- },
- "color-string": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
- "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
- "dev": true,
- "requires": {
- "color-name": "^1.0.0"
- }
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "css-loader": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz",
- "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==",
- "dev": true,
- "requires": {
- "babel-code-frame": "^6.26.0",
- "css-selector-tokenizer": "^0.7.0",
- "icss-utils": "^2.1.0",
- "loader-utils": "^1.0.2",
- "lodash": "^4.17.11",
- "postcss": "^6.0.23",
- "postcss-modules-extract-imports": "^1.2.0",
- "postcss-modules-local-by-default": "^1.2.0",
- "postcss-modules-scope": "^1.1.0",
- "postcss-modules-values": "^1.3.0",
- "postcss-value-parser": "^3.3.0",
- "source-list-map": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
- },
- "css-selector-tokenizer": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
- "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
- "dev": true,
- "requires": {
- "cssesc": "^0.1.0",
- "fastparse": "^1.1.1",
- "regexpu-core": "^1.0.0"
},
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- },
- "regexpu-core": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
- "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
- "dev": true,
- "requires": {
- "regenerate": "^1.2.1",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.4"
- }
- },
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- }
- }
- }
- },
- "css-unit-converter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz",
- "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
- "dev": true
- },
- "cssesc": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
- "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
- "dev": true
- },
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
- "cssstyle": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.3.0.tgz",
- "integrity": "sha512-wXsoRfsRfsLVNaVzoKdqvEmK/5PFaEXNspVT22Ots6K/cnJdpoDKuQFw+qlMiXnmaif1OgeC466X1zISgAOcGg==",
- "dev": true,
- "requires": {
- "cssom": "~0.3.6"
- }
- },
- "csstype": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz",
- "integrity": "sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==",
- "dev": true
- },
- "cyclist": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
- "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
- "dev": true
- },
- "d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dev": true,
- "requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "d3-color": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.8.tgz",
- "integrity": "sha512-yeANXzP37PHk0DbSTMNPhnJD+Nn4G//O5E825bR6fAfHH43hobSBpgB9G9oWVl9+XgUaQ4yCnsX1H+l8DoaL9A==",
- "dev": true
- },
- "d3-ease": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.5.tgz",
- "integrity": "sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ==",
- "dev": true
- },
- "d3-interpolate": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz",
- "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==",
- "dev": true,
- "requires": {
- "d3-color": "1"
- }
- },
- "d3-timer": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.9.tgz",
- "integrity": "sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg==",
- "dev": true
- },
- "damerau-levenshtein": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz",
- "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==",
- "dev": true
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "data-urls": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
- "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
- "dev": true,
- "requires": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
+ "engines": {
+ "node": "*"
}
},
- "date-format": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
- "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w=="
- },
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
- "dev": true
- },
- "debounce": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
- "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==",
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
- "debug": {
+ "node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "debug-fabulous": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz",
- "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==",
- "dev": true,
- "requires": {
- "debug": "3.X",
- "memoizee": "0.4.X",
- "object-assign": "4.X"
- },
"dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "ms": "2.0.0"
}
},
- "decache": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/decache/-/decache-4.5.1.tgz",
- "integrity": "sha512-5J37nATc6FmOTLbcsr9qx7Nm28qQyg1SK4xyEHqM0IBkNhWFp0Sm+vKoWYHD8wq+OUEb9jLyaKFfzzd1A9hcoA==",
- "dev": true,
- "requires": {
- "callsite": "^1.0.0"
- }
+ "node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
},
- "decamelize": {
+ "node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
},
- "decompress": {
+ "node_modules/decompress": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
"integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"decompress-tar": "^4.0.0",
"decompress-tarbz2": "^4.0.0",
"decompress-targz": "^4.0.0",
@@ -4928,658 +4302,518 @@
"pify": "^2.3.0",
"strip-dirs": "^2.0.0"
},
- "dependencies": {
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "decompress-response": {
+ "node_modules/decompress-response": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
"dev": true,
- "requires": {
+ "dependencies": {
"mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "decompress-tar": {
+ "node_modules/decompress-tar": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
"integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"file-type": "^5.2.0",
"is-stream": "^1.1.0",
"tar-stream": "^1.5.2"
},
- "dependencies": {
- "file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "decompress-tarbz2": {
+ "node_modules/decompress-tar/node_modules/file-type": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+ "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tarbz2": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
"integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
"dev": true,
- "requires": {
+ "dependencies": {
"decompress-tar": "^4.1.0",
"file-type": "^6.1.0",
"is-stream": "^1.1.0",
"seek-bzip": "^1.0.5",
"unbzip2-stream": "^1.0.9"
},
- "dependencies": {
- "file-type": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "decompress-targz": {
+ "node_modules/decompress-tarbz2/node_modules/file-type": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+ "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-targz": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
"integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
"dev": true,
- "requires": {
+ "dependencies": {
"decompress-tar": "^4.1.1",
"file-type": "^5.2.0",
"is-stream": "^1.1.0"
},
- "dependencies": {
- "file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "decompress-unzip": {
+ "node_modules/decompress-targz/node_modules/file-type": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+ "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-unzip": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
"integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
"dev": true,
- "requires": {
+ "dependencies": {
"file-type": "^3.8.0",
"get-stream": "^2.2.0",
"pify": "^2.3.0",
"yauzl": "^2.4.2"
},
- "dependencies": {
- "file-type": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
- "dev": true
- },
- "get-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
- "dev": true,
- "requires": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
- "dev": true
+ "node_modules/decompress-unzip/node_modules/file-type": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "deemon": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/deemon/-/deemon-1.4.0.tgz",
- "integrity": "sha512-S0zK5tNTdVFsJZVUeKi/CYJn4zzhW0Y55lwXzv2hVxb7ajzAHf91BhE5y2xvx1X7czIZ6PHLPDj00TVAmylVXw==",
+ "node_modules/decompress-unzip/node_modules/get-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
"dev": true,
- "requires": {
- "bl": "^4.0.2",
- "tree-kill": "^1.2.2"
+ "dependencies": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-unzip/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress/node_modules/make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
"dependencies": {
- "bl": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
- "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
- "dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "buffer": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
- "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
- }
- }
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "deep-assign": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz",
- "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=",
+ "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true,
- "requires": {
- "is-obj": "^1.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "deep-eql": {
+ "node_modules/decompress/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deep-eql": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
"dev": true,
- "requires": {
+ "dependencies": {
"type-detect": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
- "deep-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
- "dev": true
- },
- "deep-extend": {
+ "node_modules/deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "optional": true
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
},
- "deep-is": {
+ "node_modules/deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
- "deepmerge": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
- "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
- "dev": true
- },
- "default-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
- "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
- "dev": true,
- "requires": {
- "kind-of": "^5.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "default-require-extensions": {
+ "node_modules/default-require-extensions": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
"integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
"dev": true,
- "requires": {
+ "dependencies": {
"strip-bom": "^4.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-require-extensions/node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
"dependencies": {
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- }
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "default-resolution": {
+ "node_modules/define-lazy-prop": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
- "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "define-properties": {
+ "node_modules/define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"object-keys": "^1.0.12"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
},
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "engines": {
+ "node": ">= 0.4"
}
},
- "del": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
- "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "node_modules/del": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
+ "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
"dev": true,
- "requires": {
- "globby": "^6.1.0",
- "is-path-cwd": "^1.0.0",
- "is-path-in-cwd": "^1.0.0",
- "p-map": "^1.1.1",
- "pify": "^3.0.0",
- "rimraf": "^2.2.8"
- },
"dependencies": {
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "globby": "^11.0.1",
+ "graceful-fs": "^4.2.4",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.2",
+ "p-map": "^4.0.0",
+ "rimraf": "^3.0.2",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "delayed-stream": {
+ "node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "optional": true
- },
- "denodeify": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
- "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
- "dev": true
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
},
- "des.js": {
+ "node_modules/des.js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
"integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
"dev": true,
- "requires": {
+ "dependencies": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
- },
- "detect-file": {
+ "node_modules/detect-file": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
- "dev": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
- "optional": true
- },
- "detect-newline": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
- "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
- "dev": true
- },
- "detect-port-alt": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
- "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
"dev": true,
- "requires": {
- "address": "^1.0.1",
- "debug": "^2.6.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "diagnostic-channel": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz",
- "integrity": "sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc=",
- "requires": {
- "semver": "^5.3.0"
+ "node_modules/detect-libc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=8"
}
},
- "diagnostic-channel-publishers": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.4.tgz",
- "integrity": "sha512-SZ1zMfFiEabf4Qx0Og9V1gMsRoqz3O+5ENkVcNOfI+SMJ3QhQsdEoKX99r0zvreagXot2parPxmrwwUM/ja8ug=="
- },
- "diagnostics": {
+ "node_modules/diagnostic-channel": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
- "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
- "requires": {
- "colorspace": "1.1.x",
- "enabled": "1.0.x",
- "kuler": "1.0.x"
+ "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz",
+ "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==",
+ "dependencies": {
+ "semver": "^7.5.3"
}
},
- "diff": {
+ "node_modules/diagnostic-channel-publishers": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.7.tgz",
+ "integrity": "sha512-SEECbY5AiVt6DfLkhkaHNeshg1CogdLLANA8xlG/TKvS+XUgvIKl7VspJGYiEdL5OUyzMVnr7o0AwB7f+/Mjtg==",
+ "peerDependencies": {
+ "diagnostic-channel": "*"
+ }
+ },
+ "node_modules/diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- },
- "diff-match-patch": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.4.tgz",
- "integrity": "sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg=="
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
},
- "diffie-hellman": {
+ "node_modules/diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"dev": true,
- "requires": {
+ "dependencies": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
"randombytes": "^2.0.0"
}
},
- "dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
- "requires": {
- "path-type": "^3.0.0"
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "discontinuous-range": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
- "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
- "dev": true
- },
- "dom-converter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
- "requires": {
- "utila": "~0.4"
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "domain-browser": {
+ "node_modules/domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
- },
- "domexception": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
"dev": true,
- "requires": {
- "webidl-conversions": "^4.0.2"
+ "engines": {
+ "node": ">=0.4",
+ "npm": ">=1.2"
}
},
- "download": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz",
- "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==",
+ "node_modules/download": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz",
+ "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==",
"dev": true,
- "requires": {
+ "dependencies": {
"archive-type": "^4.0.0",
- "caw": "^2.0.1",
"content-disposition": "^0.5.2",
- "decompress": "^4.2.0",
+ "decompress": "^4.2.1",
"ext-name": "^5.0.0",
- "file-type": "^8.1.0",
- "filenamify": "^2.0.0",
- "get-stream": "^3.0.0",
+ "file-type": "^11.1.0",
+ "filenamify": "^3.0.0",
+ "get-stream": "^4.1.0",
"got": "^8.3.1",
- "make-dir": "^1.2.0",
+ "make-dir": "^2.1.0",
"p-event": "^2.1.0",
- "pify": "^3.0.0"
+ "pify": "^4.0.1"
},
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/download/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"dependencies": {
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "duplexer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
- "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "node_modules/download/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/download/node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/download/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
- "duplexer3": {
+ "node_modules/duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
"dev": true
},
- "duplexify": {
+ "node_modules/duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
"dev": true,
- "requires": {
+ "dependencies": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
"readable-stream": "^2.0.0",
"stream-shift": "^1.0.0"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
- "each-props": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
- "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
+ "node_modules/each-props": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz",
+ "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==",
"dev": true,
- "requires": {
- "is-plain-object": "^2.0.1",
+ "dependencies": {
+ "is-plain-object": "^5.0.0",
"object.defaults": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "node_modules/each-props/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "editorconfig": {
- "version": "0.15.3",
- "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
- "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"dev": true,
- "requires": {
- "commander": "^2.19.0",
- "lru-cache": "^4.1.5",
- "semver": "^5.6.0",
- "sigmund": "^1.0.1"
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
}
},
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.3.189",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.189.tgz",
- "integrity": "sha512-C26Kv6/rLNmGDaPR5HORMtTQat9aWBBKjQk9aFtN1Bk6cQBSw8cYdsel/mcrQlNlMMjt1sAKsTYqf77+sK2uTw==",
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.450",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz",
+ "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==",
"dev": true
},
- "elliptic": {
+ "node_modules/elliptic": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
"hash.js": "^1.0.0",
@@ -5587,475 +4821,236 @@
"inherits": "^2.0.4",
"minimalistic-assert": "^1.0.1",
"minimalistic-crypto-utils": "^1.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
}
},
- "emitter-listener": {
+ "node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/emitter-listener": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
"integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
- "requires": {
+ "dependencies": {
"shimmer": "^1.2.0"
}
},
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "dev": true
- },
- "enabled": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
- "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
- "requires": {
- "env-variable": "0.0.x"
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
- "requires": {
- "once": "^1.4.0"
+ "engines": {
+ "node": ">= 4"
}
},
- "engine.io": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz",
- "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==",
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
- "requires": {
- "accepts": "~1.3.4",
- "base64id": "2.0.0",
- "cookie": "~0.4.1",
- "debug": "~4.1.0",
- "engine.io-parser": "~2.2.0",
- "ws": "~7.4.2"
- },
"dependencies": {
- "cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
- "dev": true
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "once": "^1.4.0"
}
},
- "engine.io-client": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
- "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
+ "node_modules/enhanced-resolve": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
+ "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"dev": true,
- "requires": {
- "component-emitter": "~1.3.0",
- "component-inherit": "0.0.3",
- "debug": "~3.1.0",
- "engine.io-parser": "~2.2.0",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~7.4.2",
- "xmlhttprequest-ssl": "~1.6.2",
- "yeast": "0.1.2"
- },
"dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "engine.io-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
- "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
- "dev": true,
- "requires": {
- "after": "0.8.2",
- "arraybuffer.slice": "~0.0.7",
- "base64-arraybuffer": "0.1.4",
- "blob": "0.0.5",
- "has-binary2": "~1.0.2"
- }
- },
- "enhanced-resolve": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
- "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.4.0",
- "tapable": "^1.0.0"
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "enquirer": {
+ "node_modules/enquirer": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
"integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
"dev": true,
- "requires": {
+ "dependencies": {
"ansi-colors": "^4.1.1"
},
- "dependencies": {
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- }
+ "engines": {
+ "node": ">=8.6"
}
},
- "entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
- "dev": true
- },
- "env-variable": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
- "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
- },
- "enzyme": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.10.0.tgz",
- "integrity": "sha512-p2yy9Y7t/PFbPoTvrWde7JIYB2ZyGC+NgTNbVEGvZ5/EyoYSr9aG/2rSbVvyNvMHEhw9/dmGUJHWtfQIEiX9pg==",
+ "node_modules/enquirer/node_modules/ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true,
- "requires": {
- "array.prototype.flat": "^1.2.1",
- "cheerio": "^1.0.0-rc.2",
- "function.prototype.name": "^1.1.0",
- "has": "^1.0.3",
- "html-element-map": "^1.0.0",
- "is-boolean-object": "^1.0.0",
- "is-callable": "^1.1.4",
- "is-number-object": "^1.0.3",
- "is-regex": "^1.0.4",
- "is-string": "^1.0.4",
- "is-subset": "^0.1.1",
- "lodash.escape": "^4.0.1",
- "lodash.isequal": "^4.5.0",
- "object-inspect": "^1.6.0",
- "object-is": "^1.0.1",
- "object.assign": "^4.1.0",
- "object.entries": "^1.0.4",
- "object.values": "^1.0.4",
- "raf": "^3.4.0",
- "rst-selector-parser": "^2.2.3",
- "string.prototype.trim": "^1.1.2"
+ "engines": {
+ "node": ">=6"
}
},
- "enzyme-adapter-react-16": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz",
- "integrity": "sha512-7PcOF7pb4hJUvjY7oAuPGpq3BmlCig3kxXGi2kFx0YzJHppqX1K8IIV9skT1IirxXlu8W7bneKi+oQ10QRnhcA==",
+ "node_modules/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
"dev": true,
- "requires": {
- "enzyme-adapter-utils": "^1.12.0",
- "has": "^1.0.3",
- "object.assign": "^4.1.0",
- "object.values": "^1.1.0",
- "prop-types": "^15.7.2",
- "react-is": "^16.8.6",
- "react-test-renderer": "^16.0.0-0",
- "semver": "^5.7.0"
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "enzyme-adapter-utils": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz",
- "integrity": "sha512-wkZvE0VxcFx/8ZsBw0iAbk3gR1d9hK447ebnSYBf95+r32ezBq+XDSAvRErkc4LZosgH8J7et7H7/7CtUuQfBA==",
+ "node_modules/envinfo": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
"dev": true,
- "requires": {
- "airbnb-prop-types": "^2.13.2",
- "function.prototype.name": "^1.1.0",
- "object.assign": "^4.1.0",
- "object.fromentries": "^2.0.0",
- "prop-types": "^15.7.2",
- "semver": "^5.6.0"
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "errno": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
- "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "node_modules/es-abstract": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
+ "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==",
"dev": true,
- "requires": {
- "prr": "~1.0.1"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.1",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- },
"dependencies": {
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- }
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "es-abstract": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
- "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
- "requires": {
- "es-to-primitive": "^1.2.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "is-callable": "^1.1.4",
- "is-regex": "^1.0.4",
- "object-keys": "^1.0.12"
+ "engines": {
+ "node": ">= 0.4"
}
},
- "es-array-method-boxes-properly": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
- "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
"dev": true
},
- "es-get-iterator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz",
- "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==",
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
- "requires": {
- "es-abstract": "^1.17.4",
- "has-symbols": "^1.0.1",
- "is-arguments": "^1.0.4",
- "is-map": "^2.0.1",
- "is-set": "^2.0.1",
- "is-string": "^1.0.5",
- "isarray": "^2.0.5"
- },
"dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "is-string": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
- "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
- "dev": true
- },
- "isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- }
- }
- },
- "es-to-primitive": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
- "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
- "dev": true,
- "requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "es5-ext": {
- "version": "0.10.50",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
- "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
- "dev": true,
- "requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.1",
- "next-tick": "^1.0.0"
- }
- },
- "es6-error": {
+ "node_modules/es6-error": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
"integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
"dev": true
},
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-promise": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
- "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
+ "node_modules/es6-object-assign": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=",
"dev": true
},
- "es6-promisify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
- "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
- "dev": true,
- "requires": {
- "es6-promise": "^4.0.3"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
- "es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "escalade": {
+ "node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "escape-string-regexp": {
+ "node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
- "eslint": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz",
- "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==",
+ "node_modules/eslint": {
+ "version": "7.32.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+ "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@eslint/eslintrc": "^0.1.3",
+ "dependencies": {
+ "@babel/code-frame": "7.12.11",
+ "@eslint/eslintrc": "^0.4.3",
+ "@humanwhocodes/config-array": "^0.5.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.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^5.1.1",
"eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^1.3.0",
- "espree": "^7.3.0",
- "esquery": "^1.2.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.1",
+ "esquery": "^1.4.0",
"esutils": "^2.0.2",
- "file-entry-cache": "^5.0.1",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
"functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.0.0",
- "globals": "^12.1.0",
+ "glob-parent": "^5.1.2",
+ "globals": "^13.6.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
@@ -6063,7 +5058,7 @@
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
- "lodash": "^4.17.19",
+ "lodash.merge": "^4.6.2",
"minimatch": "^3.0.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
@@ -6072,2286 +5067,1529 @@
"semver": "^7.2.1",
"strip-ansi": "^6.0.0",
"strip-json-comments": "^3.1.0",
- "table": "^5.2.3",
+ "table": "^6.0.9",
"text-table": "^0.2.0",
"v8-compile-cache": "^2.0.3"
},
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
- "dev": true,
- "requires": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "eslint-scope": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
- "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
- "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
- "dev": true,
- "requires": {
- "type-fest": "^0.8.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
- "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "eslint-config-airbnb": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz",
- "integrity": "sha512-Fz4JIUKkrhO0du2cg5opdyPKQXOI2MvF8KUvN2710nJMT6jaRUpRE2swrJftAjVGL7T1otLM5ieo5RqS1v9Udg==",
+ "node_modules/eslint-config-airbnb": {
+ "version": "18.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz",
+ "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==",
"dev": true,
- "requires": {
- "eslint-config-airbnb-base": "^14.2.0",
- "object.assign": "^4.1.0",
+ "dependencies": {
+ "eslint-config-airbnb-base": "^14.2.1",
+ "object.assign": "^4.1.2",
"object.entries": "^1.1.2"
},
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "object.entries": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
- "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5",
- "has": "^1.0.3"
- }
- }
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-jsx-a11y": "^6.4.1",
+ "eslint-plugin-react": "^7.21.5",
+ "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0"
}
},
- "eslint-config-airbnb-base": {
- "version": "14.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz",
- "integrity": "sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q==",
+ "node_modules/eslint-config-airbnb-base": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz",
+ "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==",
"dev": true,
- "requires": {
- "confusing-browser-globals": "^1.0.9",
- "object.assign": "^4.1.0",
+ "dependencies": {
+ "confusing-browser-globals": "^1.0.10",
+ "object.assign": "^4.1.2",
"object.entries": "^1.1.2"
},
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "object.entries": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
- "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5",
- "has": "^1.0.3"
- }
- }
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0",
+ "eslint-plugin-import": "^2.22.1"
}
},
- "eslint-config-prettier": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz",
- "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==",
+ "node_modules/eslint-config-prettier": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
"dev": true,
- "requires": {
- "get-stdin": "^6.0.0"
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
}
},
- "eslint-import-resolver-node": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
- "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
"dev": true,
- "requires": {
- "debug": "^2.6.9",
- "resolve": "^1.13.1"
+ "dependencies": {
+ "debug": "^3.2.7",
+ "resolve": "^1.20.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
"dependencies": {
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- }
+ "ms": "^2.1.1"
}
},
- "eslint-module-utils": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
- "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
+ "node_modules/eslint-module-utils/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
- "requires": {
- "debug": "^2.6.9",
- "pkg-dir": "^2.0.0"
+ "dependencies": {
+ "locate-path": "^2.0.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
"dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "pkg-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "dev": true,
- "requires": {
- "find-up": "^2.1.0"
- }
- }
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "eslint-plugin-import": {
- "version": "2.22.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz",
- "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==",
+ "node_modules/eslint-module-utils/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
- "requires": {
- "array-includes": "^3.1.1",
- "array.prototype.flat": "^1.2.3",
- "contains-path": "^0.1.0",
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.25.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz",
+ "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flat": "^1.2.5",
"debug": "^2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "^0.3.3",
- "eslint-module-utils": "^2.6.0",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-module-utils": "^2.7.2",
"has": "^1.0.3",
+ "is-core-module": "^2.8.0",
+ "is-glob": "^4.0.3",
"minimatch": "^3.0.4",
- "object.values": "^1.1.1",
- "read-pkg-up": "^2.0.0",
- "resolve": "^1.17.0",
- "tsconfig-paths": "^3.9.0"
+ "object.values": "^1.1.5",
+ "resolve": "^1.20.0",
+ "tsconfig-paths": "^3.12.0"
},
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
- "array.prototype.flat": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
- "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
- }
- },
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "object.values": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
- "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- }
- },
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "tsconfig-paths": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
- "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
- "dev": true,
- "requires": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.0",
- "strip-bom": "^3.0.0"
- }
- }
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "eslint-plugin-jsx-a11y": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz",
- "integrity": "sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g==",
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
+ "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
"dev": true,
- "requires": {
- "@babel/runtime": "^7.10.2",
+ "dependencies": {
+ "@babel/runtime": "^7.16.3",
"aria-query": "^4.2.2",
- "array-includes": "^3.1.1",
+ "array-includes": "^3.1.4",
"ast-types-flow": "^0.0.7",
- "axe-core": "^3.5.4",
- "axobject-query": "^2.1.2",
- "damerau-levenshtein": "^1.0.6",
- "emoji-regex": "^9.0.0",
+ "axe-core": "^4.3.5",
+ "axobject-query": "^2.2.0",
+ "damerau-levenshtein": "^1.0.7",
+ "emoji-regex": "^9.2.2",
"has": "^1.0.3",
- "jsx-ast-utils": "^2.4.1",
- "language-tags": "^1.0.5"
+ "jsx-ast-utils": "^3.2.1",
+ "language-tags": "^1.0.5",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=4.0"
},
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "dev": true,
"dependencies": {
- "@babel/runtime": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz",
- "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==",
- "dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "aria-query": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
- "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.10.2",
- "@babel/runtime-corejs3": "^7.10.2"
- }
- },
- "emoji-regex": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.0.0.tgz",
- "integrity": "sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
- "dev": true
- }
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ },
+ "engines": {
+ "node": ">=6.0"
}
},
- "eslint-plugin-react": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.6.tgz",
- "integrity": "sha512-kidMTE5HAEBSLu23CUDvj8dc3LdBU0ri1scwHBZjI41oDv4tjsWZKU7MQccFzH1QYPYhsnTF2ovh7JlcIcmxgg==",
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "requires": {
- "array-includes": "^3.1.1",
- "array.prototype.flatmap": "^1.2.3",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.29.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
+ "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flatmap": "^1.2.5",
"doctrine": "^2.1.0",
- "has": "^1.0.3",
- "jsx-ast-utils": "^2.4.1",
- "object.entries": "^1.1.2",
- "object.fromentries": "^2.0.2",
- "object.values": "^1.1.1",
- "prop-types": "^15.7.2",
- "resolve": "^1.17.0",
- "string.prototype.matchall": "^4.0.2"
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.0",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.6"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz",
+ "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
},
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "object.entries": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
- "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5",
- "has": "^1.0.3"
- }
- },
- "object.fromentries": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz",
- "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "object.values": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
- "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
- }
- },
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- }
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "eslint-plugin-react-hooks": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.0.tgz",
- "integrity": "sha512-YKBY+kilK5wrwIdQnCF395Ya6nDro3EAMoe+2xFkmyklyhF16fH83TrQOo9zbZIDxBsXFgBbywta/0JKRNFDkw==",
- "dev": true
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "eslint-utils": {
+ "node_modules/eslint-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
"dev": true,
- "requires": {
+ "dependencies": {
"eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
}
},
- "eslint-visitor-keys": {
+ "node_modules/eslint-visitor-keys": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "espree": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
- "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
- "requires": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.2.0",
- "eslint-visitor-keys": "^1.3.0"
- },
"dependencies": {
- "acorn": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
- "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==",
- "dev": true
- }
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "esprima": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
- "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
- "dev": true
- },
- "esquery": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
- "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
"dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "esrecurse": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "estraverse": "^4.1.0"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "node_modules/eslint/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "event-stream": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
- "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
- "requires": {
- "duplexer": "~0.1.1",
- "from": "~0",
- "map-stream": "~0.1.0",
- "pause-stream": "0.0.11",
- "split": "0.3",
- "stream-combiner": "~0.0.4",
- "through": "~2.3.1"
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "events": {
+ "node_modules/eslint/node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
- "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
- "dev": true
- },
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "engines": {
+ "node": ">=10"
},
- "dependencies": {
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "requires": {
- "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"
- },
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
+ "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
"dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "expose-loader": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.5.tgz",
- "integrity": "sha512-iPowgKUZkTPX5PznYsmifVj9Bob0w2wTHVkt/eYNPSzyebkUgIedmskf/kcfEIWpiWjg3JRjnW+a17XypySMuw==",
- "dev": true
- },
- "express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "dev": true,
- "requires": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true
- },
- "qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "dev": true
- }
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "ext-list": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
- "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true,
- "requires": {
- "mime-db": "^1.28.0"
+ "engines": {
+ "node": ">= 4"
}
},
- "ext-name": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
- "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "requires": {
- "ext-list": "^2.0.0",
- "sort-keys-length": "^1.0.0"
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "node_modules/eslint/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "node_modules/eslint/node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "node_modules/eslint/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
- "requires": {
- "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"
- },
"dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "extract-zip": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
- "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
+ "node_modules/eslint/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
- "requires": {
- "concat-stream": "^1.6.2",
- "debug": "^2.6.9",
- "mkdirp": "^0.5.4",
- "yauzl": "^2.10.0"
+ "engines": {
+ "node": ">=8"
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
- },
- "fast-glob": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
- "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
- "requires": {
- "@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"
+ "engines": {
+ "node": ">=10"
},
- "dependencies": {
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fast-plist": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.2.tgz",
- "integrity": "sha1-pFr/NFGWAG1AbKbNzQX2kFHvNbg=",
- "dev": true
- },
- "fast-safe-stringify": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
- "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
- },
- "fast-xml-parser": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.16.0.tgz",
- "integrity": "sha512-U+bpScacfgnfNfIKlWHDu4u6rtOaCyxhblOLJ8sZPkhsjgGqdZmVPBhdOyvdMGCDt8CsAv+cssOP3NzQptNt2w==",
- "dev": true
- },
- "fastparse": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
- "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
- "dev": true
- },
- "fastq": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
- "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
+ "node_modules/espree": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+ "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
"dev": true,
- "requires": {
- "reusify": "^1.0.4"
+ "dependencies": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^1.3.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "node_modules/espree/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true,
- "requires": {
- "pend": "~1.2.0"
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "fecha": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
- "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
- },
- "figgy-pudding": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
- "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
- "dev": true
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
},
- "file-entry-cache": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
- "requires": {
- "flat-cache": "^2.0.1"
+ "engines": {
+ "node": ">=4.0"
}
},
- "file-loader": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-5.1.0.tgz",
- "integrity": "sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg==",
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "requires": {
- "loader-utils": "^1.4.0",
- "schema-utils": "^2.5.0"
- },
"dependencies": {
- "ajv": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
- "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
- "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
- "dev": true
- },
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "loader-utils": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^1.0.1"
- }
- },
- "schema-utils": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
- "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.0",
- "ajv-keywords": "^3.4.1"
- }
- }
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
}
},
- "file-type": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz",
- "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==",
- "dev": true
- },
- "file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
- "optional": true
+ "engines": {
+ "node": ">=4.0"
+ }
},
- "filemanager-webpack-plugin-fixed": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin-fixed/-/filemanager-webpack-plugin-fixed-2.0.9.tgz",
- "integrity": "sha512-iet9rDGF3HjHwObDy2FwzBFtiW59e+/wImVdqYXp5siRI4ESfxJyflOhpr7zrnJ4FcTS+rrIdk5E/Zgh9XtS0Q==",
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
- "requires": {
- "archiver": "^3.0.0",
- "cpx-fixed": "^1.6.0",
- "fs-extra": "^7.0.0",
- "make-dir": "^1.1.0",
- "mv": "^2.1.1",
- "rimraf": "^2.6.2"
- },
- "dependencies": {
- "fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "engines": {
+ "node": ">=4.0"
}
},
- "filename-reserved-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
- "dev": true
- },
- "filenamify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz",
- "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==",
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
- "requires": {
- "filename-reserved-regex": "^2.0.0",
- "strip-outer": "^1.0.0",
- "trim-repeated": "^1.0.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "filesize": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz",
- "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==",
- "dev": true
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
},
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "node_modules/evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
"dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
}
},
- "finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "find-index": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
- "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
- "dev": true
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "node_modules/execa/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
- "requires": {
- "locate-path": "^3.0.0"
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "findup-sync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
- "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "node_modules/execa/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "flat": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
- "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
"dev": true,
- "requires": {
- "is-buffer": "~2.0.3"
- },
"dependencies": {
- "is-buffer": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
- "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
- "dev": true
- }
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "flat-cache": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "node_modules/expose-loader": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz",
+ "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==",
"dev": true,
- "requires": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
},
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
"dependencies": {
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "mime-db": "^1.28.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "flatted": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
- "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg=="
+ "node_modules/ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "dependencies": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "flatten": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
- "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==",
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
- "flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend-shallow/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "follow-redirects": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
- "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA=="
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"dev": true
},
- "foreground-child": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
- "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
+ "node_modules/fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
"dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^3.0.2"
- },
"dependencies": {
- "cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
}
},
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "fork-ts-checker-webpack-plugin": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
- "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "chalk": "^2.4.1",
- "micromatch": "^3.1.10",
- "minimatch": "^3.0.4",
- "semver": "^5.6.0",
- "tapable": "^1.0.0",
- "worker-rpc": "^0.1.0"
- },
"dependencies": {
- "@babel/code-frame": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
- "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.8.3"
- }
- },
- "@babel/highlight": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
- "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.9.0",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- }
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
- "formidable": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
- "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+ "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
"dev": true
},
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "node_modules/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
"dev": true,
- "requires": {
- "map-cache": "^0.2.2"
+ "dependencies": {
+ "reusify": "^1.0.4"
}
},
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
- },
- "from": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
- "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
- "dev": true
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
},
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- },
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "fromentries": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz",
- "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==",
- "dev": true
+ "node_modules/file-type": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz",
+ "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
+ "node_modules/filename-reserved-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+ "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "node_modules/filenamify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz",
+ "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==",
+ "dev": true,
+ "dependencies": {
+ "filename-reserved-regex": "^2.0.0",
+ "strip-outer": "^1.0.0",
+ "trim-repeated": "^1.0.0"
},
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
"dependencies": {
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- }
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "optional": true,
- "requires": {
- "minipass": "^2.6.0"
+ "node_modules/filter-obj": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
+ "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
- "fs-walk": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/fs-walk/-/fs-walk-0.0.1.tgz",
- "integrity": "sha1-9/yRw64e6tB8mYvF0N1B8tvr0zU=",
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
- "requires": {
- "async": "*"
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "node_modules/find-up/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/findup-sync": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz",
+ "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.4",
+ "resolve-dir": "^1.0.1"
},
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/fined": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz",
+ "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==",
+ "dev": true,
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^5.0.0",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.3.0",
+ "parse-filepath": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ "node_modules/fined/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
- "optional": true
+ "node_modules/flagged-respawn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz",
+ "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
},
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true,
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
"dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "node_modules/flatted": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
+ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
"dev": true
},
- "function.prototype.name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz",
- "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==",
+ "node_modules/flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "is-callable": "^1.1.3"
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
}
},
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "fuzzy": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
- "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg="
+ "node_modules/for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
+ "node_modules/foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "node_modules/foreground-child": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
},
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/foreground-child/node_modules/cross-spawn": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
+ "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "optional": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
+ "node_modules/foreground-child/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "get-func-name": {
+ "node_modules/foreground-child/node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "node_modules/foreground-child/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "get-port": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
- "get-proxy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz",
- "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==",
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
- "requires": {
- "npm-conf": "^1.1.0"
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
- "get-stdin": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
- "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "node_modules/fromentries": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz",
+ "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==",
"dev": true
},
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
+ "node_modules/fs-extra": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
+ "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
+ "node_modules/fs-extra/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "glob": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
}
},
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "node_modules/fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
"dev": true,
- "requires": {
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fs-walk": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/fs-walk/-/fs-walk-0.0.1.tgz",
+ "integrity": "sha1-9/yRw64e6tB8mYvF0N1B8tvr0zU=",
+ "dev": true,
+ "dependencies": {
+ "async": "*"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "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"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "dependencies": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
- },
+ }
+ },
+ "node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
"dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "glob-stream": {
+ "node_modules/glob-stream": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
"dev": true,
- "requires": {
+ "dependencies": {
"extend": "^3.0.0",
"glob": "^7.1.1",
"glob-parent": "^3.1.0",
@@ -8363,224 +6601,141 @@
"to-absolute-glob": "^2.0.0",
"unique-stream": "^2.0.2"
},
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "engines": {
+ "node": ">= 0.10"
}
},
- "glob-watcher": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz",
- "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==",
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true
+ },
+ "node_modules/glob-watcher": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz",
+ "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==",
"dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-done": "^1.2.0",
- "chokidar": "^2.0.0",
- "is-negated-glob": "^1.0.0",
- "just-debounce": "^1.0.0",
- "object.defaults": "^1.1.0"
- },
"dependencies": {
- "binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true
- },
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
- "optional": true,
- "requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- }
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
- "dev": true,
- "requires": {
- "binary-extensions": "^1.0.0"
- }
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "async-done": "^2.0.0",
+ "chokidar": "^3.5.3"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "glob2base": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
- "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
- "dev": true,
- "requires": {
- "find-index": "^0.1.1"
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "global-modules": {
+ "node_modules/global-modules": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
"integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
- "requires": {
+ "dependencies": {
"global-prefix": "^1.0.1",
"is-windows": "^1.0.1",
"resolve-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "global-prefix": {
+ "node_modules/global-prefix": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
"dev": true,
- "requires": {
+ "dependencies": {
"expand-tilde": "^2.0.2",
"homedir-polyfill": "^1.0.1",
"ini": "^1.3.4",
"is-windows": "^1.0.1",
"which": "^1.2.14"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "globals": {
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "globby": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
- "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "dir-glob": "^2.0.0",
- "glob": "^7.1.2",
- "ignore": "^3.3.5",
- "pify": "^3.0.0",
- "slash": "^1.0.0"
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
},
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glogg": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz",
+ "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==",
+ "dev": true,
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
- "dev": true
- }
+ "sparkles": "^2.1.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "glogg": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
- "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
- "requires": {
- "sparkles": "^1.0.0"
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "got": {
+ "node_modules/got": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
"integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
"dev": true,
- "requires": {
+ "dependencies": {
"@sindresorhus/is": "^0.7.0",
"cacheable-request": "^2.1.1",
"decompress-response": "^3.3.0",
@@ -8599,7454 +6754,15871 @@
"url-parse-lax": "^3.0.0",
"url-to-options": "^1.0.1"
},
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "graceful-fs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
- "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg=="
+ "node_modules/got/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "graceful-readlink": {
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/graceful-readlink": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
"dev": true
},
- "growl": {
+ "node_modules/growl": {
"version": "1.10.5",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=4.x"
+ }
},
- "gulp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
- "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
+ "node_modules/gulp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz",
+ "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==",
"dev": true,
- "requires": {
- "glob-watcher": "^5.0.3",
- "gulp-cli": "^2.2.0",
- "undertaker": "^1.2.1",
- "vinyl-fs": "^3.0.0"
- },
"dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- },
- "gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- }
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "yargs": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
- "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "5.0.0-security.0"
- }
- },
- "yargs-parser": {
- "version": "5.0.0-security.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
- "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
- }
+ "glob-watcher": "^6.0.0",
+ "gulp-cli": "^3.0.0",
+ "undertaker": "^2.0.0",
+ "vinyl-fs": "^4.0.0"
+ },
+ "bin": {
+ "gulp": "bin/gulp.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "gulp-azure-storage": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/gulp-azure-storage/-/gulp-azure-storage-0.11.1.tgz",
- "integrity": "sha512-csOwItwZV1P9GLsORVQy+CFwjYDdHNrBol89JlHdlhGx0fTgJBc1COTRZbjGRyRjgdUuVguo3YLl4ToJ10/SIQ==",
+ "node_modules/gulp-cli": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz",
+ "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==",
"dev": true,
- "requires": {
- "azure-storage": "^2.10.2",
- "delayed-stream": "0.0.6",
- "event-stream": "3.3.4",
- "mime": "^1.3.4",
- "progress": "^1.1.8",
- "queue": "^3.0.10",
- "streamifier": "^0.1.1",
- "vinyl": "^2.2.0",
- "vinyl-fs": "^3.0.3",
- "yargs": "^15.3.0"
- },
- "dependencies": {
- "delayed-stream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.6.tgz",
- "integrity": "sha1-omRst+w9XXd0YUZwp6Zd4MFz7bw=",
- "dev": true
- }
+ "dependencies": {
+ "@gulpjs/messages": "^1.1.0",
+ "chalk": "^4.1.2",
+ "copy-props": "^4.0.0",
+ "gulplog": "^2.2.0",
+ "interpret": "^3.1.1",
+ "liftoff": "^5.0.0",
+ "mute-stdout": "^2.0.0",
+ "replace-homedir": "^2.0.0",
+ "semver-greatest-satisfied-range": "^2.0.0",
+ "string-width": "^4.2.3",
+ "v8flags": "^4.0.0",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "gulp": "bin/gulp.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "gulp-chmod": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz",
- "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=",
+ "node_modules/gulp-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "deep-assign": "^1.0.0",
- "stat-mode": "^0.2.0",
- "through2": "^2.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "gulp-gunzip": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.1.0.tgz",
- "integrity": "sha512-3INeprGyz5fUtAs75k6wVslGuRZIjKAoQp39xA7Bz350ReqkrfYaLYqjZ67XyIfLytRXdzeX04f+DnBduYhQWw==",
+ "node_modules/gulp-cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "requires": {
- "through2": "~2.0.3",
- "vinyl": "~2.0.1"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/gulp-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
- "vinyl": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz",
- "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=",
- "dev": true,
- "requires": {
- "clone": "^1.0.0",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "is-stream": "^1.1.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
- }
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "gulp-rename": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz",
- "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==",
+ "node_modules/gulp-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "gulp-sourcemaps": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz",
- "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==",
+ "node_modules/gulp-cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/gulp-cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@gulp-sourcemaps/identity-map": "1.X",
- "@gulp-sourcemaps/map-sources": "1.X",
- "acorn": "5.X",
- "convert-source-map": "1.X",
- "css": "2.X",
- "debug-fabulous": "1.X",
- "detect-newline": "2.X",
- "graceful-fs": "4.X",
- "source-map": "~0.6.0",
- "strip-bom-string": "1.X",
- "through2": "2.X"
- },
"dependencies": {
- "acorn": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
- "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
- "dev": true
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "gulp-typescript": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-4.0.2.tgz",
- "integrity": "sha512-Hhbn5Aa2l3T+tnn0KqsG6RRJmcYEsr3byTL2nBpNBeAK8pqug9Od4AwddU4JEI+hRw7mzZyjRbB8DDWR6paGVA==",
+ "node_modules/gulp-cli/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "plugin-error": "^0.1.2",
- "source-map": "^0.6.1",
- "through2": "^2.0.3",
- "vinyl": "^2.1.0",
- "vinyl-fs": "^3.0.0"
+ "engines": {
+ "node": ">=10"
}
},
- "gulp-untar": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.8.tgz",
- "integrity": "sha512-mqW7v2uvrxd8IoCCwJ04sPYgWjR3Gsi6yfhVWBK3sFMDP7FuoT7GNmxrCMwkk4RWqQohx8DRv+cDq4SRDXATGA==",
+ "node_modules/gulp-cli/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
- "requires": {
- "event-stream": "3.3.4",
- "streamifier": "~0.1.1",
- "tar": "^2.2.1",
- "through2": "~2.0.3",
- "vinyl": "^1.2.0"
- },
"dependencies": {
- "clone-stats": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
- "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
- "dev": true
- },
- "replace-ext": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
- "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
- "dev": true
- },
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "dev": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- },
- "vinyl": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
- "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
- "dev": true,
- "requires": {
- "clone": "^1.0.0",
- "clone-stats": "^0.0.1",
- "replace-ext": "0.0.1"
- }
- }
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "gulp-vinyl-zip": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz",
- "integrity": "sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q==",
+ "node_modules/gulp-typescript": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz",
+ "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==",
"dev": true,
- "requires": {
- "event-stream": "3.3.4",
- "queue": "^4.2.1",
- "through2": "^2.0.3",
- "vinyl": "^2.0.2",
- "vinyl-fs": "^3.0.3",
- "yauzl": "^2.2.1",
- "yazl": "^2.2.1"
- },
"dependencies": {
- "queue": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz",
- "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- }
+ "ansi-colors": "^3.0.5",
+ "plugin-error": "^1.0.1",
+ "source-map": "^0.7.3",
+ "through2": "^3.0.0",
+ "vinyl": "^2.1.0",
+ "vinyl-fs": "^3.0.3"
+ },
+ "engines": {
+ "node": ">= 8"
+ },
+ "peerDependencies": {
+ "typescript": "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev"
}
},
- "gulplog": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
- "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "node_modules/gulp-typescript/node_modules/ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
"dev": true,
- "requires": {
- "glogg": "^1.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "gzip-size": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
- "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+ "node_modules/gulp-typescript/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true,
- "requires": {
- "duplexer": "^0.1.1",
- "pify": "^4.0.1"
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/gulp-typescript/node_modules/through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
}
},
- "har-schema": {
+ "node_modules/gulp/node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
},
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
+ "node_modules/gulp/node_modules/fs-mkdirp-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz",
+ "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.8",
+ "streamx": "^2.12.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/gulp/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
- "requires": {
- "function-bind": "^1.1.1"
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "has-binary2": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
- "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
+ "node_modules/gulp/node_modules/glob-stream": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz",
+ "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==",
"dev": true,
- "requires": {
- "isarray": "2.0.1"
- },
"dependencies": {
- "isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
- "dev": true
- }
+ "@gulpjs/to-absolute-glob": "^4.0.0",
+ "anymatch": "^3.1.3",
+ "fastq": "^1.13.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "is-negated-glob": "^1.0.0",
+ "normalize-path": "^3.0.0",
+ "streamx": "^2.12.5"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
- "dev": true
+ "node_modules/gulp/node_modules/lead": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz",
+ "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
},
- "has-flag": {
+ "node_modules/gulp/node_modules/now-and-later": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-symbol-support-x": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
- "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz",
+ "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
},
- "has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "dev": true
+ "node_modules/gulp/node_modules/replace-ext": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
},
- "has-to-string-tag-x": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
- "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
+ "node_modules/gulp/node_modules/resolve-options": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz",
+ "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==",
"dev": true,
- "requires": {
- "has-symbol-support-x": "^1.4.1"
+ "dependencies": {
+ "value-or-function": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "optional": true
+ "node_modules/gulp/node_modules/to-through": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz",
+ "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==",
+ "dev": true,
+ "dependencies": {
+ "streamx": "^2.12.5"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
},
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "node_modules/gulp/node_modules/value-or-function": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz",
+ "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==",
"dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "node_modules/gulp/node_modules/vinyl": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz",
+ "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==",
"dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
"dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "clone": "^2.1.2",
+ "clone-stats": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0",
+ "replace-ext": "^2.0.0",
+ "teex": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "node_modules/gulp/node_modules/vinyl-fs": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz",
+ "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==",
+ "dev": true,
+ "dependencies": {
+ "fs-mkdirp-stream": "^2.0.1",
+ "glob-stream": "^8.0.0",
+ "graceful-fs": "^4.2.11",
+ "iconv-lite": "^0.6.3",
+ "is-valid-glob": "^1.0.0",
+ "lead": "^4.0.0",
+ "normalize-path": "3.0.0",
+ "resolve-options": "^2.0.0",
+ "stream-composer": "^1.0.2",
+ "streamx": "^2.14.0",
+ "to-through": "^3.0.0",
+ "value-or-function": "^4.0.0",
+ "vinyl": "^3.0.0",
+ "vinyl-sourcemap": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
+ "node_modules/gulp/node_modules/vinyl-sourcemap": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz",
+ "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==",
+ "dev": true,
+ "dependencies": {
+ "convert-source-map": "^2.0.0",
+ "graceful-fs": "^4.2.10",
+ "now-and-later": "^3.0.0",
+ "streamx": "^2.12.5",
+ "vinyl": "^3.0.0",
+ "vinyl-contents": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "hasha": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz",
- "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==",
+ "node_modules/gulplog": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz",
+ "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==",
"dev": true,
- "requires": {
- "is-stream": "^2.0.0",
- "type-fest": "^0.8.0"
- },
"dependencies": {
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- }
+ "glogg": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "homedir-polyfill": {
+ "node_modules/has": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "requires": {
- "parse-passwd": "^1.0.0"
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
}
},
- "hoopy": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
- "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "html-element-map": {
+ "node_modules/has-bigints": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.0.1.tgz",
- "integrity": "sha512-BZSfdEm6n706/lBfXKWa4frZRZcT5k1cOusw95ijZsHlI+GdgY0v95h6IzO3iIDf2ROwq570YTwqNPqHcNMozw==",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
"dev": true,
- "requires": {
- "array-filter": "^1.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "html-encoding-sniffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.1"
+ "engines": {
+ "node": ">=4"
}
},
- "html-escaper": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz",
- "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==",
- "dev": true
- },
- "html-minifier": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
- "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
- "requires": {
- "camel-case": "3.0.x",
- "clean-css": "4.2.x",
- "commander": "2.17.x",
- "he": "1.2.x",
- "param-case": "2.1.x",
- "relateurl": "0.2.x",
- "uglify-js": "3.4.x"
- },
"dependencies": {
- "commander": {
- "version": "2.17.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
- "dev": true
- }
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "html-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
- "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true,
- "requires": {
- "html-minifier": "^3.2.3",
- "loader-utils": "^0.2.16",
- "lodash": "^4.17.3",
- "pretty-error": "^2.0.2",
- "tapable": "^1.0.0",
- "toposort": "^1.0.0",
- "util.promisify": "1.0.0"
+ "engines": {
+ "node": ">= 0.4"
},
- "dependencies": {
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "http-cache-semantics": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
- "dev": true
- },
- "http-errors": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
- "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "node_modules/has-symbol-support-x": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
+ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
"dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
+ "engines": {
+ "node": "*"
}
},
- "http-proxy-agent": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
- "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
- "requires": {
- "agent-base": "4",
- "debug": "3.1.0"
+ "engines": {
+ "node": ">= 0.4"
},
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "node_modules/has-to-string-tag-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
+ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbol-support-x": "^1.4.1"
+ },
+ "engines": {
+ "node": "*"
}
},
- "https-browserify": {
+ "node_modules/has-tostringtag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
- },
- "https-proxy-agent": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dev": true,
- "requires": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- },
"dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "husky": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz",
- "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==",
+ "node_modules/hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"dev": true,
- "requires": {
- "cosmiconfig": "^5.0.7",
- "execa": "^1.0.0",
- "find-up": "^3.0.0",
- "get-stdin": "^6.0.0",
- "is-ci": "^2.0.0",
- "pkg-dir": "^3.0.0",
- "please-upgrade-node": "^3.1.1",
- "read-pkg": "^4.0.1",
- "run-node": "^1.0.0",
- "slash": "^2.0.0"
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
- "dev": true,
- "requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- }
- }
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
}
},
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "node_modules/hasha": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz",
+ "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==",
+ "dev": true,
+ "dependencies": {
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "icss-replace-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
- "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
- "dev": true
+ "node_modules/hasha/node_modules/is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "icss-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
- "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
- "requires": {
- "postcss": "^6.0.1"
+ "dependencies": {
+ "function-bind": "^1.1.2"
},
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
}
},
- "ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
- "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
- "dev": true
+ "node_modules/homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "dependencies": {
+ "parse-passwd": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
- "ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "node_modules/http-cache-semantics": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
"dev": true
},
- "ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "image-size": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "node_modules/http-proxy-agent/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
},
- "immer": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz",
- "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==",
+ "node_modules/https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true
},
- "immutable": {
- "version": "4.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.12.tgz",
- "integrity": "sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A==",
- "dev": true
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
},
- "import-cwd": {
+ "node_modules/human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
- "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
- "requires": {
- "import-from": "^2.1.0"
+ "engines": {
+ "node": ">=10.17.0"
}
},
- "import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
- "dev": true,
- "requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "import-from": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
- "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
- "import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "node_modules/ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true,
- "requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
+ "engines": {
+ "node": ">= 4"
}
},
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
"dev": true
},
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
- "dev": true
+ "node_modules/import-in-the-middle": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz",
+ "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==",
+ "dependencies": {
+ "acorn": "^8.8.2",
+ "acorn-import-assertions": "^1.9.0",
+ "cjs-module-lexer": "^1.2.2",
+ "module-details-from-path": "^1.0.3"
+ }
},
- "infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "inflight": {
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
+ "dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
- "inherits": {
+ "node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "ini": {
+ "node_modules/ini": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
- "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ=="
+ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
+ "dev": true
},
- "internal-slot": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz",
- "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==",
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
"dev": true,
- "requires": {
- "es-abstract": "^1.17.0-next.1",
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
"has": "^1.0.3",
- "side-channel": "^1.0.2"
+ "side-channel": "^1.0.4"
},
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- }
+ "engines": {
+ "node": ">= 0.4"
}
},
- "interpret": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
- "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
- "dev": true
+ "node_modules/interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
},
- "into-stream": {
+ "node_modules/into-stream": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
"integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
"dev": true,
- "requires": {
+ "dependencies": {
"from2": "^2.1.1",
"p-is-promise": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "inversify": {
+ "node_modules/inversify": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.5.tgz",
"integrity": "sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA=="
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
- "dev": true
- },
- "ipaddr.js": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
- "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
- "dev": true
- },
- "is-absolute": {
+ "node_modules/is-absolute": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
"integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
"dev": true,
- "requires": {
+ "dependencies": {
"is-relative": "^1.0.0",
"is-windows": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-arguments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
- "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ "node_modules/is-bigint": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
+ "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-binary-path": {
+ "node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
+ "dev": true,
+ "dependencies": {
"binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "is-boolean-object": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz",
- "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=",
- "dev": true
- },
- "is-buffer": {
+ "node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-callable": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "node_modules/is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
"dev": true,
- "requires": {
- "ci-info": "^2.0.0"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
+ "node_modules/is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
"dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
- "is-docker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
- "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
- "dev": true
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "is-extglob": {
+ "node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "requires": {
- "is-extglob": "^2.1.1"
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-ip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz",
- "integrity": "sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas=",
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
- "requires": {
- "ip-regex": "^2.0.0"
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "is-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz",
- "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==",
- "dev": true
+ "node_modules/is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-natural-number": {
+ "node_modules/is-natural-number": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
"integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
"dev": true
},
- "is-negated-glob": {
+ "node_modules/is-negated-glob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
"integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true,
- "requires": {
- "kind-of": "^3.0.2"
+ "engines": {
+ "node": ">= 0.4"
},
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-number-object": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz",
- "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=",
- "dev": true
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
},
- "is-object": {
+ "node_modules/is-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
"integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
"dev": true
},
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
- "dev": true
- },
- "is-path-in-cwd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
- "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "node_modules/is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
"dev": true,
- "requires": {
- "is-path-inside": "^1.0.0"
+ "engines": {
+ "node": ">=6"
}
},
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "is-plain-obj": {
+ "node_modules/is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-plain-object": {
+ "node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
- "requires": {
+ "dependencies": {
"isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
- "dev": true
- },
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
- "requires": {
- "has": "^1.0.1"
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-relative": {
+ "node_modules/is-relative": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
"integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
"dev": true,
- "requires": {
+ "dependencies": {
"is-unc-path": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "is-retry-allowed": {
+ "node_modules/is-retry-allowed": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
"integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-root": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
- "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
- "dev": true
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-set": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz",
- "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==",
- "dev": true
- },
- "is-stream": {
+ "node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-string": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz",
- "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=",
- "dev": true
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-subset": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
- "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
- "dev": true
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-symbol": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
- "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "node_modules/is-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
+ "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
"dev": true,
- "requires": {
- "has-symbols": "^1.0.0"
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.18.5",
+ "foreach": "^2.0.5",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-typedarray": {
+ "node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
- "is-unc-path": {
+ "node_modules/is-unc-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
"integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"unc-path-regex": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "is-utf8": {
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
- "is-valid-glob": {
+ "node_modules/is-valid-glob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
"integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-windows": {
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "isarray": {
+ "node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
- "isexe": {
+ "node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
- "isnumeric": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz",
- "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=",
- "dev": true
- },
- "isobject": {
+ "node_modules/isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
- "dev": true
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "istanbul-lib-hook": {
+ "node_modules/istanbul-lib-hook": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
"integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"append-transform": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "istanbul-lib-instrument": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz",
- "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==",
+ "node_modules/istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/core": "^7.7.5",
- "@babel/parser": "^7.7.5",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
"@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.0.0",
"semver": "^6.3.0"
},
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
- "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.0.0"
- }
- },
- "@babel/core": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
- "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.7",
- "@babel/helpers": "^7.7.4",
- "@babel/parser": "^7.7.7",
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "json5": "^2.1.0",
- "lodash": "^4.17.13",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
- "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
- "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.7.4",
- "@babel/template": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
- "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
- "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/helpers": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
- "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.7.4",
- "@babel/traverse": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/parser": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
- "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
- "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4"
- }
- },
- "@babel/traverse": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
- "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.7.4",
- "@babel/helper-function-name": "^7.7.4",
- "@babel/helper-split-export-declaration": "^7.7.4",
- "@babel/parser": "^7.7.4",
- "@babel/types": "^7.7.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "@babel/types": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
- "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
+ "engines": {
+ "node": ">=8"
}
},
- "istanbul-lib-processinfo": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
- "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==",
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "requires": {
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/istanbul-lib-processinfo": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
+ "dev": true,
+ "dependencies": {
"archy": "^1.0.0",
- "cross-spawn": "^7.0.0",
- "istanbul-lib-coverage": "^3.0.0-alpha.1",
- "make-dir": "^3.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
- "uuid": "^3.3.3"
+ "uuid": "^8.3.2"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
"dependencies": {
- "cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "make-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
- "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "p-map": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "istanbul-lib-report": {
+ "node_modules/istanbul-lib-processinfo/node_modules/p-map": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-processinfo/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-processinfo/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
"dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "make-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
- "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "istanbul-lib-source-maps": {
+ "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
"integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
"dev": true,
- "requires": {
+ "dependencies": {
"debug": "^4.1.1",
"istanbul-lib-coverage": "^3.0.0",
"source-map": "^0.6.1"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
"dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==",
+ "node_modules/istanbul-reports": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
- "requires": {
+ "dependencies": {
"html-escaper": "^2.0.0",
"istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "isurl": {
+ "node_modules/isurl": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
"integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
"dev": true,
- "requires": {
+ "dependencies": {
"has-to-string-tag-x": "^1.2.0",
"is-object": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
}
},
- "iterate-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz",
- "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==",
- "dev": true
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
},
- "iterate-value": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz",
- "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==",
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "es-get-iterator": "^1.0.2",
- "iterate-iterator": "^1.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "jest-worker": {
- "version": "26.3.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
- "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
"dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "js-tokens": {
+ "node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
- "js-yaml": {
+ "node_modules/js-yaml": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
- "requires": {
+ "dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
},
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- }
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "jsdom": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.1.tgz",
- "integrity": "sha512-cQZRBB33arrDAeCrAEWn1U3SvrvC8XysBua9Oqg1yWrsY/gYcusloJC3RZJXuY5eehSCmws8f2YeliCqGSkrtQ==",
- "dev": true,
- "requires": {
- "abab": "^2.0.0",
- "acorn": "^6.1.1",
- "acorn-globals": "^4.3.2",
- "array-equal": "^1.0.0",
- "cssom": "^0.3.6",
- "cssstyle": "^1.2.2",
- "data-urls": "^1.1.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.11.1",
- "html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.1.4",
- "parse5": "5.1.0",
- "pn": "^1.1.0",
- "request": "^2.88.0",
- "request-promise-native": "^1.0.7",
- "saxes": "^3.1.9",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^3.0.1",
- "w3c-hr-time": "^1.0.1",
- "w3c-xmlserializer": "^1.1.2",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^7.0.0",
- "ws": "^7.0.0",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "escodegen": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
- "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==",
- "dev": true,
- "requires": {
- "esprima": "^3.1.3",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- }
- },
- "parse5": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
- "dev": true
- },
- "tough-cookie": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
- "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
- "dev": true,
- "requires": {
- "ip-regex": "^2.1.0",
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- }
+ "node_modules/js-yaml/node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "jsesc": {
+ "node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "json-buffer": {
+ "node_modules/json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
"integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
"dev": true
},
- "json-edm-parser": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/json-edm-parser/-/json-edm-parser-0.1.2.tgz",
- "integrity": "sha1-HmCw/vG8CvZ7wNFG393lSGzWFbQ=",
- "requires": {
- "jsonparse": "~1.2.0"
- }
- },
- "json-loader": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
- "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-traverse": {
+ "node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
- "json-stable-stringify-without-jsonify": {
+ "node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "json5": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
- "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "requires": {
- "minimist": "^1.2.0"
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "jsonc-parser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.1.0.tgz",
- "integrity": "sha512-n9GrT8rrr2fhvBbANa1g+xFmgGK5X91KFeDwlKQ3+SJfmH5+tKv/M/kahx/TXOMflfWHKGKqKyfHQaLKTNzJ6w=="
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
},
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "requires": {
- "graceful-fs": "^4.1.6"
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dev": true,
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
}
},
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
+ "node_modules/jsonwebtoken/node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
},
- "jsonparse": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz",
- "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70="
+ "node_modules/jsonwebtoken/node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
},
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
+ "node_modules/jsx-ast-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz",
+ "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.3",
+ "object.assign": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=4.0"
}
},
- "jsx-ast-utils": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz",
- "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==",
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"dev": true,
- "requires": {
- "array-includes": "^3.1.1",
- "object.assign": "^4.1.0"
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
}
},
- "just-debounce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
- "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=",
+ "node_modules/just-extend": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
- "just-extend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
- "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==",
- "dev": true
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
},
- "keyv": {
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keytar": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
+ }
+ },
+ "node_modules/keyv": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
"integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
"dev": true,
- "requires": {
+ "dependencies": {
"json-buffer": "3.0.0"
}
},
- "kind-of": {
+ "node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "kuler": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
- "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
- "requires": {
- "colornames": "^1.1.1"
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "language-subtag-registry": {
+ "node_modules/language-subtag-registry": {
"version": "0.3.20",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz",
"integrity": "sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg==",
"dev": true
},
- "language-tags": {
+ "node_modules/language-tags": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
"integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=",
"dev": true,
- "requires": {
+ "dependencies": {
"language-subtag-registry": "~0.3.2"
}
},
- "last-run": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
- "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
+ "node_modules/last-run": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz",
+ "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==",
"dev": true,
- "requires": {
- "default-resolution": "^2.0.0",
- "es6-weak-map": "^2.0.1"
+ "engines": {
+ "node": ">= 10.13.0"
}
},
- "lazystream": {
+ "node_modules/lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
- "requires": {
+ "dependencies": {
"readable-stream": "^2.0.5"
},
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "engines": {
+ "node": ">= 0.6.3"
}
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "lead": {
+ "node_modules/lead": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
"integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
"dev": true,
- "requires": {
+ "dependencies": {
"flush-write-stream": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
}
},
- "less": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz",
- "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==",
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true,
- "requires": {
- "clone": "^2.1.2",
- "errno": "^0.1.1",
- "graceful-fs": "^4.1.2",
- "image-size": "~0.5.0",
- "mime": "^1.4.1",
- "mkdirp": "^0.5.0",
- "promise": "^7.1.1",
- "request": "^2.83.0",
- "source-map": "~0.6.0"
- },
- "dependencies": {
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
- "dev": true
- }
+ "engines": {
+ "node": ">=6"
}
},
- "less-loader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
- "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
- "requires": {
- "clone": "^2.1.1",
- "loader-utils": "^1.1.0",
- "pify": "^4.0.1"
- },
"dependencies": {
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
- "dev": true
- }
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "less-plugin-inline-urls": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/less-plugin-inline-urls/-/less-plugin-inline-urls-1.2.0.tgz",
- "integrity": "sha1-XdqwegwlcfGihVz5Kd3J78Hjisw=",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "dependencies": {
+ "immediate": "~3.0.5"
}
},
- "liftoff": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
- "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+ "node_modules/liftoff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz",
+ "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==",
"dev": true,
- "requires": {
- "extend": "^3.0.0",
- "findup-sync": "^3.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
+ "dependencies": {
+ "extend": "^3.0.2",
+ "findup-sync": "^5.0.0",
+ "fined": "^2.0.0",
+ "flagged-respawn": "^2.0.0",
+ "is-plain-object": "^5.0.0",
+ "rechoir": "^0.8.0",
+ "resolve": "^1.20.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "line-by-line": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/line-by-line/-/line-by-line-0.1.6.tgz",
- "integrity": "sha512-MmwVPfOyp0lWnEZ3fBA8Ah4pMFvxO6WgWovqZNu7Y4J0TNnGcsV4S1LzECHbdgqk1hoHc2mFP1Axc37YUqwafg=="
- },
- "linkify-it": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
- "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
+ "node_modules/liftoff/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
- "requires": {
- "uc.micro": "^1.0.1"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
"dependencies": {
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
+ "uc.micro": "^1.0.1"
}
},
- "loader-runner": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
- "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
- "dev": true
+ "node_modules/loader-runner": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
+ "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
},
- "loader-utils": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
- "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
- "requires": {
+ "dependencies": {
"big.js": "^5.2.2",
- "emojis-list": "^2.0.0",
- "json5": "^1.0.1"
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
},
- "dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- }
+ "engines": {
+ "node": ">=8.9.0"
}
},
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "lodash": {
+ "node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "lodash._reinterpolate": {
+ "node_modules/lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
"dev": true
},
- "lodash.defaults": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
- "dev": true
- },
- "lodash.difference": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
- "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
- "dev": true
- },
- "lodash.escape": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
- "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=",
- "dev": true
- },
- "lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
- "dev": true
- },
- "lodash.flattendeep": {
+ "node_modules/lodash.flattendeep": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true
},
- "lodash.get": {
+ "node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
- "lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
"dev": true
},
- "lodash.isplainobject": {
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "dev": true
+ },
+ "node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
"dev": true
},
- "lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
"dev": true
},
- "lodash.some": {
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
+ },
+ "node_modules/lodash.some": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
"integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
"dev": true
},
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
- "lodash.template": {
+ "node_modules/lodash.template": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
"integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
"dev": true,
- "requires": {
+ "dependencies": {
"lodash._reinterpolate": "^3.0.0",
"lodash.templatesettings": "^4.0.0"
}
},
- "lodash.templatesettings": {
+ "node_modules/lodash.templatesettings": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
"integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"lodash._reinterpolate": "^3.0.0"
}
},
- "lodash.union": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
"dev": true
},
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
- "dev": true
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "log-symbols": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
- "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
+ "node_modules/log-symbols/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "chalk": "^2.4.2"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "log4js": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.1.2.tgz",
- "integrity": "sha512-knS4Y30pC1e0n7rfx3VxcLOdBCsEo0o6/C7PVTGxdVK+5b1TYOSGQPn9FDcrhkoQBV29qwmA2mtkznPAQKnxQg==",
- "requires": {
- "date-format": "^3.0.0",
- "debug": "^4.1.1",
- "flatted": "^2.0.1",
- "rfdc": "^1.1.4",
- "streamroller": "^2.2.3"
+ "node_modules/log-symbols/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "logform": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
- "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==",
- "requires": {
- "colors": "^1.2.1",
- "fast-safe-stringify": "^2.0.4",
- "fecha": "^2.3.3",
- "ms": "^2.1.1",
- "triple-beam": "^1.3.0"
+ "node_modules/log-symbols/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/log-symbols/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "lolex": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz",
- "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==",
+ "node_modules/log-symbols/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "loose-envify": {
+ "node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dev": true,
- "requires": {
+ "dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
}
},
- "lower-case": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
- "dev": true
+ "node_modules/loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.0"
+ }
},
- "lowercase-keys": {
+ "node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "lru-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
- "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
- "requires": {
- "es5-ext": "~0.10.2"
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "make-error": {
+ "node_modules/make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
- "make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
"dev": true,
- "requires": {
- "kind-of": "^6.0.2"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "mamacro": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
- "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
- "dev": true
- },
- "map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "node_modules/markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
"dev": true,
- "requires": {
- "p-defer": "^1.0.0"
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
}
},
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
- "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "node_modules/markdown-it/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dev": true,
- "requires": {
- "object-visit": "^1.0.0"
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
}
},
- "markdown-it": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
- "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
+ "node_modules/md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
"dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "entities": "~2.0.0",
- "linkify-it": "^2.0.0",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
"dependencies": {
- "entities": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
- "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
- "dev": true
- }
- }
- },
- "matchdep": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
- "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
- "dev": true,
- "requires": {
- "findup-sync": "^2.0.0",
- "micromatch": "^3.0.4",
- "resolve": "^1.4.0",
- "stack-trace": "0.0.10"
- },
- "dependencies": {
- "findup-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
- "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- }
- },
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "math-expression-evaluator": {
- "version": "1.2.22",
- "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz",
- "integrity": "sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==",
- "dev": true
- },
- "md5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
- "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
- "requires": {
- "charenc": "~0.0.1",
- "crypt": "~0.0.1",
- "is-buffer": "~1.1.1"
- }
- },
- "md5.js": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
- "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
- "requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
}
},
- "mdurl": {
+ "node_modules/mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
"dev": true
},
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
- },
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- },
- "dependencies": {
- "p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
- "dev": true
- }
- }
- },
- "memoize-one": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
- "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==",
- "dev": true
- },
- "memoizee": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
- "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.45",
- "es6-weak-map": "^2.0.2",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.1",
- "lru-queue": "0.1",
- "next-tick": "1",
- "timers-ext": "^0.1.5"
- }
- },
- "memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
- "dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
- "dev": true
- },
- "merge-stream": {
+ "node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
- "merge2": {
+ "node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
- },
- "microevent.ts": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz",
- "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
},
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "node_modules/micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
- "requires": {
- "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"
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
}
},
- "miller-rabin": {
+ "node_modules/miller-rabin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"dev": true,
- "requires": {
+ "dependencies": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
+ },
+ "bin": {
+ "miller-rabin": "bin/miller-rabin"
}
},
- "mime": {
+ "node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "mime-db": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
- "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "mime-types": {
- "version": "2.1.24",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
- "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
- "requires": {
- "mime-db": "1.40.0"
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "mimic-fn": {
+ "node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "mimic-response": {
+ "node_modules/mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "minimalistic-assert": {
+ "node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
- "minimalistic-crypto-utils": {
+ "node_modules/minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
"integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
"dev": true
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
+ "node_modules/minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- },
+ "node_modules/minimatch/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "optional": true
- }
+ "balanced-match": "^1.0.0"
}
},
- "minipass-collect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
- "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
- "requires": {
- "minipass": "^3.0.0"
- },
"dependencies": {
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
}
},
- "minipass-flush": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
- "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true,
- "requires": {
- "minipass": "^3.0.0"
+ "optional": true
+ },
+ "node_modules/mocha": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
+ "dev": true,
+ "dependencies": {
+ "@ungap/promise-all-settled": "1.1.2",
+ "ansi-colors": "4.1.1",
+ "browser-stdout": "1.3.1",
+ "chokidar": "3.5.3",
+ "debug": "4.3.3",
+ "diff": "5.0.0",
+ "escape-string-regexp": "4.0.0",
+ "find-up": "5.0.0",
+ "glob": "7.2.0",
+ "growl": "1.10.5",
+ "he": "1.2.0",
+ "js-yaml": "4.1.0",
+ "log-symbols": "4.1.0",
+ "minimatch": "4.2.1",
+ "ms": "2.1.3",
+ "nanoid": "3.3.1",
+ "serialize-javascript": "6.0.0",
+ "strip-json-comments": "3.1.1",
+ "supports-color": "8.1.1",
+ "which": "2.0.2",
+ "workerpool": "6.2.0",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
+ "yargs-unparser": "2.0.0"
+ },
+ "bin": {
+ "_mocha": "bin/_mocha",
+ "mocha": "bin/mocha"
},
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mochajs"
+ }
+ },
+ "node_modules/mocha-junit-reporter": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.2.tgz",
+ "integrity": "sha512-vYwWq5hh3v1lG0gdQCBxwNipBfvDiAM1PHroQRNp96+2l72e9wEUTw+mzoK+O0SudgfQ7WvTQZ9Nh3qkAYAjfg==",
+ "dev": true,
"dependencies": {
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
+ "debug": "^2.2.0",
+ "md5": "^2.1.0",
+ "mkdirp": "~0.5.1",
+ "strip-ansi": "^6.0.1",
+ "xml": "^1.0.0"
+ },
+ "peerDependencies": {
+ "mocha": ">=2.2.5"
}
},
- "minipass-pipeline": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "node_modules/mocha-multi-reporters": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz",
+ "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==",
"dev": true,
- "requires": {
- "minipass": "^3.0.0"
+ "dependencies": {
+ "debug": "^4.1.1",
+ "lodash": "^4.17.15"
+ },
+ "engines": {
+ "node": ">=6.0.0"
},
+ "peerDependencies": {
+ "mocha": ">=3.1.2"
+ }
+ },
+ "node_modules/mocha-multi-reporters/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
"dependencies": {
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "optional": true,
- "requires": {
- "minipass": "^2.9.0"
+ "node_modules/mocha/node_modules/ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
}
},
- "mississippi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
- "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "node_modules/mocha/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
- "requires": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^3.0.0",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
- },
"dependencies": {
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "node_modules/mocha/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/mocha/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/nanoid": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
+ "dev": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/mocha/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/module-details-from-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
+ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="
+ },
+ "node_modules/mrmime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
+ "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mute-stdout": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz",
+ "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/named-js-regexp": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/named-js-regexp/-/named-js-regexp-1.3.5.tgz",
+ "integrity": "sha512-XO0DPujDP9IWpkt690iWLreKztb/VB811DGl5N3z7BfhkMJuiVZXOi6YN/fEB9qkvtMVTgSZDW8pzdVt8vj/FA=="
+ },
+ "node_modules/nanoid": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
+ "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==",
+ "dev": true
+ },
+ "node_modules/napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/nise": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
+ "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.8.3",
+ "@sinonjs/fake-timers": ">=5",
+ "@sinonjs/text-encoding": "^0.7.1",
+ "just-extend": "^4.0.2",
+ "path-to-regexp": "^1.7.0"
+ }
+ },
+ "node_modules/node-abi": {
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
+ "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/node-has-native-dependencies": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-has-native-dependencies/-/node-has-native-dependencies-1.0.2.tgz",
+ "integrity": "sha1-MVLsl1O2ZB5NMi0YXdSTBkmto9o=",
+ "dev": true,
+ "dependencies": {
+ "fs-walk": "0.0.1"
+ },
+ "bin": {
+ "node-has-native-dependencies": "index.js"
+ }
+ },
+ "node_modules/node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "dependencies": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer",
+ "dev": true,
+ "dependencies": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "node_modules/node-loader": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-1.0.3.tgz",
+ "integrity": "sha512-8c9ef5q24F0AjrPxUjdX7qdTlsU1zZCPeqYvSBCH1TJko3QW4qu1uA1C9KbOPdaRQwREDdbSYZgltBAlbV7l5g==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz",
+ "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==",
+ "dev": true,
+ "dependencies": {
+ "assert": "^2.0.0",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^6.0.3",
+ "console-browserify": "^1.2.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.12.0",
+ "domain-browser": "^4.19.0",
+ "events": "^3.3.0",
+ "filter-obj": "^2.0.2",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
+ "process": "^0.11.10",
+ "punycode": "^2.1.1",
+ "querystring-es3": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "stream-browserify": "^3.0.0",
+ "stream-http": "^3.2.0",
+ "string_decoder": "^1.3.0",
+ "timers-browserify": "^2.0.12",
+ "tty-browserify": "^0.0.1",
+ "url": "^0.11.0",
+ "util": "^0.12.4",
+ "vm-browserify": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/assert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
+ "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
+ "dev": true,
+ "dependencies": {
+ "es6-object-assign": "^1.1.0",
+ "is-nan": "^1.2.1",
+ "object-is": "^1.0.1",
+ "util": "^0.12.0"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/domain-browser": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz",
+ "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+ "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "~2.0.4",
+ "readable-stream": "^3.5.0"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/stream-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+ "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ }
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "node_modules/node-polyfill-webpack-plugin/node_modules/util": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
+ "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "safe-buffer": "^5.1.2",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "node_modules/node-preload": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
+ "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
+ "dev": true,
+ "dependencies": {
+ "process-on-spawn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "dev": true
+ },
+ "node_modules/node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/antelle"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "dev": true,
+ "dependencies": {
+ "prepend-http": "^2.0.0",
+ "query-string": "^5.0.1",
+ "sort-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/normalize-url/node_modules/sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/now-and-later": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+ "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/nyc": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
+ "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "caching-transform": "^4.0.0",
+ "convert-source-map": "^1.7.0",
+ "decamelize": "^1.2.0",
+ "find-cache-dir": "^3.2.0",
+ "find-up": "^4.1.0",
+ "foreground-child": "^2.0.0",
+ "get-package-type": "^0.1.0",
+ "glob": "^7.1.6",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-hook": "^3.0.0",
+ "istanbul-lib-instrument": "^4.0.0",
+ "istanbul-lib-processinfo": "^2.0.2",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.0.2",
+ "make-dir": "^3.0.0",
+ "node-preload": "^0.2.1",
+ "p-map": "^3.0.0",
+ "process-on-spawn": "^1.0.0",
+ "resolve-from": "^5.0.0",
+ "rimraf": "^3.0.0",
+ "signal-exit": "^3.0.2",
+ "spawn-wrap": "^2.0.0",
+ "test-exclude": "^6.0.0",
+ "yargs": "^15.0.2"
+ },
+ "bin": {
+ "nyc": "bin/nyc.js"
+ },
+ "engines": {
+ "node": ">=8.9"
+ }
+ },
+ "node_modules/nyc/node_modules/p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+ "dev": true,
+ "dependencies": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "dev": true,
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ordered-read-streams": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "node_modules/os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
+ "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-event": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
+ "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
+ "dev": true,
+ "dependencies": {
+ "p-timeout": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
+ "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
+ "dev": true,
+ "dependencies": {
+ "p-finally": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-hash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
+ "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.15",
+ "hasha": "^5.0.0",
+ "lodash.flattendeep": "^4.4.0",
+ "release-zalgo": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module/node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "dependencies": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+ "dev": true,
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/parse-semver": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^5.1.0"
+ }
+ },
+ "node_modules/parse-semver/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "node_modules/path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+ "dev": true,
+ "dependencies": {
+ "path-root-regex": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "0.0.1"
+ }
+ },
+ "node_modules/path-to-regexp/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "dependencies": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/plugin-error": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
+ "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^1.0.1",
+ "arr-diff": "^4.0.0",
+ "arr-union": "^3.1.0",
+ "extend-shallow": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/postinstall-build": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.3.tgz",
+ "integrity": "sha512-vPvPe8TKgp4FLgY3+DfxCE5PIfoXBK2lyLfNCxsRbDsV6vS4oU5RG/IWxrblMn6heagbnMED3MemUQllQ2bQUg==",
+ "deprecated": "postinstall-build's behavior is now built into npm! You should migrate off of postinstall-build and use the new `prepare` lifecycle script with npm 5.0.0 or greater.",
+ "dev": true,
+ "bin": {
+ "postinstall-build": "cli.js"
+ }
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz",
+ "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/process-on-spawn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
+ "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
+ "dev": true,
+ "dependencies": {
+ "fromentries": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "dependencies": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
+ "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+ "dev": true,
+ "dependencies": {
+ "decode-uri-component": "^0.2.0",
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "dev": true
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "dev": true,
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readable-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.20.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "dev": true
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz",
+ "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/release-zalgo": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
+ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
+ "dev": true,
+ "dependencies": {
+ "es6-error": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/remove-bom-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+ "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5",
+ "is-utf8": "^0.2.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/remove-bom-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+ "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
+ "dev": true,
+ "dependencies": {
+ "remove-bom-buffer": "^3.0.0",
+ "safe-buffer": "^5.1.0",
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "node_modules/replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/replace-homedir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz",
+ "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-in-the-middle": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz",
+ "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.22.1"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/require-in-the-middle/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-options": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
+ "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
+ "dev": true,
+ "dependencies": {
+ "value-or-function": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rewiremock": {
+ "version": "3.14.5",
+ "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz",
+ "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "compare-module-exports": "^2.1.0",
+ "lodash.some": "^4.6.0",
+ "lodash.template": "^4.4.0",
+ "node-libs-browser": "^2.1.0",
+ "path-parse": "^1.0.5",
+ "wipe-node-cache": "^2.1.2",
+ "wipe-webpack-cache": "^2.1.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/rxjs-compat": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz",
+ "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/schema-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/seek-bzip": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz",
+ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=",
+ "dev": true,
+ "dependencies": {
+ "commander": "~2.8.1"
+ },
+ "bin": {
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
+ }
+ },
+ "node_modules/seek-bzip/node_modules/commander": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
+ "dev": true,
+ "dependencies": {
+ "graceful-readlink": ">= 1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6.x"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-greatest-satisfied-range": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz",
+ "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==",
+ "dev": true,
+ "dependencies": {
+ "sver": "^1.8.3"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "node_modules/sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ }
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shimmer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
+ "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
+ },
+ "node_modules/shortid": {
+ "version": "2.2.16",
+ "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
+ "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
+ "dev": true,
+ "dependencies": {
+ "nanoid": "^2.1.0"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/simple-get/node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/simple-get/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/sinon": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz",
+ "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.8.3",
+ "@sinonjs/fake-timers": "^9.0.0",
+ "@sinonjs/samsam": "^6.1.1",
+ "diff": "^5.0.0",
+ "nise": "^5.1.1",
+ "supports-color": "^7.2.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/sinon"
+ }
+ },
+ "node_modules/sinon/node_modules/diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/sinon/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sinon/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
+ "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
+ "dev": true,
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+ "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
+ "dev": true,
+ "dependencies": {
+ "sort-keys": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sparkles": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz",
+ "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/spawn-wrap": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz",
+ "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^2.0.0",
+ "is-windows": "^1.0.2",
+ "make-dir": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "signal-exit": "^3.0.2",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "node_modules/stack-chain": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
+ "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug=="
+ },
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/stream-composer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz",
+ "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==",
+ "dev": true,
+ "dependencies": {
+ "streamx": "^2.13.2"
+ }
+ },
+ "node_modules/stream-exhaust": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+ "dev": true
+ },
+ "node_modules/stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "dependencies": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "node_modules/streamx": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
+ "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
+ "dev": true,
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.1",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-dirs": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+ "dev": true,
+ "dependencies": {
+ "is-natural-number": "^4.0.1"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-outer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+ "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sver": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz",
+ "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==",
+ "dev": true,
+ "optionalDependencies": {
+ "semver": "^6.3.0"
+ }
+ },
+ "node_modules/sver/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/table": {
+ "version": "6.7.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz",
+ "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz",
+ "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/tar-fs/node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/tar-fs/node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/tar-fs/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tar-fs/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+ "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.2.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.1",
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/tas-client": {
+ "version": "0.2.33",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz",
+ "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg=="
+ },
+ "node_modules/teex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
+ "dev": true,
+ "dependencies": {
+ "streamx": "^2.12.5"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.2",
+ "acorn": "^8.5.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
+ "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==",
+ "dev": true,
+ "dependencies": {
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.0",
+ "source-map": "^0.6.1",
+ "terser": "^5.7.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz",
+ "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==",
+ "dev": true,
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/through2-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+ "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+ "dev": true,
+ "dependencies": {
+ "through2": "~2.0.0",
+ "xtend": "~4.0.0"
+ }
+ },
+ "node_modules/timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "dev": true,
+ "dependencies": {
+ "setimmediate": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/to-absolute-glob": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+ "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
+ "dev": true,
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "is-negated-glob": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "node_modules/to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/to-through": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
+ "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
+ "dev": true,
+ "dependencies": {
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/trim-repeated": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ts-loader": {
+ "version": "9.2.8",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz",
+ "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/ts-loader/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-loader/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-mockito": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/ts-mockito/-/ts-mockito-2.6.1.tgz",
+ "integrity": "sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.5"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "10.7.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
+ "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
+ "dev": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "0.7.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.0",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.1",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz",
+ "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.7.0",
+ "tsconfig-paths": "^3.9.0"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/typed-rest-client": {
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
+ "dev": true,
+ "dependencies": {
+ "qs": "^6.9.1",
+ "tunnel": "0.0.6",
+ "underscore": "^1.12.1"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typemoq": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/typemoq/-/typemoq-2.1.0.tgz",
+ "integrity": "sha512-DtRNLb7x8yCTv/KHlwes+NI+aGb4Vl1iPC63Hhtcvk1DpxSAZzKWQv0RQFY0jX2Uqj0SDBNl8Na4e6MV6TNDgw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "circular-json": "^0.3.1",
+ "lodash": "^4.17.4",
+ "postinstall-build": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.5.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
+ "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/uint64be": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-3.0.0.tgz",
+ "integrity": "sha512-mliiCSrsE29aNBI7O9W5gGv6WmA9kBR8PtTt6Apaxns076IRdYrrtFhXHEWMj5CSum3U7cv7/pi4xmi4XsIOqg=="
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/underscore": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
+ "dev": true
+ },
+ "node_modules/undertaker": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz",
+ "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==",
+ "dev": true,
+ "dependencies": {
+ "bach": "^2.0.1",
+ "fast-levenshtein": "^3.0.0",
+ "last-run": "^2.0.0",
+ "undertaker-registry": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/undertaker-registry": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz",
+ "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/undertaker/node_modules/fast-levenshtein": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
+ "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
+ "dev": true,
+ "dependencies": {
+ "fastest-levenshtein": "^1.0.7"
+ }
+ },
+ "node_modules/unicode": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/unicode/-/unicode-14.0.0.tgz",
+ "integrity": "sha512-BjinxTXkbm9Jomp/YBTMGusr4fxIG67fNGShHIRAL16Ur2GJTq2xvLi+sxuiJmInCmwqqev2BCFKyvbfp/yAkg==",
+ "engines": {
+ "node": ">= 0.8.x"
+ }
+ },
+ "node_modules/unique-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+ "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+ "dev": true,
+ "dependencies": {
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "through2-filter": "^3.0.0"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "dependencies": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "node_modules/url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
+ "dev": true
+ },
+ "node_modules/url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dev": true,
+ "dependencies": {
+ "prepend-http": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/url-to-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
+ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ },
+ "node_modules/util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "2.0.3"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "node_modules/util/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true
+ },
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
+ "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
+ "dev": true
+ },
+ "node_modules/v8flags": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz",
+ "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/value-or-function": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
+ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+ "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-contents": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz",
+ "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^5.0.0",
+ "vinyl": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/vinyl-contents/node_modules/bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/vinyl-contents/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/vinyl-contents/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/vinyl-contents/node_modules/replace-ext": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/vinyl-contents/node_modules/vinyl": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz",
+ "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^2.1.2",
+ "clone-stats": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0",
+ "replace-ext": "^2.0.0",
+ "teex": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/vinyl-fs": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+ "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
+ "dev": true,
+ "dependencies": {
+ "fs-mkdirp-stream": "^1.0.0",
+ "glob-stream": "^6.1.0",
+ "graceful-fs": "^4.0.0",
+ "is-valid-glob": "^1.0.0",
+ "lazystream": "^1.0.0",
+ "lead": "^1.0.0",
+ "object.assign": "^4.0.4",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.3.3",
+ "remove-bom-buffer": "^3.0.0",
+ "remove-bom-stream": "^1.2.0",
+ "resolve-options": "^1.1.0",
+ "through2": "^2.0.0",
+ "to-through": "^2.0.0",
+ "value-or-function": "^3.0.0",
+ "vinyl": "^2.0.0",
+ "vinyl-sourcemap": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-sourcemap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+ "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
+ "dev": true,
+ "dependencies": {
+ "append-buffer": "^1.0.2",
+ "convert-source-map": "^1.5.0",
+ "graceful-fs": "^4.1.6",
+ "normalize-path": "^2.1.1",
+ "now-and-later": "^2.0.0",
+ "remove-bom-buffer": "^3.0.0",
+ "vinyl": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-sourcemap/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "node_modules/vscode-debugprotocol": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz",
+ "integrity": "sha512-+OMm11R1bGYbpIJ5eQIkwoDGFF4GvBz3Ztl6/VM+/RNNb2Gjk2c0Ku+oMmfhlTmTlPCpgHBsH4JqVCbUYhu5bA==",
+ "deprecated": "This package has been renamed to @vscode/debugprotocol, please update to the new name"
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "9.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
+ "integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageclient": {
+ "version": "10.0.0-next.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
+ "integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
+ "dependencies": {
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.0",
+ "vscode-languageserver-protocol": "3.17.6-next.6"
+ },
+ "engines": {
+ "vscode": "^1.89.0"
+ }
+ },
+ "node_modules/vscode-languageclient/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/vscode-languageclient/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.6-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
+ "integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
+ "dependencies": {
+ "vscode-jsonrpc": "9.0.0-next.4",
+ "vscode-languageserver-types": "3.17.6-next.4"
+ }
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.6-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
+ "integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
+ },
+ "node_modules/vscode-tas-client": {
+ "version": "0.1.84",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz",
+ "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==",
+ "dependencies": {
+ "tas-client": "0.2.33"
+ },
+ "engines": {
+ "vscode": "^1.85.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dev": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.76.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
+ "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^0.0.51",
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/wasm-edit": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.7.6",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.10.0",
+ "es-module-lexer": "^0.9.0",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.1.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.1.3",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
+ "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "gzip-size": "^6.0.0",
+ "lodash": "^4.17.20",
+ "opener": "^1.5.2",
+ "sirv": "^1.0.7",
+ "ws": "^7.3.1"
+ },
+ "bin": {
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/webpack-cli": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz",
+ "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^1.1.1",
+ "@webpack-cli/info": "^1.4.1",
+ "@webpack-cli/serve": "^1.6.1",
+ "colorette": "^2.0.14",
+ "commander": "^7.0.0",
+ "execa": "^5.0.0",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^2.2.0",
+ "rechoir": "^0.7.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "bin": {
+ "webpack-cli": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "webpack": "4.x.x || 5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "@webpack-cli/generators": {
+ "optional": true
+ },
+ "@webpack-cli/migrate": {
+ "optional": true
+ },
+ "webpack-bundle-analyzer": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/interpret": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.9.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/webpack-fix-default-import-plugin": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/webpack-fix-default-import-plugin/-/webpack-fix-default-import-plugin-1.0.3.tgz",
+ "integrity": "sha1-iCuOTRqpPEjLj9r4Rvx52G+C8U8=",
+ "dev": true
+ },
+ "node_modules/webpack-merge": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+ "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/webpack-node-externals": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz",
+ "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/webpack-require-from": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/webpack-require-from/-/webpack-require-from-1.8.6.tgz",
+ "integrity": "sha512-QmRsOkOYPKeNXp4uVc7qxnPrFQPrP4bhOc/gl4QenTFNgXdEbF1U8VC+jM/Sljb0VzJLNgyNiHlVkuHjcmDtBQ==",
+ "dev": true,
+ "peerDependencies": {
+ "tapable": "^2.2.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-boxed-primitive/node_modules/is-boolean-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
+ "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-boxed-primitive/node_modules/is-number-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
+ "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
+ "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.18.5",
+ "foreach": "^2.0.5",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
+ "dev": true
+ },
+ "node_modules/winreg": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz",
+ "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs="
+ },
+ "node_modules/wipe-node-cache": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.2.tgz",
+ "integrity": "sha512-m7NXa8qSxBGMtdQilOu53ctMaIBXy93FOP04EC1Uf4bpsE+r+adfLKwIMIvGbABsznaSNxK/ErD4xXDyY5og9w==",
+ "dev": true
+ },
+ "node_modules/wipe-webpack-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wipe-webpack-cache/-/wipe-webpack-cache-2.1.0.tgz",
+ "integrity": "sha512-OXzQMGpA7MnQQ8AG+uMl5mWR2ezy6fw1+DMHY+wzYP1qkF1jrek87psLBmhZEj+er4efO/GD4R8jXWFierobaA==",
+ "dev": true,
+ "dependencies": {
+ "wipe-node-cache": "^2.1.0"
+ }
+ },
+ "node_modules/worker-loader": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz",
+ "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/workerpool": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz",
+ "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+ "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
+ "dev": true
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
+ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/yargs": {
+ "version": "15.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
+ "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
+ "dev": true,
+ "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.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-unparser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^6.0.0",
+ "decamelize": "^4.0.0",
+ "flat": "^5.0.2",
+ "is-plain-obj": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-unparser/node_modules/camelcase": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
+ "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs-unparser/node_modules/decamelize": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs-unparser/node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "dependencies": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/yargs/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/yargs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/yargs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/yargs/node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "node_modules/yargs/node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "node_modules/yargs/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yazl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3"
+ }
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ },
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@azure/abort-controller": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
+ "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
+ "requires": {
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/core-auth": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
+ "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
+ "requires": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/core-client": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz",
+ "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.9.1",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.6.2"
+ },
+ "dependencies": {
+ "@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.6.2"
+ }
+ },
+ "@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ }
+ }
+ },
+ "@azure/core-rest-pipeline": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz",
+ "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==",
+ "requires": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.4.0",
+ "@azure/core-tracing": "^1.0.1",
+ "@azure/core-util": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "form-data": "^4.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "tslib": "^2.2.0",
+ "uuid": "^8.3.0"
+ },
+ "dependencies": {
+ "@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "requires": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/core-tracing": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
+ "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
+ "requires": {
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/core-util": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz",
+ "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==",
+ "requires": {
+ "@azure/abort-controller": "^1.0.0",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/identity": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.1.tgz",
+ "integrity": "sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-client": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^3.11.1",
+ "@azure/msal-node": "^2.9.2",
+ "events": "^3.0.0",
+ "jws": "^4.0.0",
+ "open": "^8.0.0",
+ "stoppable": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "requires": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "dependencies": {
+ "@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.6.2"
+ }
+ }
+ }
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ }
+ }
+ },
+ "@azure/logger": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
+ "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
+ "requires": {
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@azure/msal-browser": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.14.0.tgz",
+ "integrity": "sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA==",
+ "dev": true,
+ "requires": {
+ "@azure/msal-common": "14.10.0"
+ }
+ },
+ "@azure/msal-common": {
+ "version": "14.10.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.10.0.tgz",
+ "integrity": "sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA==",
+ "dev": true
+ },
+ "@azure/msal-node": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.9.2.tgz",
+ "integrity": "sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==",
+ "dev": true,
+ "requires": {
+ "@azure/msal-common": "14.12.0",
+ "jsonwebtoken": "^9.0.0",
+ "uuid": "^8.3.0"
+ },
+ "dependencies": {
+ "@azure/msal-common": {
+ "version": "14.12.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz",
+ "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==",
+ "dev": true
+ }
+ }
+ },
+ "@azure/opentelemetry-instrumentation-azure-sdk": {
+ "version": "1.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz",
+ "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==",
+ "requires": {
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/logger": "^1.0.0",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/instrumentation": "^0.41.2",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+ "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+ "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz",
+ "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.6",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.5"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.23.0",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+ "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@nicolo-ribaudo/semver-v6": "^6.3.3",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true
+ },
+ "@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+ "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
+ "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "dev": true
+ },
+ "@babel/helpers": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "dev": true
+ },
+ "@babel/runtime": {
+ "version": "7.17.8",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz",
+ "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.5.tgz",
+ "integrity": "sha512-RMafpmrNB5E/bwdSphLr8a8++9TosnyJp98RZzI6VOx2R2CCMpsXXXRvmI700O9oEKpXdZat6oEK68/F0zjd4A==",
+ "dev": true,
+ "requires": {
+ "core-js-pure": "^3.0.0",
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ }
+ }
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@cspotcode/source-map-consumer": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
+ "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
+ "dev": true
+ },
+ "@cspotcode/source-map-support": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
+ "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
+ "dev": true,
+ "requires": {
+ "@cspotcode/source-map-consumer": "0.8.0"
+ }
+ },
+ "@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true
+ },
+ "@eslint/eslintrc": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+ "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^13.9.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "globals": {
+ "version": "13.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
+ "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ }
+ }
+ },
+ "@gulpjs/messages": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz",
+ "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==",
+ "dev": true
+ },
+ "@gulpjs/to-absolute-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz",
+ "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==",
+ "dev": true,
+ "requires": {
+ "is-negated-glob": "^1.0.0"
+ }
+ },
+ "@humanwhocodes/config-array": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+ "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+ "dev": true,
+ "requires": {
+ "@humanwhocodes/object-schema": "^1.2.0",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
+ },
+ "@istanbuljs/load-nyc-config": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz",
+ "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "@istanbuljs/nyc-config-typescript": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz",
+ "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==",
+ "dev": true,
+ "requires": {
+ "@istanbuljs/schema": "^0.1.2"
+ }
+ },
+ "@istanbuljs/schema": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
+ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
+ "dev": true
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+ "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "@microsoft/1ds-core-js": {
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.13.tgz",
+ "integrity": "sha512-CluYTRWcEk0ObG5EWFNWhs87e2qchJUn0p2D21ZUa3PWojPZfPSBs4//WIE0MYV8Qg1Hdif2ZTwlM7TbYUjfAg==",
+ "requires": {
+ "@microsoft/applicationinsights-core-js": "2.8.15",
+ "@microsoft/applicationinsights-shims": "^2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.7"
+ }
+ },
+ "@microsoft/1ds-post-js": {
+ "version": "3.2.13",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.13.tgz",
+ "integrity": "sha512-HgS574fdD19Bo2vPguyznL4eDw7Pcm1cVNpvbvBLWiW3x4e1FCQ3VMXChWnAxCae8Hb0XqlA2sz332ZobBavTA==",
+ "requires": {
+ "@microsoft/1ds-core-js": "3.2.13",
+ "@microsoft/applicationinsights-shims": "^2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.7"
+ }
+ },
+ "@microsoft/applicationinsights-channel-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.2.tgz",
+ "integrity": "sha512-jDBNKbCHsJgmpv0CKNhJ/uN9ZphvfGdb93Svk+R4LjO8L3apNNMbDDPxBvXXi0uigRmA1TBcmyBG4IRKjabGhw==",
+ "requires": {
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
+ }
+ },
+ "@microsoft/applicationinsights-common": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.2.tgz",
+ "integrity": "sha512-y+WXWop+OVim954Cu1uyYMnNx6PWO8okHpZIQi/1YSqtqaYdtJVPv4P0AVzwJdohxzVfgzKvqj9nec/VWqE2Zg==",
+ "requires": {
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
+ }
+ },
+ "@microsoft/applicationinsights-core-js": {
+ "version": "2.8.15",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.15.tgz",
+ "integrity": "sha512-yYAs9MyjGr2YijQdUSN9mVgT1ijI1FPMgcffpaPmYbHAVbQmF7bXudrBWHxmLzJlwl5rfep+Zgjli2e67lwUqQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "2.0.2",
+ "@microsoft/dynamicproto-js": "^1.1.9"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.2.tgz",
+ "integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg=="
+ },
+ "@microsoft/applicationinsights-web-basic": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.2.tgz",
+ "integrity": "sha512-6Lq0DE/pZp9RvSV+weGbcxN1NDmfczj6gNPhvZKV2YSQ3RK0LZE3+wjTWLXfuStq8a+nCBdsRpWk8tOKgsoxcg==",
+ "requires": {
+ "@microsoft/applicationinsights-channel-js": "3.0.2",
+ "@microsoft/applicationinsights-common": "3.0.2",
+ "@microsoft/applicationinsights-core-js": "3.0.2",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ },
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.2.tgz",
+ "integrity": "sha512-WQhVhzlRlLDrQzn3OShCW/pL3BW5WC57t0oywSknX3q7lMzI3jDg7Ihh0iuIcNTzGCTbDkuqr4d6IjEDWIMtJQ==",
+ "requires": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.2.4 < 2.x",
+ "@nevware21/ts-utils": ">= 0.9.5 < 2.x"
+ }
+ },
+ "@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ }
+ }
+ },
+ "@microsoft/applicationinsights-web-snippet": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz",
+ "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ=="
+ },
+ "@microsoft/dynamicproto-js": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.9.tgz",
+ "integrity": "sha512-n1VPsljTSkthsAFYdiWfC+DKzK2WwcRp83Y1YAqdX552BstvsDjft9YXppjUzp11BPsapDoO1LDgrDB0XVsfNQ=="
+ },
+ "@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "requires": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "@nicolo-ribaudo/semver-v6": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+ "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
+ "dev": true
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@opentelemetry/api": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
+ "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA=="
+ },
+ "@opentelemetry/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==",
+ "requires": {
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ }
+ },
+ "@opentelemetry/instrumentation": {
+ "version": "0.41.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz",
+ "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==",
+ "requires": {
+ "@types/shimmer": "^1.0.2",
+ "import-in-the-middle": "1.4.2",
+ "require-in-the-middle": "^7.1.1",
+ "semver": "^7.5.1",
+ "shimmer": "^1.2.1"
+ }
+ },
+ "@opentelemetry/resources": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz",
+ "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==",
+ "requires": {
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ }
+ },
+ "@opentelemetry/sdk-trace-base": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz",
+ "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==",
+ "requires": {
+ "@opentelemetry/core": "1.15.2",
+ "@opentelemetry/resources": "1.15.2",
+ "@opentelemetry/semantic-conventions": "1.15.2"
+ }
+ },
+ "@opentelemetry/semantic-conventions": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz",
+ "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw=="
+ },
+ "@polka/url": {
+ "version": "1.0.0-next.21",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
+ "dev": true
+ },
+ "@sindresorhus/is": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+ "dev": true
+ },
+ "@sinonjs/commons": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "@sinonjs/fake-timers": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz",
+ "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "@sinonjs/samsam": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
+ "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1.6.0",
+ "lodash.get": "^4.4.2",
+ "type-detect": "^4.0.8"
+ }
+ },
+ "@sinonjs/text-encoding": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
+ "dev": true
+ },
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true
+ },
+ "@tsconfig/node10": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
+ "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
+ "dev": true
+ },
+ "@tsconfig/node12": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
+ "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
+ "dev": true
+ },
+ "@tsconfig/node14": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
+ "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
+ "dev": true
+ },
+ "@tsconfig/node16": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
+ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
+ "dev": true
+ },
+ "@types/bent": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@types/bent/-/bent-7.3.3.tgz",
+ "integrity": "sha512-5NEIhVzHiZ6wMjFBmJ3gwjxwGug6amMoAn93rtDBttwrODxm+bt63u+MJA7H9NGGM4X1m73sJrAxDapktl036Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/chai": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz",
+ "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==",
+ "dev": true
+ },
+ "@types/chai-arrays": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/chai-arrays/-/chai-arrays-2.0.0.tgz",
+ "integrity": "sha512-5h5jnAC9C64YnD7WJpA5gBG7CppF/QmoWytOssJ6ysENllW49NBdpsTx6uuIBOpnzAnXThb8jBICgB62wezTLQ==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "*"
+ }
+ },
+ "@types/chai-as-promised": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz",
+ "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "*"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
+ "@types/decompress": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.5.tgz",
+ "integrity": "sha512-LdL+kbcKGs9TzvB/K+OBGzPfDoP6gwwTsykYjodlzUJUUYp/43c1p1jE5YTtz3z4Ml90iruvBXbJ6+kDvb3WSQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/download": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.3.tgz",
+ "integrity": "sha512-IDwXjU7zCtuFVvI0Plnb02TpXyj3RA4YeOKQvEfsjdJeWxZ9hTl6lxeNsU2bLWn0aeAS7fyMl74w/TbdOlS2KQ==",
+ "dev": true,
+ "requires": {
+ "@types/decompress": "*",
+ "@types/got": "^9",
+ "@types/node": "*"
+ }
+ },
+ "@types/eslint": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
+ "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "@types/eslint-scope": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
+ "dev": true,
+ "requires": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "@types/eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "dev": true
+ },
+ "@types/estree": {
+ "version": "0.0.51",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
+ "dev": true
+ },
+ "@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/got": {
+ "version": "9.6.12",
+ "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz",
+ "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
+ },
+ "dependencies": {
+ "form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ }
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
+ "dev": true
+ },
+ "@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
+ "dev": true
+ },
+ "@types/lodash": {
+ "version": "4.14.181",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.181.tgz",
+ "integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "dev": true
+ },
+ "@types/mocha": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz",
+ "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "18.17.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.14.tgz",
+ "integrity": "sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==",
+ "dev": true
+ },
+ "@types/semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==",
+ "dev": true
+ },
+ "@types/shimmer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz",
+ "integrity": "sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg=="
+ },
+ "@types/shortid": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
+ "integrity": "sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=",
+ "dev": true
+ },
+ "@types/sinon": {
+ "version": "10.0.11",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.11.tgz",
+ "integrity": "sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g==",
+ "dev": true,
+ "requires": {
+ "@types/sinonjs__fake-timers": "*"
+ }
+ },
+ "@types/sinonjs__fake-timers": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz",
+ "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==",
+ "dev": true
+ },
+ "@types/stack-trace": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz",
+ "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==",
+ "dev": true
+ },
+ "@types/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=",
+ "dev": true
+ },
+ "@types/tough-cookie": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz",
+ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==",
+ "dev": true
+ },
+ "@types/vscode": {
+ "version": "1.81.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.81.0.tgz",
+ "integrity": "sha512-YIaCwpT+O2E7WOMq0eCgBEABE++SX3Yl/O02GoMIF2DO3qAtvw7m6BXFYsxnc6XyzwZgh6/s/UG78LSSombl2w==",
+ "dev": true
+ },
+ "@types/which": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.1.tgz",
+ "integrity": "sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ==",
+ "dev": true
+ },
+ "@types/winreg": {
+ "version": "1.2.31",
+ "resolved": "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.31.tgz",
+ "integrity": "sha512-SDatEMEtQ1cJK3esIdH6colduWBP+42Xw9Guq1sf/N6rM3ZxgljBduvZOwBsxRps/k5+Wwf5HJun6pH8OnD2gg==",
+ "dev": true
+ },
+ "@types/xml2js": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz",
+ "integrity": "sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz",
+ "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "debug": "^4.1.1",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^3.0.0",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/experimental-utils": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
+ "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.3",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^2.0.0"
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz",
+ "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "3.10.1",
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/typescript-estree": "3.10.1",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz",
+ "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz",
+ "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "3.10.1",
+ "@typescript-eslint/visitor-keys": "3.10.1",
+ "debug": "^4.1.1",
+ "glob": "^7.1.6",
+ "is-glob": "^4.0.1",
+ "lodash": "^4.17.15",
+ "semver": "^7.3.2",
+ "tsutils": "^3.17.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
+ "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "@ungap/promise-all-settled": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+ "dev": true
+ },
+ "@vscode/extension-telemetry": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.8.4.tgz",
+ "integrity": "sha512-UqM9+KZDDK3MyoHTsg6XNM+XO6pweQxzCpqJz33BoBEYAGsbBviRYcVpJglgay2oReuDD2pOI1Nio3BKNDLhWA==",
+ "requires": {
+ "@microsoft/1ds-core-js": "^3.2.13",
+ "@microsoft/1ds-post-js": "^3.2.13",
+ "@microsoft/applicationinsights-web-basic": "^3.0.2",
+ "applicationinsights": "^2.7.1"
+ }
+ },
+ "@vscode/test-electron": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz",
+ "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==",
+ "dev": true,
+ "requires": {
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "jszip": "^3.10.1",
+ "semver": "^7.5.2"
+ }
+ },
+ "@vscode/vsce": {
+ "version": "2.27.0",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.27.0.tgz",
+ "integrity": "sha512-FFUMBVSyyjjJpWszwqk7d4U3YllY8FdWslbUDMRki1x4ZjA3Z0hmRMfypWrjP9sptbSR9nyPFU4uqjhy2qRB/w==",
+ "dev": true,
+ "requires": {
+ "@azure/identity": "^4.1.0",
+ "@vscode/vsce-sign": "^2.0.0",
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^6.2.1",
+ "form-data": "^4.0.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "keytar": "^7.7.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@vscode/vsce-sign": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz",
+ "integrity": "sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA==",
+ "dev": true,
+ "requires": {
+ "@vscode/vsce-sign-alpine-arm64": "2.0.2",
+ "@vscode/vsce-sign-alpine-x64": "2.0.2",
+ "@vscode/vsce-sign-darwin-arm64": "2.0.2",
+ "@vscode/vsce-sign-darwin-x64": "2.0.2",
+ "@vscode/vsce-sign-linux-arm": "2.0.2",
+ "@vscode/vsce-sign-linux-arm64": "2.0.2",
+ "@vscode/vsce-sign-linux-x64": "2.0.2",
+ "@vscode/vsce-sign-win32-arm64": "2.0.2",
+ "@vscode/vsce-sign-win32-x64": "2.0.2"
+ }
+ },
+ "@vscode/vsce-sign-alpine-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz",
+ "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-alpine-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz",
+ "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-darwin-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz",
+ "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-darwin-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz",
+ "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-linux-arm": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz",
+ "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-linux-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz",
+ "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-linux-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz",
+ "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-win32-arm64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz",
+ "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@vscode/vsce-sign-win32-x64": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz",
+ "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==",
+ "dev": true,
+ "optional": true
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-numbers": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-numbers": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/helper-wasm-section": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-opt": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "@webassemblyjs/wast-printer": "1.11.1"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webpack-cli/configtest": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
+ "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==",
+ "dev": true,
+ "requires": {}
+ },
+ "@webpack-cli/info": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz",
+ "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==",
+ "dev": true,
+ "requires": {
+ "envinfo": "^7.7.3"
+ }
+ },
+ "@webpack-cli/serve": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz",
+ "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
+ },
+ "acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "requires": {}
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "acorn-walk": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "aggregate-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
+ "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "requires": {
+ "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-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "^0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "append-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+ "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "dev": true,
+ "requires": {
+ "buffer-equal": "^1.0.0"
+ },
+ "dependencies": {
+ "buffer-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
+ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
+ "dev": true
+ }
+ }
+ },
+ "append-transform": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
+ "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "^3.0.0"
+ }
+ },
+ "applicationinsights": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.7.3.tgz",
+ "integrity": "sha512-JY8+kTEkjbA+kAVNWDtpfW2lqsrDALfDXuxOs74KLPu2y13fy/9WB52V4LfYVTVcW1/jYOXjTxNS2gPZIDh1iw==",
+ "requires": {
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-rest-pipeline": "1.10.1",
+ "@azure/core-util": "1.2.0",
+ "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5",
+ "@microsoft/applicationinsights-web-snippet": "^1.0.1",
+ "@opentelemetry/api": "^1.4.1",
+ "@opentelemetry/core": "^1.15.2",
+ "@opentelemetry/sdk-trace-base": "^1.15.2",
+ "@opentelemetry/semantic-conventions": "^1.15.2",
+ "cls-hooked": "^4.2.2",
+ "continuation-local-storage": "^3.2.1",
+ "diagnostic-channel": "1.1.1",
+ "diagnostic-channel-publishers": "1.0.7"
+ }
+ },
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="
+ },
+ "archive-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
+ "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+ "dev": true,
+ "requires": {
+ "file-type": "^4.2.0"
+ },
+ "dependencies": {
+ "file-type": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
+ "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+ "dev": true
+ }
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ }
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "array.prototype.flat": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
+ "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ }
+ },
+ "array.prototype.flatmap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz",
+ "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ }
+ },
+ "asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "ast-types-flow": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
+ "async": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
+ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
+ "dev": true
+ },
+ "async-done": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz",
+ "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.4.4",
+ "once": "^1.4.0",
+ "stream-exhaust": "^1.0.2"
+ }
+ },
+ "async-hook-jl": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz",
+ "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==",
+ "requires": {
+ "stack-chain": "^1.3.7"
+ }
+ },
+ "async-listener": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
+ "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
+ "requires": {
+ "semver": "^5.3.0",
+ "shimmer": "^1.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ }
+ }
+ },
+ "async-settle": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz",
+ "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==",
+ "dev": true,
+ "requires": {
+ "async-done": "^2.0.0"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true
+ },
+ "axe-core": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
+ "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
+ "dev": true
+ },
+ "axobject-query": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
+ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
+ "dev": true
+ },
+ "azure-devops-node-api": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
+ "dev": true,
+ "requires": {
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
+ }
+ },
+ "b4a": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+ "dev": true
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ }
+ }
+ },
+ "bach": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz",
+ "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==",
+ "dev": true,
+ "requires": {
+ "async-done": "^2.0.0",
+ "async-settle": "^2.0.0",
+ "now-and-later": "^3.0.0"
+ },
+ "dependencies": {
+ "now-and-later": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz",
+ "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ }
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "bare-events": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.3.1.tgz",
+ "integrity": "sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==",
+ "dev": true,
+ "optional": true
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "bent": {
+ "version": "7.3.12",
+ "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz",
+ "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==",
+ "dev": true,
+ "requires": {
+ "bytesish": "^0.4.1",
+ "caseless": "~0.12.0",
+ "is-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ }
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true
+ },
+ "bl": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+ "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.1.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ }
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.4",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.21.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
+ "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001503",
+ "electron-to-chromium": "^1.4.431",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytesish": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz",
+ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==",
+ "dev": true
+ },
+ "cacheable-request": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
+ "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
+ "dev": true,
+ "requires": {
+ "clone-response": "1.0.2",
+ "get-stream": "3.0.0",
+ "http-cache-semantics": "3.8.1",
+ "keyv": "3.0.0",
+ "lowercase-keys": "1.0.0",
+ "normalize-url": "2.0.1",
+ "responselike": "1.0.2"
+ },
+ "dependencies": {
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true
+ }
+ }
+ },
+ "caching-transform": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
+ "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
+ "dev": true,
+ "requires": {
+ "hasha": "^5.0.0",
+ "make-dir": "^3.0.0",
+ "package-hash": "^4.0.0",
+ "write-file-atomic": "^3.0.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001512",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
+ "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
+ "chai": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
+ "dev": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^3.0.1",
+ "get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.5"
+ }
+ },
+ "chai-arrays": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz",
+ "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==",
+ "dev": true
+ },
+ "chai-as-promised": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
+ "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "dev": true,
+ "requires": {
+ "check-error": "^1.0.2"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "dev": true
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "dev": true
+ },
+ "cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "dev": true,
+ "requires": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
+ "dev": true
+ }
+ }
+ },
+ "cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+ "dev": true,
+ "requires": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ }
+ },
+ "css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ }
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "optional": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
+ },
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+ "dev": true
+ },
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "cloneable-readable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
+ "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "process-nextick-args": "^2.0.0",
+ "readable-stream": "^2.3.5"
+ }
+ },
+ "cls-hooked": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz",
+ "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==",
+ "requires": {
+ "async-hook-jl": "^1.7.6",
+ "emitter-listener": "^1.0.1",
+ "semver": "^5.4.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ }
+ }
+ },
+ "cockatiel": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.3.tgz",
+ "integrity": "sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ==",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colorette": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "compare-module-exports": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/compare-module-exports/-/compare-module-exports-2.1.0.tgz",
+ "integrity": "sha512-3Lc0sTIuX1jmY2K2RrXRJOND6KsRTX2D4v3+eu1PDptsuJZVK4LZc852eZa9I+avj0NrUKlTNgqvccNOH6mbGg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "confusing-browser-globals": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "continuation-local-storage": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
+ "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
+ "requires": {
+ "async-listener": "^0.6.0",
+ "emitter-listener": "^1.1.1"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "copy-props": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz",
+ "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==",
+ "dev": true,
+ "requires": {
+ "each-props": "^3.0.0",
+ "is-plain-object": "^5.0.0"
+ },
+ "dependencies": {
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true
+ }
+ }
+ },
+ "copy-webpack-plugin": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz",
+ "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==",
+ "dev": true,
+ "requires": {
+ "fast-glob": "^3.2.7",
+ "glob-parent": "^6.0.1",
+ "globby": "^11.0.3",
+ "normalize-path": "^3.0.0",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz",
+ "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "dev": true
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true
+ },
+ "decompress": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
+ "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
+ "dev": true,
+ "requires": {
+ "decompress-tar": "^4.0.0",
+ "decompress-tarbz2": "^4.0.0",
+ "decompress-targz": "^4.0.0",
+ "decompress-unzip": "^4.0.1",
+ "graceful-fs": "^4.1.10",
+ "make-dir": "^1.0.0",
+ "pify": "^2.3.0",
+ "strip-dirs": "^2.0.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "decompress-tar": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
+ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
+ "dev": true,
+ "requires": {
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0",
+ "tar-stream": "^1.5.2"
+ },
+ "dependencies": {
+ "file-type": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+ "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "dev": true
+ }
+ }
+ },
+ "decompress-tarbz2": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
+ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+ "dev": true,
+ "requires": {
+ "decompress-tar": "^4.1.0",
+ "file-type": "^6.1.0",
+ "is-stream": "^1.1.0",
+ "seek-bzip": "^1.0.5",
+ "unbzip2-stream": "^1.0.9"
+ },
+ "dependencies": {
+ "file-type": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+ "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+ "dev": true
+ }
+ }
+ },
+ "decompress-targz": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
+ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+ "dev": true,
+ "requires": {
+ "decompress-tar": "^4.1.1",
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0"
+ },
+ "dependencies": {
+ "file-type": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+ "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "dev": true
+ }
+ }
+ },
+ "decompress-unzip": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
+ "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+ "dev": true,
+ "requires": {
+ "file-type": "^3.8.0",
+ "get-stream": "^2.2.0",
+ "pify": "^2.3.0",
+ "yauzl": "^2.4.2"
+ },
+ "dependencies": {
+ "file-type": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "optional": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "default-require-extensions": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
+ "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
+ "dev": true,
+ "requires": {
+ "strip-bom": "^4.0.0"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true
+ }
+ }
+ },
+ "define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ }
+ },
+ "define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "del": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
+ "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
+ "dev": true,
+ "requires": {
+ "globby": "^11.0.1",
+ "graceful-fs": "^4.2.4",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.2",
+ "p-map": "^4.0.0",
+ "rimraf": "^3.0.2",
+ "slash": "^3.0.0"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+ "dev": true
+ },
+ "detect-libc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+ "dev": true,
+ "optional": true
+ },
+ "diagnostic-channel": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz",
+ "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==",
+ "requires": {
+ "semver": "^7.5.3"
+ }
+ },
+ "diagnostic-channel-publishers": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.7.tgz",
+ "integrity": "sha512-SEECbY5AiVt6DfLkhkaHNeshg1CogdLLANA8xlG/TKvS+XUgvIKl7VspJGYiEdL5OUyzMVnr7o0AwB7f+/Mjtg==",
+ "requires": {}
+ },
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "download": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz",
+ "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==",
+ "dev": true,
+ "requires": {
+ "archive-type": "^4.0.0",
+ "content-disposition": "^0.5.2",
+ "decompress": "^4.2.1",
+ "ext-name": "^5.0.0",
+ "file-type": "^11.1.0",
+ "filenamify": "^3.0.0",
+ "get-stream": "^4.1.0",
+ "got": "^8.3.1",
+ "make-dir": "^2.1.0",
+ "p-event": "^2.1.0",
+ "pify": "^4.0.1"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
+ }
+ },
+ "duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "dev": true
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "each-props": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz",
+ "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^5.0.0",
+ "object.defaults": "^1.1.0"
+ },
+ "dependencies": {
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true
+ }
+ }
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.4.450",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz",
+ "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "emitter-listener": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
+ "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
+ "requires": {
+ "shimmer": "^1.2.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
+ "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ }
+ }
+ },
+ "entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "dev": true
+ },
+ "envinfo": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
+ "dev": true
+ },
+ "es-abstract": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
+ "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.1",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ }
+ },
+ "es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.4"
+ }
+ },
+ "es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true
+ },
+ "es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
+ "dev": true
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true
+ },
+ "es6-object-assign": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=",
+ "dev": true
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "7.32.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+ "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.12.11",
+ "@eslint/eslintrc": "^0.4.3",
+ "@humanwhocodes/config-array": "^0.5.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",
+ "escape-string-regexp": "^4.0.0",
+ "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",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.1.2",
+ "globals": "^13.6.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.merge": "^4.6.2",
+ "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.9",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globals": {
+ "version": "13.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
+ "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
}
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
}
}
},
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "eslint-config-airbnb": {
+ "version": "18.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz",
+ "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==",
+ "dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "eslint-config-airbnb-base": "^14.2.1",
+ "object.assign": "^4.1.2",
+ "object.entries": "^1.1.2"
}
},
- "mocha": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.1.tgz",
- "integrity": "sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ==",
+ "eslint-config-airbnb-base": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz",
+ "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==",
"dev": true,
"requires": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.3.1",
- "debug": "3.2.6",
- "diff": "4.0.2",
- "escape-string-regexp": "1.0.5",
- "find-up": "4.1.0",
- "glob": "7.1.6",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "3.13.1",
- "log-symbols": "3.0.0",
- "minimatch": "3.0.4",
- "ms": "2.1.2",
- "object.assign": "4.1.0",
- "promise.allsettled": "1.0.2",
- "serialize-javascript": "4.0.0",
- "strip-json-comments": "3.0.1",
- "supports-color": "7.1.0",
- "which": "2.0.2",
- "wide-align": "1.1.3",
- "workerpool": "6.0.0",
- "yargs": "13.3.2",
- "yargs-parser": "13.1.2",
- "yargs-unparser": "1.6.1"
+ "confusing-browser-globals": "^1.0.10",
+ "object.assign": "^4.1.2",
+ "object.entries": "^1.1.2"
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "resolve": "^1.20.0"
},
"dependencies": {
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
}
},
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "fill-range": "^7.0.1"
+ "locate-path": "^2.0.0"
}
},
- "chokidar": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
- "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.1.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.3.0"
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
}
},
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "p-try": "^1.0.0"
}
},
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "p-limit": "^1.1.0"
}
},
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.25.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz",
+ "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flat": "^1.2.5",
+ "debug": "^2.6.9",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-module-utils": "^2.7.2",
+ "has": "^1.0.3",
+ "is-core-module": "^2.8.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.5",
+ "resolve": "^1.20.0",
+ "tsconfig-paths": "^3.12.0"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
- "to-regex-range": "^5.0.1"
+ "brace-expansion": "^1.1.7"
}
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ }
+ }
+ },
+ "eslint-plugin-jsx-a11y": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
+ "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.16.3",
+ "aria-query": "^4.2.2",
+ "array-includes": "^3.1.4",
+ "ast-types-flow": "^0.0.7",
+ "axe-core": "^4.3.5",
+ "axobject-query": "^2.2.0",
+ "damerau-levenshtein": "^1.0.7",
+ "emoji-regex": "^9.2.2",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^3.2.1",
+ "language-tags": "^1.0.5",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
"dev": true,
"requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
}
},
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
- "is-glob": "^4.0.1"
+ "brace-expansion": "^1.1.7"
}
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ }
+ }
+ },
+ "eslint-plugin-react": {
+ "version": "7.29.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
+ "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flatmap": "^1.2.5",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.0",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.6"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true
},
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
- "p-locate": "^4.1.0"
+ "brace-expansion": "^1.1.7"
}
},
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "resolve": {
+ "version": "2.0.0-next.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
"dev": true,
"requires": {
- "p-limit": "^2.2.0"
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
}
},
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
- },
- "readdirp": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
- "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
+ }
+ }
+ },
+ "eslint-plugin-react-hooks": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz",
+ "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+ "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^1.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ }
+ }
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
- "picomatch": "^2.0.7"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
}
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true
},
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
},
- "strip-json-comments": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
- "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "has-flag": "^4.0.0"
+ "shebang-regex": "^3.0.0"
}
},
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ }
+ }
+ },
+ "expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "dev": true,
+ "optional": true
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "expose-loader": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz",
+ "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==",
+ "dev": true,
+ "requires": {}
+ },
+ "ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
+ "requires": {
+ "mime-db": "^1.28.0"
+ }
+ },
+ "ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "requires": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
- "is-number": "^7.0.0"
+ "is-plain-object": "^2.0.4"
}
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "is-glob": "^4.0.1"
}
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fastest-levenshtein": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+ "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
+ "file-type": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz",
+ "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==",
+ "dev": true
+ },
+ "filename-reserved-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+ "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+ "dev": true
+ },
+ "filenamify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz",
+ "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==",
+ "dev": true,
+ "requires": {
+ "filename-reserved-regex": "^2.0.0",
+ "strip-outer": "^1.0.0",
+ "trim-repeated": "^1.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "filter-obj": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
+ "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
+ "dev": true
+ },
+ "find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.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": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
}
}
},
- "mocha-junit-reporter": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-1.23.0.tgz",
- "integrity": "sha512-pmpnEO4iDTmLfrT2RKqPsc5relG4crnDSGmXPuGogdda27A7kLujDNJV4EbTbXlVBCZXggN9rQYPEWMkOv4AAA==",
+ "findup-sync": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz",
+ "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
"dev": true,
"requires": {
- "debug": "^2.2.0",
- "md5": "^2.1.0",
- "mkdirp": "~0.5.1",
- "strip-ansi": "^4.0.0",
- "xml": "^1.0.0"
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "fined": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz",
+ "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^5.0.0",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.3.0",
+ "parse-filepath": "^1.0.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
}
}
},
- "mocha-multi-reporters": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.1.7.tgz",
- "integrity": "sha1-zH8/TTL0eFIJQdhSq7ZNmYhYfYI=",
+ "flagged-respawn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz",
+ "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==",
+ "dev": true
+ },
+ "flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true
+ },
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
+ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "foreground-child": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
"dev": true,
"requires": {
- "debug": "^3.1.0",
- "lodash": "^4.16.4"
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
},
"dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "cross-spawn": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
+ "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
}
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
}
}
},
- "monaco-editor": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.18.1.tgz",
- "integrity": "sha512-fmL+RFZ2Hrezy+X/5ZczQW51LUmvzfcqOurnkCIRFTyjdVjzR7JvENzI6+VKBJzJdPh6EYL4RoWl92b2Hrk9fw==",
- "dev": true
- },
- "monaco-editor-textmate": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/monaco-editor-textmate/-/monaco-editor-textmate-2.2.1.tgz",
- "integrity": "sha512-RYTNNfvyjK15M0JA8WIi9UduU10eX5724UGNKnaA8MSetehjThGENctUTuKaxPk/k3pq59QzaQ/C06A44iJd3Q==",
- "dev": true
- },
- "monaco-editor-webpack-plugin": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.7.0.tgz",
- "integrity": "sha512-oItymcnlL14Sjd7EF7q+CMhucfwR/2BxsqrXIBrWL6LQplFfAfV+grLEQRmVHeGSBZ/Gk9ptzfueXnWcoEcFuA==",
- "dev": true,
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
- "@types/webpack": "^4.4.19"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
}
},
- "monaco-textmate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/monaco-textmate/-/monaco-textmate-3.0.1.tgz",
- "integrity": "sha512-ZxxY3OsqUczYP1sGqo97tu+CJmMBwuSW+dL0WEBdDhOZ5G1zntw72hvBc68ZQAirosWvbDKgN1dL5k173QtFww==",
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
- "fast-plist": "^0.1.2"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
- "moo": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz",
- "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==",
+ "fromentries": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz",
+ "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==",
"dev": true
},
- "mount-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mount-point/-/mount-point-3.0.0.tgz",
- "integrity": "sha1-Zly57evoDREOZY21bDHQrvUaj5c=",
- "dev": true,
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
+ "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
"requires": {
- "@sindresorhus/df": "^1.0.1",
- "pify": "^2.3.0",
- "pinkie-promise": "^2.0.1"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"dependencies": {
- "@sindresorhus/df": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@sindresorhus/df/-/df-1.0.1.tgz",
- "integrity": "sha1-xptm9S9vzdKHyAffIQMF2694UA0=",
- "dev": true
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
},
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
}
}
},
- "move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
"dev": true,
"requires": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "graceful-fs": "^4.1.11",
+ "through2": "^2.0.3"
}
},
- "move-file": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/move-file/-/move-file-1.2.0.tgz",
- "integrity": "sha512-USHrRmxzGowUWAGBbJPdFjHzEqtxDU03pLHY0Rfqgtnq+q8FOIs8wvkkf+Udmg77SJKs47y9sI0jJvQeYsmiCA==",
+ "fs-walk": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/fs-walk/-/fs-walk-0.0.1.tgz",
+ "integrity": "sha1-9/yRw64e6tB8mYvF0N1B8tvr0zU=",
"dev": true,
"requires": {
- "cp-file": "^6.1.0",
- "make-dir": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
- "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "async": "*"
}
},
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
- "mute-stdout": {
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+ },
+ "functional-red-black-tree": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
- "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true
},
- "mv": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
- "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
- "dev": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
- "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
- "dev": true,
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "named-js-regexp": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/named-js-regexp/-/named-js-regexp-1.3.5.tgz",
- "integrity": "sha512-XO0DPujDP9IWpkt690iWLreKztb/VB811DGl5N3z7BfhkMJuiVZXOi6YN/fEB9qkvtMVTgSZDW8pzdVt8vj/FA=="
- },
- "nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
- "optional": true
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
},
- "nanoid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.3.tgz",
- "integrity": "sha512-NbaoqdhIYmY6FXDRB4eYtDVC9Z9eCbn8TyaiC16LNKtpPv/aqa0tOPD8y6gNE4yUNnaZ7LLhYtXOev/6+cBtfw==",
+ "get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true
},
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"requires": {
- "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"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
}
},
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true
},
- "ncp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
- "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
- "nearley": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz",
- "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==",
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"dev": true,
"requires": {
- "commander": "^2.19.0",
- "moo": "^0.4.3",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6",
- "semver": "^5.4.1"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
}
},
- "needle": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz",
- "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==",
- "optional": true,
+ "github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true,
+ "optional": true
+ },
+ "glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
+ "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"
},
"dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "optional": true,
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
- "ms": "^2.1.1"
+ "brace-expansion": "^1.1.7"
}
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "optional": true
}
}
},
- "negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
- "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
- "dev": true
- },
- "nested-error-stacks": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz",
- "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==",
- "dev": true
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
},
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
- "dev": true
+ "glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
+ "unique-stream": "^2.0.2"
+ }
},
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
- "nise": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/nise/-/nise-3.0.0.tgz",
- "integrity": "sha512-EObFx5tioBMePHpU/gGczaY2YDqL255iwjmZwswu2CiwEW8xIGrr3E2xij+efIppS1nLQo9NyXSIUySGHUOhHQ==",
+ "glob-watcher": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz",
+ "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==",
"dev": true,
"requires": {
- "@sinonjs/commons": "^1.7.0",
- "@sinonjs/formatio": "^4.0.1",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "lolex": "^5.0.1",
- "path-to-regexp": "^1.7.0"
+ "async-done": "^2.0.0",
+ "chokidar": "^3.5.3"
}
},
- "no-case": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
"requires": {
- "lower-case": "^1.1.1"
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
}
},
- "nocache": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
- "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==",
- "dev": true
- },
- "nock": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz",
- "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==",
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
"dev": true,
"requires": {
- "chai": "^4.1.2",
- "debug": "^4.1.0",
- "deep-equal": "^1.0.0",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.5",
- "mkdirp": "^0.5.0",
- "propagate": "^1.0.0",
- "qs": "^6.5.1",
- "semver": "^5.5.0"
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
},
"dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "isexe": "^2.0.0"
}
}
}
},
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
},
- "node-has-native-dependencies": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/node-has-native-dependencies/-/node-has-native-dependencies-1.0.2.tgz",
- "integrity": "sha1-MVLsl1O2ZB5NMi0YXdSTBkmto9o=",
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
"requires": {
- "fs-walk": "0.0.1"
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "glogg": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz",
+ "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==",
+ "dev": true,
+ "requires": {
+ "sparkles": "^2.1.0"
+ }
+ },
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3"
}
},
- "node-html-parser": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.1.16.tgz",
- "integrity": "sha512-cfqTZIYDdp5cGh3NvCD5dcEDP7hfyni7WgyFacmDynLlIZaF3GVlRk8yMARhWp/PobWt1KaCV8VKdP5LKWiVbg==",
+ "got": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
+ "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
"dev": true,
"requires": {
- "he": "1.1.1"
+ "@sindresorhus/is": "^0.7.0",
+ "cacheable-request": "^2.1.1",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "into-stream": "^3.1.0",
+ "is-retry-allowed": "^1.1.0",
+ "isurl": "^1.0.0-alpha5",
+ "lowercase-keys": "^1.0.0",
+ "mimic-response": "^1.0.0",
+ "p-cancelable": "^0.4.0",
+ "p-timeout": "^2.0.1",
+ "pify": "^3.0.0",
+ "safe-buffer": "^5.1.1",
+ "timed-out": "^4.0.1",
+ "url-parse-lax": "^3.0.0",
+ "url-to-options": "^1.0.1"
},
"dependencies": {
- "he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
}
}
},
- "node-libs-browser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true
+ },
+ "gulp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz",
+ "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==",
"dev": true,
"requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
+ "glob-watcher": "^6.0.0",
+ "gulp-cli": "^3.0.0",
+ "undertaker": "^2.0.0",
+ "vinyl-fs": "^4.0.0"
},
"dependencies": {
- "buffer": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
- "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "fs-mkdirp-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz",
+ "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==",
"dev": true,
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "graceful-fs": "^4.2.8",
+ "streamx": "^2.12.0"
}
},
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "glob-stream": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz",
+ "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==",
+ "dev": true,
+ "requires": {
+ "@gulpjs/to-absolute-glob": "^4.0.0",
+ "anymatch": "^3.1.3",
+ "fastq": "^1.13.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "is-negated-glob": "^1.0.0",
+ "normalize-path": "^3.0.0",
+ "streamx": "^2.12.5"
+ }
+ },
+ "lead": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz",
+ "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==",
"dev": true
},
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "now-and-later": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz",
+ "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "replace-ext": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
"dev": true
},
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "resolve-options": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz",
+ "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "dependencies": {
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "value-or-function": "^4.0.0"
+ }
+ },
+ "to-through": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz",
+ "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==",
+ "dev": true,
+ "requires": {
+ "streamx": "^2.12.5"
+ }
+ },
+ "value-or-function": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz",
+ "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz",
+ "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==",
+ "dev": true,
+ "requires": {
+ "clone": "^2.1.2",
+ "clone-stats": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0",
+ "replace-ext": "^2.0.0",
+ "teex": "^1.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz",
+ "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==",
+ "dev": true,
+ "requires": {
+ "fs-mkdirp-stream": "^2.0.1",
+ "glob-stream": "^8.0.0",
+ "graceful-fs": "^4.2.11",
+ "iconv-lite": "^0.6.3",
+ "is-valid-glob": "^1.0.0",
+ "lead": "^4.0.0",
+ "normalize-path": "3.0.0",
+ "resolve-options": "^2.0.0",
+ "stream-composer": "^1.0.2",
+ "streamx": "^2.14.0",
+ "to-through": "^3.0.0",
+ "value-or-function": "^4.0.0",
+ "vinyl": "^3.0.0",
+ "vinyl-sourcemap": "^2.0.0"
+ }
+ },
+ "vinyl-sourcemap": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz",
+ "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "^2.0.0",
+ "graceful-fs": "^4.2.10",
+ "now-and-later": "^3.0.0",
+ "streamx": "^2.12.5",
+ "vinyl": "^3.0.0",
+ "vinyl-contents": "^2.0.0"
}
}
}
},
- "node-loader": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-1.0.2.tgz",
- "integrity": "sha512-myxAxpyMR7knjA4Uzwf3gjxaMtxSWj2vpm9o6AYWWxQ1S3XMBNeG2vzYcp/5eW03cBGfgSxyP+wntP8qhBJNhQ==",
+ "gulp-cli": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz",
+ "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==",
"dev": true,
"requires": {
- "loader-utils": "^2.0.0",
- "schema-utils": "^3.0.0"
+ "@gulpjs/messages": "^1.1.0",
+ "chalk": "^4.1.2",
+ "copy-props": "^4.0.0",
+ "gulplog": "^2.2.0",
+ "interpret": "^3.1.1",
+ "liftoff": "^5.0.0",
+ "mute-stdout": "^2.0.0",
+ "replace-homedir": "^2.0.0",
+ "semver-greatest-satisfied-range": "^2.0.0",
+ "string-width": "^4.2.3",
+ "v8flags": "^4.0.0",
+ "yargs": "^16.2.0"
},
"dependencies": {
- "@types/json-schema": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
- "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
- "dev": true
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
},
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
},
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "has-flag": "^4.0.0"
}
},
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
},
- "schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
}
}
},
- "node-pre-gyp": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz",
- "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==",
- "optional": true,
+ "gulp-typescript": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz",
+ "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==",
+ "dev": true,
"requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.3",
- "needle": "^2.5.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
+ "ansi-colors": "^3.0.5",
+ "plugin-error": "^1.0.1",
+ "source-map": "^0.7.3",
+ "through2": "^3.0.0",
+ "vinyl": "^2.1.0",
+ "vinyl-fs": "^3.0.3"
},
"dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "optional": true,
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true
+ },
+ "through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "dev": true,
"requires": {
- "glob": "^7.1.3"
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
}
}
}
},
- "node-preload": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
- "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
- "dev": true,
+ "gulplog": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz",
+ "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==",
+ "dev": true,
+ "requires": {
+ "glogg": "^2.2.0"
+ }
+ },
+ "gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "dev": true,
+ "requires": {
+ "duplexer": "^0.1.2"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
- "process-on-spawn": "^1.0.0"
+ "function-bind": "^1.1.1"
}
},
- "node-releases": {
- "version": "1.1.71",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
- "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==",
+ "has-bigints": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
"dev": true
},
- "node-stream-zip": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.8.2.tgz",
- "integrity": "sha512-zwP2F/R28Oqtl0gOLItk5QjJ6jEU8XO4kaUMgeqvCyXPgdCZlm8T/5qLMiNy+moJCBCiMQAaX7aVMRhT0t2vkQ=="
- },
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
},
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "es-define-property": "^1.0.0"
}
},
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ "has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true
},
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "has-symbol-support-x": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
+ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
"dev": true
},
- "normalize-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
- "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "has-to-string-tag-x": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
+ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
"dev": true,
"requires": {
- "prepend-http": "^2.0.0",
- "query-string": "^5.0.1",
- "sort-keys": "^2.0.0"
- },
- "dependencies": {
- "sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
- "dev": true,
- "requires": {
- "is-plain-obj": "^1.0.0"
- }
- }
+ "has-symbol-support-x": "^1.4.1"
}
},
- "now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dev": true,
"requires": {
- "once": "^1.3.2"
+ "has-symbols": "^1.0.2"
}
},
- "npm-bundled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
- "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
- "optional": true,
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
"requires": {
- "npm-normalize-package-bin": "^1.0.1"
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
}
},
- "npm-conf": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
- "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hasha": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz",
+ "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==",
"dev": true,
"requires": {
- "config-chain": "^1.1.11",
- "pify": "^3.0.0"
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
},
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
"dev": true
}
}
},
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "optional": true,
+ "hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
+ "function-bind": "^1.1.2"
}
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
}
},
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "optional": true,
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
+ "parse-passwd": "^1.0.0"
}
},
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "nwsapi": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
- "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==",
+ "http-cache-semantics": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
"dev": true
},
- "nyc": {
- "version": "15.0.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz",
- "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==",
+ "http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"dev": true,
"requires": {
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "caching-transform": "^4.0.0",
- "convert-source-map": "^1.7.0",
- "decamelize": "^1.2.0",
- "find-cache-dir": "^3.2.0",
- "find-up": "^4.1.0",
- "foreground-child": "^2.0.0",
- "glob": "^7.1.6",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-hook": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.0",
- "istanbul-lib-processinfo": "^2.0.2",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.0",
- "js-yaml": "^3.13.1",
- "make-dir": "^3.0.0",
- "node-preload": "^0.2.0",
- "p-map": "^3.0.0",
- "process-on-spawn": "^1.0.0",
- "resolve-from": "^5.0.0",
- "rimraf": "^3.0.0",
- "signal-exit": "^3.0.2",
- "spawn-wrap": "^2.0.0",
- "test-exclude": "^6.0.0",
- "uuid": "^3.3.3",
- "yargs": "^15.0.2"
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
},
"dependencies": {
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "find-cache-dir": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz",
- "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.0",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "make-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
- "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-map": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
"requires": {
- "aggregate-error": "^3.0.0"
+ "ms": "2.1.2"
}
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
+ }
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
- "find-up": "^4.0.0"
+ "ms": "2.1.2"
}
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
- "dev": true
}
}
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true
},
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
},
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
"requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
},
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
}
}
},
- "object-inspect": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
- "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==",
+ "import-in-the-middle": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz",
+ "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==",
+ "requires": {
+ "acorn": "^8.8.2",
+ "acorn-import-assertions": "^1.9.0",
+ "cjs-module-lexer": "^1.2.2",
+ "module-details-from-path": "^1.0.3"
+ }
+ },
+ "import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
- "object-is": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz",
- "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true
},
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ini": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
+ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
"dev": true
},
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
"dev": true,
"requires": {
- "isobject": "^3.0.0"
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
}
},
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true
+ },
+ "into-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
+ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
"dev": true,
"requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
+ "from2": "^2.1.1",
+ "p-is-promise": "^1.1.0"
}
},
- "object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "inversify": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.5.tgz",
+ "integrity": "sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA=="
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
"dev": true,
"requires": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- }
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
}
},
- "object.entries": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
- "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.12.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
}
},
- "object.fromentries": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz",
- "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==",
+ "is-bigint": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
+ "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.11.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.1"
+ "binary-extensions": "^2.0.0"
}
},
- "object.getownpropertydescriptors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
- "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
"requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
+ "has-tostringtag": "^1.0.0"
}
},
- "object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "dependencies": {
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- }
+ "has-tostringtag": "^1.0.0"
}
},
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
+ "is-extglob": "^2.1.1"
}
},
- "object.reduce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
- "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
+ "is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "dependencies": {
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- }
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
}
},
- "object.values": {
+ "is-natural-number": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+ "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
+ "dev": true
+ },
+ "is-negated-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
+ "dev": true
+ },
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
+ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true
+ },
+ "is-plain-obj": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
- "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.12.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
+ "isobject": "^3.0.1"
}
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
- "ee-first": "1.1.1"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
}
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
"requires": {
- "wrappy": "1"
+ "is-unc-path": "^1.0.0"
}
},
- "one-time": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
- "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "dev": true
},
- "onecolor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.1.0.tgz",
- "integrity": "sha512-YZSypViXzu3ul5LMu/m6XjJ9ol8qAy9S2VjHl5E6UlhUH1KGKWabyEJifn0Jjpw23bYDzC2ucKMPGiH5kfwSGQ==",
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
- "open": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- },
- "dependencies": {
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- }
+ "has-tostringtag": "^1.0.0"
}
},
- "opener": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
- "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==",
- "dev": true
- },
- "optionator": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
+ "has-symbols": "^1.0.2"
}
},
- "ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
+ "is-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
+ "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
"dev": true,
"requires": {
- "readable-stream": "^2.0.1"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.18.5",
+ "foreach": "^2.0.5",
+ "has-tostringtag": "^1.0.0"
}
},
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
"dev": true,
"requires": {
- "lcid": "^1.0.0"
+ "unc-path-regex": "^0.1.2"
}
},
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
+ "is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true
},
- "p-cancelable": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
- "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
- "p-defer": {
+ "is-valid-glob": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
"dev": true
},
- "p-event": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
- "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
"requires": {
- "p-timeout": "^2.0.1"
+ "call-bind": "^1.0.2"
}
},
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-is-promise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
- "p-limit": {
+ "is-wsl": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
- "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "is-docker": "^2.0.0"
}
},
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
- "p-map": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
- "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
- "p-timeout": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
- "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
+ "istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true
+ },
+ "istanbul-lib-hook": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
+ "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
"dev": true,
"requires": {
- "p-finally": "^1.0.0"
+ "append-transform": "^2.0.0"
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "package-hash": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
- "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
+ "istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.15",
- "hasha": "^5.0.0",
- "lodash.flattendeep": "^4.4.0",
- "release-zalgo": "^1.0.0"
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
}
},
- "pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
- "dev": true
- },
- "parallel-transform": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
- "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "istanbul-lib-processinfo": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
"requires": {
- "cyclist": "~0.2.2",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
+ "archy": "^1.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "p-map": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "uuid": "^8.3.2"
},
"dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
},
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "aggregate-error": "^3.0.0"
}
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "shebang-regex": "^3.0.0"
}
- }
- }
- },
- "param-case": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
- "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
- "dev": true,
- "requires": {
- "no-case": "^2.2.0"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- },
- "dependencies": {
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
}
}
},
- "parse-asn1": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
- "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
- "dev": true,
- "requires": {
- "asn1.js": "^4.0.0",
- "browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true
- },
- "parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
- "dev": true
- },
- "parse-semver": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=",
+ "istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
"dev": true,
"requires": {
- "semver": "^5.1.0"
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "parse5": {
+ "istanbul-lib-source-maps": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
- "dev": true
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
+ "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
"dev": true,
"requires": {
- "parse5": "^6.0.1"
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
},
"dependencies": {
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
}
}
},
- "parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
- "dev": true
- },
- "parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
- "dev": true
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "istanbul-reports": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
- "path-root-regex": "^0.1.0"
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
}
},
- "path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
- "dev": true
- },
- "path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "isurl": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
+ "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
"dev": true,
"requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- }
+ "has-to-string-tag-x": "^1.2.0",
+ "is-object": "^1.0.1"
}
},
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
},
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
- "pathval": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
- "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
- "pause-stream": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
- "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
- "through": "~2.3"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ }
}
},
- "pbkdf2": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
- "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
},
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
"dev": true
},
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
},
- "picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true
},
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
+ "jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
},
- "pixrem": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-4.0.1.tgz",
- "integrity": "sha1-LaSh3m7EQjxfw3lOkwuB1EkOxoY=",
+ "jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
"dev": true,
"requires": {
- "browserslist": "^2.0.0",
- "postcss": "^6.0.0",
- "reduce-css-calc": "^1.2.7"
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
},
"dependencies": {
- "browserslist": {
- "version": "2.11.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
- "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000792",
- "electron-to-chromium": "^1.3.30"
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
}
},
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
}
}
}
},
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "jsx-ast-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz",
+ "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.3",
+ "object.assign": "^4.1.2"
+ }
+ },
+ "jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "requires": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "just-extend": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
+ "dev": true
+ },
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
"dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
}
},
- "pkg-up": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
- "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
"dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
}
},
- "please-upgrade-node": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz",
- "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==",
+ "keytar": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
"dev": true,
+ "optional": true,
"requires": {
- "semver-compare": "^1.0.0"
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
}
},
- "pleeease-filters": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-4.0.0.tgz",
- "integrity": "sha1-ZjKy+wVkjSdY2GU4T7zteeHMrsc=",
+ "keyv": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
+ "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
"dev": true,
"requires": {
- "onecolor": "^3.0.4",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "json-buffer": "3.0.0"
}
},
- "plugin-error": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
- "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "language-subtag-registry": {
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz",
+ "integrity": "sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg==",
+ "dev": true
+ },
+ "language-tags": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
+ "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=",
"dev": true,
"requires": {
- "ansi-cyan": "^0.1.1",
- "ansi-red": "^0.1.1",
- "arr-diff": "^1.0.1",
- "arr-union": "^2.0.1",
- "extend-shallow": "^1.1.2"
- },
- "dependencies": {
- "arr-diff": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
- "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1",
- "array-slice": "^0.2.3"
- }
- },
- "arr-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
- "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
- "dev": true
- },
- "array-slice": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
- "dev": true
- },
- "extend-shallow": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
- "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
- "dev": true,
- "requires": {
- "kind-of": "^1.1.0"
- }
- },
- "kind-of": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
- "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
- "dev": true
- }
+ "language-subtag-registry": "~0.3.2"
}
},
- "pn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "last-run": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz",
+ "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==",
"dev": true
},
- "portfinder": {
- "version": "1.0.25",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
- "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.5"
+ }
+ },
+ "lead": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+ "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "dev": true,
"requires": {
- "async": "^2.6.2",
- "debug": "^3.1.1",
- "mkdirp": "^0.5.1"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "flush-write-stream": "^1.0.2"
}
},
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true
},
- "postcss": {
- "version": "8.2.10",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz",
- "integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==",
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"requires": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.22",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "nanoid": {
- "version": "3.1.23",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
- "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==",
- "dev": true
- }
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
}
},
- "postcss-apply": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.8.0.tgz",
- "integrity": "sha1-FOVEu7XLbxweBIhXll15rgZrE0M=",
+ "lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"dev": true,
"requires": {
- "babel-runtime": "^6.23.0",
- "balanced-match": "^0.4.2",
- "postcss": "^6.0.0"
- },
- "dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "immediate": "~3.0.5"
}
},
- "postcss-attribute-case-insensitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz",
- "integrity": "sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q=",
+ "liftoff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz",
+ "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==",
"dev": true,
"requires": {
- "postcss": "^6.0.0",
- "postcss-selector-parser": "^2.2.3"
+ "extend": "^3.0.2",
+ "findup-sync": "^5.0.0",
+ "fined": "^2.0.0",
+ "flagged-respawn": "^2.0.0",
+ "is-plain-object": "^5.0.0",
+ "rechoir": "^0.8.0",
+ "resolve": "^1.20.0"
},
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true
}
}
},
- "postcss-calc": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.2.tgz",
- "integrity": "sha512-fiznXjEN5T42Qm7qqMCVJXS3roaj9r4xsSi+meaBVe7CJBl8t/QLOXu02Z2E6oWAMWIvCuF6JrvzFekmVEbOKA==",
+ "linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
"dev": true,
"requires": {
- "css-unit-converter": "^1.1.1",
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^2.2.2",
- "reduce-css-calc": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "reduce-css-calc": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz",
- "integrity": "sha512-fDnlZ+AybAS3C7Q9xDq5y8A2z+lT63zLbynew/lur/IR24OQF5x98tfNwf79mzEdfywZ0a2wpM860FhFfMxZlA==",
- "dev": true,
- "requires": {
- "css-unit-converter": "^1.1.1",
- "postcss-value-parser": "^3.3.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "uc.micro": "^1.0.1"
}
},
- "postcss-color-function": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-4.1.0.tgz",
- "integrity": "sha512-2/fuv6mP5Lt03XbRpVfMdGC8lRP1sykme+H1bR4ARyOmSMB8LPSjcL6EAI1iX6dqUF+jNEvKIVVXhan1w/oFDQ==",
+ "loader-runner": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
+ "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
"requires": {
- "css-color-function": "~1.3.3",
- "postcss": "^6.0.23",
- "postcss-message-helpers": "^2.0.0",
- "postcss-value-parser": "^3.3.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
}
},
- "postcss-color-gray": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.1.0.tgz",
- "integrity": "sha512-L4iLKQLdqChz6ZOgGb6dRxkBNw78JFYcJmBz1orHpZoeLtuhDDGegRtX9gSyfoCIM7rWZ3VNOyiqqvk83BEN+w==",
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "color": "^2.0.1",
- "postcss": "^6.0.14",
- "postcss-message-helpers": "^2.0.0",
- "reduce-function-call": "^1.0.2"
- },
- "dependencies": {
- "color": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz",
- "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.1",
- "color-string": "^1.5.2"
- }
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "p-locate": "^4.1.0"
}
},
- "postcss-color-hex-alpha": {
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "lodash._reinterpolate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz",
- "integrity": "sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U=",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "dev": true
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
+ "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
"dev": true,
"requires": {
- "color": "^1.0.3",
- "postcss": "^6.0.1",
- "postcss-message-helpers": "^2.0.0"
- },
- "dependencies": {
- "color": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
- "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
- "dev": true,
- "requires": {
- "color-convert": "^1.8.2",
- "color-string": "^1.4.0"
- }
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.templatesettings": "^4.0.0"
}
},
- "postcss-color-hsl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-2.0.0.tgz",
- "integrity": "sha1-EnA2ZvoxBDDj8wpFTawThjF9WEQ=",
+ "lodash.templatesettings": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
+ "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
"dev": true,
"requires": {
- "postcss": "^6.0.1",
- "postcss-value-parser": "^3.3.0",
- "units-css": "^0.4.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "lodash._reinterpolate": "^3.0.0"
}
},
- "postcss-color-hwb": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-3.0.0.tgz",
- "integrity": "sha1-NAKxnvTYSXVAwftQcr6YY8qVVx4=",
+ "lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
"requires": {
- "color": "^1.0.3",
- "postcss": "^6.0.1",
- "postcss-message-helpers": "^2.0.0",
- "reduce-function-call": "^1.0.2"
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
},
"dependencies": {
- "color": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
- "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "color-convert": "^1.8.2",
- "color-string": "^1.4.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "color-name": "~1.1.4"
}
- }
- }
- },
- "postcss-color-rebeccapurple": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz",
- "integrity": "sha512-212hJUk9uSsbwO5ECqVjmh/iLsmiVL1xy9ce9TVf+X3cK/ZlUIlaMdoxje/YpsL9cmUH3I7io+/G2LyWx5rg1g==",
- "dev": true,
- "requires": {
- "postcss": "^6.0.22",
- "postcss-values-parser": "^1.5.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "has-flag": "^4.0.0"
}
}
}
},
- "postcss-color-rgb": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz",
- "integrity": "sha1-FFOcinExSUtILg3RzCZf9lFLUmM=",
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dev": true,
"requires": {
- "postcss": "^6.0.1",
- "postcss-value-parser": "^3.3.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "postcss-color-rgba-fallback": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-3.0.0.tgz",
- "integrity": "sha1-N9XJNToHoJJwkSqCYGu0Kg1wLAQ=",
+ "loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
"dev": true,
"requires": {
- "postcss": "^6.0.6",
- "postcss-value-parser": "^3.3.0",
- "rgb-hex": "^2.1.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "get-func-name": "^2.0.0"
}
},
- "postcss-cssnext": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.1.0.tgz",
- "integrity": "sha512-awPDhI4OKetcHCr560iVCoDuP6e/vn0r6EAqdWPpAavJMvkBSZ6kDpSN4b3mB3Ti57hQMunHHM8Wvx9PeuYXtA==",
- "dev": true,
- "requires": {
- "autoprefixer": "^7.1.1",
- "caniuse-api": "^2.0.0",
- "chalk": "^2.0.1",
- "pixrem": "^4.0.0",
- "pleeease-filters": "^4.0.0",
- "postcss": "^6.0.5",
- "postcss-apply": "^0.8.0",
- "postcss-attribute-case-insensitive": "^2.0.0",
- "postcss-calc": "^6.0.0",
- "postcss-color-function": "^4.0.0",
- "postcss-color-gray": "^4.0.0",
- "postcss-color-hex-alpha": "^3.0.0",
- "postcss-color-hsl": "^2.0.0",
- "postcss-color-hwb": "^3.0.0",
- "postcss-color-rebeccapurple": "^3.0.0",
- "postcss-color-rgb": "^2.0.0",
- "postcss-color-rgba-fallback": "^3.0.0",
- "postcss-custom-media": "^6.0.0",
- "postcss-custom-properties": "^6.1.0",
- "postcss-custom-selectors": "^4.0.1",
- "postcss-font-family-system-ui": "^3.0.0",
- "postcss-font-variant": "^3.0.0",
- "postcss-image-set-polyfill": "^0.3.5",
- "postcss-initial": "^2.0.0",
- "postcss-media-minmax": "^3.0.0",
- "postcss-nesting": "^4.0.1",
- "postcss-pseudo-class-any-link": "^4.0.0",
- "postcss-pseudoelements": "^5.0.0",
- "postcss-replace-overflow-wrap": "^2.0.0",
- "postcss-selector-matches": "^3.0.1",
- "postcss-selector-not": "^3.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true
},
- "postcss-custom-media": {
+ "lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz",
- "integrity": "sha1-vlMnhBEOyylQRPtTlaGABushpzc=",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "yallist": "^4.0.0"
}
},
- "postcss-custom-properties": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-6.3.1.tgz",
- "integrity": "sha512-zoiwn4sCiUFbr4KcgcNZLFkR6gVQom647L+z1p/KBVHZ1OYwT87apnS42atJtx6XlX2yI7N5fjXbFixShQO2QQ==",
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"requires": {
- "balanced-match": "^1.0.0",
- "postcss": "^6.0.18"
+ "semver": "^6.0.0"
},
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
}
}
},
- "postcss-custom-selectors": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz",
- "integrity": "sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I=",
+ "make-error": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
+ "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
+ "dev": true
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true
+ },
+ "markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
"dev": true,
"requires": {
- "postcss": "^6.0.1",
- "postcss-selector-matches": "^3.0.0"
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
},
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
}
}
},
- "postcss-font-family-system-ui": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz",
- "integrity": "sha512-58G/hTxMSSKlIRpcPUjlyo6hV2MEzvcVO2m4L/T7Bb2fJTG4DYYfQjQeRvuimKQh1V1sOzCIz99g+H2aFNtlQw==",
+ "md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dev": true,
"requires": {
- "postcss": "^6.0"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
}
},
- "postcss-font-variant": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz",
- "integrity": "sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4=",
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
"dev": true,
"requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
}
},
- "postcss-image-set-polyfill": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz",
- "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=",
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
"requires": {
- "postcss": "^6.0.1",
- "postcss-media-query-parser": "^0.2.3"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
}
},
- "postcss-import": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz",
- "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==",
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"dev": true,
"requires": {
- "postcss": "^7.0.1",
- "postcss-value-parser": "^3.2.3",
- "read-cache": "^1.0.0",
- "resolve": "^1.1.7"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
}
},
- "postcss-initial": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz",
- "integrity": "sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q=",
- "dev": true,
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
"requires": {
- "lodash.template": "^4.2.4",
- "postcss": "^6.0.1"
+ "brace-expansion": "^2.0.1"
},
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "balanced-match": "^1.0.0"
}
}
}
},
- "postcss-load-config": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz",
- "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==",
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "cosmiconfig": "^5.0.0",
- "import-cwd": "^2.0.0"
+ "minimist": "^1.2.5"
}
},
- "postcss-loader": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
- "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "dev": true,
+ "optional": true
+ },
+ "mocha": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
"dev": true,
"requires": {
- "loader-utils": "^1.1.0",
- "postcss": "^7.0.0",
- "postcss-load-config": "^2.0.0",
- "schema-utils": "^1.0.0"
+ "@ungap/promise-all-settled": "1.1.2",
+ "ansi-colors": "4.1.1",
+ "browser-stdout": "1.3.1",
+ "chokidar": "3.5.3",
+ "debug": "4.3.3",
+ "diff": "5.0.0",
+ "escape-string-regexp": "4.0.0",
+ "find-up": "5.0.0",
+ "glob": "7.2.0",
+ "growl": "1.10.5",
+ "he": "1.2.0",
+ "js-yaml": "4.1.0",
+ "log-symbols": "4.1.0",
+ "minimatch": "4.2.1",
+ "ms": "2.1.3",
+ "nanoid": "3.3.1",
+ "serialize-javascript": "6.0.0",
+ "strip-json-comments": "3.1.1",
+ "supports-color": "8.1.1",
+ "which": "2.0.2",
+ "workerpool": "6.2.0",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
+ "yargs-unparser": "2.0.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
}
},
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "argparse": "^2.0.1"
}
- }
- }
- },
- "postcss-media-minmax": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz",
- "integrity": "sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI=",
- "dev": true,
- "requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "p-locate": "^5.0.0"
}
- }
- }
- },
- "postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
- "dev": true
- },
- "postcss-message-helpers": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
- "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
- "dev": true
- },
- "postcss-modules-extract-imports": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
- "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
- "dev": true,
- "requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "minimatch": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "brace-expansion": "^1.1.7"
}
- }
- }
- },
- "postcss-modules-local-by-default": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
- "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "yocto-queue": "^0.1.0"
}
- }
- }
- },
- "postcss-modules-scope": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
- "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "p-limit": "^3.0.2"
}
- }
- }
- },
- "postcss-modules-values": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
- "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
- "dev": true,
- "requires": {
- "icss-replace-symbols": "^1.1.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "has-flag": "^4.0.0"
}
- }
- }
- },
- "postcss-nesting": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz",
- "integrity": "sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA==",
- "dev": true,
- "requires": {
- "postcss": "^6.0.11"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
}
}
},
- "postcss-pseudo-class-any-link": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz",
- "integrity": "sha1-kVKgYT00UHIFE+iJKFS65C0O5o4=",
+ "mocha-junit-reporter": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.2.tgz",
+ "integrity": "sha512-vYwWq5hh3v1lG0gdQCBxwNipBfvDiAM1PHroQRNp96+2l72e9wEUTw+mzoK+O0SudgfQ7WvTQZ9Nh3qkAYAjfg==",
"dev": true,
"requires": {
- "postcss": "^6.0.1",
- "postcss-selector-parser": "^2.2.3"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "debug": "^2.2.0",
+ "md5": "^2.1.0",
+ "mkdirp": "~0.5.1",
+ "strip-ansi": "^6.0.1",
+ "xml": "^1.0.0"
}
},
- "postcss-pseudoelements": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-5.0.0.tgz",
- "integrity": "sha1-7vGU6NUkZFylIKlJ6V5RjoEkAss=",
+ "mocha-multi-reporters": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz",
+ "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==",
"dev": true,
"requires": {
- "postcss": "^6.0.0"
+ "debug": "^4.1.1",
+ "lodash": "^4.17.15"
},
"dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "ms": "2.1.2"
}
}
}
},
- "postcss-replace-overflow-wrap": {
+ "module-details-from-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
+ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="
+ },
+ "mrmime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
+ "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "mute-stdout": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz",
- "integrity": "sha1-eU22+qVPjbEAhUOSqTr0V2i04ls=",
- "dev": true,
- "requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
+ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz",
+ "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==",
+ "dev": true
},
- "postcss-selector-matches": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz",
- "integrity": "sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs=",
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "named-js-regexp": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/named-js-regexp/-/named-js-regexp-1.3.5.tgz",
+ "integrity": "sha512-XO0DPujDP9IWpkt690iWLreKztb/VB811DGl5N3z7BfhkMJuiVZXOi6YN/fEB9qkvtMVTgSZDW8pzdVt8vj/FA=="
+ },
+ "nanoid": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
+ "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==",
+ "dev": true
+ },
+ "napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
"dev": true,
- "requires": {
- "balanced-match": "^0.4.2",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
+ "optional": true
},
- "postcss-selector-not": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz",
- "integrity": "sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk=",
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "nise": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
+ "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
"dev": true,
"requires": {
- "balanced-match": "^0.4.2",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
+ "@sinonjs/commons": "^1.8.3",
+ "@sinonjs/fake-timers": ">=5",
+ "@sinonjs/text-encoding": "^0.7.1",
+ "just-extend": "^4.0.2",
+ "path-to-regexp": "^1.7.0"
}
},
- "postcss-selector-parser": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
- "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+ "node-abi": {
+ "version": "3.45.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
+ "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
"dev": true,
+ "optional": true,
"requires": {
- "flatten": "^1.0.2",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
+ "semver": "^7.3.5"
}
},
- "postcss-value-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
- "dev": true
+ "node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "optional": true
},
- "postcss-values-parser": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz",
- "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==",
+ "node-has-native-dependencies": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-has-native-dependencies/-/node-has-native-dependencies-1.0.2.tgz",
+ "integrity": "sha1-MVLsl1O2ZB5NMi0YXdSTBkmto9o=",
"dev": true,
"requires": {
- "flatten": "^1.0.2",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
+ "fs-walk": "0.0.1"
}
},
- "postinstall-build": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.3.tgz",
- "integrity": "sha512-vPvPe8TKgp4FLgY3+DfxCE5PIfoXBK2lyLfNCxsRbDsV6vS4oU5RG/IWxrblMn6heagbnMED3MemUQllQ2bQUg==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
- "dev": true
- },
- "prettier": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz",
- "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==",
- "dev": true
- },
- "pretty-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
- "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
"dev": true,
"requires": {
- "renderkid": "^2.0.1",
- "utila": "~0.4"
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
}
},
- "pretty-hrtime": {
+ "node-loader": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
- "dev": true
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
- },
- "process-on-spawn": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
- "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
- "dev": true,
- "requires": {
- "fromentries": "^1.2.0"
- }
- },
- "progress": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
- "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-1.0.3.tgz",
+ "integrity": "sha512-8c9ef5q24F0AjrPxUjdX7qdTlsU1zZCPeqYvSBCH1TJko3QW4qu1uA1C9KbOPdaRQwREDdbSYZgltBAlbV7l5g==",
"dev": true,
- "optional": true,
"requires": {
- "asap": "~2.0.3"
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
}
},
- "promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
- "dev": true
- },
- "promise.allsettled": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz",
- "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==",
+ "node-polyfill-webpack-plugin": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz",
+ "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==",
"dev": true,
"requires": {
- "array.prototype.map": "^1.0.1",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "iterate-value": "^1.0.0"
+ "assert": "^2.0.0",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^6.0.3",
+ "console-browserify": "^1.2.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.12.0",
+ "domain-browser": "^4.19.0",
+ "events": "^3.3.0",
+ "filter-obj": "^2.0.2",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
+ "process": "^0.11.10",
+ "punycode": "^2.1.1",
+ "querystring-es3": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "stream-browserify": "^3.0.0",
+ "stream-http": "^3.2.0",
+ "string_decoder": "^1.3.0",
+ "timers-browserify": "^2.0.12",
+ "tty-browserify": "^0.0.1",
+ "url": "^0.11.0",
+ "util": "^0.12.4",
+ "vm-browserify": "^1.1.2"
},
"dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+ "assert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
+ "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
"dev": true,
"requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
+ "es6-object-assign": "^1.1.0",
+ "is-nan": "^1.2.1",
+ "object-is": "^1.0.1",
+ "util": "^0.12.0"
}
},
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
}
},
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "domain-browser": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz",
+ "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==",
"dev": true
},
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+ "path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "stream-browserify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+ "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.4",
+ "readable-stream": "^3.5.0"
+ }
+ },
+ "stream-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+ "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ }
+ },
+ "tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
+ "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
"dev": true,
"requires": {
- "has-symbols": "^1.0.1"
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "safe-buffer": "^5.1.2",
+ "which-typed-array": "^1.1.2"
}
}
}
},
- "prompts": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
- "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
- "prop-types-exact": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz",
- "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==",
+ "node-preload": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
+ "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
"dev": true,
"requires": {
- "has": "^1.0.3",
- "object.assign": "^4.1.0",
- "reflect.ownkeys": "^0.2.0"
+ "process-on-spawn": "^1.0.0"
}
},
- "propagate": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz",
- "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=",
+ "node-releases": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
"dev": true
},
- "proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw=="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
- "proxy-addr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
- "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+ "normalize-url": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
"dev": true,
"requires": {
- "forwarded": "~0.1.2",
- "ipaddr.js": "1.9.0"
+ "prepend-http": "^2.0.0",
+ "query-string": "^5.0.1",
+ "sort-keys": "^2.0.0"
+ },
+ "dependencies": {
+ "sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ }
+ }
}
},
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
- "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA=="
+ "now-and-later": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+ "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.2"
+ }
},
- "public-encrypt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "path-key": "^3.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ }
}
},
- "pump": {
+ "nth-check": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "boolbase": "^1.0.0"
}
},
- "pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "nyc": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
+ "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
"dev": true,
"requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "caching-transform": "^4.0.0",
+ "convert-source-map": "^1.7.0",
+ "decamelize": "^1.2.0",
+ "find-cache-dir": "^3.2.0",
+ "find-up": "^4.1.0",
+ "foreground-child": "^2.0.0",
+ "get-package-type": "^0.1.0",
+ "glob": "^7.1.6",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-hook": "^3.0.0",
+ "istanbul-lib-instrument": "^4.0.0",
+ "istanbul-lib-processinfo": "^2.0.2",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.0.2",
+ "make-dir": "^3.0.0",
+ "node-preload": "^0.2.1",
+ "p-map": "^3.0.0",
+ "process-on-spawn": "^1.0.0",
+ "resolve-from": "^5.0.0",
+ "rimraf": "^3.0.0",
+ "signal-exit": "^3.0.2",
+ "spawn-wrap": "^2.0.0",
+ "test-exclude": "^6.0.0",
+ "yargs": "^15.0.2"
+ },
+ "dependencies": {
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "requires": {
+ "aggregate-error": "^3.0.0"
+ }
+ }
}
},
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
},
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ "object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true
},
- "query-string": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
- "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dev": true,
"requires": {
- "decode-uri-component": "^0.2.0",
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
- "querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true
},
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
},
- "queue": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz",
- "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
"dev": true,
"requires": {
- "inherits": "~2.0.0"
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
}
},
- "queue-microtask": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz",
- "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==",
- "dev": true
- },
- "raf": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
- "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"requires": {
- "performance-now": "^2.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "railroad-diagrams": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
- "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
- "dev": true
+ "object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ }
},
- "randexp": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
- "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
+ "object.hasown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
"dev": true,
"requires": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
"dev": true,
"requires": {
- "safe-buffer": "^5.1.0"
+ "isobject": "^3.0.1"
}
},
- "randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
"dev": true,
"requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "range-inclusive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/range-inclusive/-/range-inclusive-1.0.2.tgz",
- "integrity": "sha1-Rs2KsjevVZKKXDjzpQoXiSDhpQk=",
- "dev": true
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
},
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
},
- "raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dev": true,
"requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- }
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
}
},
- "raw-loader": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
- "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
+ "opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true
},
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "optional": true,
+ "optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
"requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
}
},
- "react": {
- "version": "16.8.6",
- "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz",
- "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==",
+ "ordered-read-streams": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
"dev": true,
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.13.6"
- }
- },
- "react-dev-utils": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
- "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.10.4",
- "address": "1.1.2",
- "browserslist": "4.14.2",
- "chalk": "2.4.2",
- "cross-spawn": "7.0.3",
- "detect-port-alt": "1.1.6",
- "escape-string-regexp": "2.0.0",
- "filesize": "6.1.0",
- "find-up": "4.1.0",
- "fork-ts-checker-webpack-plugin": "4.1.6",
- "global-modules": "2.0.0",
- "globby": "11.0.1",
- "gzip-size": "5.1.1",
- "immer": "8.0.1",
- "is-root": "2.1.0",
- "loader-utils": "2.0.0",
- "open": "^7.0.2",
- "pkg-up": "3.1.0",
- "prompts": "2.4.0",
- "react-error-overlay": "^6.0.9",
- "recursive-readdir": "2.2.2",
- "shell-quote": "1.7.2",
- "strip-ansi": "6.0.0",
- "text-table": "0.2.0"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
- "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
- "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "dev": true,
- "requires": {
- "global-prefix": "^3.0.0"
- }
- },
- "global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
- "dev": true,
- "requires": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- },
- "dependencies": {
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "globby": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
- "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "dev": true
- },
- "json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "shell-quote": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
+ "readable-stream": "^2.0.1"
}
},
- "react-dom": {
- "version": "16.8.6",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz",
- "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==",
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "p-cancelable": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
+ "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "dev": true
+ },
+ "p-event": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
+ "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
"dev": true,
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.13.6"
+ "p-timeout": "^2.0.1"
}
},
- "react-error-overlay": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
- "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==",
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
- "react-is": {
- "version": "16.8.6",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
- "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
+ "p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
"dev": true
},
- "react-lifecycles-compat": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
- "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
- "dev": true
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
},
- "react-motion": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz",
- "integrity": "sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ==",
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "performance-now": "^0.2.0",
- "prop-types": "^15.5.8",
- "raf": "^3.1.0"
- },
- "dependencies": {
- "performance-now": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
- "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
- "dev": true
- }
+ "p-limit": "^2.2.0"
}
},
- "react-move": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/react-move/-/react-move-2.9.1.tgz",
- "integrity": "sha512-5qKYsJrKKpSypEaaYyR2HBbBgX65htRqKDa8o5OGDkq2VfklmTCbLawtYFpdmcJRqbz4jCYpzo2Rrsazq9HA8Q==",
+ "p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.2.0",
- "d3-interpolate": "^1.3.2",
- "d3-timer": "^1.0.9",
- "prop-types": "^15.6.2",
- "react-lifecycles-compat": "^3.0.4"
+ "aggregate-error": "^3.0.0"
}
},
- "react-svgmt": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/react-svgmt/-/react-svgmt-1.1.8.tgz",
- "integrity": "sha512-3xu7iWuHIbqM2hv4eMsAN1mZKz6EnXTPAcE4mMX/NwuYY5uUKJBoKDAmxY+I6KXHx2SpYJtKAqe1a5jEehteZg==",
+ "p-timeout": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
+ "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
"dev": true,
"requires": {
- "d3-ease": "^1.0.3",
- "react-motion": "^0.5.2",
- "react-move": "^2.7.0"
+ "p-finally": "^1.0.0"
}
},
- "react-test-renderer": {
- "version": "16.8.6",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.6.tgz",
- "integrity": "sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==",
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "package-hash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
+ "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
"dev": true,
"requires": {
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "react-is": "^16.8.6",
- "scheduler": "^0.13.6"
+ "graceful-fs": "^4.1.15",
+ "hasha": "^5.0.0",
+ "lodash.flattendeep": "^4.4.0",
+ "release-zalgo": "^1.0.0"
}
},
- "read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
- "mute-stream": "~0.0.4"
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
}
},
- "read-cache": {
+ "parse-passwd": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
- "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+ "dev": true
+ },
+ "parse-semver": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
"dev": true,
"requires": {
- "pify": "^2.3.0"
+ "semver": "^5.1.0"
},
"dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true
}
}
},
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "parse5": "^6.0.1"
},
"dependencies": {
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
}
}
},
- "read-pkg-up": {
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "isarray": "0.0.1"
},
"dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
}
}
},
- "readable-stream": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
- "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
+ "pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
}
},
- "readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
"requires": {
- "picomatch": "^2.2.1"
+ "pinkie": "^2.0.0"
}
},
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"requires": {
- "resolve": "^1.1.6"
+ "find-up": "^4.0.0"
}
},
- "recursive-readdir": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
- "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "plugin-error": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
+ "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
"dev": true,
"requires": {
- "minimatch": "3.0.4"
+ "ansi-colors": "^1.0.1",
+ "arr-diff": "^4.0.0",
+ "arr-union": "^3.1.0",
+ "extend-shallow": "^3.0.2"
}
},
- "reduce-css-calc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
- "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+ "postinstall-build": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.3.tgz",
+ "integrity": "sha512-vPvPe8TKgp4FLgY3+DfxCE5PIfoXBK2lyLfNCxsRbDsV6vS4oU5RG/IWxrblMn6heagbnMED3MemUQllQ2bQUg==",
+ "dev": true
+ },
+ "prebuild-install": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
"dev": true,
+ "optional": true,
"requires": {
- "balanced-match": "^0.4.2",
- "math-expression-evaluator": "^1.2.14",
- "reduce-function-call": "^1.0.1"
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
},
"dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
}
}
},
- "reduce-function-call": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz",
- "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
},
- "reflect-metadata": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
- "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true
},
- "reflect.ownkeys": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz",
- "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=",
+ "prettier": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz",
+ "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==",
"dev": true
},
- "regenerate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
},
- "regenerator-runtime": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
- "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==",
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "process-on-spawn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
+ "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
+ "fromentries": "^1.2.0"
}
},
- "regexp.prototype.flags": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
- "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
+ "prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
- },
- "dependencies": {
- "es-abstract": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz",
- "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.1.5",
- "is-regex": "^1.0.5",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimleft": "^2.1.1",
- "string.prototype.trimright": "^2.1.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
- "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
- "dev": true
- },
- "is-regex": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
- "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- }
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
}
},
- "regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
- "dev": true
- },
- "relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
- "dev": true
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
},
- "release-zalgo": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
- "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"dev": true,
"requires": {
- "es6-error": "^4.0.1"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
}
},
- "remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
+ "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
"dev": true,
"requires": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
+ "side-channel": "^1.0.6"
}
},
- "remove-files-webpack-plugin": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/remove-files-webpack-plugin/-/remove-files-webpack-plugin-1.4.0.tgz",
- "integrity": "sha512-qlHn4EHNjWi6LiNV6aWCXROKjQg28sF/VxJ2FK+p5pPUQyLIBGlBAs/TUMxdVeToHSxq2RuA2XGgxcaDeTRnUg==",
+ "query-string": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
"dev": true,
"requires": {
- "@types/webpack": "^4.41.6",
- "trash": "^6.1.1"
- },
- "dependencies": {
- "@types/webpack": {
- "version": "4.41.7",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.7.tgz",
- "integrity": "sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA==",
- "dev": true,
- "requires": {
- "@types/anymatch": "*",
- "@types/node": "*",
- "@types/tapable": "*",
- "@types/uglify-js": "*",
- "@types/webpack-sources": "*",
- "source-map": "^0.6.0"
- }
- }
+ "decode-uri-component": "^0.2.0",
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
}
},
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
- "renderkid": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.6.tgz",
- "integrity": "sha512-GIis2GBr/ho0pFNf57D4XM4+PgnQuTii0WCPjEZmZfKivzUfGuRdjN2aQYtYMiNggHmNyBve+thFnNR1iBRcKg==",
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
- "requires": {
- "css-select": "^4.1.3",
- "dom-converter": "^0.2.0",
- "htmlparser2": "^6.1.0",
- "lodash": "^4.17.21",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "css-select": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
- "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^5.0.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.6.0",
- "nth-check": "^2.0.0"
- }
- },
- "css-what": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
- "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
- "dev": true
- },
- "dom-serializer": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
- "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- }
- },
- "domelementtype": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
- "dev": true
- },
- "domhandler": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
- "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
- "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
- "dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true
- },
- "htmlparser2": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "nth-check": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"dev": true,
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "optional": true
+ }
+ }
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "dev": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.0"
+ "safe-buffer": "~5.1.0"
}
}
}
},
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
},
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
+ "rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.20.0"
+ }
},
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+ },
+ "regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
"dev": true
},
- "replace-homedir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
+ "regexp.prototype.flags": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz",
+ "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==",
"dev": true,
"requires": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
},
- "request-progress": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
- "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
+ "release-zalgo": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
+ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
+ "dev": true,
"requires": {
- "throttleit": "^1.0.0"
+ "es6-error": "^4.0.1"
}
},
- "request-promise-core": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz",
- "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==",
+ "remove-bom-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+ "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
"dev": true,
"requires": {
- "lodash": "^4.17.11"
+ "is-buffer": "^1.1.5",
+ "is-utf8": "^0.2.1"
}
},
- "request-promise-native": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz",
- "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==",
+ "remove-bom-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+ "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
"dev": true,
"requires": {
- "request-promise-core": "1.1.2",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
+ "remove-bom-buffer": "^3.0.0",
+ "safe-buffer": "^5.1.0",
+ "through2": "^2.0.3"
}
},
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "replace-homedir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz",
+ "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==",
+ "dev": true
+ },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true
},
- "requirejs": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
- "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
- "dev": true
+ "require-in-the-middle": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz",
+ "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==",
+ "requires": {
+ "debug": "^4.1.1",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.22.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
},
"resolve": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
- "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
- "dev": true,
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"requires": {
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
}
},
"resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
"requires": {
- "resolve-from": "^3.0.0"
+ "resolve-from": "^5.0.0"
}
},
"resolve-dir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
"dev": true,
"requires": {
"expand-tilde": "^2.0.0",
@@ -16054,9 +22626,9 @@
}
},
"resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
"resolve-options": {
@@ -16068,12 +22640,6 @@
"value-or-function": "^3.0.0"
}
},
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
"responselike": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -16083,12 +22649,6 @@
"lowercase-keys": "^1.0.0"
}
},
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
"reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -16096,9 +22656,9 @@
"dev": true
},
"rewiremock": {
- "version": "3.13.7",
- "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.13.7.tgz",
- "integrity": "sha512-U6iFfdXPiNtIBDcJWmspl/nhVk1EANkXLq2GM78T3ZfegvO5EW0TgNzExLh5iHXFJKQr//SmH9iloK/s4O7UqA==",
+ "version": "3.14.5",
+ "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz",
+ "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==",
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
@@ -16107,27 +22667,10 @@
"lodash.template": "^4.4.0",
"node-libs-browser": "^2.1.0",
"path-parse": "^1.0.5",
- "wipe-node-cache": "^2.1.0",
+ "wipe-node-cache": "^2.1.2",
"wipe-webpack-cache": "^2.1.0"
}
},
- "rfdc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
- "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
- },
- "rgb": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
- "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=",
- "dev": true
- },
- "rgb-hex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz",
- "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=",
- "dev": true
- },
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -16147,22 +22690,6 @@
"inherits": "^2.0.1"
}
},
- "rst-selector-parser": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
- "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
- "dev": true,
- "requires": {
- "lodash.flattendeep": "^4.4.0",
- "nearley": "^2.7.10"
- }
- },
- "run-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
- "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
- "dev": true
- },
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -16172,41 +22699,24 @@
"queue-microtask": "^1.2.2"
}
},
- "run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1"
- }
- },
"rxjs": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
- "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"requires": {
"tslib": "^1.9.0"
}
},
"rxjs-compat": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.5.4.tgz",
- "integrity": "sha512-rkn+lbOHUQOurdd74J/hjmDsG9nFx0z66fvnbs8M95nrtKvNqCKdk7iZqdY51CGmDemTQk+kUPy4s8HVOHtkfA=="
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz",
+ "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw=="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -16214,38 +22724,19 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sax": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
- "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE="
- },
- "saxes": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
- "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
- "dev": true,
- "requires": {
- "xmlchars": "^2.1.1"
- }
- },
- "scheduler": {
- "version": "0.13.6",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz",
- "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
}
},
"seek-bzip": {
@@ -16269,101 +22760,49 @@
}
},
"semver": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
- "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA=="
- },
- "semver-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
- "dev": true
- },
- "semver-greatest-satisfied-range": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
- "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
- "dev": true,
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"requires": {
- "sver-compat": "^1.5.0"
+ "lru-cache": "^6.0.0"
}
},
- "send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "semver-greatest-satisfied-range": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz",
+ "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==",
"dev": true,
"requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- }
+ "sver": "^1.8.3"
}
},
"serialize-javascript": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
- "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
}
},
- "serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
- "dev": true,
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- }
- },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
},
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
}
},
"setimmediate": {
@@ -16372,12 +22811,6 @@
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
"dev": true
},
- "setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
- "dev": true
- },
"sha.js": {
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
@@ -16388,6 +22821,15 @@
"safe-buffer": "^5.0.1"
}
},
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -16403,125 +22845,96 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
- "shell-quote": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
- "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
- "dev": true,
- "requires": {
- "array-filter": "~0.0.0",
- "array-map": "~0.0.0",
- "array-reduce": "~0.0.0",
- "jsonify": "~0.0.0"
- },
- "dependencies": {
- "array-filter": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
- "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
- "dev": true
- }
- }
- },
"shimmer": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
"integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
},
"shortid": {
- "version": "2.2.14",
- "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.14.tgz",
- "integrity": "sha512-4UnZgr9gDdA1kaKj/38IiudfC3KHKhDc1zi/HSxd9FQDR0VLwH3/y79tZJLsVYPsJgIjeHjqIWaWVRJUj9qZOQ==",
+ "version": "2.2.16",
+ "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
+ "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
"dev": true,
"requires": {
- "nanoid": "^2.0.0"
+ "nanoid": "^2.1.0"
}
},
"side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
}
},
- "sigmund": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
- "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
- "dev": true
- },
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
},
"simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "dev": true,
"optional": true
},
"simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "dev": true,
"optional": true,
"requires": {
- "decompress-response": "^4.2.0",
+ "decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
},
"dependencies": {
"decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
"optional": true,
"requires": {
- "mimic-response": "^2.0.0"
+ "mimic-response": "^3.1.0"
}
},
"mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
"optional": true
}
}
},
- "simple-html-tokenizer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.1.1.tgz",
- "integrity": "sha1-BcLuxXn//+FFoDCsJs/qYbmA+r4=",
- "dev": true
- },
- "simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
- "requires": {
- "is-arrayish": "^0.3.1"
- }
- },
"sinon": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-8.0.1.tgz",
- "integrity": "sha512-vbXMHBszVioyPsuRDLEiPEgvkZnbjfdCFvLYV4jONNJqZNLWTwZ/gYSNh3SuiT1w9MRXUz+S7aX0B4Ar2XI8iw==",
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz",
+ "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==",
"dev": true,
"requires": {
- "@sinonjs/commons": "^1.7.0",
- "@sinonjs/formatio": "^4.0.1",
- "@sinonjs/samsam": "^4.0.1",
- "diff": "^4.0.1",
- "lolex": "^5.1.2",
- "nise": "^3.0.0",
- "supports-color": "^7.1.0"
+ "@sinonjs/commons": "^1.8.3",
+ "@sinonjs/fake-timers": "^9.0.0",
+ "@sinonjs/samsam": "^6.1.1",
+ "diff": "^5.0.0",
+ "nise": "^5.1.1",
+ "supports-color": "^7.2.0"
},
"dependencies": {
+ "diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "dev": true
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -16529,9 +22942,9 @@
"dev": true
},
"supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
@@ -16539,264 +22952,56 @@
}
}
},
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- },
- "slice-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- }
- }
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "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"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "socket.io": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz",
- "integrity": "sha512-9UPJ1UTvKayuQfVv2IQ3k7tCQC/fboDyIK62i99dAQIyHKaBsNdTpwHLgKJ6guRWxRtC9H+138UwpaGuQO9uWQ==",
+ "sirv": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
+ "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
"dev": true,
"requires": {
- "debug": "~4.1.0",
- "engine.io": "~3.5.0",
- "has-binary2": "~1.0.2",
- "socket.io-adapter": "~1.1.0",
- "socket.io-client": "2.4.0",
- "socket.io-parser": "~3.4.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "@polka/url": "^1.0.0-next.20",
+ "mrmime": "^1.0.0",
+ "totalist": "^1.0.0"
}
},
- "socket.io-adapter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
- "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==",
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
- "socket.io-client": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz",
- "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==",
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
"requires": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "engine.io-client": "~3.5.0",
- "has-binary2": "~1.0.2",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "socket.io-parser": "~3.3.0",
- "to-array": "0.1.4"
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
},
"dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "color-convert": "^2.0.1"
}
},
- "isarray": {
+ "color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "socket.io-parser": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
- "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
- "dev": true,
- "requires": {
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "isarray": "2.0.1"
- }
- }
- }
- },
- "socket.io-parser": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
- "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
- "dev": true,
- "requires": {
- "component-emitter": "1.2.1",
- "debug": "~4.1.0",
- "isarray": "2.0.1"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "color-name": "~1.1.4"
}
},
- "isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
}
}
@@ -16819,51 +23024,26 @@
"sort-keys": "^1.0.0"
}
},
- "source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
"source-map-support": {
- "version": "0.5.12",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
- "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
"sparkles": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
- "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz",
+ "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==",
"dev": true
},
"spawn-wrap": {
@@ -16878,168 +23058,28 @@
"rimraf": "^3.0.0",
"signal-exit": "^3.0.2",
"which": "^2.0.1"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz",
- "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
- "split": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
- "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
}
},
"sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "ssri": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
- "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1"
- }
- },
- "stack-chain": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
- "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU="
- },
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
- },
- "stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha1-Gsig2Ug4SNFpXkGLbQMaPDzmjjs=",
- "dev": true
- },
- "stat-mode": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
- "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
- "dev": true
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "stack-chain": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
+ "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug=="
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+ },
+ "stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
"dev": true
},
"stream-browserify": {
@@ -17050,57 +23090,15 @@
"requires": {
"inherits": "~2.0.1",
"readable-stream": "^2.0.2"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
- "dev": true,
- "requires": {
- "duplexer": "~0.1.1"
}
},
- "stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "stream-composer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz",
+ "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
+ "streamx": "^2.13.2"
}
},
"stream-exhaust": {
@@ -17120,38 +23118,6 @@
"readable-stream": "^2.3.6",
"to-arraybuffer": "^1.0.0",
"xtend": "^4.0.0"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"stream-shift": {
@@ -17160,45 +23126,16 @@
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
- "streamifier": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
- "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=",
- "dev": true
- },
- "streamroller": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.3.tgz",
- "integrity": "sha512-AegmvQsscTRhHVO46PhCDerjIpxi7E+d2GxgUDu+nzw/HuLnUdxHWr6WQ+mVn/4iJgMKKFFdiUwFcFRDvcjCtw==",
+ "streamx": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
+ "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
+ "dev": true,
"requires": {
- "date-format": "^2.1.0",
- "debug": "^4.1.1",
- "fs-extra": "^8.1.0"
- },
- "dependencies": {
- "date-format": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
- "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA=="
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- }
+ "bare-events": "^2.2.0",
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
}
},
"strict-uri-encode": {
@@ -17207,279 +23144,79 @@
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
"dev": true
},
- "string-argv": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
- "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg=="
- },
- "string-hash": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
- "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
- "dev": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "string.prototype.matchall": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz",
- "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==",
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0",
- "has-symbols": "^1.0.1",
- "internal-slot": "^1.0.2",
- "regexp.prototype.flags": "^1.3.0",
- "side-channel": "^1.0.2"
+ "safe-buffer": "~5.2.0"
},
"dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
- },
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
}
}
},
- "string.prototype.trim": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
- "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.0",
- "function-bind": "^1.0.2"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
- "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
- },
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- }
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
- "string.prototype.trimleft": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
- "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
+ "string.prototype.matchall": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
"dev": true,
"requires": {
+ "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.1",
+ "side-channel": "^1.0.4"
}
},
- "string.prototype.trimright": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
- "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
+ "string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
"string.prototype.trimstart": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
- "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
"dev": true,
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
- },
- "dependencies": {
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
- "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- }
- }
- },
- "string_decoder": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
- "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
- "requires": {
- "safe-buffer": "~5.1.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
"strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "ansi-regex": "^5.0.1"
}
},
- "strip-bom-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
- "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=",
- "dev": true
- },
"strip-dirs": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
@@ -17489,146 +23226,32 @@
"is-natural-number": "^4.0.1"
}
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
"strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "optional": true
- },
- "strip-outer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
- "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.2"
- }
- },
- "style-loader": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
- "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "schema-utils": "^1.0.0"
- }
- },
- "styled-jsx": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.2.1.tgz",
- "integrity": "sha512-gM/WOrWYRpWReivzQqetEGohUc/TJSvUoZ5T/UJxJZIsVIPlRQLnp7R8Oue4q49sI08EBRQjQl2oBL3sfdrw2g==",
- "dev": true,
- "requires": {
- "babel-plugin-syntax-jsx": "6.18.0",
- "babel-types": "6.26.0",
- "convert-source-map": "1.6.0",
- "loader-utils": "1.2.3",
- "source-map": "0.7.3",
- "string-hash": "1.1.3",
- "stylis": "3.5.4",
- "stylis-rule-sheet": "0.0.10"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
- }
- },
- "stylis": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
- "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==",
- "dev": true
- },
- "stylis-rule-sheet": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz",
- "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
- "subarg": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
- "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
- "dev": true,
- "requires": {
- "minimist": "^1.1.0"
- }
- },
- "sudo-prompt": {
- "version": "8.2.5",
- "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz",
- "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw=="
- },
- "superagent": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
- "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
- "dev": true,
- "requires": {
- "component-emitter": "^1.2.0",
- "cookiejar": "^2.1.0",
- "debug": "^3.1.0",
- "extend": "^3.0.0",
- "form-data": "^2.3.1",
- "formidable": "^1.2.0",
- "methods": "^1.1.1",
- "mime": "^1.4.1",
- "qs": "^6.5.1",
- "readable-stream": "^2.3.5"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
+ "strip-outer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+ "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.2"
}
},
+ "sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -17638,143 +23261,129 @@
"has-flag": "^3.0.0"
}
},
- "sver-compat": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
- "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
- "dev": true,
- "requires": {
- "es6-iterator": "^2.0.1",
- "es6-symbol": "^3.1.1"
- }
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
},
- "svg-inline-loader": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/svg-inline-loader/-/svg-inline-loader-0.8.0.tgz",
- "integrity": "sha512-rynplY2eXFrdNomL1FvyTFQlP+dx0WqbzHglmNtA9M4IHRC3no2aPAl3ny9lUpJzFzFMZfWRK5YIclNU+FRePA==",
+ "sver": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz",
+ "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==",
"dev": true,
"requires": {
- "loader-utils": "^0.2.11",
- "object-assign": "^4.0.1",
- "simple-html-tokenizer": "^0.1.1"
+ "semver": "^6.3.0"
},
"dependencies": {
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
- }
+ "optional": true
}
}
},
- "svg-inline-react": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/svg-inline-react/-/svg-inline-react-3.1.0.tgz",
- "integrity": "sha512-c39AIRQOUXLMD8fQ2rHmK1GOSO3tVuZk61bAXqIT05uhhm3z4VtQFITQSwyhL0WA2uxoJAIhPd2YV0CYQOolSA==",
- "dev": true,
- "requires": {
- "prop-types": "^15.5.0"
- }
- },
- "symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
"table": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
- "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "version": "6.7.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz",
+ "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==",
"dev": true,
"requires": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
},
"dependencies": {
"ajv": {
- "version": "6.12.4",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
- "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz",
+ "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
}
}
},
"tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true
},
- "tar": {
- "version": "4.4.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
- "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "dev": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
},
"dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "optional": true
+ "bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
}
}
},
@@ -17791,325 +23400,45 @@
"readable-stream": "^2.3.0",
"to-buffer": "^1.1.1",
"xtend": "^4.0.0"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"tas-client": {
- "version": "0.1.21",
- "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.21.tgz",
- "integrity": "sha512-7UuIwOXarCYoCTrQHY5n7M+63XuwMC0sVUdbPQzxqDB9wMjIW0JF39dnp3yoJnxr4jJUVhPtvkkXZbAD0BxCcA==",
+ "version": "0.2.33",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz",
+ "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg=="
+ },
+ "teex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
+ "dev": true,
"requires": {
- "axios": "^0.21.1"
+ "streamx": "^2.12.5"
}
},
- "terser-webpack-plugin": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz",
- "integrity": "sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA==",
+ "terser": {
+ "version": "5.14.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+ "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
"dev": true,
"requires": {
- "cacache": "^15.0.5",
- "find-cache-dir": "^3.3.1",
- "jest-worker": "^26.2.1",
- "p-limit": "^3.0.2",
- "schema-utils": "^2.6.6",
- "serialize-javascript": "^4.0.0",
- "source-map": "^0.6.1",
- "terser": "^4.8.0",
- "webpack-sources": "^1.4.3"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.3",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
- "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "cacache": {
- "version": "15.0.5",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
- "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
- "dev": true,
- "requires": {
- "@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"
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz",
- "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "p-limit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz",
- "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- }
- }
- },
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "schema-utils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
- "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.4",
- "ajv": "^6.12.2",
- "ajv-keywords": "^3.4.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "ssri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
- "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
- "dev": true,
- "requires": {
- "minipass": "^3.1.1"
- }
- },
- "tar": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz",
- "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==",
- "dev": true,
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.0",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- }
- },
- "terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- }
- },
- "webpack-sources": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
- "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
- "requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
+ "@jridgewell/source-map": "^0.3.2",
+ "acorn": "^8.5.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
+ "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==",
+ "dev": true,
+ "requires": {
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.0",
+ "source-map": "^0.6.1",
+ "terser": "^5.7.2"
}
},
"test-exclude": {
@@ -18121,12 +23450,27 @@
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
"minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
}
},
- "text-hex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
- "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
+ "text-decoder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz",
+ "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==",
+ "dev": true,
+ "requires": {
+ "b4a": "^1.6.4"
+ }
},
"text-table": {
"version": "0.2.0",
@@ -18134,22 +23478,6 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
- "thread-loader": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz",
- "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==",
- "dev": true,
- "requires": {
- "loader-runner": "^2.3.1",
- "loader-utils": "^1.1.0",
- "neo-async": "^2.6.0"
- }
- },
- "throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw="
- },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -18164,38 +23492,6 @@
"requires": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"through2-filter": {
@@ -18208,12 +23504,6 @@
"xtend": "~4.0.0"
}
},
- "time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
- "dev": true
- },
"timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
@@ -18221,36 +23511,20 @@
"dev": true
},
"timers-browserify": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
- "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
"dev": true,
"requires": {
"setimmediate": "^1.0.4"
}
},
- "timers-ext": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
- "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
- "dev": true,
- "requires": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
- }
- },
- "tiny-inflate": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
- "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
- "dev": true
- },
"tmp": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz",
- "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"requires": {
- "os-tmpdir": "~1.0.1"
+ "os-tmpdir": "~1.0.2"
}
},
"to-absolute-glob": {
@@ -18263,12 +23537,6 @@
"is-negated-glob": "^1.0.0"
}
},
- "to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
- "dev": true
- },
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -18284,49 +23552,16 @@
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true
},
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
"to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "is-number": "^7.0.0"
}
},
"to-through": {
@@ -18338,184 +23573,130 @@
"through2": "^2.0.3"
}
},
- "toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "dev": true
- },
- "toposort": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
- "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+ "totalist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
"dev": true
},
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- }
- }
- },
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "transform-loader": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/transform-loader/-/transform-loader-0.2.4.tgz",
- "integrity": "sha1-5ch4d7qW1R0/IlNoWHtG4ibRzsk=",
+ "trim-repeated": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
"dev": true,
"requires": {
- "loader-utils": "^1.0.2"
+ "escape-string-regexp": "^1.0.2"
}
},
- "trash": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/trash/-/trash-6.1.1.tgz",
- "integrity": "sha512-4i56lCmz2RG6WZN018hf4L75L5HboaFuKkHx3wDG/ihevI99e0OgFyl8w6G4ioqBm62V4EJqCy5xw3vQSNXU8A==",
+ "ts-loader": {
+ "version": "9.2.8",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz",
+ "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==",
"dev": true,
"requires": {
- "@stroncium/procfs": "^1.0.0",
- "globby": "^7.1.1",
- "is-path-inside": "^3.0.2",
- "make-dir": "^3.0.0",
- "move-file": "^1.1.0",
- "p-map": "^3.0.0",
- "p-try": "^2.2.0",
- "uuid": "^3.3.2",
- "xdg-trashdir": "^2.1.1"
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4"
},
"dependencies": {
- "is-path-inside": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
- "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
- "dev": true
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
},
- "make-dir": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
- "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "semver": "^6.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "p-map": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "aggregate-error": "^3.0.0"
+ "color-name": "~1.1.4"
}
},
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="
- },
- "trim-repeated": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.2"
- }
- },
- "triple-beam": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
- "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
- },
- "tryer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
- "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
- "dev": true
- },
- "ts-loader": {
- "version": "5.4.5",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz",
- "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==",
- "dev": true,
- "requires": {
- "chalk": "^2.3.0",
- "enhanced-resolve": "^4.0.0",
- "loader-utils": "^1.0.2",
- "micromatch": "^3.1.4",
- "semver": "^5.0.1"
- }
- },
- "ts-mock-imports": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.0.tgz",
- "integrity": "sha512-cCrVcRYsp84eDvPict0ZZD/D7ppQ0/JSx4ve6aEU8DjlsaWRJWV6ADMovp2sCuh6pZcduLFoIYhKTDU2LARo7Q==",
- "dev": true
- },
"ts-mockito": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/ts-mockito/-/ts-mockito-2.5.0.tgz",
- "integrity": "sha512-b3qUeMfghRq5k5jw3xNJcnU9RKhqKnRn0k9v9QkN+YpuawrFuMIiGwzFZCpdi5MHy26o7YPnK8gag2awURl3nA==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/ts-mockito/-/ts-mockito-2.6.1.tgz",
+ "integrity": "sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw==",
"dev": true,
"requires": {
"lodash": "^4.17.5"
}
},
"ts-node": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
- "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
- "dev": true,
- "requires": {
+ "version": "10.7.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
+ "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
+ "dev": true,
+ "requires": {
+ "@cspotcode/source-map-support": "0.7.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
"arg": "^4.1.0",
+ "create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
- "source-map-support": "^0.5.6",
- "yn": "^3.0.0"
+ "v8-compile-cache-lib": "^3.0.0",
+ "yn": "3.1.1"
}
},
"tsconfig-paths": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.8.0.tgz",
- "integrity": "sha512-zZEYFo4sjORK8W58ENkRn9s+HmQFkkwydDG7My5s/fnfr2YYCaiyXe/HBUcIgU8epEKOXwiahOO+KZYjiXlWyQ==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
"dev": true,
"requires": {
"@types/json5": "^0.0.29",
- "deepmerge": "^2.0.1",
"json5": "^1.0.1",
- "minimist": "^1.2.0",
+ "minimist": "^1.2.6",
"strip-bom": "^3.0.0"
},
"dependencies": {
"json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
@@ -18530,14 +23711,65 @@
}
},
"tsconfig-paths-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz",
- "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz",
+ "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==",
"dev": true,
"requires": {
- "chalk": "^2.3.0",
- "enhanced-resolve": "^4.0.0",
- "tsconfig-paths": "^3.4.0"
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.7.0",
+ "tsconfig-paths": "^3.9.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
"tslib": {
@@ -18546,9 +23778,9 @@
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
},
"tsutils": {
- "version": "3.17.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
- "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
@@ -18569,104 +23801,45 @@
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "type": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
- "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==",
- "dev": true
- },
"type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "prelude-ls": "^1.2.1"
}
},
- "typed-react-markdown": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/typed-react-markdown/-/typed-react-markdown-0.1.0.tgz",
- "integrity": "sha1-HDra9CvB8NjGoJsKyAhfNt8KNn8=",
- "dev": true,
- "requires": {
- "@types/react": "^0.14.44"
- },
- "dependencies": {
- "@types/react": {
- "version": "0.14.57",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-0.14.57.tgz",
- "integrity": "sha1-GHioZU+v3R04G4RXKStkM0mMW2I=",
- "dev": true
- }
- }
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
},
"typed-rest-client": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz",
- "integrity": "sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==",
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
"dev": true,
"requires": {
"qs": "^6.9.1",
"tunnel": "0.0.6",
"underscore": "^1.12.1"
- },
- "dependencies": {
- "qs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
- "dev": true,
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "underscore": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
- "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
- "dev": true
- }
}
},
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
"typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -18688,55 +23861,34 @@
}
},
"typescript": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz",
- "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==",
+ "version": "4.5.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
+ "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
"dev": true
},
- "typescript-char": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/typescript-char/-/typescript-char-0.0.0.tgz",
- "integrity": "sha1-VY/tpzfHZaYQtzfu+7F3Xum8jas="
- },
- "typescript-formatter": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz",
- "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==",
- "dev": true,
- "requires": {
- "commandpost": "^1.0.0",
- "editorconfig": "^0.15.0"
- }
- },
"uc.micro": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
"dev": true
},
- "uglify-js": {
- "version": "3.4.10",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
- "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+ "uint64be": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-3.0.0.tgz",
+ "integrity": "sha512-mliiCSrsE29aNBI7O9W5gGv6WmA9kBR8PtTt6Apaxns076IRdYrrtFhXHEWMj5CSum3U7cv7/pi4xmi4XsIOqg=="
+ },
+ "unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
"dev": true,
"requires": {
- "commander": "~2.19.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
- "dev": true
- }
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
}
},
- "uint64be": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-1.0.1.tgz",
- "integrity": "sha1-H3FUIC8qG4rzU4cd2mUb80zpPpU="
- },
"unbzip2-stream": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
@@ -18754,95 +23906,44 @@
"dev": true
},
"underscore": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
- "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
- },
- "undertaker": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz",
- "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "bach": "^1.0.0",
- "collection-map": "^1.0.0",
- "es6-weak-map": "^2.0.1",
- "last-run": "^1.1.0",
- "object.defaults": "^1.0.0",
- "object.reduce": "^1.0.0",
- "undertaker-registry": "^1.0.0"
- }
- },
- "undertaker-registry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
- "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
"dev": true
},
- "unicode": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/unicode/-/unicode-10.0.0.tgz",
- "integrity": "sha1-5dUcHbk7bHGguHngsMSvfm/faI4="
- },
- "unicode-properties": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz",
- "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==",
+ "undertaker": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz",
+ "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==",
"dev": true,
"requires": {
- "base64-js": "^1.3.0",
- "unicode-trie": "^2.0.0"
+ "bach": "^2.0.1",
+ "fast-levenshtein": "^3.0.0",
+ "last-run": "^2.0.0",
+ "undertaker-registry": "^2.0.0"
},
"dependencies": {
- "unicode-trie": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
- "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
+ "fast-levenshtein": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
+ "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
"dev": true,
"requires": {
- "pako": "^0.2.5",
- "tiny-inflate": "^1.0.0"
+ "fastest-levenshtein": "^1.0.7"
}
}
}
},
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "undertaker-registry": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz",
+ "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==",
"dev": true
},
- "unique-filename": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
- "dev": true,
- "requires": {
- "unique-slug": "^2.0.0"
- }
- },
- "unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4"
- }
+ "unicode": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/unicode/-/unicode-14.0.0.tgz",
+ "integrity": "sha512-BjinxTXkbm9Jomp/YBTMGusr4fxIG67fNGShHIRAL16Ur2GJTq2xvLi+sxuiJmInCmwqqev2BCFKyvbfp/yAkg=="
},
"unique-stream": {
"version": "2.3.1",
@@ -18854,98 +23955,30 @@
"through2-filter": "^3.0.0"
}
},
- "units-css": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz",
- "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=",
- "dev": true,
- "requires": {
- "isnumeric": "^0.2.0",
- "viewport-dimensions": "^0.2.0"
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
+ "untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw=="
},
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
"dev": true,
"requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- }
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
}
},
- "untildify": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz",
- "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA=="
- },
- "upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
- },
- "upper-case": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
- "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
- "dev": true
- },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
"requires": {
"punycode": "^2.1.0"
}
},
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
@@ -18965,30 +23998,11 @@
}
},
"url-join": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz",
- "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
"dev": true
},
- "url-loader": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
- "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "mime": "^2.0.3",
- "schema-utils": "^1.0.0"
- },
- "dependencies": {
- "mime": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
- "dev": true
- }
- }
- },
"url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -19004,21 +24018,6 @@
"integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
"dev": true
},
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "user-home": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
- "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0"
- }
- },
"util": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -19039,55 +24038,31 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "utila": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
- "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
- "dev": true
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"v8-compile-cache": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
- "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
+ "v8-compile-cache-lib": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
+ "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
+ "dev": true
},
- "validator": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
- "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
+ "v8flags": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz",
+ "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==",
+ "dev": true
},
"value-or-function": {
"version": "3.0.0",
@@ -19095,32 +24070,10 @@
"integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
"dev": true
},
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "dev": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "viewport-dimensions": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz",
- "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=",
- "dev": true
- },
"vinyl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
- "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+ "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
"dev": true,
"requires": {
"clone": "^2.1.1",
@@ -19129,13 +24082,68 @@
"cloneable-readable": "^1.0.0",
"remove-trailing-separator": "^1.0.1",
"replace-ext": "^1.0.0"
+ }
+ },
+ "vinyl-contents": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz",
+ "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==",
+ "dev": true,
+ "requires": {
+ "bl": "^5.0.0",
+ "vinyl": "^3.0.0"
},
"dependencies": {
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "requires": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "replace-ext": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
"dev": true
+ },
+ "vinyl": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz",
+ "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==",
+ "dev": true,
+ "requires": {
+ "clone": "^2.1.2",
+ "clone-stats": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0",
+ "replace-ext": "^2.0.0",
+ "teex": "^1.0.1"
+ }
}
}
},
@@ -19162,38 +24170,6 @@
"value-or-function": "^3.0.0",
"vinyl": "^2.0.0",
"vinyl-sourcemap": "^1.1.0"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"vinyl-sourcemap": {
@@ -19214,599 +24190,235 @@
"normalize-path": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "vm-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz",
- "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==",
- "dev": true
- },
- "vsce": {
- "version": "1.88.0",
- "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.88.0.tgz",
- "integrity": "sha512-FS5ou3G+WRnPPr/tWVs8b/jVzeDacgZHy/y7/QQW7maSPFEAmRt2bFGUJtJVEUDLBqtDm/3VGMJ7D31cF2U1tw==",
- "dev": true,
- "requires": {
- "azure-devops-node-api": "^10.2.2",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.1",
- "commander": "^6.1.0",
- "denodeify": "^1.2.1",
- "glob": "^7.0.6",
- "leven": "^3.1.0",
- "lodash": "^4.17.15",
- "markdown-it": "^10.0.0",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "osenv": "^0.1.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^5.1.0",
- "tmp": "0.0.29",
- "typed-rest-client": "^1.8.4",
- "url-join": "^1.1.0",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "dependencies": {
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
}
}
},
- "vscode-debugadapter": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.35.0.tgz",
- "integrity": "sha512-Au90Iowj6TuD5uDMaTnxOjl/9hQN0Yoky1TV1Cjjr7jPdxTQpALBRW09Y2LzkIXUVICXlAqxWL9zL8BpzI30jg==",
- "requires": {
- "mkdirp": "^0.5.1",
- "vscode-debugprotocol": "1.35.0"
- }
- },
- "vscode-debugadapter-testsupport": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/vscode-debugadapter-testsupport/-/vscode-debugadapter-testsupport-1.35.0.tgz",
- "integrity": "sha512-4emLt6JOk4iKqC2aWNJupOtrK6JwYAZ6KppqvKASN6B1s063VoqI18QhUB1CeoKwNaN1LIG3VPv2xM8HKOjyDA==",
- "dev": true,
- "requires": {
- "vscode-debugprotocol": "1.35.0"
- }
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
},
"vscode-debugprotocol": {
"version": "1.35.0",
"resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.35.0.tgz",
"integrity": "sha512-+OMm11R1bGYbpIJ5eQIkwoDGFF4GvBz3Ztl6/VM+/RNNb2Gjk2c0Ku+oMmfhlTmTlPCpgHBsH4JqVCbUYhu5bA=="
},
- "vscode-extension-telemetry": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.4.tgz",
- "integrity": "sha512-9U2pUZ/YwZBfA8CkBrHwMxjnq9Ab+ng8daJWJzEQ6CAxlZyRhmck23bx2lqqpEwGWJCiuceQy4k0Me6llEB4zw==",
- "requires": {
- "applicationinsights": "1.7.4"
- }
- },
"vscode-jsonrpc": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
- "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg=="
+ "version": "9.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
+ "integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ=="
},
"vscode-languageclient": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz",
- "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==",
+ "version": "10.0.0-next.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
+ "integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
"requires": {
- "minimatch": "^3.0.4",
- "semver": "^7.3.4",
- "vscode-languageserver-protocol": "3.16.0"
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.0",
+ "vscode-languageserver-protocol": "3.17.6-next.6"
},
"dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
- "yallist": "^4.0.0"
+ "balanced-match": "^1.0.0"
}
},
- "semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"requires": {
- "lru-cache": "^6.0.0"
+ "brace-expansion": "^2.0.1"
}
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
- "vscode-languageserver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
- "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
- "requires": {
- "vscode-languageserver-protocol": "3.16.0"
- }
- },
"vscode-languageserver-protocol": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
- "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
+ "version": "3.17.6-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
+ "integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
"requires": {
- "vscode-jsonrpc": "6.0.0",
- "vscode-languageserver-types": "3.16.0"
+ "vscode-jsonrpc": "9.0.0-next.4",
+ "vscode-languageserver-types": "3.17.6-next.4"
}
},
"vscode-languageserver-types": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
- "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA=="
+ "version": "3.17.6-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
+ "integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
},
"vscode-tas-client": {
- "version": "0.1.22",
- "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.22.tgz",
- "integrity": "sha512-1sYH73nhiSRVQgfZkLQNJW7VzhKM9qNbCe8QyXgiKkLhH4GflDXRPAK4yy4P41jUgula+Fc9G7i5imj1dlKfaw==",
- "requires": {
- "tas-client": "0.1.21"
- }
- },
- "vscode-test": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.2.3.tgz",
- "integrity": "sha512-mKRTNso33NaUULiPBFg6zRjyntjcCpIgkrogyPQuKlvoQREQR8jLKN5UD4L5rkTSD+oBhcKtaLR2/g34FexURw==",
- "dev": true,
- "requires": {
- "http-proxy-agent": "^2.1.0",
- "https-proxy-agent": "^2.2.4",
- "rimraf": "^2.6.3"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "w3c-hr-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
- "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
- "dev": true,
+ "version": "0.1.84",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz",
+ "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==",
"requires": {
- "browser-process-hrtime": "^0.1.2"
+ "tas-client": "0.2.33"
}
},
- "w3c-xmlserializer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
- "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
+ "watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
"dev": true,
"requires": {
- "domexception": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "xml-name-validator": "^3.0.0"
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
}
},
- "watchpack": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
- "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
- "dev": true,
- "requires": {
- "chokidar": "^3.4.1",
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0",
- "watchpack-chokidar2": "^2.0.1"
+ "webpack": {
+ "version": "5.76.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
+ "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^0.0.51",
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/wasm-edit": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.7.6",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.10.0",
+ "es-module-lexer": "^0.9.0",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.1.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.1.3",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
}
},
- "watchpack-chokidar2": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
- "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+ "webpack-bundle-analyzer": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
+ "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
"dev": true,
- "optional": true,
"requires": {
- "chokidar": "^2.1.8"
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "gzip-size": "^6.0.0",
+ "lodash": "^4.17.20",
+ "opener": "^1.5.2",
+ "sirv": "^1.0.7",
+ "ws": "^7.3.1"
},
"dependencies": {
- "binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
- "optional": true
- },
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "optional": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "optional": true,
"requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
+ "color-convert": "^2.0.1"
}
},
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "optional": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "process-nextick-args": {
+ "color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true,
- "optional": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "optional": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "color-name": "~1.1.4"
}
},
- "readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- }
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "webpack": {
- "version": "4.35.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.35.3.tgz",
- "integrity": "sha512-xggQPwr9ILlXzz61lHzjvgoqGU08v5+Wnut19Uv3GaTtzN4xBTcwnobodrXE142EL1tOiS5WVEButooGzcQzTA==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/wasm-edit": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "acorn": "^6.2.0",
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0",
- "chrome-trace-event": "^1.0.0",
- "enhanced-resolve": "^4.1.0",
- "eslint-scope": "^4.0.0",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^2.3.0",
- "loader-utils": "^1.1.0",
- "memory-fs": "~0.4.1",
- "micromatch": "^3.1.8",
- "mkdirp": "~0.5.0",
- "neo-async": "^2.5.0",
- "node-libs-browser": "^2.0.0",
- "schema-utils": "^1.0.0",
- "tapable": "^1.1.0",
- "terser-webpack-plugin": "^1.1.0",
- "watchpack": "^1.5.0",
- "webpack-sources": "^1.3.0"
- },
- "dependencies": {
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true
},
- "terser-webpack-plugin": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
- "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
- "dev": true,
- "requires": {
- "cacache": "^12.0.2",
- "find-cache-dir": "^2.1.0",
- "is-wsl": "^1.1.0",
- "schema-utils": "^1.0.0",
- "serialize-javascript": "^4.0.0",
- "source-map": "^0.6.1",
- "terser": "^4.1.2",
- "webpack-sources": "^1.4.0",
- "worker-farm": "^1.7.0"
- },
- "dependencies": {
- "terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- }
- },
- "webpack-sources": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
- "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
- "requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- }
- }
- }
- }
- }
- },
- "webpack-bundle-analyzer": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz",
- "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==",
- "dev": true,
- "requires": {
- "acorn": "^6.0.7",
- "acorn-walk": "^6.1.1",
- "bfj": "^6.1.1",
- "chalk": "^2.4.1",
- "commander": "^2.18.0",
- "ejs": "^2.6.1",
- "express": "^4.16.3",
- "filesize": "^3.6.1",
- "gzip-size": "^5.0.0",
- "lodash": "^4.17.15",
- "mkdirp": "^0.5.1",
- "opener": "^1.5.1",
- "ws": "^6.0.0"
- },
- "dependencies": {
- "filesize": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
- "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "ws": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
- "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "async-limiter": "~1.0.0"
+ "has-flag": "^4.0.0"
}
}
}
},
"webpack-cli": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.5.tgz",
- "integrity": "sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ==",
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz",
+ "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==",
"dev": true,
"requires": {
- "chalk": "2.4.2",
- "cross-spawn": "6.0.5",
- "enhanced-resolve": "4.1.0",
- "findup-sync": "3.0.0",
- "global-modules": "2.0.0",
- "import-local": "2.0.0",
- "interpret": "1.2.0",
- "loader-utils": "1.2.3",
- "supports-color": "6.1.0",
- "v8-compile-cache": "2.0.3",
- "yargs": "13.2.4"
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^1.1.1",
+ "@webpack-cli/info": "^1.4.1",
+ "@webpack-cli/serve": "^1.6.1",
+ "colorette": "^2.0.14",
+ "commander": "^7.0.0",
+ "execa": "^5.0.0",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^2.2.0",
+ "rechoir": "^0.7.0",
+ "webpack-merge": "^5.7.3"
},
"dependencies": {
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "dev": true,
- "requires": {
- "global-prefix": "^3.0.0"
- }
- },
- "global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
- "dev": true,
- "requires": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- }
- },
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
- "dev": true,
- "requires": {
- "invert-kv": "^2.0.0"
- }
- },
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- }
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
},
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "interpret": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true
},
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "yargs": {
- "version": "13.2.4",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
- "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "os-locale": "^3.1.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.0"
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"dev": true,
"requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "resolve": "^1.9.0"
}
}
}
@@ -19815,178 +24427,104 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/webpack-fix-default-import-plugin/-/webpack-fix-default-import-plugin-1.0.3.tgz",
"integrity": "sha1-iCuOTRqpPEjLj9r4Rvx52G+C8U8=",
- "dev": true
- },
- "webpack-log": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
- "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^3.0.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "ansi-colors": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
- "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
- "dev": true
- }
- }
- },
- "webpack-merge": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz",
- "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.5"
- }
- },
- "webpack-node-externals": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz",
- "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==",
- "dev": true
- },
- "webpack-require-from": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/webpack-require-from/-/webpack-require-from-1.8.0.tgz",
- "integrity": "sha512-4vaPWQZD3vl3WM2mnjWunyx56uUbPj44ZKlpPUd+Ro2jrOtZQOaB2I5FE222uIChzeFfS7A7rtcWRLraPHE7TA==",
- "dev": true
- },
- "webpack-sources": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
- "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
- "dev": true,
- "requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- }
+ "dev": true
},
- "whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "webpack-merge": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+ "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
"dev": true,
"requires": {
- "iconv-lite": "0.4.24"
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
}
},
- "whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "webpack-node-externals": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz",
+ "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==",
"dev": true
},
- "whatwg-url": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
- "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+ "webpack-require-from": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/webpack-require-from/-/webpack-require-from-1.8.6.tgz",
+ "integrity": "sha512-QmRsOkOYPKeNXp4uVc7qxnPrFQPrP4bhOc/gl4QenTFNgXdEbF1U8VC+jM/Sljb0VzJLNgyNiHlVkuHjcmDtBQ==",
"dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
+ "requires": {}
+ },
+ "webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true
},
"which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"requires": {
"isexe": "^2.0.0"
}
},
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true
- },
- "why-is-node-running": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.1.0.tgz",
- "integrity": "sha512-oLmJ1uZOaKra+GDmYcUHMnVhi4CnZnlt4IE3J05ZDSEAiejeB5dMoR4a4rGcMWRy1Avx24dGTw8yxJ/+EmwPBQ==",
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"requires": {
- "stackback": "0.0.2"
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "dependencies": {
+ "is-boolean-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
+ "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-number-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
+ "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==",
+ "dev": true
+ }
}
},
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "which-typed-array": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
+ "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
+ "dev": true,
"requires": {
- "string-width": "^1.0.2 || 2"
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.18.5",
+ "foreach": "^2.0.5",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.7"
}
},
+ "wildcard": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
+ "dev": true
+ },
"winreg": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz",
"integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs="
},
- "winston": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz",
- "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==",
- "requires": {
- "async": "^2.6.1",
- "diagnostics": "^1.1.1",
- "is-stream": "^1.1.0",
- "logform": "^2.1.1",
- "one-time": "0.0.4",
- "readable-stream": "^3.1.1",
- "stack-trace": "0.0.x",
- "triple-beam": "^1.3.0",
- "winston-transport": "^4.3.0"
- }
- },
- "winston-transport": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz",
- "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==",
- "requires": {
- "readable-stream": "^2.3.6",
- "triple-beam": "^1.2.0"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
"wipe-node-cache": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.0.tgz",
- "integrity": "sha512-Vdash0WV9Di/GeYW9FJrAZcPjGK4dO7M/Be/sJybguEgcM7As0uwLyvewZYqdlepoh7Rj4ZJKEdo8uX83PeNIw==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.2.tgz",
+ "integrity": "sha512-m7NXa8qSxBGMtdQilOu53ctMaIBXy93FOP04EC1Uf4bpsE+r+adfLKwIMIvGbABsznaSNxK/ErD4xXDyY5og9w==",
"dev": true
},
"wipe-webpack-cache": {
@@ -19998,66 +24536,56 @@
"wipe-node-cache": "^2.1.0"
}
},
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "worker-farm": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
- "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "dev": true,
- "requires": {
- "errno": "~0.1.7"
- }
- },
- "worker-rpc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz",
- "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==",
+ "worker-loader": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz",
+ "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==",
"dev": true,
"requires": {
- "microevent.ts": "~0.1.1"
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
}
},
"workerpool": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz",
- "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
"dev": true
},
"wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "color-name": "~1.1.4"
}
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
}
}
},
@@ -20066,15 +24594,6 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
- "write": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
- "dev": true,
- "requires": {
- "mkdirp": "^0.5.1"
- }
- },
"write-file-atomic": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz",
@@ -20088,46 +24607,11 @@
}
},
"ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
- "dev": true
- },
- "wtfnode": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/wtfnode/-/wtfnode-0.8.0.tgz",
- "integrity": "sha512-A5jm/0REykxUac1q4Q5kv+hDIiacvqVpwIoXzCQcRL7syeEKucVVOxyLLrt+jIiZoXfla3lnsxUw/cmWXIaGWA==",
- "dev": true
- },
- "xdg-basedir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
- "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0"
- }
- },
- "xdg-trashdir": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/xdg-trashdir/-/xdg-trashdir-2.1.1.tgz",
- "integrity": "sha512-KcVhPaOu2ZurYNHSRTf1+ZHORkTZGCQ+u0JHN17QixRISJq4pXOnjt/lQcehvtHL5QAKhSzKgyjrcNnPdkPBHA==",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
- "requires": {
- "@sindresorhus/df": "^2.1.0",
- "mount-point": "^3.0.0",
- "pify": "^2.2.0",
- "user-home": "^2.0.0",
- "xdg-basedir": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
+ "requires": {}
},
"xml": {
"version": "1.0.1",
@@ -20135,44 +24619,19 @@
"integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
"dev": true
},
- "xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
- "dev": true
- },
"xml2js": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
- "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": "~9.0.1"
- },
- "dependencies": {
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- }
+ "xmlbuilder": "~11.0.0"
}
},
"xmlbuilder": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
- },
- "xmlchars": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.1.1.tgz",
- "integrity": "sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==",
- "dev": true
- },
- "xmlhttprequest-ssl": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz",
- "integrity": "sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg==",
- "dev": true
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
},
"xtend": {
"version": "4.0.2",
@@ -20187,10 +24646,9 @@
"dev": true
},
"yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"yargs": {
"version": "15.3.1",
@@ -20211,12 +24669,6 @@
"yargs-parser": "^18.1.1"
},
"dependencies": {
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
@@ -20253,84 +24705,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
@@ -20360,104 +24740,41 @@
}
}
},
+ "yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true
+ },
"yargs-unparser": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz",
- "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
"requires": {
- "camelcase": "^5.3.1",
- "decamelize": "^1.2.0",
- "flat": "^4.1.0",
- "is-plain-obj": "^1.1.0",
- "yargs": "^14.2.3"
+ "camelcase": "^6.0.0",
+ "decamelize": "^4.0.0",
+ "flat": "^5.0.2",
+ "is-plain-obj": "^2.1.0"
},
"dependencies": {
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "camelcase": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
+ "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
"dev": true
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "decamelize": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true
},
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "yargs": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
- "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.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": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^15.0.1"
- }
- },
- "yargs-parser": {
- "version": "15.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz",
- "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
}
}
},
@@ -20480,28 +24797,17 @@
"buffer-crc32": "~0.2.3"
}
},
- "yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
- "dev": true
- },
"yn": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
- "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true
},
- "zip-stream": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
- "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
- "dev": true,
- "requires": {
- "archiver-utils": "^2.1.0",
- "compress-commons": "^2.1.1",
- "readable-stream": "^3.4.0"
- }
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index 6085bcc47a9f..3de58d434ec4 100644
--- a/package.json
+++ b/package.json
@@ -1,23 +1,32 @@
{
"name": "python",
"displayName": "Python",
- "description": "IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more.",
- "version": "2021.7.0-dev",
+ "description": "Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.",
+ "version": "2024.11.0-dev",
"featureFlags": {
"usingNewInterpreterStorage": true
},
"capabilities": {
"untrustedWorkspaces": {
- "supported": false
+ "supported": "limited",
+ "description": "Only Partial IntelliSense with Pylance is supported. Cannot execute Python with untrusted files."
},
"virtualWorkspaces": {
- "supported": false,
- "description": "Python only works with local file paths."
+ "supported": "limited",
+ "description": "Only Partial IntelliSense supported."
}
},
- "languageServerVersion": "0.5.30",
"publisher": "ms-python",
- "enableProposedApi": true,
+ "enabledApiProposals": [
+ "contribEditorContentMenu",
+ "quickPickSortByLabel",
+ "testObserver",
+ "quickPickItemTooltip",
+ "terminalDataWriteEvent",
+ "terminalExecuteCommandEvent",
+ "contribIssueReporter",
+ "terminalShellIntegration"
+ ],
"author": {
"name": "Microsoft Corporation"
},
@@ -30,15 +39,16 @@
"bugs": {
"url": "https://github.com/Microsoft/vscode-python/issues"
},
- "qna": "https://stackoverflow.com/questions/tagged/visual-studio-code+python",
+ "qna": "https://github.com/microsoft/vscode-python/discussions/categories/q-a",
"icon": "icon.png",
"galleryBanner": {
"color": "#1e415e",
"theme": "dark"
},
"engines": {
- "vscode": "^1.57.0"
+ "vscode": "^1.89.0-20240415"
},
+ "enableTelemetry": false,
"keywords": [
"python",
"django",
@@ -48,1967 +58,1405 @@
"categories": [
"Programming Languages",
"Debuggers",
- "Linters",
- "Formatters",
"Other",
"Data Science",
- "Machine Learning",
- "Notebooks"
+ "Machine Learning"
],
"activationEvents": [
+ "onDebugInitialConfigurations",
"onLanguage:python",
"onDebugResolve:python",
- "onCommand:python.execInTerminal",
- "onCommand:python.sortImports",
- "onCommand:python.runtests",
- "onCommand:python.debugtests",
- "onCommand:python.setInterpreter",
- "onCommand:python.setShebangInterpreter",
- "onCommand:python.viewTestUI",
- "onCommand:python.viewLanguageServerOutput",
- "onCommand:python.viewTestOutput",
- "onCommand:python.viewOutput",
- "onCommand:python.selectAndRunTestMethod",
- "onCommand:python.selectAndDebugTestMethod",
- "onCommand:python.selectAndRunTestFile",
- "onCommand:python.runCurrentTestFile",
- "onCommand:python.runFailedTests",
- "onCommand:python.execSelectionInTerminal",
- "onCommand:python.execSelectionInDjangoShell",
- "onCommand:python.buildWorkspaceSymbols",
- "onCommand:python.startREPL",
- "onCommand:python.goToPythonObject",
- "onCommand:python.reportIssue",
- "onCommand:python.setLinter",
- "onCommand:python.enableLinting",
- "onCommand:python.createTerminal",
- "onCommand:python.discoverTests",
- "onCommand:python.configureTests",
- "onCommand:python.switchOffInsidersChannel",
- "onCommand:python.switchToDailyChannel",
- "onCommand:python.switchToWeeklyChannel",
- "onCommand:python.clearWorkspaceInterpreter",
- "onCommand:python.startPage.open",
- "onCommand:python.enableSourceMapSupport",
- "onCommand:python.launchTensorBoard",
- "onCommand:python.clearPersistentStorage",
"workspaceContains:mspythonconfig.json",
"workspaceContains:pyproject.toml",
"workspaceContains:Pipfile",
"workspaceContains:setup.py",
"workspaceContains:requirements.txt",
"workspaceContains:manage.py",
- "workspaceContains:app.py"
+ "workspaceContains:app.py",
+ "workspaceContains:.venv",
+ "workspaceContains:.conda"
],
"main": "./out/client/extension",
+ "browser": "./dist/extension.browser.js",
+ "l10n": "./l10n",
"contributes": {
- "keybindings": [
+ "walkthroughs": [
{
- "command": "python.execSelectionInTerminal",
- "key": "shift+enter",
- "when": "editorTextFocus && editorLangId == python && !findInputFocussed && !replaceInputFocussed && !jupyter.ownsSelection && !notebookEditorFocused"
+ "id": "pythonWelcome",
+ "title": "%walkthrough.pythonWelcome.title%",
+ "description": "%walkthrough.pythonWelcome.description%",
+ "when": "workspacePlatform != webworker",
+ "steps": [
+ {
+ "id": "python.createPythonFolder",
+ "title": "%walkthrough.step.python.createPythonFolder.title%",
+ "description": "%walkthrough.step.python.createPythonFolder.description%",
+ "media": {
+ "svg": "resources/walkthrough/open-folder.svg",
+ "altText": "%walkthrough.step.python.createPythonFile.altText%"
+ },
+ "when": "workspaceFolderCount = 0"
+ },
+ {
+ "id": "python.createPythonFile",
+ "title": "%walkthrough.step.python.createPythonFile.title%",
+ "description": "%walkthrough.step.python.createPythonFile.description%",
+ "media": {
+ "svg": "resources/walkthrough/open-folder.svg",
+ "altText": "%walkthrough.step.python.createPythonFile.altText%"
+ }
+ },
+ {
+ "id": "python.installPythonWin8",
+ "title": "%walkthrough.step.python.installPythonWin8.title%",
+ "description": "%walkthrough.step.python.installPythonWin8.description%",
+ "media": {
+ "markdown": "resources/walkthrough/install-python-windows-8.md"
+ },
+ "when": "workspacePlatform == windows && showInstallPythonTile"
+ },
+ {
+ "id": "python.installPythonMac",
+ "title": "%walkthrough.step.python.installPythonMac.title%",
+ "description": "%walkthrough.step.python.installPythonMac.description%",
+ "media": {
+ "markdown": "resources/walkthrough/install-python-macos.md"
+ },
+ "when": "workspacePlatform == mac && showInstallPythonTile",
+ "command": "workbench.action.terminal.new"
+ },
+ {
+ "id": "python.installPythonLinux",
+ "title": "%walkthrough.step.python.installPythonLinux.title%",
+ "description": "%walkthrough.step.python.installPythonLinux.description%",
+ "media": {
+ "markdown": "resources/walkthrough/install-python-linux.md"
+ },
+ "when": "workspacePlatform == linux && showInstallPythonTile",
+ "command": "workbench.action.terminal.new"
+ },
+ {
+ "id": "python.createEnvironment",
+ "title": "%walkthrough.step.python.createEnvironment.title%",
+ "description": "%walkthrough.step.python.createEnvironment.description%",
+ "media": {
+ "svg": "resources/walkthrough/create-environment.svg",
+ "altText": "%walkthrough.step.python.createEnvironment.altText%"
+ }
+ },
+ {
+ "id": "python.runAndDebug",
+ "title": "%walkthrough.step.python.runAndDebug.title%",
+ "description": "%walkthrough.step.python.runAndDebug.description%",
+ "media": {
+ "svg": "resources/walkthrough/rundebug2.svg",
+ "altText": "%walkthrough.step.python.runAndDebug.altText%"
+ }
+ },
+ {
+ "id": "python.learnMoreWithDS",
+ "title": "%walkthrough.step.python.learnMoreWithDS.title%",
+ "description": "%walkthrough.step.python.learnMoreWithDS.description%",
+ "media": {
+ "altText": "%walkthrough.step.python.learnMoreWithDS.altText%",
+ "svg": "resources/walkthrough/learnmore.svg"
+ }
+ }
+ ]
},
{
- "command": "python.refreshTensorBoard",
- "key": "ctrl+r",
- "mac": "cmd+r",
- "when": "python.hasActiveTensorBoardSession"
+ "id": "pythonDataScienceWelcome",
+ "title": "%walkthrough.pythonDataScienceWelcome.title%",
+ "description": "%walkthrough.pythonDataScienceWelcome.description%",
+ "when": "false",
+ "steps": [
+ {
+ "id": "python.installJupyterExt",
+ "title": "%walkthrough.step.python.installJupyterExt.title%",
+ "description": "%walkthrough.step.python.installJupyterExt.description%",
+ "media": {
+ "svg": "resources/walkthrough/data-science.svg",
+ "altText": "%walkthrough.step.python.installJupyterExt.altText%"
+ }
+ },
+ {
+ "id": "python.createNewNotebook",
+ "title": "%walkthrough.step.python.createNewNotebook.title%",
+ "description": "%walkthrough.step.python.createNewNotebook.description%",
+ "media": {
+ "svg": "resources/walkthrough/create-notebook.svg",
+ "altText": "%walkthrough.step.python.createNewNotebook.altText%"
+ },
+ "completionEvents": [
+ "onCommand:jupyter.createnewnotebook",
+ "onCommand:workbench.action.files.openFolder",
+ "onCommand:workbench.action.files.openFileFolder"
+ ]
+ },
+ {
+ "id": "python.openInteractiveWindow",
+ "title": "%walkthrough.step.python.openInteractiveWindow.title%",
+ "description": "%walkthrough.step.python.openInteractiveWindow.description%",
+ "media": {
+ "svg": "resources/walkthrough/interactive-window.svg",
+ "altText": "%walkthrough.step.python.openInteractiveWindow.altText%"
+ },
+ "completionEvents": [
+ "onCommand:jupyter.createnewinteractive"
+ ]
+ },
+ {
+ "id": "python.dataScienceLearnMore",
+ "title": "%walkthrough.step.python.dataScienceLearnMore.title%",
+ "description": "%walkthrough.step.python.dataScienceLearnMore.description%",
+ "media": {
+ "svg": "resources/walkthrough/learnmore.svg",
+ "altText": "%walkthrough.step.python.dataScienceLearnMore.altText%"
+ }
+ }
+ ]
}
],
- "commands": [
- {
- "command": "python.refreshTensorBoard",
- "title": "%python.command.python.refreshTensorBoard.title%",
- "category": "Python",
- "enablement": "python.hasActiveTensorBoardSession",
- "icon": "$(refresh)"
- },
- {
- "command": "python.clearPersistentStorage",
- "title": "%python.command.python.clearPersistentStorage.title%",
- "category": "Python"
- },
- {
- "command": "python.enableSourceMapSupport",
- "title": "%python.command.python.enableSourceMapSupport.title%",
- "category": "Python"
- },
- {
- "command": "python.sortImports",
- "title": "%python.command.python.sortImports.title%",
- "category": "Python Refactor"
- },
- {
- "command": "python.startREPL",
- "title": "%python.command.python.startREPL.title%",
- "category": "Python"
- },
+ "breakpoints": [
{
- "command": "python.createTerminal",
- "title": "%python.command.python.createTerminal.title%",
- "category": "Python"
+ "language": "html"
},
{
- "command": "python.buildWorkspaceSymbols",
- "title": "%python.command.python.buildWorkspaceSymbols.title%",
- "category": "Python"
+ "language": "jinja"
},
{
- "command": "python.openTestNodeInEditor",
- "title": "Open",
- "icon": {
- "light": "resources/light/open-file.svg",
- "dark": "resources/dark/open-file.svg"
- }
+ "language": "python"
},
{
- "command": "python.runTestNode",
- "title": "Run",
- "icon": {
- "light": "resources/light/start.svg",
- "dark": "resources/dark/start.svg"
- }
+ "language": "django-html"
},
{
- "command": "python.debugTestNode",
- "title": "Debug",
- "icon": {
- "light": "resources/light/debug.svg",
- "dark": "resources/dark/debug.svg"
- }
- },
+ "language": "django-txt"
+ }
+ ],
+ "commands": [
{
- "command": "python.runtests",
- "title": "%python.command.python.runtests.title%",
+ "title": "%python.command.python.createNewFile.title%",
+ "shortTitle": "%python.menu.createNewFile.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/run-tests.svg",
- "dark": "resources/dark/run-tests.svg"
- }
+ "command": "python.createNewFile"
},
{
- "command": "python.debugtests",
- "title": "%python.command.python.debugtests.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/debug.svg",
- "dark": "resources/dark/debug.svg"
- }
- },
- {
- "command": "python.execInTerminal",
- "title": "%python.command.python.execInTerminal.title%",
- "category": "Python"
+ "command": "python.analysis.restartLanguageServer",
+ "title": "%python.command.python.analysis.restartLanguageServer.title%"
},
{
- "command": "python.execInTerminal-icon",
- "title": "%python.command.python.execInTerminal.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/run-file.svg",
- "dark": "resources/dark/run-file.svg"
- }
- },
- {
- "command": "python.setInterpreter",
- "title": "%python.command.python.setInterpreter.title%",
- "category": "Python"
- },
- {
- "command": "python.switchOffInsidersChannel",
- "title": "%python.command.python.switchOffInsidersChannel.title%",
- "category": "Python"
- },
- {
- "command": "python.switchToDailyChannel",
- "title": "%python.command.python.switchToDailyChannel.title%",
- "category": "Python"
- },
- {
- "command": "python.switchToWeeklyChannel",
- "title": "%python.command.python.switchToWeeklyChannel.title%",
- "category": "Python"
+ "command": "python.clearCacheAndReload",
+ "title": "%python.command.python.clearCacheAndReload.title%"
},
{
+ "category": "Python",
"command": "python.clearWorkspaceInterpreter",
- "title": "%python.command.python.clearWorkspaceInterpreter.title%",
- "category": "Python"
- },
- {
- "command": "python.refactorExtractVariable",
- "title": "%python.command.python.refactorExtractVariable.title%",
- "category": "Python Refactor"
+ "title": "%python.command.python.clearWorkspaceInterpreter.title%"
},
{
- "command": "python.refactorExtractMethod",
- "title": "%python.command.python.refactorExtractMethod.title%",
- "category": "Python Refactor"
- },
- {
- "command": "python.viewTestOutput",
- "title": "%python.command.python.viewTestOutput.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/repl.svg",
- "dark": "resources/dark/repl.svg"
- }
+ "command": "python.configureTests",
+ "title": "%python.command.python.configureTests.title%"
},
{
- "command": "python.viewLanguageServerOutput",
- "title": "%python.command.python.viewLanguageServerOutput.title%",
"category": "Python",
- "enablement": "python.hasLanguageServerOutputChannel"
+ "command": "python.createTerminal",
+ "title": "%python.command.python.createTerminal.title%"
},
{
- "command": "python.viewOutput",
- "title": "%python.command.python.viewOutput.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/repl.svg",
- "dark": "resources/dark/repl.svg"
- }
- },
- {
- "command": "python.selectAndRunTestMethod",
- "title": "%python.command.python.selectAndRunTestMethod.title%",
- "category": "Python"
+ "command": "python.createEnvironment",
+ "title": "%python.command.python.createEnvironment.title%"
},
{
- "command": "python.selectAndDebugTestMethod",
- "title": "%python.command.python.selectAndDebugTestMethod.title%",
- "category": "Python"
- },
- {
- "command": "python.selectAndRunTestFile",
- "title": "%python.command.python.selectAndRunTestFile.title%",
- "category": "Python"
- },
- {
- "command": "python.runCurrentTestFile",
- "title": "%python.command.python.runCurrentTestFile.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.createEnvironment-button",
+ "title": "%python.command.python.createEnvironment.title%"
},
{
- "command": "python.runFailedTests",
- "title": "%python.command.python.runFailedTests.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/run-failed-tests.svg",
- "dark": "resources/dark/run-failed-tests.svg"
- }
+ "command": "python.enableSourceMapSupport",
+ "title": "%python.command.python.enableSourceMapSupport.title%"
},
{
- "command": "python.discoverTests",
- "title": "%python.command.python.discoverTests.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/refresh.svg",
- "dark": "resources/dark/refresh.svg"
- }
+ "command": "python.execInTerminal",
+ "title": "%python.command.python.execInTerminal.title%"
},
{
- "command": "python.discoveringTests",
- "title": "%python.command.python.discoveringTests.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/discovering-tests.svg",
- "dark": "resources/dark/discovering-tests.svg"
- }
+ "command": "python.execInTerminal-icon",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInTerminalIcon.title%"
},
{
- "command": "python.stopTests",
- "title": "%python.command.python.stopTests.title%",
"category": "Python",
- "icon": {
- "light": "resources/light/stop.svg",
- "dark": "resources/dark/stop.svg"
- }
+ "command": "python.execInDedicatedTerminal",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInDedicatedTerminal.title%"
},
{
- "command": "python.configureTests",
- "title": "%python.command.python.configureTests.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.execSelectionInDjangoShell",
+ "title": "%python.command.python.execSelectionInDjangoShell.title%"
},
{
+ "category": "Python",
"command": "python.execSelectionInTerminal",
- "title": "%python.command.python.execSelectionInTerminal.title%",
- "category": "Python"
+ "title": "%python.command.python.execSelectionInTerminal.title%"
},
{
- "command": "python.execSelectionInDjangoShell",
- "title": "%python.command.python.execSelectionInDjangoShell.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.execInREPL",
+ "title": "%python.command.python.execInREPL.title%"
},
{
- "command": "python.goToPythonObject",
- "title": "%python.command.python.goToPythonObject.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.launchTensorBoard",
+ "title": "%python.command.python.launchTensorBoard.title%"
},
{
- "command": "python.reportIssue",
- "title": "%python.command.python.reportIssue.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.refreshTensorBoard",
+ "enablement": "python.hasActiveTensorBoardSession",
+ "icon": "$(refresh)",
+ "title": "%python.command.python.refreshTensorBoard.title%"
},
{
- "command": "python.setLinter",
- "title": "%python.command.python.setLinter.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.reportIssue",
+ "title": "%python.command.python.reportIssue.title%"
},
{
- "command": "python.enableLinting",
- "title": "%python.command.python.enableLinting.title%",
- "category": "Python"
+ "category": "Test",
+ "command": "testing.reRunFailTests",
+ "icon": "$(run-errors)",
+ "title": "%python.command.testing.rerunFailedTests.title%"
},
{
- "command": "python.runLinting",
- "title": "%python.command.python.runLinting.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.setInterpreter",
+ "title": "%python.command.python.setInterpreter.title%"
},
{
- "command": "python.startPage.open",
- "title": "%python.command.python.startPage.open.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.startREPL",
+ "title": "%python.command.python.startREPL.title%"
},
{
- "command": "python.analysis.clearCache",
- "title": "%python.command.python.analysis.clearCache.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.viewLanguageServerOutput",
+ "enablement": "python.hasLanguageServerOutputChannel",
+ "title": "%python.command.python.viewLanguageServerOutput.title%"
},
{
- "command": "python.analysis.restartLanguageServer",
- "title": "%python.command.python.analysis.restartLanguageServer.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.viewOutput",
+ "icon": {
+ "dark": "resources/dark/repl.svg",
+ "light": "resources/light/repl.svg"
+ },
+ "title": "%python.command.python.viewOutput.title%"
},
{
- "command": "python.launchTensorBoard",
- "title": "%python.command.python.launchTensorBoard.title%",
- "category": "Python"
+ "category": "Python",
+ "command": "python.installJupyter",
+ "title": "%python.command.python.installJupyter.title%"
}
],
- "menus": {
- "editor/context": [
- {
- "command": "python.refactorExtractVariable",
- "title": "Refactor: Extract Variable",
- "group": "Refactor",
- "when": "editorHasSelection && editorLangId == python && !notebookEditorFocused"
- },
- {
- "command": "python.refactorExtractMethod",
- "title": "Refactor: Extract Method",
- "group": "Refactor",
- "when": "editorHasSelection && editorLangId == python && !notebookEditorFocused"
+ "configuration": {
+ "properties": {
+ "python.activeStateToolPath": {
+ "default": "state",
+ "description": "%python.activeStateToolPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "command": "python.sortImports",
- "title": "Refactor: Sort Imports",
- "group": "Refactor",
- "when": "editorLangId == python && !notebookEditorFocused"
+ "python.autoComplete.extraPaths": {
+ "default": [],
+ "description": "%python.autoComplete.extraPaths.description%",
+ "scope": "resource",
+ "type": "array",
+ "uniqueItems": true
},
- {
- "command": "python.execSelectionInTerminal",
- "group": "Python",
- "when": "editorFocus && editorLangId == python"
+ "python.createEnvironment.contentButton": {
+ "default": "hide",
+ "markdownDescription": "%python.createEnvironment.contentButton.description%",
+ "scope": "machine-overridable",
+ "type": "string",
+ "enum": [
+ "show",
+ "hide"
+ ]
+ },
+ "python.createEnvironment.trigger": {
+ "default": "prompt",
+ "markdownDescription": "%python.createEnvironment.trigger.description%",
+ "scope": "machine-overridable",
+ "type": "string",
+ "enum": [
+ "off",
+ "prompt"
+ ]
},
- {
- "command": "python.execSelectionInDjangoShell",
- "group": "Python",
- "when": "editorHasSelection && editorLangId == python && python.isDjangoProject"
+ "python.condaPath": {
+ "default": "",
+ "description": "%python.condaPath.description%",
+ "scope": "machine",
+ "type": "string"
},
- {
- "when": "resourceLangId == python",
- "command": "python.execInTerminal",
- "group": "Python"
+ "python.defaultInterpreterPath": {
+ "default": "python",
+ "markdownDescription": "%python.defaultInterpreterPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "when": "resourceLangId == python",
- "command": "python.runCurrentTestFile",
- "group": "Python"
- }
- ],
- "editor/title/run": [
- {
- "command": "python.execInTerminal-icon",
- "title": "%python.command.python.execInTerminal.title%",
- "group": "navigation",
- "when": "resourceLangId == python && !isInDiffEditor"
- }
- ],
- "editor/title": [
- {
- "command": "python.refreshTensorBoard",
- "group": "navigation@0",
- "when": "python.hasActiveTensorBoardSession"
- }
- ],
- "explorer/context": [
- {
- "when": "resourceLangId == python && !busyTests && !notebookEditorFocused",
- "command": "python.runtests",
- "group": "Python"
+ "python.diagnostics.sourceMapsEnabled": {
+ "default": false,
+ "description": "%python.diagnostics.sourceMapsEnabled.description%",
+ "scope": "application",
+ "type": "boolean"
},
- {
- "when": "resourceLangId == python && !busyTests && !notebookEditorFocused",
- "command": "python.debugtests",
- "group": "Python"
+ "python.envFile": {
+ "default": "${workspaceFolder}/.env",
+ "description": "%python.envFile.description%",
+ "scope": "resource",
+ "type": "string"
},
- {
- "when": "resourceLangId == python",
- "command": "python.execInTerminal",
- "group": "Python"
- }
- ],
- "commandPalette": [
- {
- "command": "python.switchOffInsidersChannel",
- "title": "%python.command.python.switchOffInsidersChannel.title%",
- "category": "Python",
- "when": "config.python.insidersChannel != 'default'"
+ "python.experiments.enabled": {
+ "default": true,
+ "description": "%python.experiments.enabled.description%",
+ "scope": "window",
+ "type": "boolean"
},
- {
- "command": "python.switchToDailyChannel",
- "title": "%python.command.python.switchToDailyChannel.title%",
- "category": "Python",
- "when": "config.python.insidersChannel != 'daily'"
+ "python.experiments.optInto": {
+ "default": [],
+ "markdownDescription": "%python.experiments.optInto.description%",
+ "items": {
+ "enum": [
+ "All",
+ "pythonSurveyNotification",
+ "pythonPromptNewToolsExt",
+ "pythonTerminalEnvVarActivation",
+ "pythonDiscoveryUsingWorkers",
+ "pythonTestAdapter",
+ "pythonREPLSmartSend",
+ "pythonRecommendTensorboardExt"
+ ],
+ "enumDescriptions": [
+ "%python.experiments.All.description%",
+ "%python.experiments.pythonSurveyNotification.description%",
+ "%python.experiments.pythonPromptNewToolsExt.description%",
+ "%python.experiments.pythonTerminalEnvVarActivation.description%",
+ "%python.experiments.pythonDiscoveryUsingWorkers.description%",
+ "%python.experiments.pythonTestAdapter.description%",
+ "%python.experiments.pythonREPLSmartSend.description%",
+ "%python.experiments.pythonRecommendTensorboardExt.description%"
+ ]
+ },
+ "scope": "window",
+ "type": "array",
+ "uniqueItems": true
},
- {
- "command": "python.switchToWeeklyChannel",
- "title": "%python.command.python.switchToWeeklyChannel.title%",
- "category": "Python",
- "when": "config.python.insidersChannel != 'weekly'"
+ "python.experiments.optOutFrom": {
+ "default": [],
+ "markdownDescription": "%python.experiments.optOutFrom.description%",
+ "items": {
+ "enum": [
+ "All",
+ "pythonSurveyNotification",
+ "pythonPromptNewToolsExt",
+ "pythonTerminalEnvVarActivation",
+ "pythonDiscoveryUsingWorkers",
+ "pythonTestAdapter",
+ "pythonREPLSmartSend"
+ ],
+ "enumDescriptions": [
+ "%python.experiments.All.description%",
+ "%python.experiments.pythonSurveyNotification.description%",
+ "%python.experiments.pythonPromptNewToolsExt.description%",
+ "%python.experiments.pythonTerminalEnvVarActivation.description%",
+ "%python.experiments.pythonDiscoveryUsingWorkers.description%",
+ "%python.experiments.pythonTestAdapter.description%",
+ "%python.experiments.pythonREPLSmartSend.description%"
+ ]
+ },
+ "scope": "window",
+ "type": "array",
+ "uniqueItems": true
},
- {
- "command": "python.clearWorkspaceInterpreter",
- "title": "%python.command.python.clearWorkspaceInterpreter.title%",
- "category": "Python"
+ "python.globalModuleInstallation": {
+ "default": false,
+ "description": "%python.globalModuleInstallation.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.viewOutput",
- "title": "%python.command.python.viewOutput.title%",
- "category": "Python"
+ "python.languageServer": {
+ "default": "Default",
+ "description": "%python.languageServer.description%",
+ "enum": [
+ "Default",
+ "Jedi",
+ "Pylance",
+ "None"
+ ],
+ "enumDescriptions": [
+ "%python.languageServer.defaultDescription%",
+ "%python.languageServer.jediDescription%",
+ "%python.languageServer.pylanceDescription%",
+ "%python.languageServer.noneDescription%"
+ ],
+ "scope": "window",
+ "type": "string"
},
- {
- "command": "python.runTestNode",
- "title": "Run",
- "category": "Python",
- "when": "config.noExists"
+ "python.interpreter.infoVisibility": {
+ "default": "onPythonRelated",
+ "description": "%python.interpreter.infoVisibility.description%",
+ "enum": [
+ "never",
+ "onPythonRelated",
+ "always"
+ ],
+ "enumDescriptions": [
+ "%python.interpreter.infoVisibility.never.description%",
+ "%python.interpreter.infoVisibility.onPythonRelated.description%",
+ "%python.interpreter.infoVisibility.always.description%"
+ ],
+ "scope": "machine",
+ "type": "string"
},
- {
- "command": "python.discoveringTests",
- "category": "Python",
- "when": "config.noExists"
+ "python.logging.level": {
+ "default": "error",
+ "deprecationMessage": "%python.logging.level.deprecation%",
+ "description": "%python.logging.level.description%",
+ "enum": [
+ "debug",
+ "error",
+ "info",
+ "off",
+ "warn"
+ ],
+ "scope": "machine",
+ "type": "string"
},
- {
- "command": "python.stopTests",
- "category": "Python",
- "when": "config.noExists"
+ "python.missingPackage.severity": {
+ "default": "Hint",
+ "description": "%python.missingPackage.severity.description%",
+ "enum": [
+ "Error",
+ "Hint",
+ "Information",
+ "Warning"
+ ],
+ "scope": "resource",
+ "type": "string",
+ "tags": [
+ "experimental"
+ ]
},
- {
- "command": "python.debugTestNode",
- "title": "Debug",
- "category": "Python",
- "when": "config.noExists"
+ "python.locator": {
+ "default": "js",
+ "description": "%python.locator.description%",
+ "enum": [
+ "js",
+ "native"
+ ],
+ "tags": [
+ "experimental"
+ ],
+ "scope": "machine",
+ "type": "string"
},
- {
- "command": "python.openTestNodeInEditor",
- "title": "Open",
- "category": "Python",
- "when": "config.noExists"
+ "python.pipenvPath": {
+ "default": "pipenv",
+ "description": "%python.pipenvPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "command": "python.startPage.open",
- "title": "%python.command.python.startPage.open.title%",
- "category": "Python"
+ "python.poetryPath": {
+ "default": "poetry",
+ "description": "%python.poetryPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "command": "python.launchTensorBoard",
- "category": "Python"
- }
- ],
- "view/title": [
- {
- "command": "python.debugtests",
- "when": "view == python_tests && !busyTests",
- "group": "navigation@3"
+ "python.pixiToolPath": {
+ "default": "pixi",
+ "description": "%python.pixiToolPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "command": "python.runtests",
- "when": "view == python_tests && !busyTests",
- "group": "navigation@1"
+ "python.tensorBoard.logDirectory": {
+ "default": "",
+ "description": "%python.tensorBoard.logDirectory.description%",
+ "scope": "resource",
+ "type": "string",
+ "markdownDeprecationMessage": "%python.tensorBoard.logDirectory.markdownDeprecationMessage%",
+ "deprecationMessage": "%python.tensorBoard.logDirectory.deprecationMessage%"
},
- {
- "command": "python.stopTests",
- "when": "view == python_tests && busyTests",
- "group": "navigation@1"
+ "python.terminal.activateEnvInCurrentTerminal": {
+ "default": false,
+ "description": "%python.terminal.activateEnvInCurrentTerminal.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.discoverTests",
- "when": "view == python_tests && !busyTests",
- "group": "navigation@4"
+ "python.terminal.activateEnvironment": {
+ "default": true,
+ "description": "%python.terminal.activateEnvironment.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.discoveringTests",
- "when": "view == python_tests && discoveringTests",
- "group": "navigation@4"
+ "python.terminal.executeInFileDir": {
+ "default": false,
+ "description": "%python.terminal.executeInFileDir.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.runFailedTests",
- "when": "view == python_tests && hasFailedTests && !busyTests",
- "group": "navigation@2"
+ "python.terminal.focusAfterLaunch": {
+ "default": false,
+ "description": "%python.terminal.focusAfterLaunch.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.viewTestOutput",
- "when": "view == python_tests",
- "group": "navigation@5"
- }
- ],
- "view/item/context": [
- {
- "command": "python.runtests",
- "when": "view == python_tests && viewItem == testWorkspaceFolder && !busyTests",
- "group": "inline@0"
+ "python.terminal.launchArgs": {
+ "default": [],
+ "description": "%python.terminal.launchArgs.description%",
+ "scope": "resource",
+ "type": "array"
},
- {
- "command": "python.debugtests",
- "when": "view == python_tests && viewItem == testWorkspaceFolder && !busyTests",
- "group": "inline@1"
+ "python.REPL.enableREPLSmartSend": {
+ "default": true,
+ "description": "%python.EnableREPLSmartSend.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.discoverTests",
- "when": "view == python_tests && viewItem == testWorkspaceFolder && !busyTests",
- "group": "inline@2"
+ "python.REPL.sendToNativeREPL": {
+ "default": false,
+ "description": "%python.REPL.sendToNativeREPL.description%",
+ "scope": "resource",
+ "type": "boolean",
+ "tags": [
+ "experimental"
+ ]
},
- {
- "command": "python.openTestNodeInEditor",
- "when": "view == python_tests && viewItem == function",
- "group": "inline@2"
+ "python.testing.autoTestDiscoverOnSaveEnabled": {
+ "default": true,
+ "description": "%python.testing.autoTestDiscoverOnSaveEnabled.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.debugTestNode",
- "when": "view == python_tests && viewItem == function && !busyTests",
- "group": "inline@1"
+ "python.testing.cwd": {
+ "default": null,
+ "description": "%python.testing.cwd.description%",
+ "scope": "resource",
+ "type": "string"
},
- {
- "command": "python.runTestNode",
- "when": "view == python_tests && viewItem == function && !busyTests",
- "group": "inline@0"
+ "python.testing.debugPort": {
+ "default": 3000,
+ "description": "%python.testing.debugPort.description%",
+ "scope": "resource",
+ "type": "number"
},
- {
- "command": "python.openTestNodeInEditor",
- "when": "view == python_tests && viewItem == file",
- "group": "inline@2"
+ "python.testing.promptToConfigure": {
+ "default": true,
+ "description": "%python.testing.promptToConfigure.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.debugTestNode",
- "when": "view == python_tests && viewItem == file && !busyTests",
- "group": "inline@1"
+ "python.testing.pytestArgs": {
+ "default": [],
+ "description": "%python.testing.pytestArgs.description%",
+ "items": {
+ "type": "string"
+ },
+ "scope": "resource",
+ "type": "array"
},
- {
- "command": "python.runTestNode",
- "when": "view == python_tests && viewItem == file && !busyTests",
- "group": "inline@0"
+ "python.testing.pytestEnabled": {
+ "default": false,
+ "description": "%python.testing.pytestEnabled.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.openTestNodeInEditor",
- "when": "view == python_tests && viewItem == suite",
- "group": "inline@2"
+ "python.testing.pytestPath": {
+ "default": "pytest",
+ "description": "%python.testing.pytestPath.description%",
+ "scope": "machine-overridable",
+ "type": "string"
},
- {
- "command": "python.debugTestNode",
- "when": "view == python_tests && viewItem == suite && !busyTests",
- "group": "inline@1"
+ "python.testing.unittestArgs": {
+ "default": [
+ "-v",
+ "-s",
+ ".",
+ "-p",
+ "*test*.py"
+ ],
+ "description": "%python.testing.unittestArgs.description%",
+ "items": {
+ "type": "string"
+ },
+ "scope": "resource",
+ "type": "array"
},
- {
- "command": "python.runTestNode",
- "when": "view == python_tests && viewItem == suite && !busyTests",
- "group": "inline@0"
+ "python.testing.unittestEnabled": {
+ "default": false,
+ "description": "%python.testing.unittestEnabled.description%",
+ "scope": "resource",
+ "type": "boolean"
},
- {
- "command": "python.debugTestNode",
- "when": "view == python_tests && viewItem == folder && !busyTests",
- "group": "inline@1"
+ "python.venvFolders": {
+ "default": [],
+ "description": "%python.venvFolders.description%",
+ "items": {
+ "type": "string"
+ },
+ "scope": "machine",
+ "type": "array",
+ "uniqueItems": true
},
- {
- "command": "python.runTestNode",
- "when": "view == python_tests && viewItem == folder && !busyTests",
- "group": "inline@0"
+ "python.venvPath": {
+ "default": "",
+ "description": "%python.venvPath.description%",
+ "scope": "machine",
+ "type": "string"
}
- ]
- },
- "breakpoints": [
- {
- "language": "python"
- },
- {
- "language": "html"
},
- {
- "language": "jinja"
- }
- ],
+ "title": "Python",
+ "type": "object"
+ },
"debuggers": [
{
- "type": "python",
- "label": "Python",
- "languages": [
- "python"
- ],
- "variables": {
- "pickProcess": "python.pickLocalProcess"
- },
- "configurationSnippets": [],
"configurationAttributes": {
- "launch": {
+ "attach": {
"properties": {
- "module": {
- "type": "string",
- "description": "Name of the module to be debugged.",
- "default": ""
- },
- "program": {
- "type": "string",
- "description": "Absolute path to the program.",
- "default": "${file}"
- },
- "python": {
- "type": "string",
- "description": "Absolute path to the Python interpreter executable; overrides workspace configuration if set.",
- "default": "${command:python.interpreterPath}"
- },
- "pythonArgs": {
- "type": "array",
- "description": "Command-line arguments passed to the Python interpreter. To pass arguments to the debug target, use \"args\".",
- "default": [],
- "items": {
- "type": "string"
- }
+ "connect": {
+ "label": "Attach by connecting to debugpy over a socket.",
+ "properties": {
+ "host": {
+ "default": "127.0.0.1",
+ "description": "Hostname or IP address to connect to.",
+ "type": "string"
+ },
+ "port": {
+ "description": "Port to connect to.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": "object"
},
- "args": {
- "type": "array",
- "description": "Command line arguments passed to the program",
- "default": [],
- "items": {
- "type": "string"
- }
+ "debugAdapterPath": {
+ "description": "Path (fully qualified) to the python debug adapter executable.",
+ "type": "string"
},
- "stopOnEntry": {
- "type": "boolean",
- "description": "Automatically stop after launch.",
- "default": false
+ "django": {
+ "default": false,
+ "description": "Django debugging.",
+ "type": "boolean"
},
- "showReturnValue": {
- "type": "boolean",
- "description": "Show return value of functions when stepping.",
- "default": true
+ "host": {
+ "default": "127.0.0.1",
+ "description": "Hostname or IP address to connect to.",
+ "type": "string"
},
- "console": {
+ "jinja": {
+ "default": null,
+ "description": "Jinja template debugging (e.g. Flask).",
"enum": [
- "internalConsole",
- "integratedTerminal",
- "externalTerminal"
- ],
- "description": "Where to launch the debug target: internal console, integrated terminal, or external terminal.",
- "default": "integratedTerminal"
- },
- "cwd": {
- "type": "string",
- "description": "Absolute path to the working directory of the program being debugged. Default is the root directory of the file (leave empty).",
- "default": "${workspaceFolder}"
- },
- "env": {
- "type": "object",
- "description": "Environment variables defined as a key value pair. Property ends up being the Environment Variable and the value of the property ends up being the value of the Env Variable.",
- "default": {},
- "additionalProperties": {
- "type": "string"
- }
+ false,
+ null,
+ true
+ ]
},
- "envFile": {
- "type": "string",
- "description": "Absolute path to a file containing environment variable definitions.",
- "default": "${workspaceFolder}/.env"
+ "justMyCode": {
+ "default": true,
+ "description": "If true, show and debug only user-written code. If false, show and debug all code, including library calls.",
+ "type": "boolean"
},
- "port": {
- "type": "number",
- "description": "Debug port (default is 0, resulting in the use of a dynamic port).",
- "default": 0
+ "listen": {
+ "label": "Attach by listening for incoming socket connection from debugpy",
+ "properties": {
+ "host": {
+ "default": "127.0.0.1",
+ "description": "Hostname or IP address of the interface to listen on.",
+ "type": "string"
+ },
+ "port": {
+ "description": "Port to listen on.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": "object"
},
- "host": {
- "type": "string",
- "description": "IP address of the of the local debug server (default is localhost).",
- "default": "localhost"
+ "logToFile": {
+ "default": false,
+ "description": "Enable logging of debugger events to a log file.",
+ "type": "boolean"
},
"pathMappings": {
- "type": "array",
- "label": "Path mappings.",
+ "default": [],
"items": {
- "type": "object",
"label": "Path mapping",
- "required": [
- "localRoot",
- "remoteRoot"
- ],
"properties": {
"localRoot": {
- "type": "string",
+ "default": "${workspaceFolder}",
"label": "Local source root.",
- "default": "${workspaceFolder}"
+ "type": "string"
},
"remoteRoot": {
- "type": "string",
+ "default": "",
"label": "Remote source root.",
- "default": ""
+ "type": "string"
}
- }
+ },
+ "required": [
+ "localRoot",
+ "remoteRoot"
+ ],
+ "type": "object"
},
- "default": []
+ "label": "Path mappings.",
+ "type": "array"
},
- "logToFile": {
- "type": "boolean",
- "description": "Enable logging of debugger events to a log file.",
- "default": false
+ "port": {
+ "description": "Port to connect to.",
+ "type": "number"
+ },
+ "processId": {
+ "anyOf": [
+ {
+ "default": "${command:pickProcess}",
+ "description": "Use process picker to select a process to attach, or Process ID as integer.",
+ "enum": [
+ "${command:pickProcess}"
+ ]
+ },
+ {
+ "description": "ID of the local process to attach to.",
+ "type": "integer"
+ }
+ ]
},
"redirectOutput": {
- "type": "boolean",
+ "default": true,
"description": "Redirect output.",
- "default": true
+ "type": "boolean"
},
- "justMyCode": {
- "type": "boolean",
- "description": "Debug only user-written code.",
- "default": true
+ "showReturnValue": {
+ "default": true,
+ "description": "Show return value of functions when stepping.",
+ "type": "boolean"
},
- "debugAdapterPath": {
- "type": "string",
- "description": "Path (fully qualified) to the python debug adapter executable."
- },
- "gevent": {
- "type": "boolean",
- "description": "Enable debugging of gevent monkey-patched code.",
- "default": false
- },
- "django": {
- "type": "boolean",
- "description": "Django debugging.",
- "default": false
- },
- "jinja": {
- "enum": [
- true,
- false,
- null
- ],
- "description": "Jinja template debugging (e.g. Flask).",
- "default": null
- },
- "sudo": {
- "type": "boolean",
- "description": "Running debug program under elevated permissions (on Unix).",
- "default": false
- },
- "pyramid": {
- "type": "boolean",
- "description": "Whether debugging Pyramid applications",
- "default": false
- },
- "subProcess": {
- "type": "boolean",
- "description": "Whether to enable Sub Process debugging",
- "default": false
+ "subProcess": {
+ "default": false,
+ "description": "Whether to enable Sub Process debugging",
+ "type": "boolean"
+ }
+ }
+ },
+ "launch": {
+ "properties": {
+ "args": {
+ "default": [],
+ "description": "Command line arguments passed to the program.",
+ "items": {
+ "type": "string"
+ },
+ "type": [
+ "array",
+ "string"
+ ]
},
"autoReload": {
- "type": "object",
- "description": "Configures automatic reload of code on edit.",
"default": {},
+ "description": "Configures automatic reload of code on edit.",
"properties": {
"enable": {
- "type": "boolean",
+ "default": false,
"description": "Automatically reload code on edit.",
- "default": false
+ "type": "boolean"
},
"exclude": {
- "type": "array",
- "description": "Glob patterns of paths to exclude from auto reload.",
"default": [
"**/.git/**",
+ "**/.metadata/**",
"**/__pycache__/**",
"**/node_modules/**",
- "**/.metadata/**",
"**/site-packages/**"
],
+ "description": "Glob patterns of paths to exclude from auto reload.",
"items": {
"type": "string"
- }
+ },
+ "type": "array"
},
"include": {
- "type": "array",
- "description": "Glob patterns of paths to include in auto reload.",
"default": [
"**/*.py",
"**/*.pyw"
],
+ "description": "Glob patterns of paths to include in auto reload.",
"items": {
"type": "string"
- }
+ },
+ "type": "array"
}
- }
- }
- }
- },
- "test": {
- "properties": {
- "pythonPath": {
- "type": "string",
- "description": "Path (fully qualified) to python executable. Defaults to the value in settings",
- "default": "${command:python.interpreterPath}"
- },
- "stopOnEntry": {
- "type": "boolean",
- "description": "Automatically stop after launch.",
- "default": false
- },
- "showReturnValue": {
- "type": "boolean",
- "description": "Show return value of functions when stepping.",
- "default": true
+ },
+ "type": "object"
},
"console": {
+ "default": "integratedTerminal",
+ "description": "Where to launch the debug target: internal console, integrated terminal, or external terminal.",
"enum": [
- "internalConsole",
+ "externalTerminal",
"integratedTerminal",
- "externalTerminal"
- ],
- "description": "Where to launch the debug target: internal console, integrated terminal, or external terminal.",
- "default": "internalConsole"
+ "internalConsole"
+ ]
+ },
+ "consoleTitle": {
+ "default": "Python Debug Console",
+ "description": "Display name of the debug console or terminal"
},
"cwd": {
- "type": "string",
+ "default": "${workspaceFolder}",
"description": "Absolute path to the working directory of the program being debugged. Default is the root directory of the file (leave empty).",
- "default": "${workspaceFolder}"
+ "type": "string"
+ },
+ "debugAdapterPath": {
+ "description": "Path (fully qualified) to the python debug adapter executable.",
+ "type": "string"
+ },
+ "django": {
+ "default": false,
+ "description": "Django debugging.",
+ "type": "boolean"
},
"env": {
- "type": "object",
- "description": "Environment variables defined as a key value pair. Property ends up being the Environment Variable and the value of the property ends up being the value of the Env Variable.",
- "default": {},
"additionalProperties": {
"type": "string"
- }
+ },
+ "default": {},
+ "description": "Environment variables defined as a key value pair. Property ends up being the Environment Variable and the value of the property ends up being the value of the Env Variable.",
+ "type": "object"
},
"envFile": {
- "type": "string",
+ "default": "${workspaceFolder}/.env",
"description": "Absolute path to a file containing environment variable definitions.",
- "default": "${workspaceFolder}/.env"
+ "type": "string"
},
- "redirectOutput": {
- "type": "boolean",
- "description": "Redirect output.",
- "default": true
+ "gevent": {
+ "default": false,
+ "description": "Enable debugging of gevent monkey-patched code.",
+ "type": "boolean"
},
- "justMyCode": {
- "type": "boolean",
- "description": "Debug only user-written code.",
- "default": true
+ "host": {
+ "default": "localhost",
+ "description": "IP address of the of the local debug server (default is localhost).",
+ "type": "string"
},
- "debugAdapterPath": {
- "type": "string",
- "description": "Path (fully qualified) to the python debug adapter executable."
- }
- }
- },
- "attach": {
- "properties": {
- "connect": {
- "type": "object",
- "label": "Attach by connecting to debugpy over a socket.",
- "properties": {
- "port": {
- "type": "number",
- "description": "Port to connect to."
- },
- "host": {
- "type": "string",
- "description": "Hostname or IP address to connect to.",
- "default": "127.0.0.1"
- }
- },
- "required": [
- "port"
+ "jinja": {
+ "default": null,
+ "description": "Jinja template debugging (e.g. Flask).",
+ "enum": [
+ false,
+ null,
+ true
]
},
- "listen": {
- "type": "object",
- "label": "Attach by listening for incoming socket connection from debugpy",
- "properties": {
- "port": {
- "type": "number",
- "description": "Port to listen on."
- },
- "host": {
- "type": "string",
- "description": "Hostname or IP address of the interface to listen on.",
- "default": "127.0.0.1"
- }
- },
- "required": [
- "port"
- ]
+ "justMyCode": {
+ "default": true,
+ "description": "Debug only user-written code.",
+ "type": "boolean"
},
- "port": {
- "type": "number",
- "description": "Port to connect to."
+ "logToFile": {
+ "default": false,
+ "description": "Enable logging of debugger events to a log file.",
+ "type": "boolean"
},
- "host": {
- "type": "string",
- "description": "Hostname or IP address to connect to.",
- "default": "127.0.0.1"
+ "module": {
+ "default": "",
+ "description": "Name of the module to be debugged.",
+ "type": "string"
},
"pathMappings": {
- "type": "array",
- "label": "Path mappings.",
+ "default": [],
"items": {
- "type": "object",
"label": "Path mapping",
- "required": [
- "localRoot",
- "remoteRoot"
- ],
"properties": {
"localRoot": {
- "type": "string",
+ "default": "${workspaceFolder}",
"label": "Local source root.",
- "default": "${workspaceFolder}"
+ "type": "string"
},
"remoteRoot": {
- "type": "string",
+ "default": "",
"label": "Remote source root.",
- "default": ""
+ "type": "string"
}
- }
+ },
+ "required": [
+ "localRoot",
+ "remoteRoot"
+ ],
+ "type": "object"
},
- "default": []
+ "label": "Path mappings.",
+ "type": "array"
},
- "logToFile": {
- "type": "boolean",
- "description": "Enable logging of debugger events to a log file.",
- "default": false
+ "port": {
+ "default": 0,
+ "description": "Debug port (default is 0, resulting in the use of a dynamic port).",
+ "type": "number"
},
- "redirectOutput": {
- "type": "boolean",
- "description": "Redirect output.",
- "default": true
+ "program": {
+ "default": "${file}",
+ "description": "Absolute path to the program.",
+ "type": "string"
},
- "justMyCode": {
- "type": "boolean",
- "description": "Debug only user-written code.",
- "default": true
+ "purpose": {
+ "default": [],
+ "description": "Tells extension to use this configuration for test debugging, or when using debug-in-terminal command.",
+ "items": {
+ "enum": [
+ "debug-test",
+ "debug-in-terminal"
+ ],
+ "enumDescriptions": [
+ "Use this configuration while debugging tests using test view or test debug commands.",
+ "Use this configuration while debugging a file using debug in terminal button in the editor."
+ ]
+ },
+ "type": "array"
},
- "debugAdapterPath": {
- "type": "string",
- "description": "Path (fully qualified) to the python debug adapter executable."
+ "pyramid": {
+ "default": false,
+ "description": "Whether debugging Pyramid applications",
+ "type": "boolean"
},
- "django": {
- "type": "boolean",
- "description": "Django debugging.",
- "default": false
+ "python": {
+ "default": "${command:python.interpreterPath}",
+ "description": "Absolute path to the Python interpreter executable; overrides workspace configuration if set.",
+ "type": "string"
},
- "jinja": {
- "enum": [
- true,
- false,
- null
- ],
- "description": "Jinja template debugging (e.g. Flask).",
- "default": null
+ "pythonArgs": {
+ "default": [],
+ "description": "Command-line arguments passed to the Python interpreter. To pass arguments to the debug target, use \"args\".",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
},
- "subProcess": {
- "type": "boolean",
- "description": "Whether to enable Sub Process debugging",
- "default": false
+ "redirectOutput": {
+ "default": true,
+ "description": "Redirect output.",
+ "type": "boolean"
},
"showReturnValue": {
- "type": "boolean",
+ "default": true,
"description": "Show return value of functions when stepping.",
- "default": true
+ "type": "boolean"
},
- "processId": {
- "anyOf": [
- {
- "enum": [
- "${command:pickProcess}"
- ],
- "description": "Use process picker to select a process to attach, or Process ID as integer.",
- "default": "${command:pickProcess}"
- },
- {
- "type": "integer",
- "description": "ID of the local process to attach to."
- }
- ]
+ "stopOnEntry": {
+ "default": false,
+ "description": "Automatically stop after launch.",
+ "type": "boolean"
+ },
+ "subProcess": {
+ "default": false,
+ "description": "Whether to enable Sub Process debugging",
+ "type": "boolean"
+ },
+ "sudo": {
+ "default": false,
+ "description": "Running debug program under elevated permissions (on Unix).",
+ "type": "boolean"
}
}
}
- }
- }
- ],
- "configuration": {
- "type": "object",
- "title": "Python",
- "properties": {
- "python.diagnostics.sourceMapsEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable source map support for meaningful stack traces in error logs.",
- "scope": "application"
- },
- "python.autoComplete.addBrackets": {
- "type": "boolean",
- "default": false,
- "description": "Automatically add brackets for functions.",
- "scope": "resource"
- },
- "python.autoComplete.extraPaths": {
- "type": "array",
- "default": [],
- "description": "List of paths to libraries and the like that need to be imported by auto complete engine. E.g. when using Google App SDK, the paths are not in system path, hence need to be added into this list.",
- "scope": "resource"
- },
- "python.autoComplete.showAdvancedMembers": {
- "type": "boolean",
- "default": true,
- "description": "Controls appearance of methods with double underscores in the completion list.",
- "scope": "resource"
- },
- "python.autoComplete.typeshedPaths": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "default": [],
- "description": "Specifies paths to local typeshed repository clone(s) for the Python language server.",
- "scope": "resource"
- },
- "python.autoUpdateLanguageServer": {
- "type": "boolean",
- "default": true,
- "description": "Automatically update the language server.",
- "scope": "application"
- },
- "python.logging.level": {
- "type": "string",
- "default": "error",
- "enum": [
- "off",
- "error",
- "warn",
- "info",
- "debug"
- ],
- "description": "The logging level the extension logs at, defaults to 'error'",
- "scope": "machine"
- },
- "python.experiments.enabled": {
- "type": "boolean",
- "default": true,
- "description": "Enables/disables A/B tests.",
- "scope": "machine"
- },
- "python.defaultInterpreterPath": {
- "type": "string",
- "default": "python",
- "description": "Path to Python, you can use a custom version of Python by modifying this setting to include the full path. This default setting is used as a fallback if no interpreter is selected for the workspace. The extension will also not set nor change the value of this setting, it will only read from it.",
- "scope": "resource"
- },
- "python.experiments.optInto": {
- "type": "array",
- "default": [],
- "items": {
- "enum": [
- "pythonDeprecatePythonPath",
- "pythonTensorboardExperiment",
- "pythonDiscoveryModule",
- "pythonDiscoveryModuleWithoutWatcher",
- "pythonJediLSP",
- "pythonSurveyNotification",
- "All"
- ]
- },
- "description": "List of experiment to opt into. If empty, user is assigned the default experiment groups. See https://github.com/microsoft/vscode-python/wiki/Experiments for more details.",
- "scope": "machine"
- },
- "python.experiments.optOutFrom": {
- "type": "array",
- "default": [],
- "items": {
- "enum": [
- "pythonDeprecatePythonPath",
- "pythonTensorboardExperiment",
- "pythonDiscoveryModule",
- "pythonDiscoveryModuleWithoutWatcher",
- "pythonJediLSP",
- "pythonSurveyNotification",
- "All"
- ]
- },
- "description": "List of experiment to opt out of. If empty, user is assigned the default experiment groups. See https://github.com/microsoft/vscode-python/wiki/Experiments for more details.",
- "scope": "machine"
- },
- "python.disableInstallationCheck": {
- "type": "boolean",
- "default": false,
- "description": "Whether to check if Python is installed (also warn when using the macOS-installed Python).",
- "scope": "resource"
},
- "python.envFile": {
- "type": "string",
- "description": "Absolute path to a file containing environment variable definitions.",
- "default": "${workspaceFolder}/.env",
- "scope": "resource"
+ "deprecated": "%python.debugger.deprecatedMessage%",
+ "configurationSnippets": [],
+ "label": "Python",
+ "languages": [
+ "python"
+ ],
+ "type": "python",
+ "variables": {
+ "pickProcess": "python.pickLocalProcess"
},
- "python.formatting.autopep8Args": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.formatting.autopep8Path": {
- "type": "string",
- "default": "autopep8",
- "description": "Path to autopep8, you can use a custom version of autopep8 by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.formatting.provider": {
- "type": "string",
- "default": "autopep8",
- "description": "Provider for formatting. Possible options include 'autopep8', 'black', and 'yapf'.",
- "enum": [
- "autopep8",
- "black",
- "yapf",
- "none"
- ],
- "scope": "resource"
- },
- "python.formatting.blackArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.formatting.blackPath": {
- "type": "string",
- "default": "black",
- "description": "Path to Black, you can use a custom version of Black by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.formatting.yapfArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.formatting.yapfPath": {
- "type": "string",
- "default": "yapf",
- "description": "Path to yapf, you can use a custom version of yapf by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.globalModuleInstallation": {
- "type": "boolean",
- "default": false,
- "description": "Whether to install Python modules globally when not using an environment.",
- "scope": "resource"
- },
- "python.jediMemoryLimit": {
- "type": "number",
- "default": 0,
- "description": "Memory limit for the Jedi completion engine in megabytes. Zero (default) means 3072 MB. -1 means unlimited (disable memory limit check)",
- "scope": "resource"
- },
- "python.jediPath": {
- "type": "string",
- "default": "",
- "description": "Path to directory containing the Jedi library (this path will contain the 'Jedi' sub directory). Note: since Jedi depends on Parso, if using this setting you will need to ensure a suitable version of Parso is available. This setting only works with \"languageServer=Jedi\" and not JediLSP.",
- "scope": "resource"
- },
- "python.languageServer": {
- "type": "string",
- "enum": [
- "Default",
- "Jedi",
- "JediLSP",
- "Pylance",
- "Microsoft",
- "None"
- ],
- "enumDescriptions": [
- "Automatically select a language server: Pylance if installed and available, otherwise fallback to Jedi.",
- "Use Jedi as a language server.",
- "Use Jedi behind the Language Server Protocol (LSP) as a language server.",
- "Use Pylance as a language server.",
- "Use the Microsoft Python Language Server (MPLS) as a language server. (legacy)",
- "Disable language server capabilities."
- ],
- "default": "Default",
- "description": "Defines type of the language server.",
- "scope": "window"
- },
- "python.analysis.diagnosticPublishDelay": {
- "type": "integer",
- "default": 1000,
- "description": "Delay before diagnostic messages are transferred to the problems list (in milliseconds).",
- "scope": "resource"
- },
- "python.analysis.errors": {
- "type": "array",
- "default": [],
- "items": {
- "type": "string"
- },
- "description": "List of diagnostics messages to be shown as errors.",
- "scope": "resource"
- },
- "python.analysis.warnings": {
- "type": "array",
- "default": [],
- "items": {
- "type": "string"
- },
- "description": "List of diagnostics messages to be shown as warnings.",
- "scope": "resource"
- },
- "python.analysis.information": {
- "type": "array",
- "default": [],
- "items": {
- "type": "string"
- },
- "description": "List of diagnostics messages to be shown as information.",
- "scope": "resource"
- },
- "python.analysis.disabled": {
- "type": "array",
- "default": [],
- "items": {
- "type": "string"
- },
- "description": "List of suppressed diagnostic messages.",
- "scope": "resource"
- },
- "python.analysis.typeshedPaths": {
- "type": "array",
- "default": [],
- "items": {
- "type": "string"
- },
- "description": "Paths to Typeshed stub folders. Default is Typeshed installed with the language server. Change requires restart.",
- "scope": "resource"
- },
- "python.analysis.cacheFolderPath": {
- "type": "string",
- "description": "Path to a writable folder where analyzer can cache its data. Change requires restart.",
- "scope": "resource"
- },
- "python.analysis.memory.keepLibraryAst": {
- "type": "boolean",
- "default": false,
- "description": "Allows code analysis to keep parser trees in memory. Increases memory consumption but may improve performance with large library analysis.",
- "scope": "resource"
- },
- "python.analysis.logLevel": {
- "type": "string",
- "enum": [
- "Error",
- "Warning",
- "Information",
- "Trace"
- ],
- "default": "Error",
- "description": "Defines type of log messages language server writes into the output window.",
- "scope": "resource"
- },
- "python.analysis.symbolsHierarchyDepthLimit": {
- "type": "integer",
- "default": 10,
- "description": "Limits depth of the symbol tree in the document outline.",
- "scope": "resource"
- },
- "python.linting.enabled": {
- "type": "boolean",
- "default": true,
- "description": "Whether to lint Python files.",
- "scope": "resource"
- },
- "python.linting.cwd": {
- "type": "string",
- "default": null,
- "description": "Optional working directory for linters.",
- "scope": "resource"
- },
- "python.linting.flake8Args": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.flake8CategorySeverity.E": {
- "type": "string",
- "default": "Error",
- "description": "Severity of Flake8 message type 'E'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.flake8CategorySeverity.F": {
- "type": "string",
- "default": "Error",
- "description": "Severity of Flake8 message type 'F'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.flake8CategorySeverity.W": {
- "type": "string",
- "default": "Warning",
- "description": "Severity of Flake8 message type 'W'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.flake8Enabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using flake8",
- "scope": "resource"
- },
- "python.linting.flake8Path": {
- "type": "string",
- "default": "flake8",
- "description": "Path to flake8, you can use a custom version of flake8 by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.ignorePatterns": {
- "type": "array",
- "description": "Patterns used to exclude files or folders from being linted.",
- "default": [
- ".vscode/*.py",
- "**/site-packages/**/*.py"
- ],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.lintOnSave": {
- "type": "boolean",
- "default": true,
- "description": "Whether to lint Python files when saved.",
- "scope": "resource"
- },
- "python.linting.maxNumberOfProblems": {
- "type": "number",
- "default": 100,
- "description": "Controls the maximum number of problems produced by the server.",
- "scope": "resource"
- },
- "python.linting.banditArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.banditEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using bandit.",
- "scope": "resource"
- },
- "python.linting.banditPath": {
- "type": "string",
- "default": "bandit",
- "description": "Path to bandit, you can use a custom version of bandit by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.mypyArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [
- "--ignore-missing-imports",
- "--follow-imports=silent",
- "--show-column-numbers"
- ],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.mypyCategorySeverity.error": {
- "type": "string",
- "default": "Error",
- "description": "Severity of Mypy message type 'Error'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.mypyCategorySeverity.note": {
- "type": "string",
- "default": "Information",
- "description": "Severity of Mypy message type 'Note'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.mypyEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using mypy.",
- "scope": "resource"
- },
- "python.linting.mypyPath": {
- "type": "string",
- "default": "mypy",
- "description": "Path to mypy, you can use a custom version of mypy by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.pycodestyleArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.pycodestyleCategorySeverity.E": {
- "type": "string",
- "default": "Error",
- "description": "Severity of pycodestyle message type 'E'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pycodestyleCategorySeverity.W": {
- "type": "string",
- "default": "Warning",
- "description": "Severity of pycodestyle message type 'W'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pycodestyleEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using pycodestyle",
- "scope": "resource"
- },
- "python.linting.pycodestylePath": {
- "type": "string",
- "default": "pycodestyle",
- "description": "Path to pycodestyle, you can use a custom version of pycodestyle by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.prospectorArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.prospectorEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using prospector.",
- "scope": "resource"
- },
- "python.linting.prospectorPath": {
- "type": "string",
- "default": "prospector",
- "description": "Path to Prospector, you can use a custom version of prospector by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.pydocstyleArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.pydocstyleEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using pydocstyle",
- "scope": "resource"
- },
- "python.linting.pydocstylePath": {
- "type": "string",
- "default": "pydocstyle",
- "description": "Path to pydocstyle, you can use a custom version of pydocstyle by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.pylamaArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.pylamaEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Whether to lint Python files using pylama.",
- "scope": "resource"
- },
- "python.linting.pylamaPath": {
- "type": "string",
- "default": "pylama",
- "description": "Path to pylama, you can use a custom version of pylama by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.pylintArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.linting.pylintCategorySeverity.convention": {
- "type": "string",
- "default": "Information",
- "description": "Severity of Pylint message type 'Convention/C'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pylintCategorySeverity.error": {
- "type": "string",
- "default": "Error",
- "description": "Severity of Pylint message type 'Error/E'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pylintCategorySeverity.fatal": {
- "type": "string",
- "default": "Error",
- "description": "Severity of Pylint message type 'Fatal/F'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pylintCategorySeverity.refactor": {
- "type": "string",
- "default": "Hint",
- "description": "Severity of Pylint message type 'Refactor/R'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pylintCategorySeverity.warning": {
- "type": "string",
- "default": "Warning",
- "description": "Severity of Pylint message type 'Warning/W'.",
- "enum": [
- "Hint",
- "Error",
- "Information",
- "Warning"
- ],
- "scope": "resource"
- },
- "python.linting.pylintEnabled": {
- "type": "boolean",
- "default": true,
- "description": "Whether to lint Python files using pylint.",
- "scope": "resource"
- },
- "python.linting.pylintPath": {
- "type": "string",
- "default": "pylint",
- "description": "Path to Pylint, you can use a custom version of pylint by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.linting.pylintUseMinimalCheckers": {
- "type": "boolean",
- "default": true,
- "description": "Whether to run Pylint with minimal set of rules.",
- "scope": "resource"
- },
- "python.pythonPath": {
- "type": "string",
- "default": "python",
- "description": "(DEPRECATED: Note this setting is not used when in pythonDeprecatePythonPath experiment) Path to Python, you can use a custom version of Python by modifying this setting to include the full path.",
- "scope": "resource"
- },
- "python.condaPath": {
- "type": "string",
- "default": "",
- "description": "Path to the conda executable to use for activation (version 4.4+).",
- "scope": "resource"
- },
- "python.pipenvPath": {
- "type": "string",
- "default": "pipenv",
- "description": "Path to the pipenv executable to use for activation.",
- "scope": "resource"
- },
- "python.poetryPath": {
- "type": "string",
- "default": "poetry",
- "description": "Path to the poetry executable.",
- "scope": "resource"
- },
- "python.sortImports.args": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
- },
- "python.sortImports.path": {
- "type": "string",
- "description": "Path to isort script, default using inner version",
- "default": "",
- "scope": "resource"
+ "when": "!virtualWorkspace && shellExecutionSupported",
+ "hiddenWhen": "true"
+ }
+ ],
+ "grammars": [
+ {
+ "language": "pip-requirements",
+ "path": "./syntaxes/pip-requirements.tmLanguage.json",
+ "scopeName": "source.pip-requirements"
+ }
+ ],
+ "jsonValidation": [
+ {
+ "fileMatch": ".condarc",
+ "url": "./schemas/condarc.json"
+ },
+ {
+ "fileMatch": "environment.yml",
+ "url": "./schemas/conda-environment.json"
+ },
+ {
+ "fileMatch": "meta.yaml",
+ "url": "./schemas/conda-meta.json"
+ }
+ ],
+ "keybindings": [
+ {
+ "command": "python.execSelectionInTerminal",
+ "key": "shift+enter",
+ "when": "editorTextFocus && editorLangId == python && !findInputFocussed && !replaceInputFocussed && !jupyter.ownsSelection && !notebookEditorFocused && activeEditor != 'workbench.editor.interactive'"
+ },
+ {
+ "command": "python.execInREPL",
+ "key": "shift+enter",
+ "when": "!accessibilityModeEnabled && config.python.REPL.sendToNativeREPL && activeEditor != 'workbench.editor.interactive'&& editorLangId == python && editorTextFocus && !jupyter.ownsSelection && !notebookEditorFocused"
+ },
+ {
+ "command": "python.execInREPLEnter",
+ "key": "enter",
+ "when": "!config.interactiveWindow.executeWithShiftEnter && activeEditor == 'workbench.editor.interactive'"
+ },
+ {
+ "command": "python.refreshTensorBoard",
+ "key": "ctrl+r",
+ "mac": "cmd+r",
+ "when": "python.hasActiveTensorBoardSession"
+ }
+ ],
+ "languages": [
+ {
+ "aliases": [
+ "Jinja"
+ ],
+ "extensions": [
+ ".j2",
+ ".jinja2"
+ ],
+ "id": "jinja"
+ },
+ {
+ "aliases": [
+ "pip requirements",
+ "requirements.txt"
+ ],
+ "configuration": "./languages/pip-requirements.json",
+ "filenamePatterns": [
+ "**/*requirements*.{txt, in}",
+ "**/*constraints*.txt",
+ "**/requirements/*.{txt,in}",
+ "**/constraints/*.txt"
+ ],
+ "filenames": [
+ "constraints.txt",
+ "requirements.in",
+ "requirements.txt"
+ ],
+ "id": "pip-requirements"
+ },
+ {
+ "filenames": [
+ ".condarc"
+ ],
+ "id": "yaml"
+ },
+ {
+ "filenames": [
+ ".flake8",
+ ".pep8",
+ ".pylintrc",
+ ".pypirc"
+ ],
+ "id": "ini"
+ },
+ {
+ "filenames": [
+ "Pipfile",
+ "poetry.lock"
+ ],
+ "id": "toml"
+ },
+ {
+ "filenames": [
+ "Pipfile.lock"
+ ],
+ "id": "json"
+ }
+ ],
+ "menus": {
+ "issue/reporter": [
+ {
+ "command": "python.reportIssue"
+ }
+ ],
+ "commandPalette": [
+ {
+ "category": "Python",
+ "command": "python.analysis.restartLanguageServer",
+ "title": "%python.command.python.analysis.restartLanguageServer.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
},
- "python.tensorBoard.logDirectory": {
- "type": "string",
- "description": "Set this setting to your preferred TensorBoard log directory to skip log directory prompt when starting TensorBoard.",
- "scope": "application"
+ {
+ "category": "Python",
+ "command": "python.clearCacheAndReload",
+ "title": "%python.command.python.clearCacheAndReload.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.terminal.activateEnvironment": {
- "type": "boolean",
- "default": true,
- "description": "Activate Python Environment in Terminal created using the Extension.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.clearWorkspaceInterpreter",
+ "title": "%python.command.python.clearWorkspaceInterpreter.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.terminal.executeInFileDir": {
- "type": "boolean",
- "default": false,
- "description": "When executing a file in the terminal, whether to use execute in the file's directory, instead of the current open folder.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.configureTests",
+ "title": "%python.command.python.configureTests.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.terminal.launchArgs": {
- "type": "array",
- "default": [],
- "description": "Python launch arguments to use when executing a file in the terminal.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.createEnvironment",
+ "title": "%python.command.python.createEnvironment.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.terminal.activateEnvInCurrentTerminal": {
- "type": "boolean",
- "default": false,
- "description": "Activate Python Environment in the current Terminal on load of the Extension.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.createEnvironment-button",
+ "title": "%python.command.python.createEnvironment.title%",
+ "when": "false"
},
- "python.testing.cwd": {
- "type": "string",
- "default": null,
- "description": "Optional working directory for tests.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.createTerminal",
+ "title": "%python.command.python.createTerminal.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.testing.debugPort": {
- "type": "number",
- "default": 3000,
- "description": "Port number used for debugging of tests.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.enableSourceMapSupport",
+ "title": "%python.command.python.enableSourceMapSupport.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.testing.nosetestArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execInTerminal",
+ "title": "%python.command.python.execInTerminal.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
},
- "python.testing.nosetestsEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable testing using nosetests.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execInTerminal-icon",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInTerminalIcon.title%",
+ "when": "false"
},
- "python.testing.nosetestPath": {
- "type": "string",
- "default": "nosetests",
- "description": "Path to nosetests, you can use a custom version of nosetests by modifying this setting to include the full path.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execInDedicatedTerminal",
+ "icon": "$(play)",
+ "title": "%python.command.python.execInDedicatedTerminal.title%",
+ "when": "false"
},
- "python.testing.promptToConfigure": {
- "type": "boolean",
- "default": true,
- "description": "Prompt to configure a test framework if potential tests directories are discovered.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execSelectionInDjangoShell",
+ "title": "%python.command.python.execSelectionInDjangoShell.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
},
- "python.testing.pytestArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [],
- "items": {
- "type": "string"
- },
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execSelectionInTerminal",
+ "title": "%python.command.python.execSelectionInTerminal.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && editorLangId == python"
},
- "python.testing.pytestEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable testing using pytest.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.execInREPL",
+ "title": "%python.command.python.execInREPL.title%",
+ "when": "false"
},
- "python.testing.pytestPath": {
- "type": "string",
- "default": "pytest",
- "description": "Path to pytest (pytest), you can use a custom version of pytest by modifying this setting to include the full path.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.launchTensorBoard",
+ "title": "%python.command.python.launchTensorBoard.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && !python.tensorboardExtInstalled"
},
- "python.testing.unittestArgs": {
- "type": "array",
- "description": "Arguments passed in. Each argument is a separate item in the array.",
- "default": [
- "-v",
- "-s",
- ".",
- "-p",
- "*test*.py"
- ],
- "items": {
- "type": "string"
- },
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.refreshTensorBoard",
+ "enablement": "python.hasActiveTensorBoardSession",
+ "icon": "$(refresh)",
+ "title": "%python.command.python.refreshTensorBoard.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported && !python.tensorboardExtInstalled"
},
- "python.testing.unittestEnabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable testing using unittest.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.reportIssue",
+ "title": "%python.command.python.reportIssue.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.testing.autoTestDiscoverOnSaveEnabled": {
- "type": "boolean",
- "default": true,
- "description": "Enable auto run test discovery when saving a test file.",
- "scope": "resource"
+ {
+ "category": "Test",
+ "command": "testing.reRunFailTests",
+ "icon": "$(run-errors)",
+ "title": "%python.command.testing.rerunFailedTests.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.venvFolders": {
- "type": "array",
- "default": [],
- "description": "Folders in your home directory to look into for virtual environments (supports pyenv, direnv and virtualenvwrapper by default).",
- "scope": "machine",
- "items": {
- "type": "string"
- }
+ {
+ "category": "Python",
+ "command": "python.setInterpreter",
+ "title": "%python.command.python.setInterpreter.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.venvPath": {
- "type": "string",
- "default": "",
- "description": "Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).",
- "scope": "machine"
+ {
+ "category": "Python",
+ "command": "python.startREPL",
+ "title": "%python.command.python.startREPL.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.workspaceSymbols.ctagsPath": {
- "type": "string",
- "default": "ctags",
- "description": "Fully qualified path to the ctags executable (else leave as ctags, assuming it is in current path).",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.viewLanguageServerOutput",
+ "enablement": "python.hasLanguageServerOutputChannel",
+ "title": "%python.command.python.viewLanguageServerOutput.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
},
- "python.workspaceSymbols.enabled": {
- "type": "boolean",
- "default": false,
- "description": "Set to 'true' to enable ctags to provide Workspace Symbols.",
- "scope": "resource"
+ {
+ "category": "Python",
+ "command": "python.viewOutput",
+ "title": "%python.command.python.viewOutput.title%",
+ "when": "!virtualWorkspace && shellExecutionSupported"
+ }
+ ],
+ "editor/content": [
+ {
+ "group": "Python",
+ "command": "python.createEnvironment-button",
+ "when": "showCreateEnvButton && resourceLangId == pip-requirements && !virtualWorkspace && shellExecutionSupported && !inDiffEditor && !isMergeResultEditor && pythonDepsNotInstalled"
},
- "python.workspaceSymbols.exclusionPatterns": {
- "type": "array",
- "default": [
- "**/site-packages/**"
- ],
- "items": {
- "type": "string"
- },
- "description": "Pattern used to exclude files and folders from ctags See http://ctags.sourceforge.net/ctags.html.",
- "scope": "resource"
+ {
+ "group": "Python",
+ "command": "python.createEnvironment-button",
+ "when": "showCreateEnvButton && resourceFilename == pyproject.toml && pipInstallableToml && !virtualWorkspace && shellExecutionSupported && !inDiffEditor && !isMergeResultEditor && pythonDepsNotInstalled"
+ }
+ ],
+ "editor/context": [
+ {
+ "submenu": "python.run",
+ "group": "Python",
+ "when": "editorLangId == python && !virtualWorkspace && shellExecutionSupported && isWorkspaceTrusted"
},
- "python.workspaceSymbols.rebuildOnFileSave": {
- "type": "boolean",
- "default": true,
- "description": "Whether to re-build the tags file on when changes made to python files are saved.",
- "scope": "resource"
+ {
+ "submenu": "python.runFileInteractive",
+ "group": "Jupyter2",
+ "when": "editorLangId == python && !virtualWorkspace && shellExecutionSupported && !isJupyterInstalled && isWorkspaceTrusted"
+ }
+ ],
+ "python.runFileInteractive": [
+ {
+ "command": "python.installJupyter",
+ "group": "Jupyter2",
+ "when": "resourceLangId == python && !virtualWorkspace && shellExecutionSupported"
+ }
+ ],
+ "python.run": [
+ {
+ "command": "python.execInTerminal",
+ "group": "Python",
+ "when": "resourceLangId == python && !virtualWorkspace && shellExecutionSupported"
},
- "python.workspaceSymbols.rebuildOnStart": {
- "type": "boolean",
- "default": true,
- "description": "Whether to re-build the tags file on start (defaults to true).",
- "scope": "resource"
+ {
+ "command": "python.execSelectionInDjangoShell",
+ "group": "Python",
+ "when": "editorHasSelection && editorLangId == python && python.isDjangoProject && !virtualWorkspace && shellExecutionSupported"
},
- "python.workspaceSymbols.tagFilePath": {
- "type": "string",
- "default": "${workspaceFolder}/.vscode/tags",
- "description": "Fully qualified path to tag file (exuberant ctag file), used to provide workspace symbols.",
- "scope": "resource"
+ {
+ "command": "python.execSelectionInTerminal",
+ "group": "Python",
+ "when": "!config.python.REPL.sendToNativeREPL && editorFocus && editorLangId == python && !virtualWorkspace && shellExecutionSupported"
},
- "python.insidersChannel": {
- "type": "string",
- "default": "off",
- "description": "Set to \"weekly\" or \"daily\" to automatically download and install the latest Insiders builds of the python extension, which include upcoming features and bug fixes.",
- "enum": [
- "off",
- "weekly",
- "daily"
- ],
- "scope": "application"
+ {
+ "command": "python.execInREPL",
+ "group": "Python",
+ "when": "editorFocus && editorLangId == python && !virtualWorkspace && shellExecutionSupported && config.python.REPL.sendToNativeREPL"
+ }
+ ],
+ "editor/title": [
+ {
+ "command": "python.refreshTensorBoard",
+ "group": "navigation@0",
+ "when": "python.hasActiveTensorBoardSession && !virtualWorkspace && shellExecutionSupported"
+ }
+ ],
+ "editor/title/run": [
+ {
+ "command": "python.execInTerminal-icon",
+ "group": "navigation@0",
+ "title": "%python.command.python.execInTerminalIcon.title%",
+ "when": "resourceLangId == python && !isInDiffEditor && !virtualWorkspace && shellExecutionSupported"
},
- "python.showStartPage": {
- "type": "boolean",
- "default": true,
- "description": "Show the Python Start Page when a new update is released.",
- "scope": "application"
+ {
+ "command": "python.execInDedicatedTerminal",
+ "group": "navigation@0",
+ "title": "%python.command.python.execInDedicatedTerminal.title%",
+ "when": "resourceLangId == python && !isInDiffEditor && !virtualWorkspace && shellExecutionSupported"
}
- }
+ ],
+ "explorer/context": [
+ {
+ "command": "python.execInTerminal",
+ "group": "Python",
+ "when": "resourceLangId == python && !virtualWorkspace && shellExecutionSupported"
+ }
+ ],
+ "file/newFile": [
+ {
+ "command": "python.createNewFile",
+ "group": "file",
+ "when": "!virtualWorkspace"
+ }
+ ],
+ "view/title": [
+ {
+ "command": "testing.reRunFailTests",
+ "when": "view == workbench.view.testing && hasFailedTests && !virtualWorkspace && shellExecutionSupported",
+ "group": "navigation@1"
+ }
+ ]
},
- "languages": [
- {
- "id": "pip-requirements",
- "aliases": [
- "pip requirements",
- "requirements.txt"
- ],
- "filenames": [
- "requirements.txt",
- "constraints.txt",
- "requirements.in"
- ],
- "filenamePatterns": [
- "*-requirements.txt",
- "requirements-*.txt",
- "constraints-*.txt",
- "*-constraints.txt",
- "*-requirements.in",
- "requirements-*.in"
- ],
- "configuration": "./languages/pip-requirements.json"
- },
+ "submenus": [
{
- "id": "yaml",
- "filenames": [
- ".condarc"
- ]
- },
- {
- "id": "toml",
- "filenames": [
- "poetry.lock",
- "Pipfile"
- ]
- },
- {
- "id": "json",
- "filenames": [
- "Pipfile.lock"
- ]
- },
- {
- "id": "ini",
- "filenames": [
- ".flake8",
- ".pep8",
- ".pylintrc",
- ".pypirc"
- ]
+ "id": "python.run",
+ "label": "%python.editor.context.submenu.runPython%",
+ "icon": "$(play)"
},
{
- "id": "jinja",
- "extensions": [
- ".jinja2",
- ".j2"
- ],
- "aliases": [
- "Jinja"
- ]
- }
- ],
- "grammars": [
- {
- "language": "pip-requirements",
- "scopeName": "source.pip-requirements",
- "path": "./syntaxes/pip-requirements.tmLanguage.json"
+ "id": "python.runFileInteractive",
+ "label": "%python.editor.context.submenu.runPythonInteractive%"
}
],
- "jsonValidation": [
- {
- "fileMatch": ".condarc",
- "url": "./schemas/condarc.json"
- },
- {
- "fileMatch": "environment.yml",
- "url": "./schemas/conda-environment.json"
- },
+ "viewsWelcome": [
{
- "fileMatch": "meta.yaml",
- "url": "./schemas/conda-meta.json"
+ "view": "testing",
+ "contents": "Configure a test framework to see your tests here.\n[Configure Python Tests](command:python.configureTests)",
+ "when": "!virtualWorkspace && shellExecutionSupported"
}
],
"yamlValidation": [
@@ -2024,26 +1472,15 @@
"fileMatch": "meta.yaml",
"url": "./schemas/conda-meta.json"
}
- ],
- "views": {
- "test": [
- {
- "id": "python_tests",
- "name": "Python",
- "when": "testsDiscovered"
- }
- ]
- }
+ ]
},
"scripts": {
"package": "gulp clean && gulp prePublishBundle && vsce package -o ms-python-insiders.vsix",
"prePublish": "gulp clean && gulp prePublishNonBundle",
"compile": "tsc -watch -p ./",
+ "compileApi": "node ./node_modules/typescript/lib/tsc.js -b ./pythonExtensionApi/tsconfig.json",
"compiled": "deemon npm run compile",
"kill-compiled": "deemon --kill npm run compile",
- "compile-webviews-watch": "cross-env NODE_OPTIONS=--max_old_space_size=9096 webpack --config ./build/webpack/webpack.startPage-ui-viewers.config.js --watch",
- "compile-webviews-watchd": "deemon npm run compile-webviews-watch",
- "kill-compile-webviews-watchd": "deemon --kill npm run compile-webviews-watch",
"checkDependencies": "gulp checkDependencies",
"test": "node ./out/test/standardTest.js && node ./out/test/multiRootTest.js",
"test:unittests": "mocha --config ./build/.mocha.unittests.json",
@@ -2064,10 +1501,10 @@
"testSmoke": "cross-env INSTALL_JUPYTER_EXTENSION=true \"node ./out/test/smokeTest.js\"",
"testInsiders": "cross-env VSC_PYTHON_CI_TEST_VSC_CHANNEL=insiders INSTALL_PYLANCE_EXTENSION=true TEST_FILES_SUFFIX=insiders.test CODE_TESTS_WORKSPACE=src/testMultiRootWkspc/smokeTests \"node ./out/test/standardTest.js\"",
"lint-staged": "node gulpfile.js",
- "lint": "eslint --ext .ts,.tsx,.js src build",
- "lint-fix": "eslint --fix --ext .ts,.tsx,.js src build gulpfile.js",
- "format-check": "prettier --check 'src/**/*.ts' 'src/**/*.tsx' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
- "format-fix": "prettier --write 'src/**/*.ts' 'src/**/*.tsx' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
+ "lint": "eslint --ext .ts,.js src build pythonExtensionApi",
+ "lint-fix": "eslint --fix --ext .ts,.js src build pythonExtensionApi gulpfile.js",
+ "format-check": "prettier --check 'src/**/*.ts' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
+ "format-fix": "prettier --write 'src/**/*.ts' 'build/**/*.js' '.github/**/*.yml' gulpfile.js",
"clean": "gulp clean",
"addExtensionPackDependencies": "gulp addExtensionPackDependencies",
"updateBuildNumber": "gulp updateBuildNumber",
@@ -2075,236 +1512,110 @@
"webpack": "webpack"
},
"dependencies": {
+ "@iarna/toml": "^2.2.5",
+ "@vscode/extension-telemetry": "^0.8.4",
"arch": "^2.1.0",
- "azure-storage": "^2.10.4",
- "chokidar": "^3.4.3",
- "diff-match-patch": "^1.0.0",
- "fs-extra": "^9.1.0",
- "fuzzy": "^0.1.3",
- "get-port": "^3.2.0",
- "glob": "^7.1.2",
+ "fs-extra": "^10.0.1",
+ "glob": "^7.2.0",
"hash.js": "^1.1.7",
- "iconv-lite": "^0.4.21",
+ "iconv-lite": "^0.6.3",
"inversify": "^5.0.4",
- "jsonc-parser": "^2.0.3",
- "line-by-line": "^0.1.6",
+ "jsonc-parser": "^3.0.0",
"lodash": "^4.17.21",
- "log4js": "^6.1.2",
- "md5": "^2.2.1",
- "minimatch": "^3.0.4",
+ "minimatch": "^5.0.1",
"named-js-regexp": "^1.3.3",
- "node-fetch": "^2.6.1",
"node-stream-zip": "^1.6.0",
- "portfinder": "^1.0.25",
"reflect-metadata": "^0.1.12",
- "request": "^2.87.0",
- "request-progress": "^3.0.0",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.4",
- "semver": "^5.5.0",
+ "semver": "^7.5.2",
"stack-trace": "0.0.10",
- "string-argv": "^0.3.1",
- "strip-ansi": "^5.2.0",
- "sudo-prompt": "^8.2.0",
- "tmp": "^0.0.29",
- "tree-kill": "^1.2.2",
- "typescript-char": "^0.0.0",
- "uint64be": "^1.0.1",
- "unicode": "^10.0.0",
- "untildify": "^3.0.2",
- "vscode-debugadapter": "^1.28.0",
+ "sudo-prompt": "^9.2.1",
+ "tmp": "^0.0.33",
+ "uint64be": "^3.0.0",
+ "unicode": "^14.0.0",
+ "untildify": "^4.0.0",
"vscode-debugprotocol": "^1.28.0",
- "vscode-extension-telemetry": "0.1.4",
- "vscode-jsonrpc": "6.0.0",
- "vscode-languageclient": "7.0.0",
- "vscode-languageserver": "7.0.0",
- "vscode-languageserver-protocol": "3.16.0",
- "vscode-tas-client": "^0.1.22",
+ "vscode-jsonrpc": "^9.0.0-next.4",
+ "vscode-languageclient": "^10.0.0-next.8",
+ "vscode-languageserver-protocol": "^3.17.6-next.6",
+ "vscode-tas-client": "^0.1.84",
+ "which": "^2.0.2",
"winreg": "^1.2.4",
- "winston": "^3.2.1",
- "xml2js": "^0.4.19"
+ "xml2js": "^0.5.0"
},
"devDependencies": {
- "@enonic/fnv-plus": "^1.3.0",
- "@istanbuljs/nyc-config-typescript": "^0.1.3",
- "@sinonjs/fake-timers": "^6.0.1",
- "@types/ansi-regex": "^4.0.0",
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
+ "@types/bent": "^7.3.0",
"@types/chai": "^4.1.2",
- "@types/chai-arrays": "^1.0.2",
+ "@types/chai-arrays": "^2.0.0",
"@types/chai-as-promised": "^7.1.0",
- "@types/copy-webpack-plugin": "^4.4.2",
- "@types/cors": "^2.8.6",
- "@types/debug": "^4.1.5",
- "@types/dedent": "^0.7.0",
- "@types/del": "^3.0.0",
- "@types/diff-match-patch": "^1.0.32",
- "@types/download": "^6.2.2",
- "@types/enzyme": "^3.1.14",
- "@types/enzyme-adapter-react-16": "^1.0.3",
- "@types/event-stream": "^3.3.33",
- "@types/fs-extra": "^5.0.1",
- "@types/get-port": "^3.2.0",
- "@types/glob": "^5.0.35",
- "@types/html-webpack-plugin": "^3.2.0",
- "@types/iconv-lite": "^0.0.1",
- "@types/jsdom": "^11.12.0",
+ "@types/download": "^8.0.1",
+ "@types/fs-extra": "^9.0.13",
+ "@types/glob": "^7.2.0",
"@types/lodash": "^4.14.104",
- "@types/md5": "^2.1.32",
- "@types/memoize-one": "^4.1.1",
- "@types/mocha": "^5.2.7",
- "@types/nock": "^10.0.3",
- "@types/node": "^12.19.12",
- "@types/promisify-node": "^0.4.0",
- "@types/react": "^16.4.14",
- "@types/react-dom": "^16.0.8",
- "@types/react-json-tree": "^0.6.8",
- "@types/request": "^2.47.0",
+ "@types/mocha": "^9.1.0",
+ "@types/node": "^18.17.1",
"@types/semver": "^5.5.0",
"@types/shortid": "^0.0.29",
- "@types/sinon": "^7.5.1",
- "@types/sinonjs__fake-timers": "^6.0.1",
- "@types/socket.io": "^2.1.4",
+ "@types/sinon": "^10.0.11",
"@types/stack-trace": "0.0.29",
- "@types/temp": "^0.8.32",
- "@types/tmp": "0.0.33",
- "@types/untildify": "^3.0.0",
- "@types/uuid": "^3.4.3",
- "@types/vscode": "~1.53.0",
- "@types/webpack-bundle-analyzer": "^2.13.0",
+ "@types/tmp": "^0.0.33",
+ "@types/vscode": "^1.81.0",
+ "@types/which": "^2.0.1",
"@types/winreg": "^1.2.30",
"@types/xml2js": "^0.4.2",
"@typescript-eslint/eslint-plugin": "^3.7.0",
"@typescript-eslint/parser": "^3.7.0",
- "acorn": "^6.4.1",
- "ansi-to-html": "^0.6.7",
- "babel-loader": "^8.0.3",
- "babel-plugin-inline-json-import": "^0.3.1",
- "babel-plugin-transform-runtime": "^6.23.0",
- "babel-polyfill": "^6.26.0",
- "cache-loader": "^4.1.0",
+ "@vscode/test-electron": "^2.3.8",
+ "@vscode/vsce": "^2.27.0",
+ "bent": "^7.3.12",
"chai": "^4.1.2",
"chai-arrays": "^2.0.0",
"chai-as-promised": "^7.1.1",
- "chai-http": "^4.3.0",
- "copy-webpack-plugin": "^5.1.2",
- "cors": "^2.8.5",
- "cross-env": "^6.0.3",
+ "copy-webpack-plugin": "^9.1.0",
"cross-spawn": "^6.0.5",
- "css-loader": "^1.0.1",
- "dedent": "^0.7.0",
- "deemon": "^1.4.0",
- "del": "^3.0.0",
- "download": "^7.0.0",
- "enzyme": "^3.7.0",
- "enzyme-adapter-react-16": "^1.6.0",
+ "del": "^6.0.0",
+ "download": "^8.0.0",
"eslint": "^7.2.0",
"eslint-config-airbnb": "^18.2.0",
- "eslint-config-prettier": "^6.15.0",
- "eslint-plugin-import": "^2.22.0",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-import": "^2.25.4",
"eslint-plugin-jsx-a11y": "^6.3.1",
"eslint-plugin-react": "^7.20.3",
"eslint-plugin-react-hooks": "^4.0.0",
- "expose-loader": "^0.7.5",
- "express": "^4.17.1",
- "extract-zip": "^1.6.7",
- "fast-xml-parser": "^3.16.0",
- "file-loader": "^5.1.0",
- "filemanager-webpack-plugin-fixed": "^2.0.9",
- "flat": "^4.0.0",
- "fork-ts-checker-webpack-plugin": "^4.1.6",
- "gulp": "^4.0.0",
- "gulp-azure-storage": "^0.11.1",
- "gulp-chmod": "^2.0.0",
- "gulp-gunzip": "^1.1.0",
- "gulp-rename": "^1.4.0",
- "gulp-sourcemaps": "^2.6.4",
- "gulp-typescript": "^4.0.1",
- "gulp-untar": "0.0.8",
- "gulp-vinyl-zip": "^2.1.2",
- "html-webpack-plugin": "^3.2.0",
- "husky": "^1.1.2",
- "immutable": "^4.0.0-rc.12",
- "jsdom": "^15.0.0",
- "json-loader": "^0.5.7",
- "less": "^3.9.0",
- "less-loader": "^5.0.0",
- "less-plugin-inline-urls": "^1.2.0",
- "loader-utils": "^1.1.0",
- "lolex": "^5.1.2",
- "memoize-one": "^5.1.1",
- "mocha": "^8.1.1",
- "mocha-junit-reporter": "^1.17.0",
+ "expose-loader": "^3.1.0",
+ "flat": "^5.0.2",
+ "get-port": "^5.1.1",
+ "gulp": "^5.0.0",
+ "gulp-typescript": "^5.0.0",
+ "mocha": "^9.2.2",
+ "mocha-junit-reporter": "^2.0.2",
"mocha-multi-reporters": "^1.1.7",
- "monaco-editor": "0.18.1",
- "monaco-editor-textmate": "^2.2.1",
- "monaco-editor-webpack-plugin": "^1.7.0",
- "monaco-textmate": "^3.0.1",
- "nocache": "^2.1.0",
- "nock": "^10.0.6",
"node-has-native-dependencies": "^1.0.2",
- "node-html-parser": "^1.1.13",
"node-loader": "^1.0.2",
+ "node-polyfill-webpack-plugin": "^1.1.4",
"nyc": "^15.0.0",
- "postcss": "^8.2.10",
- "postcss-cssnext": "^3.1.0",
- "postcss-import": "^12.0.1",
- "postcss-loader": "^3.0.0",
"prettier": "^2.0.2",
- "range-inclusive": "^1.0.2",
- "raw-loader": "^0.5.1",
- "react": "^16.5.2",
- "react-dev-utils": "^11.0.4",
- "react-dom": "^16.5.2",
- "react-svgmt": "^1.1.8",
- "remove-files-webpack-plugin": "^1.4.0",
- "requirejs": "^2.3.6",
"rewiremock": "^3.13.0",
- "rimraf": "^3.0.2",
- "serialize-javascript": "^3.1.0",
"shortid": "^2.2.8",
- "sinon": "^8.0.1",
- "socket.io": "^2.4.0",
+ "sinon": "^13.0.1",
"source-map-support": "^0.5.12",
- "style-loader": "^0.23.1",
- "styled-jsx": "^3.1.0",
- "svg-inline-loader": "^0.8.0",
- "svg-inline-react": "^3.1.0",
- "terser-webpack-plugin": "^3.1.0",
- "thread-loader": "^2.1.3",
- "transform-loader": "^0.2.4",
- "ts-loader": "^5.3.0",
- "ts-mock-imports": "^1.3.0",
+ "ts-loader": "^9.2.8",
"ts-mockito": "^2.5.0",
- "ts-node": "^8.3.0",
+ "ts-node": "^10.7.0",
"tsconfig-paths-webpack-plugin": "^3.2.0",
- "typed-react-markdown": "^0.1.0",
"typemoq": "^2.1.0",
- "typescript": "4.1.5",
- "typescript-formatter": "^7.1.0",
- "unicode-properties": "^1.3.1",
- "url-loader": "^1.1.2",
- "uuid": "^3.3.2",
- "vinyl-fs": "^3.0.3",
- "vsce": "^1.59.0",
- "vscode-debugadapter-testsupport": "^1.27.0",
- "vscode-test": "^1.2.3",
- "webpack": "^4.33.0",
- "webpack-bundle-analyzer": "^3.6.0",
- "webpack-cli": "^3.1.2",
+ "typescript": "4.5.5",
+ "uuid": "^8.3.2",
+ "webpack": "^5.76.0",
+ "webpack-bundle-analyzer": "^4.5.0",
+ "webpack-cli": "^4.9.2",
"webpack-fix-default-import-plugin": "^1.0.3",
- "webpack-merge": "^4.1.4",
- "webpack-node-externals": "^1.7.2",
- "webpack-require-from": "^1.8.0",
- "why-is-node-running": "^2.0.3",
- "wtfnode": "^0.8.0",
+ "webpack-merge": "^5.8.0",
+ "webpack-node-externals": "^3.0.0",
+ "webpack-require-from": "^1.8.6",
+ "worker-loader": "^3.0.8",
"yargs": "^15.3.1"
- },
- "__metadata": {
- "id": "f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5",
- "publisherDisplayName": "Microsoft",
- "publisherId": "998b010b-e2af-44a5-a6cd-0b5fd3b9b6f8"
- },
- "optionalDependencies": {
- "canvas": "^2.7.0"
}
}
diff --git a/package.nls.de.json b/package.nls.de.json
deleted file mode 100644
index 77ec14b3ee9c..000000000000
--- a/package.nls.de.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "python.command.python.sortImports.title": "Sortieren der Importe",
- "python.command.python.startREPL.title": "Starten des REPL",
- "python.command.python.createTerminal.title": "Terminal erstellen",
- "python.command.python.buildWorkspaceSymbols.title": "Arbeitsplatz-Symbole erstellen",
- "python.command.python.runtests.title": "Alle Unittests ausführen",
- "python.command.python.debugtests.title": "Alle Unittests debuggen",
- "python.command.python.execInTerminal.title": "Python-Datei im Terminal ausführen",
- "python.command.python.setInterpreter.title": "Interpreter auswählen",
- "python.command.python.refactorExtractVariable.title": "Variable extrahieren",
- "python.command.python.refactorExtractMethod.title": "Methode extrahieren",
- "python.command.python.viewTestOutput.title": "Unittest-Ausgabe anzeigen",
- "python.command.python.selectAndRunTestMethod.title": "Unittest-Methode ausführen ...",
- "python.command.python.selectAndDebugTestMethod.title": "Unittest-Debug-Methode ausführen ...",
- "python.command.python.selectAndRunTestFile.title": "Unittest-Datei ausführen ...",
- "python.command.python.runCurrentTestFile.title": "Ausgewählte Unittest-Datei ausführen",
- "python.command.python.runFailedTests.title": "Fehlerhafte Unittests ausführen",
- "python.command.python.discoverTests.title": "Unittests durchsuchen",
- "python.command.python.execSelectionInTerminal.title": "Selektion/Reihe in Python-Terminal ausführen",
- "python.command.python.execSelectionInDjangoShell.title": "Selektion/Reihe in Django-Shell ausführen",
- "python.command.python.goToPythonObject.title": "Gehe zu Python-Objekt",
- "python.command.python.setLinter.title": "Linter auswählen",
- "python.command.python.enableLinting.title": "Linting aktivieren",
- "python.command.python.runLinting.title": "Linting ausführen",
- "python.snippet.launch.standard.label": "Python: Aktuelle Datei",
- "python.snippet.launch.module.label": "Python: Modul",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid-Anwendung",
- "python.snippet.launch.attach.label": "Python: Anfügen"
-}
diff --git a/package.nls.es.json b/package.nls.es.json
deleted file mode 100644
index 227e268dbc8d..000000000000
--- a/package.nls.es.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "python.command.python.sortImports.title": "Ordenar importaciones",
- "python.command.python.startREPL.title": "Nuevo REPL",
- "python.command.python.createTerminal.title": "Nueva terminal",
- "python.command.python.buildWorkspaceSymbols.title": "Compilar símbolos del área de trabajo",
- "python.command.python.runtests.title": "Ejecutar todas las pruebas unitarias",
- "python.command.python.debugtests.title": "Depurar todas las pruebas unitarias",
- "python.command.python.execInTerminal.title": "Ejecutar archivo Python en la terminal",
- "python.command.python.setInterpreter.title": "Seleccionar intérprete",
- "python.command.python.refactorExtractVariable.title": "Extraer variable",
- "python.command.python.refactorExtractMethod.title": "Extraer método",
- "python.command.python.viewTestOutput.title": "Mostrar resultados de la prueba unitaria",
- "python.command.python.selectAndRunTestMethod.title": "Método de ejecución de pruebas unitarias ...",
- "python.command.python.selectAndDebugTestMethod.title": "Método de depuración de pruebas unitarias ...",
- "python.command.python.selectAndRunTestFile.title": "Ejecutar archivo de prueba unitaria ...",
- "python.command.python.runCurrentTestFile.title": "Ejecutar archivo de prueba unitaria actual",
- "python.command.python.runFailedTests.title": "Ejecutar pruebas unitarias fallidas",
- "python.command.python.discoverTests.title": "Encontrar pruebas unitarias",
- "python.command.python.execSelectionInTerminal.title": "Ejecutar línea/selección en la terminal",
- "python.command.python.execSelectionInDjangoShell.title": "Ejecutar línea/selección en el intérprete de Django",
- "python.command.python.goToPythonObject.title": "Ir al objeto de Python",
- "python.command.python.setLinter.title": "Seleccionar Linter",
- "python.command.python.enableLinting.title": "Habilitar Linting",
- "python.command.python.runLinting.title": "Ejecutar Linting",
- "python.snippet.launch.standard.label": "Python: Archivo actual",
- "python.snippet.launch.module.label": "Python: Módulo",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid",
- "python.snippet.launch.attach.label": "Python: Adjuntar"
-}
diff --git a/package.nls.fr.json b/package.nls.fr.json
deleted file mode 100644
index ad28a94d6e09..000000000000
--- a/package.nls.fr.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "python.command.python.sortImports.title": "Trier les imports",
- "python.command.python.startREPL.title": "Démarrer la console interactive",
- "python.command.python.createTerminal.title": "Créer un terminal",
- "python.command.python.buildWorkspaceSymbols.title": "Construire les symboles de l'espace de travail",
- "python.command.python.runtests.title": "Exécuter tous les tests unitaires",
- "python.command.python.debugtests.title": "Déboguer tous les tests unitaires",
- "python.command.python.execInTerminal.title": "Exécuter le script Python dans un terminal",
- "python.command.python.setInterpreter.title": "Sélectionner l'interpreteur",
- "python.command.python.refactorExtractVariable.title": "Extraire la variable",
- "python.command.python.refactorExtractMethod.title": "Extraire la méthode",
- "python.command.python.viewTestOutput.title": "Afficher la sortie des tests unitaires",
- "python.command.python.selectAndRunTestMethod.title": "Exécuter la méthode de test unitaire ...",
- "python.command.python.selectAndDebugTestMethod.title": "Déboguer la méthode de test unitaire ...",
- "python.command.python.selectAndRunTestFile.title": "Exécuter le fichier de test unitaire ...",
- "python.command.python.runCurrentTestFile.title": "Exécuter le fichier de test unitaire courant",
- "python.command.python.runFailedTests.title": "Exécuter les derniers test unitaires échoués",
- "python.command.python.execSelectionInTerminal.title": "Exécuter la ligne/sélection dans un terminal Python",
- "python.command.python.execSelectionInDjangoShell.title": "Exécuter la ligne/sélection dans un shell Django",
- "python.command.python.goToPythonObject.title": "Se rendre à l'objet Python",
- "python.command.python.setLinter.title": "Sélectionner le linter",
- "python.command.python.enableLinting.title": "Activer le linting",
- "python.command.python.runLinting.title": "Exécuter le linting",
- "python.snippet.launch.standard.label": "Python : Fichier actuel",
- "python.snippet.launch.module.label": "Python: Module",
- "python.snippet.launch.django.label": "Python : Django",
- "python.snippet.launch.flask.label": "Python : Flask",
- "python.snippet.launch.pyramid.label": "Python : application Pyramid",
- "python.snippet.launch.attach.label": "Python: Attacher"
-}
diff --git a/package.nls.it.json b/package.nls.it.json
deleted file mode 100644
index c16d6ce74241..000000000000
--- a/package.nls.it.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "python.command.python.sortImports.title": "Ordina gli import",
- "python.command.python.startREPL.title": "Apri nuova REPL",
- "python.command.python.createTerminal.title": "Apri nuovo terminale",
- "python.command.python.buildWorkspaceSymbols.title": "Compila simboli dello spazio di lavoro",
- "python.command.python.runtests.title": "Esegui tutti i test",
- "python.command.python.debugtests.title": "Esegui debug di tutti i test",
- "python.command.python.execInTerminal.title": "Esegui file Python nel terminale",
- "python.command.python.setInterpreter.title": "Seleziona interprete",
- "python.command.python.refactorExtractVariable.title": "Estrai variable",
- "python.command.python.refactorExtractMethod.title": "Estrai metodo",
- "python.command.python.viewTestOutput.title": "Mostra output dei test",
- "python.command.python.selectAndRunTestMethod.title": "Esegui metodo di test ...",
- "python.command.python.selectAndDebugTestMethod.title": "Esegui debug del metodo di test ...",
- "python.command.python.selectAndRunTestFile.title": "Esegui file di test ...",
- "python.command.python.runCurrentTestFile.title": "Esegui file di test attuale",
- "python.command.python.runFailedTests.title": "Esegui test falliti",
- "python.command.python.execSelectionInTerminal.title": "Esegui selezione/linea nel terminale di Python",
- "python.command.python.execSelectionInDjangoShell.title": "Esegui selezione/linea nella shell Django",
- "python.command.python.goToPythonObject.title": "Vai a oggetto Python",
- "python.command.python.setLinter.title": "Selezione Linter",
- "python.command.python.enableLinting.title": "Attiva Linting",
- "python.command.python.runLinting.title": "Esegui Linting",
- "python.snippet.launch.standard.label": "Python: File corrente",
- "python.snippet.launch.module.label": "Python: Modulo",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Applicazione Pyramid",
- "python.snippet.launch.attach.label": "Python: Allega",
- "ExtensionSurveyBanner.bannerLabelYes": "Sì, prenderò il sondaggio ora"
-}
diff --git a/package.nls.ja.json b/package.nls.ja.json
deleted file mode 100644
index a2db0a823636..000000000000
--- a/package.nls.ja.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "python.command.python.sortImports.title": "import 文を並び替える",
- "python.command.python.startREPL.title": "REPL を開始",
- "python.command.python.buildWorkspaceSymbols.title": "ワークスペースのシンボルをビルド",
- "python.command.python.runtests.title": "すべての単体テストを実行",
- "python.command.python.debugtests.title": "すべての単体テストをデバッグ",
- "python.command.python.execInTerminal.title": "ターミナルで Python ファイルを実行",
- "python.command.python.setInterpreter.title": "インタープリターを選択",
- "python.command.python.refactorExtractVariable.title": "変数を抽出",
- "python.command.python.refactorExtractMethod.title": "メソッドを抽出",
- "python.command.python.viewTestOutput.title": "単体テストの出力を表示",
- "python.command.python.selectAndRunTestMethod.title": "単体テストメソッドを実行...",
- "python.command.python.selectAndDebugTestMethod.title": "単体テストメソッドをデバッグ...",
- "python.command.python.selectAndRunTestFile.title": "単体テストファイルを実行...",
- "python.command.python.runCurrentTestFile.title": "現在の単体テストファイルを実行",
- "python.command.python.runFailedTests.title": "失敗した単体テストを実行",
- "python.command.python.execSelectionInTerminal.title": "Python ターミナルで選択範囲/行を実行",
- "python.command.python.execSelectionInDjangoShell.title": "Django シェルで選択範囲/行を実行",
- "python.command.python.goToPythonObject.title": "Python オブジェクトに移動",
- "python.snippet.launch.standard.label": "Python: Current File",
- "python.snippet.launch.module.label": "Python: モジュール",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid アプリケーション",
- "python.snippet.launch.attach.label": "Python: アタッチ"
-}
diff --git a/package.nls.json b/package.nls.json
index 96ee3df8c1e9..dcf8a2ddf5f9 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -1,255 +1,169 @@
{
- "python.command.python.sortImports.title": "Sort Imports",
- "python.command.python.startREPL.title": "Start REPL",
+ "python.command.python.startREPL.title": "Start Terminal REPL",
+ "python.command.python.createEnvironment.title": "Create Environment...",
+ "python.command.python.createNewFile.title": "New Python File",
"python.command.python.createTerminal.title": "Create Terminal",
- "python.command.python.buildWorkspaceSymbols.title": "Build Workspace Symbols",
- "python.command.python.runtests.title": "Run All Tests",
- "python.command.python.debugtests.title": "Debug All Tests",
"python.command.python.execInTerminal.title": "Run Python File in Terminal",
+ "python.command.python.execInTerminalIcon.title": "Run Python File",
+ "python.command.python.execInDedicatedTerminal.title": "Run Python File in Dedicated Terminal",
"python.command.python.setInterpreter.title": "Select Interpreter",
- "python.command.python.switchOffInsidersChannel.title": "Switch to Default Channel",
- "python.command.python.switchToDailyChannel.title": "Switch to Insiders Daily Channel",
- "python.command.python.switchToWeeklyChannel.title": "Switch to Insiders Weekly Channel",
"python.command.python.clearWorkspaceInterpreter.title": "Clear Workspace Interpreter Setting",
- "python.command.python.refactorExtractVariable.title": "Extract Variable",
- "python.command.python.refactorExtractMethod.title": "Extract Method",
"python.command.python.viewOutput.title": "Show Output",
- "python.command.python.viewTestOutput.title": "Show Test Output",
+ "python.command.python.installJupyter.title": "Install the Jupyter extension",
"python.command.python.viewLanguageServerOutput.title": "Show Language Server Output",
- "python.command.python.selectAndRunTestMethod.title": "Run Test Method ...",
- "python.command.python.selectAndDebugTestMethod.title": "Debug Test Method ...",
- "python.command.python.selectAndRunTestFile.title": "Run Test File ...",
- "python.command.python.runCurrentTestFile.title": "Run Current Test File",
- "python.command.python.runFailedTests.title": "Run Failed Tests",
- "python.command.python.discoverTests.title": "Discover Tests",
- "python.command.python.discoveringTests.title": "Discovering...",
- "python.command.python.stopTests.title": "Stop",
"python.command.python.configureTests.title": "Configure Tests",
+ "python.command.testing.rerunFailedTests.title": "Rerun Failed Tests",
"python.command.python.execSelectionInTerminal.title": "Run Selection/Line in Python Terminal",
+ "python.command.python.execInREPL.title": "Run Selection/Line in Python REPL",
"python.command.python.execSelectionInDjangoShell.title": "Run Selection/Line in Django Shell",
- "python.command.python.goToPythonObject.title": "Go to Python Object",
- "python.command.python.reportIssue.title": "Report Issue",
- "python.command.python.setLinter.title": "Select Linter",
- "python.command.python.enableLinting.title": "Enable/Disable Linting",
- "python.command.python.runLinting.title": "Run Linting",
+ "python.command.python.reportIssue.title": "Report Issue...",
"python.command.python.enableSourceMapSupport.title": "Enable Source Map Support For Extension Debugging",
- "python.command.python.clearPersistentStorage.title": "Clear Internal Extension Cache",
- "python.command.python.startPage.open.title": "Open Start Page",
- "python.command.python.analysis.clearCache.title": "Clear Module Analysis Cache",
+ "python.command.python.clearCacheAndReload.title": "Clear Cache and Reload Window",
"python.command.python.analysis.restartLanguageServer.title": "Restart Language Server",
"python.command.python.launchTensorBoard.title": "Launch TensorBoard",
"python.command.python.refreshTensorBoard.title": "Refresh TensorBoard",
- "python.snippet.launch.standard.label": "Python: Current File",
- "python.snippet.launch.module.label": "Python: Module",
- "python.snippet.launch.module.default": "enter-your-module-name",
- "python.snippet.launch.attach.label": "Python: Remote Attach",
- "python.snippet.launch.attachpid.label": "Python: Attach using Process Id",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.fastapi.label": "Python: FastAPI",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid Application",
- "Pylance.remindMeLater": "Remind me later",
- "Pylance.pylanceNotInstalledMessage": "Pylance extension is not installed.",
- "Pylance.pylanceInstalledReloadPromptMessage": "Pylance extension is now installed. Reload window to activate?",
- "Pylance.pylanceRevertToJediPrompt": "The Pylance extension is not installed but the python.languageServer value is set to \"Pylance\". Would you like to install the Pylance extension to use Pylance, or revert back to Jedi?",
- "Pylance.pylanceInstallPylance": "Install Pylance",
- "Pylance.pylanceRevertToJedi": "Revert to Jedi",
- "Experiments.inGroup": "User belongs to experiment group '{0}'",
- "Experiments.optedOutOf": "User opted out of experiment group '{0}'",
- "Interpreters.RefreshingInterpreters": "Refreshing Python Interpreters",
- "Interpreters.entireWorkspace": "Entire workspace",
- "Interpreters.pythonInterpreterPath": "Python interpreter path: {0}",
- "Interpreters.LoadingInterpreters": "Loading Python Interpreters",
- "Interpreters.condaInheritEnvMessage": "We noticed you're using a conda environment. If you are experiencing issues with this environment in the integrated terminal, we recommend that you let the Python extension change \"terminal.integrated.inheritEnv\" to false in your user settings.",
- "Logging.CurrentWorkingDirectory": "cwd:",
- "InterpreterQuickPickList.quickPickListPlaceholder": "Current: {0}",
- "InterpreterQuickPickList.enterPath.detail": "Enter path or find an existing interpreter",
- "InterpreterQuickPickList.enterPath.label": "Enter interpreter path...",
- "InterpreterQuickPickList.enterPath.placeholder": "Enter path to a Python interpreter.",
- "InterpreterQuickPickList.findPath.detail": "Browse the file system to find a Python interpreter.",
- "InterpreterQuickPickList.findPath.label": "I can't find the interpreter I want to select...",
- "InterpreterQuickPickList.refreshInterpreterList": "Refresh Interpreter list",
- "InterpreterQuickPickList.browsePath.label": "Find...",
- "InterpreterQuickPickList.browsePath.detail": "Browse your file system to find a Python interpreter.",
- "InterpreterQuickPickList.browsePath.title": "Select Python interpreter",
- "InterpreterQuickPickList.defaultInterpreterPath.label": "Use default Python interpreter path",
- "diagnostics.upgradeCodeRunner": "Please update the Code Runner extension for it to be compatible with the Python extension.",
- "Common.bannerLabelYes": "Yes",
- "Common.bannerLabelNo": "No",
- "Common.doNotShowAgain": "Do not show again",
- "Common.reload": "Reload",
- "Common.moreInfo": "More Info",
- "Common.and": "and",
- "Common.ok": "Ok",
- "Common.install": "Install",
- "Common.learnMore": "Learn more",
- "Common.reportThisIssue": "Report this issue",
- "CommonSurvey.remindMeLaterLabel": "Remind me later",
- "CommonSurvey.yesLabel": "Yes, take survey now",
- "CommonSurvey.noLabel": "No, thanks",
- "OutputChannelNames.languageServer": "Python Language Server",
- "OutputChannelNames.python": "Python",
- "OutputChannelNames.pythonTest": "Python Test Log",
- "ExtensionSurveyBanner.bannerMessage": "Can you please take 2 minutes to tell us how the Python extension is working for you?",
- "ExtensionSurveyBanner.bannerLabelYes": "Yes, take survey now",
- "ExtensionSurveyBanner.bannerLabelNo": "No, thanks",
- "ExtensionSurveyBanner.maybeLater": "Maybe later",
- "ExtensionSurveyBanner.mplsMessage": "Can you please take 2 minutes to tell us about your experience using the Microsoft Python Language Server?",
- "ExtensionChannels.installingInsidersMessage": "Installing Insiders... ",
- "ExtensionChannels.installingStableMessage": "Installing Stable... ",
- "ExtensionChannels.installationCompleteMessage": "complete.",
- "ExtensionChannels.downloadingInsidersMessage": "Downloading Insiders Extension... ",
- "ExtensionChannels.yesWeekly": "Yes, weekly",
- "ExtensionChannels.yesDaily": "Yes, daily",
- "ExtensionChannels.promptMessage": "We noticed you are using Visual Studio Code Insiders. Would you like to use the Insiders build of the Python extension?",
- "ExtensionChannels.reloadToUseInsidersMessage": "Please reload Visual Studio Code to use the insiders build of the Python extension.",
- "ExtensionChannels.downloadCompletedOutputMessage": "Insiders build download complete.",
- "ExtensionChannels.startingDownloadOutputMessage": "Starting download for Insiders build.",
- "Interpreters.environmentPromptMessage": "We noticed a new virtual environment has been created. Do you want to select it for the workspace folder?",
- "Linter.enableLinter": "Enable {0}",
- "Linter.enablePylint": "You have a pylintrc file in your workspace. Do you want to enable pylint?",
- "Linter.replaceWithSelectedLinter": "Multiple linters are enabled in settings. Replace with '{0}'?",
- "Linter.install": "Install a linter to get error reporting.",
- "Linter.installPylint": "Install pylint",
- "Linter.installFlake8": "Install flake8",
- "Linter.selectLinter": "Select Linter",
- "Installer.noCondaOrPipInstaller": "There is no Conda or Pip installer available in the selected environment.",
- "Installer.noPipInstaller": "There is no Pip installer available in the selected environment.",
- "Installer.searchForHelp": "Search for help",
- "Installer.couldNotInstallLibrary": "Could not install {0}. If pip is not available, please use the package manager of your choice to manually install this library into your Python environment.",
- "Installer.dataScienceInstallPrompt": "Data Science library {0} is not installed. Install?",
- "diagnostics.removedPythonPathFromSettings": "The \"python.pythonPath\" setting in your settings.json is no longer used by the Python extension. If you want, you can use a new setting called \"python.defaultInterpreterPath\" instead. Keep in mind that you need to change the value of this setting manually as the Python extension doesn’t modify it when you change interpreters. [Learn more](https://aka.ms/AA7jfor).",
- "diagnostics.warnSourceMaps": "Source map support is enabled in the Python Extension, this will adversely impact performance of the extension.",
- "diagnostics.disableSourceMaps": "Disable Source Map Support",
- "diagnostics.warnBeforeEnablingSourceMaps": "Enabling source map support in the Python Extension will adversely impact performance of the extension.",
- "diagnostics.enableSourceMapsAndReloadVSC": "Enable and reload Window",
- "diagnostics.lsNotSupported": "Your operating system does not meet the minimum requirements of the Python Language Server. Reverting to the alternative autocompletion provider, Jedi.",
- "diagnostics.invalidPythonPathInDebuggerSettings": "You need to select a Python interpreter before you start debugging.\n\nTip: click on \"Select Python Interpreter\" in the status bar.",
- "diagnostics.invalidPythonPathInDebuggerLaunch": "The Python path in your debug configuration is invalid.",
- "diagnostics.invalidDebuggerTypeDiagnostic": "Your launch.json file needs to be updated to change the \"pythonExperimental\" debug configurations to use the \"python\" debugger type, otherwise Python debugging may not work. Would you like to automatically update your launch.json file now?",
- "diagnostics.consoleTypeDiagnostic": "Your launch.json file needs to be updated to change the console type string from \"none\" to \"internalConsole\", otherwise Python debugging may not work. Would you like to automatically update your launch.json file now?",
- "diagnostics.justMyCodeDiagnostic": "Configuration \"debugStdLib\" in launch.json is no longer supported. It's recommended to replace it with \"justMyCode\", which is the exact opposite of using \"debugStdLib\". Would you like to automatically update your launch.json file to do that?",
- "diagnostics.checkIsort5UpgradeGuide": "We found outdated configuration for sorting imports in this workspace. Check the [isort upgrade guide](https://aka.ms/AA9j5x4) to update your settings.",
- "diagnostics.yesUpdateLaunch": "Yes, update launch.json",
- "diagnostics.invalidTestSettings": "Your settings needs to be updated to change the setting \"python.unitTest.\" to \"python.testing.\", otherwise testing Python code using the extension may not work. Would you like to automatically update your settings now?",
- "diagnostics.pylanceDefaultMessage": "The Python extension now includes Pylance to improve completions, code navigation, overall performance and much more! You can learn more about the update and learn how to change your language server [here](https://aka.ms/new-python-bundle).\n\nRead Pylance’s license [here](https://marketplace.visualstudio.com/items/ms-python.vscode-pylance/license).",
- "Common.canceled": "Canceled",
- "Common.cancel": "Cancel",
- "Common.yesPlease": "Yes, please",
- "Common.loadingPythonExtension": "Python extension loading...",
- "debug.selectConfigurationTitle": "Select a debug configuration",
- "debug.selectConfigurationPlaceholder": "Debug Configuration",
- "debug.launchJsonConfigurationsCompletionLabel": "Python",
- "debug.launchJsonConfigurationsCompletionDescription": "Select a Python debug configuration",
- "debug.debugFileConfigurationLabel": "Python File",
- "debug.debugFileConfigurationDescription": "Debug the currently active Python file",
- "debug.debugModuleConfigurationLabel": "Module",
- "debug.debugModuleConfigurationDescription": "Debug a Python module by invoking it with '-m'",
- "debug.moduleEnterModuleTitle": "Debug Module",
- "debug.moduleEnterModulePrompt": "Enter a Python module/package name",
- "debug.moduleEnterModuleDefault": "enter-your-module-name",
- "debug.moduleEnterModuleInvalidNameError": "Enter a valid module name",
- "debug.remoteAttachConfigurationLabel": "Remote Attach",
- "debug.remoteAttachConfigurationDescription": "Attach to a remote debug server",
- "debug.attachRemoteHostTitle": "Remote Debugging",
- "debug.attachRemoteHostPrompt": "Enter the host name",
- "debug.attachRemoteHostValidationError": "Enter a valid host name or IP address",
- "debug.attachRemotePortTitle": "Remote Debugging",
- "debug.attachRemotePortPrompt": "Enter the port number that the debug server is listening on",
- "debug.attachRemotePortValidationError": "Enter a valid port number",
- "debug.attachPidConfigurationLabel": "Attach using Process ID",
- "debug.attachPidConfigurationDescription": "Attach to a local process",
- "debug.debugDjangoConfigurationLabel": "Django",
- "debug.debugDjangoConfigurationDescription": "Launch and debug a Django web application",
- "debug.djangoEnterManagePyPathTitle": "Debug Django",
- "debug.djangoEnterManagePyPathPrompt": "Enter the path to manage.py ('${workspaceFolderToken}' points to the root of the current workspace folder)",
- "debug.djangoEnterManagePyPathInvalidFilePathError": "Enter a valid Python file path",
- "debug.debugFastAPIConfigurationLabel": "FastAPI",
- "debug.debugFastAPIConfigurationDescription": "Launch and debug a FastAPI web application",
- "debug.fastapiEnterAppPathOrNamePathTitle": "Debug FastAPI",
- "debug.fastapiEnterAppPathOrNamePathPrompt": "Enter the path to the application, e.g. 'main.py' or 'main'",
- "debug.fastapiEnterAppPathOrNamePathInvalidNameError": "Enter a valid name",
- "debug.debugFlaskConfigurationLabel": "Flask",
- "debug.debugFlaskConfigurationDescription": "Launch and debug a Flask web application",
- "debug.flaskEnterAppPathOrNamePathTitle": "Debug Flask",
- "debug.flaskEnterAppPathOrNamePathPrompt": "Enter the path to the application, e.g. 'app.py' or 'app'",
- "debug.flaskEnterAppPathOrNamePathInvalidNameError": "Enter a valid name",
- "debug.debugPyramidConfigurationLabel": "Pyramid",
- "debug.debugPyramidConfigurationDescription": "Launch and debug a Pyramid web application",
- "debug.pyramidEnterDevelopmentIniPathTitle": "Debug Pyramid",
- "debug.pyramidEnterDevelopmentIniPathPrompt": "`Enter the path to development.ini ('${workspaceFolderToken}' points to the root of the current workspace folder)`",
- "debug.pyramidEnterDevelopmentIniPathInvalidFilePathError": "Enter a valid file path",
- "Testing.testErrorDiagnosticMessage": "Error",
- "Testing.testFailDiagnosticMessage": "Fail",
- "Testing.testSkippedDiagnosticMessage": "Skipped",
- "Testing.configureTests": "Configure Test Framework",
- "Testing.disableTests": "Disable Tests",
- "Common.openOutputPanel": "Show output",
- "LanguageService.lsFailedToStart": "We encountered an issue starting the language server. Reverting to Jedi language engine. Check the Python output panel for details.",
- "LanguageService.lsFailedToDownload": "We encountered an issue downloading the language server. Reverting to Jedi language engine. Check the Python output panel for details.",
- "LanguageService.lsFailedToExtract": "We encountered an issue extracting the language server. Reverting to Jedi language engine. Check the Python output panel for details.",
- "LanguageService.downloadFailedOutputMessage": "Language server download failed",
- "LanguageService.extractionFailedOutputMessage": "Language server extraction failed",
- "LanguageService.extractionCompletedOutputMessage": "Language server download complete",
- "LanguageService.extractionDoneOutputMessage": "done",
- "LanguageService.reloadVSCodeIfSeachPathHasChanged": "Search paths have changed for this Python interpreter. Please reload the extension to ensure that the IntelliSense works correctly",
- "LanguageService.startingJedi": "Starting Jedi Python language engine.",
- "LanguageService.startingMicrosoft": "Starting Microsoft Python language server.",
- "LanguageService.startingPylance": "Starting Pylance language server.",
- "LanguageService.startingJediLSP": "Starting Jedi language server.",
- "LanguageService.startingNone": "Editor support is inactive since language server is set to None.",
- "LanguageService.reloadAfterLanguageServerChange": "Please reload the window switching between language servers.",
- "AttachProcess.unsupportedOS": "Operating system '{0}' not supported.",
- "AttachProcess.attachTitle": "Attach to process",
- "AttachProcess.selectProcessPlaceholder": "Select the process to attach to",
- "AttachProcess.noProcessSelected": "No process selected",
- "AttachProcess.refreshList": "Refresh process list",
- "diagnostics.updateSettings": "Yes, update settings",
- "Common.noIWillDoItLater": "No, I will do it later",
- "Common.notNow": "Not now",
- "Common.gotIt": "Got it!",
- "Interpreters.selectInterpreterTip": "Tip: you can change the Python interpreter used by the Python extension by clicking on the Python version in the status bar",
- "downloading.file": "Downloading {0}...",
- "downloading.file.progress": "{0}{1} of {2} KB ({3}%)",
- "products.installingModule": "Installing {0}",
- "OutdatedDebugger.updateDebuggerMessage": "We noticed you are attaching to ptvsd (Python debugger), which was deprecated on May 1st, 2020. Please switch to [debugpy](https://aka.ms/migrateToDebugpy).",
- "StartPage.getStarted": "Python - Get Started",
- "StartPage.pythonExtensionTitle": "Python Extension",
- "StartPage.createJupyterNotebook": "Create a Jupyter Notebook",
- "StartPage.notebookDescription": "- Run \"Create New Blank Notebook
\" in the Command Palette (Shift + Command + P
) - Explore our sample notebook
to learn about notebook features",
- "StartPage.createAPythonFile": "Create a Python File",
- "StartPage.pythonFileDescription": "- Create a new file
with a .py extension",
- "StartPage.openInteractiveWindow": "Use the Interactive Window to develop Python Scripts",
- "StartPage.interactiveWindowDesc": "- You can create cells on a Python file by typing \"#%%\". Make sure you have the Jupyter extension installed. - Use \"Shift + Enter
\" to run a cell, the output will be shown in the interactive window",
- "StartPage.releaseNotes": "Take a look at our Release Notes to learn more about the latest features.",
- "StartPage.mailingList": "Sign up for tips and tutorials through our mailing list.",
- "StartPage.tutorialAndDoc": "Explore more features in our Tutorials or check Documentation for tips and troubleshooting.",
- "StartPage.dontShowAgain": "Don't show this page again",
- "StartPage.helloWorld": "Hello world",
- "StartPage.sampleNotebook": "Notebooks intro",
- "StartPage.openFolder": "Open a Folder or Workspace",
- "StartPage.folderDesc": "- Open a Folder
- Open a Workspace
",
- "StartPage.badWebPanelFormatString": "{0} is not a valid file name ",
- "Jupyter.extensionRequired": "The Jupyter extension is required to perform that task. Click Yes to open the Jupyter extension installation page.",
- "Jupyter.extensionNotInstalled": "This feature is available in the Jupyter extension, which isn't currently installed.",
- "TensorBoard.missingSourceFile": "We could not locate the requested source file on disk. Please manually specify the file.",
- "TensorBoard.selectMissingSourceFile": "Choose File",
- "TensorBoard.selectMissingSourceFileDescription": "The source file's contents may not match the original contents in the trace.",
- "TensorBoard.useCurrentWorkingDirectory": "Use current working directory",
- "TensorBoard.currentDirectory": "Current: {0}",
- "TensorBoard.logDirectoryPrompt": "Select a log directory to start TensorBoard with",
- "TensorBoard.progressMessage": "Starting TensorBoard session...",
- "TensorBoard.failedToStartSessionError": "We failed to start a TensorBoard session due to the following error: {0}",
- "TensorBoard.nativeTensorBoardPrompt": "VS Code now has integrated TensorBoard support. Would you like to launch TensorBoard? (Tip: Launch TensorBoard anytime by opening the command palette and searching for \"Launch TensorBoard\".)",
- "TensorBoard.selectAFolder": "Select a folder",
- "TensorBoard.selectAnotherFolder": "Select another folder",
- "TensorBoard.selectAFolderDetail": "Select a log directory containing tfevent files",
- "TensorBoard.selectAnotherFolderDetail": "Use the file explorer to select another folder",
- "TensorBoard.useCurrentWorkingDirectoryDetail": "TensorBoard will search for tfevent files in all subdirectories of the current working directory",
- "TensorBoard.installPrompt": "The package TensorBoard is required to launch a TensorBoard session. Would you like to install it?",
- "TensorBoard.installTensorBoardAndProfilerPluginPrompt": "TensorBoard >= 2.4.1 and the PyTorch Profiler TensorBoard Plugin are required. Would you like to install these packages?",
- "TensorBoard.installProfilerPluginPrompt": "We recommend installing the PyTorch Profiler TensorBoard plugin. Would you like to install the package?",
- "TensorBoard.upgradePrompt": "Integrated TensorBoard support is only available for TensorBoard >= 2.4.1. Would you like to upgrade your copy of TensorBoard?",
- "TensorBoard.launchNativeTensorBoardSessionCodeAction": "Launch TensorBoard session",
- "TensorBoard.launchNativeTensorBoardSessionCodeLens": "▶ Launch TensorBoard Session"
+ "python.createEnvironment.contentButton.description": "Show or hide Create Environment button in the editor for `requirements.txt` or other dependency files.",
+ "python.createEnvironment.trigger.description": "Detect if environment creation is required for the current project",
+ "python.menu.createNewFile.title": "Python File",
+ "python.editor.context.submenu.runPython": "Run Python",
+ "python.editor.context.submenu.runPythonInteractive": "Run in Interactive window",
+ "python.activeStateToolPath.description": "Path to the State Tool executable for ActiveState runtimes (version 0.36+).",
+ "python.autoComplete.extraPaths.description": "List of paths to libraries and the like that need to be imported by auto complete engine. E.g. when using Google App SDK, the paths are not in system path, hence need to be added into this list.",
+ "python.condaPath.description": "Path to the conda executable to use for activation (version 4.4+).",
+ "python.debugger.deprecatedMessage": "This configuration will be deprecated soon. Please replace `python` with `debugpy` to use the new Python Debugger extension.",
+ "python.defaultInterpreterPath.description": "Path to default Python to use when extension loads up for the first time, no longer used once an interpreter is selected for the workspace. See [here](https://aka.ms/AAfekmf) to understand when this is used",
+ "python.diagnostics.sourceMapsEnabled.description": "Enable source map support for meaningful stack traces in error logs.",
+ "python.envFile.description": "Absolute path to a file containing environment variable definitions.",
+ "python.experiments.enabled.description": "Enables A/B tests experiments in the Python extension. If enabled, you may get included in proposed enhancements and/or features.",
+ "python.experiments.optInto.description": "List of experiment to opt into. If empty, user is assigned the default experiment groups. See [here](https://github.com/microsoft/vscode-python/wiki/AB-Experiments) for more details.",
+ "python.experiments.optOutFrom.description": "List of experiment to opt out of. If empty, user is assigned the default experiment groups. See [here](https://github.com/microsoft/vscode-python/wiki/AB-Experiments) for more details.",
+ "python.experiments.All.description": "Combined list of all experiments.",
+ "python.experiments.pythonSurveyNotification.description": "Denotes the Python Survey Notification experiment.",
+ "python.experiments.pythonPromptNewToolsExt.description": "Denotes the Python Prompt New Tools Extension experiment.",
+ "python.experiments.pythonTerminalEnvVarActivation.description": "Enables use of environment variables to activate terminals instead of sending activation commands.",
+ "python.experiments.pythonDiscoveryUsingWorkers.description": "Enables use of worker threads to do heavy computation when discovering interpreters.",
+ "python.experiments.pythonTestAdapter.description": "Denotes the Python Test Adapter experiment.",
+ "python.experiments.pythonREPLSmartSend.description": "Denotes the Python REPL Smart Send experiment.",
+ "python.experiments.pythonRecommendTensorboardExt.description": "Denotes the Tensorboard Extension recommendation experiment.",
+ "python.globalModuleInstallation.description": "Whether to install Python modules globally when not using an environment.",
+ "python.languageServer.description": "Defines type of the language server.",
+ "python.languageServer.defaultDescription": "Automatically select a language server: Pylance if installed and available, otherwise fallback to Jedi.",
+ "python.languageServer.jediDescription": "Use Jedi behind the Language Server Protocol (LSP) as a language server.",
+ "python.languageServer.pylanceDescription": "Use Pylance as a language server.",
+ "python.languageServer.noneDescription": "Disable language server capabilities.",
+ "python.interpreter.infoVisibility.description": "Controls when to display information of selected interpreter in the status bar.",
+ "python.interpreter.infoVisibility.never.description": "Never display information.",
+ "python.interpreter.infoVisibility.onPythonRelated.description": "Only display information if Python-related files are opened.",
+ "python.interpreter.infoVisibility.always.description": "Always display information.",
+ "python.logging.level.description": "The logging level the extension logs at, defaults to 'error'",
+ "python.logging.level.deprecation": "This setting is deprecated. Please use command `Developer: Set Log Level...` to set logging level.",
+ "python.missingPackage.severity.description": "Set severity of missing packages in requirements.txt or pyproject.toml",
+ "python.locator.description": "[Experimental] Select implementation of environment locators. This is an experimental setting while we test native environment location.",
+ "python.pipenvPath.description": "Path to the pipenv executable to use for activation.",
+ "python.poetryPath.description": "Path to the poetry executable.",
+ "python.pixiToolPath.description": "Path to the pixi executable.",
+ "python.EnableREPLSmartSend.description": "Toggle Smart Send for the Python REPL. Smart Send enables sending the smallest runnable block of code to the REPL on Shift+Enter and moves the cursor accordingly.",
+ "python.REPL.sendToNativeREPL.description": "Toggle to send code to Python REPL instead of the terminal on execution. Turning this on will change the behavior for both Smart Send and Run Selection/Line in the Context Menu.",
+ "python.tensorBoard.logDirectory.description": "Set this setting to your preferred TensorBoard log directory to skip log directory prompt when starting TensorBoard.",
+ "python.tensorBoard.logDirectory.markdownDeprecationMessage": "Tensorboard support has been moved to the extension [Tensorboard extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.tensorboard). Instead use the setting `tensorBoard.logDirectory`.",
+ "python.tensorBoard.logDirectory.deprecationMessage": "Tensorboard support has been moved to the extension Tensorboard extension. Instead use the setting `tensorBoard.logDirectory`.",
+ "python.terminal.activateEnvInCurrentTerminal.description": "Activate Python Environment in the current Terminal on load of the Extension.",
+ "python.terminal.activateEnvironment.description": "Activate Python Environment in all Terminals created.",
+ "python.terminal.executeInFileDir.description": "When executing a file in the terminal, whether to use execute in the file's directory, instead of the current open folder.",
+ "python.terminal.focusAfterLaunch.description": "When launching a python terminal, whether to focus the cursor on the terminal.",
+ "python.terminal.launchArgs.description": "Python launch arguments to use when executing a file in the terminal.",
+ "python.testing.autoTestDiscoverOnSaveEnabled.description": "Enable auto run test discovery when saving a test file.",
+ "python.testing.cwd.description": "Optional working directory for tests.",
+ "python.testing.debugPort.description": "Port number used for debugging of tests.",
+ "python.testing.promptToConfigure.description": "Prompt to configure a test framework if potential tests directories are discovered.",
+ "python.testing.pytestArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
+ "python.testing.pytestEnabled.description": "Enable testing using pytest.",
+ "python.testing.pytestPath.description": "Path to pytest (pytest), you can use a custom version of pytest by modifying this setting to include the full path.",
+ "python.testing.unittestArgs.description": "Arguments passed in. Each argument is a separate item in the array.",
+ "python.testing.unittestEnabled.description": "Enable testing using unittest.",
+ "python.venvFolders.description": "Folders in your home directory to look into for virtual environments (supports pyenv, direnv and virtualenvwrapper by default).",
+ "python.venvPath.description": "Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).",
+ "walkthrough.pythonWelcome.title": "Get Started with Python Development",
+ "walkthrough.pythonWelcome.description": "Your first steps to set up a Python project with all the powerful tools and features that the Python extension has to offer!",
+ "walkthrough.step.python.createPythonFile.title": "Create a Python file",
+ "walkthrough.step.python.createPythonFolder.title": "Open a Python project folder",
+ "walkthrough.step.python.createPythonFile.description": {
+ "message": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D) a Python file - make sure to save it as \".py\".\n[Create Python File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D)",
+ "comment": [
+ "{Locked='](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22python%22%7D'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.createPythonFolder.description": {
+ "message": "[Open](command:workbench.action.files.openFolder) or create a project folder.\n[Open Project Folder](command:workbench.action.files.openFolder)",
+ "comment": [
+ "{Locked='](command:workbench.action.files.openFolder'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.installPythonWin8.title": "Install Python",
+ "walkthrough.step.python.installPythonWin8.description": "The Python Extension requires Python to be installed. Install Python [from python.org](https://www.python.org/downloads).\n\n[Install Python](https://www.python.org/downloads)\n",
+ "walkthrough.step.python.installPythonMac.title": "Install Python",
+ "walkthrough.step.python.installPythonMac.description": {
+ "message": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via Brew](command:python.installPythonOnMac)\n",
+ "comment": [
+ "{Locked='](command:python.installPythonOnMac'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.installPythonLinux.title": "Install Python",
+ "walkthrough.step.python.installPythonLinux.description": {
+ "message": "The Python Extension requires Python to be installed. Install Python 3 through the terminal.\n[Install Python via terminal](command:python.installPythonOnLinux)\n",
+ "comment": [
+ "{Locked='](command:python.installPythonOnLinux'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.selectInterpreter.title": "Select a Python Interpreter",
+ "walkthrough.step.python.createEnvironment.title": "Select or create a Python environment",
+ "walkthrough.step.python.createEnvironment.description": {
+ "message": "Create an environment for your Python project or use [Select Python Interpreter](command:python.setInterpreter) to select an existing one.\n[Create Environment](command:python.createEnvironment)\n**Tip**: Run the ``Python: Create Environment`` command in the [Command Palette](command:workbench.action.showCommands).",
+ "comment": [
+ "{Locked='](command:python.createEnvironment'}",
+ "{Locked='](command:workbench.action.showCommands'}",
+ "{Locked='](command:python.setInterpreter'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.step.python.runAndDebug.title": "Run and debug your Python file",
+ "walkthrough.step.python.runAndDebug.description": "Open your Python file and click on the play button on the top right of the editor, or press F5 when on the file and select \"Python File\" to run with the debugger. \n \n[Learn more](https://code.visualstudio.com/docs/python/python-tutorial#_run-hello-world)",
+ "walkthrough.step.python.learnMoreWithDS.title": "Keep exploring!",
+ "walkthrough.step.python.learnMoreWithDS.description": {
+ "message":"🎨 Explore all the features the Python extension has to offer by looking for \"Python\" in the [Command Palette](command:workbench.action.showCommands). \n 📈 Learn more about getting started with [data science](command:workbench.action.openWalkthrough?%7B%22category%22%3A%22ms-python.python%23pythonDataScienceWelcome%22%2C%22step%22%3A%22ms-python.python%23python.createNewNotebook%22%7D) in Python. \n ✨ Take a look at our [Release Notes](https://aka.ms/AA8dxtb) to learn more about the latest features. \n \n[Follow along with the Python Tutorial](https://aka.ms/AA8dqti)",
+ "comment":[
+ "{Locked='](command:workbench.action.showCommands'}",
+ "{Locked='](command:workbench.action.openWalkthrough?%7B%22category%22%3A%22ms-python.python%23pythonDataScienceWelcome%22%2C%22step%22%3A%22ms-python.python%23python.createNewNotebook%22%7D'}",
+ "Do not translate the 'command:*' part inside of the '(..)'. It is an internal command syntax for VS Code",
+ "Please make sure there is no space between the right bracket and left parenthesis: ]( this is an internal syntax for links"
+ ]
+ },
+ "walkthrough.pythonDataScienceWelcome.title": "Get Started with Python for Data Science",
+ "walkthrough.pythonDataScienceWelcome.description": "Your first steps to getting started with a Data Science project with Python!",
+ "walkthrough.step.python.installJupyterExt.title": "Install Jupyter extension",
+ "walkthrough.step.python.installJupyterExt.description": "If you haven't already, install the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") to take full advantage of notebooks experiences in VS Code!\n \n[Search Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\")",
+ "walkthrough.step.python.createNewNotebook.title": "Create or open a Jupyter Notebook",
+ "walkthrough.step.python.createNewNotebook.description": "Right click in the file explorer and create a new file with an .ipynb extension. Or, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create New Blank Notebook``.\n[Create new Jupyter Notebook](command:toSide:jupyter.createnewnotebook)\n If you have an existing project, you can also [open a folder](command:workbench.action.files.openFolder) and/or clone a project from GitHub: [clone a Git repository](command:git.clone).",
+ "walkthrough.step.python.openInteractiveWindow.title": "Open the Python Interactive Window",
+ "walkthrough.step.python.openInteractiveWindow.description": "The Python Interactive Window is a Python shell where you can execute and view the results of your Python code. You can create cells on a Python file by typing ``#%%``.\n \nTo open the interactive window anytime, open the [Command Palette](command:workbench.action.showCommands) and run the command \n``Jupyter: Create Interactive Window``.\n[Open Interactive Window](command:jupyter.createnewinteractive)",
+ "walkthrough.step.python.dataScienceLearnMore.title": "Find out more!",
+ "walkthrough.step.python.dataScienceLearnMore.description": "📒 Take a look into the [Jupyter extension](command:workbench.extensions.search?\"ms-toolsai.jupyter\") features, by looking for \"Jupyter\" in the [Command Palette](command:workbench.action.showCommands). \n 🏃🏻 Find out more features in our [Tutorials](https://aka.ms/AAdjzpd). \n[Learn more](https://aka.ms/AAdar6q)",
+ "walkthrough.step.python.createPythonFile.altText": "Open a Python file or a folder with a Python project.",
+ "walkthrough.step.python.selectInterpreter.altText": "Selecting a Python interpreter from the status bar",
+ "walkthrough.step.python.createEnvironment.altText": "Creating a Python environment from the Command Palette",
+ "walkthrough.step.python.runAndDebug.altText": "How to run and debug in VS Code with F5 or the play button on the top right.",
+ "walkthrough.step.python.learnMoreWithDS.altText": "Image representing our documentation page and mailing list resources.",
+ "walkthrough.step.python.installJupyterExt.altText": "Creating a new Jupyter notebook",
+ "walkthrough.step.python.createNewNotebook.altText": "Creating a new Jupyter notebook",
+ "walkthrough.step.python.openInteractiveWindow.altText": "Opening Python interactive window",
+ "walkthrough.step.python.dataScienceLearnMore.altText": "Image representing our documentation page and mailing list resources."
}
diff --git a/package.nls.ko-kr.json b/package.nls.ko-kr.json
deleted file mode 100644
index 5309a9b07b81..000000000000
--- a/package.nls.ko-kr.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "python.command.python.sortImports.title": "Import문 정렬",
- "python.command.python.startREPL.title": "REPL 시작",
- "python.command.python.buildWorkspaceSymbols.title": "작업 영역 기호 빌드",
- "python.command.python.runtests.title": "모든 단위 테스트 실행",
- "python.command.python.debugtests.title": "모든 단위 테스트 디버그",
- "python.command.python.execInTerminal.title": "터미널에서 Python 파일 실행",
- "python.command.python.setInterpreter.title": "인터프리터 선택",
- "python.command.python.refactorExtractVariable.title": "변수 추출",
- "python.command.python.refactorExtractMethod.title": "메서드 추출",
- "python.command.python.viewTestOutput.title": "단위 테스트 결과 보기",
- "python.command.python.selectAndRunTestMethod.title": "단위 테스트 메서드 실행 ...",
- "python.command.python.selectAndDebugTestMethod.title": "단위 테스트 메서드 디버그 ...",
- "python.command.python.selectAndRunTestFile.title": "단위 테스트 파일 실행 ...",
- "python.command.python.runCurrentTestFile.title": "현재 단위 테스트 파일 실행",
- "python.command.python.runFailedTests.title": "실패한 단위 테스트 실행",
- "python.command.python.execSelectionInTerminal.title": "Python 터미널에서 선택 영역/줄 실행",
- "python.command.python.execSelectionInDjangoShell.title": "Django 셸에서 선택 영역/줄 실행",
- "python.command.python.goToPythonObject.title": " Python 객체로 이동",
- "python.snippet.launch.standard.label": "Python: Current File",
- "python.snippet.launch.module.label": "Python: 모듈",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid 응용 프로그램",
- "python.snippet.launch.attach.label": "Python: 연결"
-}
diff --git a/package.nls.nl.json b/package.nls.nl.json
deleted file mode 100644
index 08c9534dc962..000000000000
--- a/package.nls.nl.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "python.command.python.sortImports.title": "Import sorteren",
- "python.command.python.startREPL.title": "REPL starten",
- "python.command.python.createTerminal.title": "Terminal aanmaken",
- "python.command.python.buildWorkspaceSymbols.title": "Werkruimte-symbolen aanmaken",
- "python.command.python.runtests.title": "Alle unittests uitvoeren",
- "python.command.python.debugtests.title": "Alle unittests debuggen",
- "python.command.python.execInTerminal.title": "Python-bestand in terminal uitvoeren",
- "python.command.python.setInterpreter.title": "Interpreter selecteren",
- "python.command.python.refactorExtractVariable.title": "Variabelen selecteren",
- "python.command.python.refactorExtractMethod.title": "Methode selecteren",
- "python.command.python.viewTestOutput.title": "Unittest-resultaat laten zien",
- "python.command.python.selectAndRunTestMethod.title": "Unittest-methode uitvoeren ...",
- "python.command.python.selectAndDebugTestMethod.title": "Unittest-methode debuggen ...",
- "python.command.python.selectAndRunTestFile.title": "Unittest-bestand uitvoeren ...",
- "python.command.python.runCurrentTestFile.title": "Huidige unittest-bestand uitvoeren",
- "python.command.python.runFailedTests.title": "Gefaalde unittests uitvoeren",
- "python.command.python.discoverTests.title": "Unittests doorzoeken",
- "python.command.python.execSelectionInTerminal.title": "Selectie/rij in Python-terminal uitvoeren",
- "python.command.python.execSelectionInDjangoShell.title": "Selectie/rij in Django-shell uitvoeren",
- "python.command.python.goToPythonObject.title": "Naar Python-object gaan",
- "python.command.python.setLinter.title": "Linter selecteren",
- "python.command.python.enableLinting.title": "Linting activeren",
- "python.command.python.runLinting.title": "Linting uitvoeren",
- "python.command.python.enableSourceMapSupport.title": "Bronkaartondersteuning voor extensie-debugging inschakelen",
- "python.snippet.launch.standard.label": "Python: Huidige bestand",
- "python.snippet.launch.module.label": "Python: Module",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid-applicatie",
- "python.snippet.launch.attach.label": "Python: aankoppelen",
- "ExtensionSurveyBanner.bannerLabelYes": "Ja, neem nu deel aan het onderzoek",
- "ExtensionSurveyBanner.bannerLabelNo": "Nee, bedankt",
- "LanguageService.lsFailedToStart": "We zijn een probleem tegengekomen bij het starten van de language server. Aan het terugschakelen naar het alternatief, Jedi. Bekijk het weergavepaneel voor details.",
- "LanguageService.lsFailedToDownload": "We zijn een probleem tegengekomen bij het downloaden van de language server. Aan het terugschakelen naar het alternatief, Jedi. Bekijk het weergavepaneel voor details.",
- "LanguageService.lsFailedToExtract": "We zijn een probleem tegengekomen bij het uitpakken van de language server. Aan het terugschakelen naar het alternatief, Jedi. Bekijk het weergavepaneel voor details.",
- "Interpreters.RefreshingInterpreters": "Python-Interpreters verversen",
- "Interpreters.LoadingInterpreters": "Python-Interpreters laden",
- "Linter.InstalledButNotEnabled": "Linter {0} is geinstalleerd maar niet ingeschakeld.",
- "Linter.replaceWithSelectedLinter": "Meerdere linters zijn ingeschakeld in de instellingen. Vervangen met '{0}'?",
- "diagnostics.warnSourceMaps": "Bronkaartondersteuning is ingeschakeld in de Python-extensie, dit zal een ongunstige impact hebben op de uitvoering van de extensie.",
- "diagnostics.disableSourceMaps": "Bronkaartondersteuning uitschakelen",
- "diagnostics.warnBeforeEnablingSourceMaps": "Bronkaartondersteuning inschakelen in de Python-extensie zal een ongunstige impact hebben op de uitvoering van de extensie.",
- "diagnostics.enableSourceMapsAndReloadVSC": "Venster inschakelen en herladen",
- "diagnostics.lsNotSupported": "Uw besturingssysteem voldoet niet aan de minimumeisen van de language server. Aan het terugschakelen naar het alternatief, Jedi.",
- "Common.canceled": "Geannuleerd",
- "Common.loadingPythonExtension": "Python-extensie aan het laden...",
- "debug.selectConfigurationTitle": "Een debug-configuratie selecteren",
- "debug.selectConfigurationPlaceholder": "Debug-configuratie",
- "debug.debugFileConfigurationLabel": "Python-bestand",
- "debug.debugFileConfigurationDescription": "Python-bestand debuggen",
- "debug.debugModuleConfigurationLabel": "Module",
- "debug.debugModuleConfigurationDescription": "Python module/package debuggen",
- "debug.remoteAttachConfigurationLabel": "Extern aankoppelen",
- "debug.remoteAttachConfigurationDescription": "Een externe Python-applicatie debuggen",
- "debug.debugDjangoConfigurationLabel": "Django",
- "debug.debugDjangoConfigurationDescription": "Web-applicatie",
- "debug.debugFlaskConfigurationLabel": "Flask",
- "debug.debugFlaskConfigurationDescription": "Web-applicatie",
- "debug.debugPyramidConfigurationLabel": "Pyramid",
- "debug.debugPyramidConfigurationDescription": "Web-applicatie",
- "debug.djangoEnterManagePyPathTitle": "Django debuggen",
- "debug.djangoEnterManagePyPathPrompt": "Voer een pad in naar manage.py ('${workspaceFolderToken}' verwijzen naar de root van de huidige werkruimtemap)",
- "debug.djangoEnterManagePyPathInvalidFilePathError": "Voer een geldig Python-bestandspad in",
- "debug.flaskEnterAppPathOrNamePathTitle": "Flask debuggen",
- "debug.flaskEnterAppPathOrNamePathPrompt": "Voer een pad in naar een applicatie, bijvoorbeeld 'app.py' of 'app'",
- "debug.flaskEnterAppPathOrNamePathInvalidNameError": "Voer een geldige naam in",
- "debug.moduleEnterModuleTitle": "Module debuggen",
- "debug.moduleEnterModulePrompt": "Voer Python module/package naam in",
- "debug.moduleEnterModuleInvalidNameError": "Voer een geldige naam in",
- "debug.pyramidEnterDevelopmentIniPathTitle": "Pyramid debuggen",
- "debug.pyramidEnterDevelopmentIniPathPrompt": "`Voer een pad in naar development.ini ('${workspaceFolderToken}' verwijzen naar de root van de huidige werkruimtemap)`",
- "debug.pyramidEnterDevelopmentIniPathInvalidFilePathError": "Voer een geldig bestandspad in",
- "debug.attachRemotePortTitle": "Extern debuggen",
- "debug.attachRemotePortPrompt": "Voer een port-nummer in",
- "debug.attachRemotePortValidationError": "Voer een geldig port-nummer in",
- "debug.attachRemoteHostTitle": "Extern debuggen",
- "debug.attachRemoteHostPrompt": "Voer een hostname of IP-adres in",
- "debug.attachRemoteHostValidationError": "Voer een geldige hostname of IP-adres in",
- "Testing.testErrorDiagnosticMessage": "Error",
- "Testing.testFailDiagnosticMessage": "Mislukt",
- "Testing.testSkippedDiagnosticMessage": "Overgeslagen"
-}
diff --git a/package.nls.pl.json b/package.nls.pl.json
deleted file mode 100644
index 00f186f2ebab..000000000000
--- a/package.nls.pl.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "python.command.python.sortImports.title": "Sortuj importy",
- "python.command.python.startREPL.title": "Uruchom REPL",
- "python.command.python.createTerminal.title": "Otwórz Terminal",
- "python.command.python.buildWorkspaceSymbols.title": "Zbuduj symbole dla przestrzeni roboczej",
- "python.command.python.runtests.title": "Uruchom wszystkie testy jednostkowe",
- "python.command.python.debugtests.title": "Debuguj wszystkie testy jednostkowe",
- "python.command.python.execInTerminal.title": "Uruchom plik pythonowy w terminalu",
- "python.command.python.setInterpreter.title": "Wybierz wersję interpretera",
- "python.command.python.refactorExtractVariable.title": "Wyodrębnij zmienną",
- "python.command.python.refactorExtractMethod.title": "Wyodrębnij metodę",
- "python.command.python.viewOutput.title": "Pokaż wyniki",
- "python.command.python.viewTestOutput.title": "Pokaż wyniki testów jednostkowych",
- "python.command.python.selectAndRunTestMethod.title": "Uruchom metodę testów jednostkowych ...",
- "python.command.python.selectAndDebugTestMethod.title": "Debuguj metodę testów jednostkowych ...",
- "python.command.python.selectAndRunTestFile.title": "Uruchom plik z testami jednostkowymi ...",
- "python.command.python.runCurrentTestFile.title": "Uruchom bieżący plik z testami jednostkowymi",
- "python.command.python.runFailedTests.title": "Uruchom testy jednostkowe, które się nie powiodły",
- "python.command.python.discoverTests.title": "Wyszukaj testy jednostkowe",
- "python.command.python.configureTests.title": "Konfiguruj testy jednostkowe",
- "python.command.python.execSelectionInTerminal.title": "Uruchom zaznaczony obszar w interpreterze Pythona",
- "python.command.python.execSelectionInDjangoShell.title": "Uruchom zaznaczony obszar w powłoce Django",
- "python.command.python.goToPythonObject.title": "Idź do obiektu pythonowego",
- "python.command.python.setLinter.title": "Wybierz linter",
- "python.command.python.enableLinting.title": "Włącz linting",
- "python.command.python.runLinting.title": "Uruchom linting",
- "python.command.python.enableSourceMapSupport.title": "Włącz obsługę map źródłowych do debugowania rozszerzeń"
-}
diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json
deleted file mode 100644
index 1acc94053ca0..000000000000
--- a/package.nls.pt-br.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "python.command.python.sortImports.title": "Ordenar Importações",
- "python.command.python.startREPL.title": "Iniciar REPL",
- "python.command.python.createTerminal.title": "Criar Terminal",
- "python.command.python.buildWorkspaceSymbols.title": "Construir Símbolos da Área de Trabalho",
- "python.command.python.runtests.title": "Executar Todos os Testes Unitários",
- "python.command.python.debugtests.title": "Depurar Todos os Testes Unitários",
- "python.command.python.execInTerminal.title": "Executar Arquivo no Terminal",
- "python.command.python.setInterpreter.title": "Selecionar Interpretador",
- "python.command.python.refactorExtractVariable.title": "Extrair Variável",
- "python.command.python.refactorExtractMethod.title": "Extrair Método",
- "python.command.python.viewTestOutput.title": "Exibir Resultados dos Testes Unitários",
- "python.command.python.selectAndRunTestMethod.title": "Executar Testes Unitários do Método ...",
- "python.command.python.selectAndDebugTestMethod.title": "Depurar Testes Unitários do Método ...",
- "python.command.python.selectAndRunTestFile.title": "Executar Arquivo de Testes Unitários ...",
- "python.command.python.runCurrentTestFile.title": "Executar o Arquivo de Testes Unitários Atual",
- "python.command.python.runFailedTests.title": "Executar Testes Unitários com Falhas",
- "python.command.python.discoverTests.title": "Descobrir Testes Unitários",
- "python.command.python.execSelectionInTerminal.title": "Executar Seleção/Linha no Terminal",
- "python.command.python.execSelectionInDjangoShell.title": "Executar Seleção/Linha no Django Shell",
- "python.command.python.goToPythonObject.title": "Ir para Objeto Python",
- "python.command.python.setLinter.title": "Selecionar Linter",
- "python.command.python.enableLinting.title": "Habilitar Linting",
- "python.command.python.runLinting.title": "Executar Linting",
- "python.snippet.launch.standard.label": "Python: Arquivo Atual",
- "python.snippet.launch.module.label": "Python: Módulo",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Aplicação Pyramid",
- "python.snippet.launch.attach.label": "Python: Anexar"
-}
diff --git a/package.nls.ru.json b/package.nls.ru.json
deleted file mode 100644
index 4be739ab2bb7..000000000000
--- a/package.nls.ru.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "python.command.python.sortImports.title": "Отсортировать Imports",
- "python.command.python.startREPL.title": "Открыть REPL",
- "python.command.python.buildWorkspaceSymbols.title": "Собрать символы рабочего пространства",
- "python.command.python.runtests.title": "Запустить все тесты",
- "python.command.python.debugtests.title": "Запустить все тесты под отладчиком",
- "python.command.python.execInTerminal.title": "Выполнить файл в консоли",
- "python.command.python.setInterpreter.title": "Выбрать интерпретатор",
- "python.command.python.refactorExtractVariable.title": "Извлечь в переменную",
- "python.command.python.refactorExtractMethod.title": "Извлечь в метод",
- "python.command.python.viewTestOutput.title": "Показать вывод теста",
- "python.command.python.selectAndRunTestMethod.title": "Запусть тестовый метод...",
- "python.command.python.selectAndDebugTestMethod.title": "Отладить тестовый метод...",
- "python.command.python.selectAndRunTestFile.title": "Запустить тестовый файл...",
- "python.command.python.runCurrentTestFile.title": "Запустить текущий тестовый файл",
- "python.command.python.runFailedTests.title": "Запустить непрошедшие тесты",
- "python.command.python.discoverTests.title": "Обнаружить тесты",
- "python.command.python.execSelectionInTerminal.title": "Выполнить выбранный текст или текущую строку в консоли",
- "python.command.python.execSelectionInDjangoShell.title": "Выполнить выбранный текст или текущую строку в оболочке Django",
- "python.command.python.goToPythonObject.title": "Перейти к объекту Python",
- "python.command.python.setLinter.title": "Выбрать анализатор кода",
- "python.command.python.enableLinting.title": "Включить анализатор кода",
- "python.command.python.runLinting.title": "Выполнить анализ кода",
- "python.snippet.launch.standard.label": "Python: Текущий файл",
- "python.snippet.launch.module.label": "Python: Модуль",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Приложение Pyramid",
- "python.snippet.launch.attach.label": "Python: Подключить отладчик",
- "ExtensionSurveyBanner.bannerLabelYes": "Да, открыть опрос сейчас",
- "ExtensionSurveyBanner.bannerLabelNo": "Нет, спасибо",
- "ExtensionSurveyBanner.maybeLater": "Может быть, позже",
- "ExtensionSurveyBanner.bannerMessage": "Не могли бы вы потратить пару минут на опрос о языковом сервере Pylance?",
- "Pylance.remindMeLater": "Напомните позже",
- "Pylance.pylanceNotInstalledMessage": "Расширение Pylance не установлено.",
- "Pylance.pylanceInstalledReloadPromptMessage": "Расширение Pylance установлено. Перезагрузить окно для его активации?",
- "LanguageService.reloadAfterLanguageServerChange": "Пожалуйста, перезагрузите окно после смены типа языкового сервера."
-}
diff --git a/package.nls.tr.json b/package.nls.tr.json
deleted file mode 100644
index 0e648bb38fdf..000000000000
--- a/package.nls.tr.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "python.command.python.sortImports.title": "Import İfadelerini Sırala",
- "python.command.python.startREPL.title": "REPL Başlat",
- "python.command.python.createTerminal.title": "Terminal Oluştur",
- "python.command.python.buildWorkspaceSymbols.title": "Çalışma Alanındaki Sembolleri Derle",
- "python.command.python.runtests.title": "Testleri Çalıştır",
- "python.command.python.debugtests.title": "Testleri Debug Et",
- "python.command.python.execInTerminal.title": "Terminalde Çalıştır",
- "python.command.python.setInterpreter.title": "Bir Interpreter Seçin",
- "python.command.python.refactorExtractVariable.title": "Değişken Çıkar",
- "python.command.python.refactorExtractMethod.title": "Metot Çıkar",
- "python.command.python.viewTestOutput.title": "Test Çıktısını Görüntüle",
- "python.command.python.selectAndRunTestMethod.title": "Test Metodu Çalıştır",
- "python.command.python.selectAndDebugTestMethod.title": "Test Metodu Debug Et",
- "python.command.python.selectAndRunTestFile.title": "Bir Test Dosyası Seç ve Çalıştır",
- "python.command.python.runCurrentTestFile.title": "Aktif Test Dosyasını Çalıştır",
- "python.command.python.runFailedTests.title": "Başarısız Testleri Çalıştır",
- "python.command.python.discoverTests.title": "Testleri Keşfet",
- "python.command.python.discoveringTests.title": "Testler Keşfediliyor...",
- "python.command.python.execSelectionInTerminal.title": "Seçimi/Satırı Terminalde Çalıştır",
- "python.command.python.execSelectionInDjangoShell.title": "Seçimi/Satırı Django Shell'inde Çalıştır",
- "python.command.python.goToPythonObject.title": "Python Nesnesine Git",
- "python.command.python.setLinter.title": "Bir Linter Seç",
- "python.command.python.enableLinting.title": "Linting'i Aktifleştir",
- "python.command.python.runLinting.title": "Linter Çalıştır",
- "python.snippet.launch.standard.label": "Python: Geçerli Dosya",
- "python.snippet.launch.module.label": "Python: Modül",
- "python.snippet.launch.module.default": "modül-adını-yazın",
- "python.snippet.launch.attach.label": "Python: Remote Attach",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid Uygulaması"
-}
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
deleted file mode 100644
index df3c5ccdf158..000000000000
--- a/package.nls.zh-cn.json
+++ /dev/null
@@ -1,232 +0,0 @@
-{
- "python.command.python.sortImports.title": "排序 import 语句",
- "python.command.python.startREPL.title": "启动 REPL",
- "python.command.python.createTerminal.title": "创建终端",
- "python.command.python.buildWorkspaceSymbols.title": "构建工作区符号",
- "python.command.python.runtests.title": "运行所有单元测试",
- "python.command.python.debugtests.title": "调试所有单元测试",
- "python.command.python.execInTerminal.title": "在终端中运行 Python 文件",
- "python.command.python.setInterpreter.title": "选择解释器",
- "python.command.python.switchOffInsidersChannel.title": "切换到默认版本",
- "python.command.python.switchToDailyChannel.title": "切换到每日预览版本",
- "python.command.python.switchToWeeklyChannel.title": "切换到每周预览版本",
- "python.command.python.clearWorkspaceInterpreter.title": "清除工作区解释器设置",
- "python.command.python.refactorExtractVariable.title": "提取变量",
- "python.command.python.refactorExtractMethod.title": "提取方法",
- "python.command.python.viewOutput.title": "显示输出",
- "python.command.python.viewTestOutput.title": "显示单元测试输出",
- "python.command.python.viewLanguageServerOutput.title": "显示语言服务器输出",
- "python.command.python.selectAndRunTestMethod.title": "运行单元测试方法...",
- "python.command.python.selectAndDebugTestMethod.title": "调试单元测试方法...",
- "python.command.python.selectAndRunTestFile.title": "运行单元测试文件...",
- "python.command.python.runCurrentTestFile.title": "运行当前单元测试文件",
- "python.command.python.runFailedTests.title": "运行失败的单元测试",
- "python.command.python.discoverTests.title": "检测单元测试",
- "python.command.python.discoveringTests.title": "检测中...",
- "python.command.python.stopTests.title": "停止",
- "python.command.python.configureTests.title": "配置单元测试",
- "python.command.python.execSelectionInTerminal.title": "在 Python 终端中运行选定内容/行",
- "python.command.python.execSelectionInDjangoShell.title": "在 Django Shell 中运行选定内容/行",
- "python.command.python.goToPythonObject.title": "转到 Python 对象",
- "python.command.python.setLinter.title": "选择代码检查器",
- "python.command.python.enableLinting.title": "启用代码检查",
- "python.command.python.runLinting.title": "执行代码检查",
- "python.command.python.enableSourceMapSupport.title": "为扩展调试启用 Source Map 支持",
- "python.command.python.startPage.open.title": "打开起始页",
- "python.command.python.analysis.clearCache.title": "清除模块分析缓存",
- "python.command.python.analysis.restartLanguageServer.title": "重启语言服务器",
- "python.command.python.launchTensorBoard.title": "启动 TensorBoard",
- "python.snippet.launch.standard.label": "Python: 当前文件",
- "python.snippet.launch.module.label": "Python: 模块",
- "python.snippet.launch.module.default": "请输入模块名称",
- "python.snippet.launch.attach.label": "Python: 远程连接",
- "python.snippet.launch.attachpid.label": "Python: 使用 PID 连接",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.fastapi.label": "Python: FastAPI",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid 应用",
- "Pylance.remindMeLater": "稍后提醒",
- "Pylance.pylanceNotInstalledMessage": "Pylance 扩展未安装。",
- "Pylance.pylanceInstalledReloadPromptMessage": "Pylance 扩展未安装。重新加载窗口以激活?",
- "Experiments.inGroup": "用户属于 '{0}' 实验组",
- "Interpreters.RefreshingInterpreters": "正在刷新 Python 解释器",
- "Interpreters.entireWorkspace": "完整工作区",
- "Interpreters.pythonInterpreterPath": "Python 解释器路径: {0}",
- "Interpreters.LoadingInterpreters": "正在加载 Python 解释器",
- "Interpreters.condaInheritEnvMessage": "您正在使用 conda 环境,如果您在集成终端中遇到相关问题,建议您允许 Python 扩展将用户设置中的 \"terminal.integrated.inheritEnv\" 改为 false。",
- "Logging.CurrentWorkingDirectory": "cwd:",
- "InterpreterQuickPickList.quickPickListPlaceholder": "当前: {0}",
- "InterpreterQuickPickList.enterPath.detail": "输入路径或选择一个现有的解释器",
- "InterpreterQuickPickList.enterPath.label": "输入解释器路径...",
- "InterpreterQuickPickList.enterPath.placeholder": "请输入 Python 解释器的路径。",
- "InterpreterQuickPickList.browsePath.label": "浏览...",
- "InterpreterQuickPickList.browsePath.detail": "浏览文件系统来选择一个 Python 解释器。",
- "InterpreterQuickPickList.browsePath.title": "选择 Python 解释器",
- "diagnostics.upgradeCodeRunner": "请更新 Code Runner 扩展,使其与 Python 扩展兼容。",
- "Common.bannerLabelYes": "是",
- "Common.bannerLabelNo": "否",
- "Common.doNotShowAgain": "不再提示",
- "Common.reload": "重新加载",
- "Common.moreInfo": "更多信息",
- "Common.and": "和",
- "Common.ok": "好的",
- "Common.install": "安装",
- "Common.learnMore": "了解更多",
- "Common.reportThisIssue": "反馈此问题",
- "CommonSurvey.remindMeLaterLabel": "稍后提醒",
- "CommonSurvey.yesLabel": "是的,现在接受调查",
- "CommonSurvey.noLabel": "不,谢谢",
- "OutputChannelNames.languageServer": "Python 语言服务器",
- "OutputChannelNames.python": "Python",
- "OutputChannelNames.pythonTest": "Python 测试日志",
- "ExtensionSurveyBanner.bannerMessage": "请您花两分钟的时间告诉我们 Python 扩展是否正常工作?",
- "ExtensionSurveyBanner.bannerLabelYes": "是的,现在接受调查",
- "ExtensionSurveyBanner.bannerLabelNo": "不,谢谢",
- "ExtensionSurveyBanner.maybeLater": "稍后提醒",
- "ExtensionChannels.installingInsidersMessage": "正在安装预览版... ",
- "ExtensionChannels.installingStableMessage": "正在安装稳定版... ",
- "ExtensionChannels.installationCompleteMessage": "完成。",
- "ExtensionChannels.downloadingInsidersMessage": "正在下载预览版... ",
- "ExtensionChannels.yesWeekly": "是,每周版",
- "ExtensionChannels.yesDaily": "是,每日版",
- "ExtensionChannels.promptMessage": "您正在使用 Visual Studio Code 预览版,是否安装 Python 扩展的预览版?",
- "ExtensionChannels.reloadToUseInsidersMessage": "请重新加载 Visual Studio Code 以使用 Python 扩展的预览版。",
- "ExtensionChannels.downloadCompletedOutputMessage": "预览版下载完成。",
- "ExtensionChannels.startingDownloadOutputMessage": "开始下载预览版。",
- "Interpreters.environmentPromptMessage": "检测到新的虚拟环境,是否在此工作区中使用它?",
- "Linter.enableLinter": "启用 {0}",
- "Linter.enablePylint": "该工作区有一个 pylintrc 文件,是否启用 pylint?",
- "Linter.replaceWithSelectedLinter": "设置中启用了多个代码检查器,是否用 '{0}' 替换?",
- "Linter.install": "请安装一个代码检查器以获得错误报告。",
- "Linter.installPylint": "安装 pylint",
- "Linter.installFlake8": "安装 flake8",
- "Linter.selectLinter": "选择代码检查器",
- "Installer.noCondaOrPipInstaller": "所选环境中没有可用的 Conda 或 pip 安装器。",
- "Installer.noPipInstaller": "所选环境中没有可用的 pip 安装器。",
- "Installer.searchForHelp": "搜索帮助",
- "Installer.couldNotInstallLibrary": "无法安装 {0} 。如果 pip 不可用,请使用选择的包管理器手动将此库安装到您的 Python 环境中。",
- "Installer.dataScienceInstallPrompt": "数据科学库 {0} 未安装,是否安装?",
- "diagnostics.warnSourceMaps": "已启用 Source Map 支持,这会影响 Python 扩展的性能。",
- "diagnostics.disableSourceMaps": "禁用 Source Map 支持",
- "diagnostics.warnBeforeEnablingSourceMaps": "启用 Source Map 支持将影响 Python 扩展的性能。",
- "diagnostics.enableSourceMapsAndReloadVSC": "启用并重新加载窗口",
- "diagnostics.lsNotSupported": "该操作系统不符合 Python 语言服务器的最低要求,正在恢复替代的自动补全器 Jedi。",
- "diagnostics.invalidPythonPathInDebuggerSettings": "您需要在开始调试前选择一个 Python 解释器。\n\n提示: 点击状态栏中的 \"选择解释器\"。",
- "diagnostics.invalidPythonPathInDebuggerLaunch": "调试设置中的 Python 路径无效。",
- "diagnostics.invalidDebuggerTypeDiagnostic": "您的 launch.json 文件需要更新,以将 \"pythonExperimental\" 调试设置设为使用 \"python\" 调试器,否则 Python 调试器可能无法工作。立即自动更新 launch.json?",
- "diagnostics.consoleTypeDiagnostic": "您的 launch.json 文件需要更新,以将控制台类型字符串从 \"none\" 改为 \"internalConsole\",否则 Python 调试器可能无法工作。立即自动更新 launch.json?",
- "diagnostics.justMyCodeDiagnostic": "不再支持 launch.json 中的配置 \"debugStdLib\",建议用 \"justMyCode\" 代替,这与使用 \"debugStdLib\" 完全相反。是否自动更新 launch.json?",
- "diagnostics.checkIsort5UpgradeGuide": "此工作区的排序 import 语句配置已过时。查看 [isort 升级指南](https://aka.ms/AA9j5x4) 来更新设置。",
- "diagnostics.yesUpdateLaunch": "是,更新 launch.json",
- "diagnostics.invalidTestSettings": "您的设置需要更新,以将设置 \"python.unitTest.\" 改为 \"python.testing.\",否则使用该扩展测试 Python 代码可能无法工作。是否自动更新设置?",
- "Common.canceled": "已取消",
- "Common.cancel": "取消",
- "Common.yesPlease": "好的",
- "Common.loadingPythonExtension": "Python 扩展正在加载...",
- "debug.selectConfigurationTitle": "选择调试配置",
- "debug.selectConfigurationPlaceholder": "调试配置",
- "debug.launchJsonConfigurationsCompletionLabel": "Python",
- "debug.launchJsonConfigurationsCompletionDescription": "选择 Python 调试配置",
- "debug.debugFileConfigurationLabel": "Python 文件",
- "debug.debugFileConfigurationDescription": "调试打开的 Python 文件",
- "debug.debugModuleConfigurationLabel": "模块",
- "debug.debugModuleConfigurationDescription": "用'-m'调用 Python 模块进行调试",
- "debug.moduleEnterModuleTitle": "调试模块",
- "debug.moduleEnterModulePrompt": "请输入 Python 模块/包名",
- "debug.moduleEnterModuleDefault": "请输入模块名称",
- "debug.moduleEnterModuleInvalidNameError": "请输入有效的模块名称",
- "debug.remoteAttachConfigurationLabel": "远程连接",
- "debug.remoteAttachConfigurationDescription": "连接到远程调试服务器",
- "debug.attachRemoteHostTitle": "远程连接",
- "debug.attachRemoteHostPrompt": "请输入主机名",
- "debug.attachRemoteHostValidationError": "请输入有效的主机名或 IP 地址",
- "debug.attachRemotePortTitle": "远程调试",
- "debug.attachRemotePortPrompt": "请输入调试服务器的监听端口号",
- "debug.attachRemotePortValidationError": "请输入有效的端口号",
- "debug.attachPidConfigurationLabel": "使用 PID 连接",
- "debug.attachPidConfigurationDescription": "连接到本地进程",
- "debug.debugDjangoConfigurationLabel": "Django",
- "debug.debugDjangoConfigurationDescription": "启动并调试 Django Web 应用",
- "debug.djangoEnterManagePyPathTitle": "调试 Django",
- "debug.djangoEnterManagePyPathPrompt": "请输入 manage.py 的路径('${workspaceFolderToken}'指向当前工作区文件夹的根目录)",
- "debug.djangoEnterManagePyPathInvalidFilePathError": "请输入有效的 Python 文件路径",
- "debug.debugFastAPIConfigurationLabel": "FastAPI",
- "debug.debugFastAPIConfigurationDescription": "启动并调试 FastAPI Web 应用",
- "debug.fastapiEnterAppPathOrNamePathTitle": "调试 FastAPI",
- "debug.fastapiEnterAppPathOrNamePathPrompt": "请输入应用路径,例如 'main.py' 或 'main'",
- "debug.fastapiEnterAppPathOrNamePathInvalidNameError": "请输入有效的名称",
- "debug.debugFlaskConfigurationLabel": "Flask",
- "debug.debugFlaskConfigurationDescription": "启动并调试 Flask Web 应用",
- "debug.flaskEnterAppPathOrNamePathTitle": "调试 Flask",
- "debug.flaskEnterAppPathOrNamePathPrompt": "请输入应用路径,例如 'app.py' 或 'app'",
- "debug.flaskEnterAppPathOrNamePathInvalidNameError": "请输入有效的名称",
- "debug.debugPyramidConfigurationLabel": "Pyramid",
- "debug.debugPyramidConfigurationDescription": "Web 应用",
- "debug.pyramidEnterDevelopmentIniPathTitle": "调试 Pyramid",
- "debug.pyramidEnterDevelopmentIniPathPrompt": "`请输入development.ini的路径('${workspaceFolderToken}'指向当前工作区文件夹的根目录)`",
- "debug.pyramidEnterDevelopmentIniPathInvalidFilePathError": "请输入有效的文件路径",
- "Testing.testErrorDiagnosticMessage": "Error",
- "Testing.testFailDiagnosticMessage": "Fail",
- "Testing.testSkippedDiagnosticMessage": "Skipped",
- "Testing.configureTests": "配置单元测试框架",
- "Testing.disableTests": "禁用单元测试",
- "Common.openOutputPanel": "显示输出",
- "LanguageService.lsFailedToStart": "启动语言服务器时出错,正在恢复到 Jedi 语言引擎。查看 Python 输出面板了解详情。",
- "LanguageService.lsFailedToDownload": "下载语言服务器时出错,正在恢复到 Jedi 语言引擎。查看 Python 输出面板了解详情。",
- "LanguageService.lsFailedToExtract": "提取语言服务器时出错,正在恢复到 Jedi 语言引擎。查看 Python 输出面板了解详情。",
- "LanguageService.downloadFailedOutputMessage": "语言服务器下载失败",
- "LanguageService.extractionFailedOutputMessage": "语言服务器提取失败",
- "LanguageService.extractionCompletedOutputMessage": "语言服务器下载完成",
- "LanguageService.extractionDoneOutputMessage": "完成",
- "LanguageService.reloadVSCodeIfSeachPathHasChanged": "该 Python 解释器的搜索路径已改变,请重新加载扩展以确保 IntelliSense 正常工作。",
- "LanguageService.startingJedi": "正在启动 Jedi Python 语言引擎。",
- "LanguageService.startingMicrosoft": "正在启动 Microsoft Python 语言服务器。",
- "LanguageService.startingPylance": "正在启动 Pylance 语言服务器。",
- "LanguageService.startingNone": "由于语言服务器设置为空,编辑器支持处于非活动状态。",
- "LanguageService.reloadAfterLanguageServerChange": "切换语言服务器后请重新加载窗口。",
- "AttachProcess.unsupportedOS": "不支持 '{0}' 操作系统。",
- "AttachProcess.attachTitle": "连接到进程",
- "AttachProcess.selectProcessPlaceholder": "选择要连接的流程",
- "AttachProcess.noProcessSelected": "未选择进程",
- "AttachProcess.refreshList": "刷新进程列表",
- "diagnostics.updateSettings": "是,更新设置",
- "Common.noIWillDoItLater": "稍后再做",
- "Common.notNow": "稍后提醒",
- "Common.gotIt": "好的!",
- "Interpreters.selectInterpreterTip": "提示:您可以通过点击状态栏中的 Python 版本来更改 Python 扩展所使用的 Python 解释器",
- "downloading.file": "正在下载 {0}...",
- "downloading.file.progress": "{2} 中的 {0}{1} KB ({3}%)",
- "products.installingModule": "正在安装 {0}",
- "OutdatedDebugger.updateDebuggerMessage": "您正在连接至 ptvsd (Python 调试器),而 ptvsd 已于2020年5月1日停止更新。请切换至 [debugpy](https://aka.ms/migrateToDebugpy)。",
- "StartPage.getStarted": "Python - 开始",
- "StartPage.pythonExtensionTitle": "Python 扩展",
- "StartPage.createJupyterNotebook": "创建 Jupyter 笔记本",
- "StartPage.notebookDescription": "- 在命令面板 (Shift + Command + P
) 中运行 \"创建新的 笔记本
\" - 探索 示例笔记本
来了解笔记本的功能",
- "StartPage.createAPythonFile": "创建 Python 文件",
- "StartPage.pythonFileDescription": "- 创建以 .py 为扩展名的新文件
",
- "StartPage.openInteractiveWindow": "使用交互式窗口开发 Python 脚本",
- "StartPage.interactiveWindowDesc": "- 您可以在 Python 文件中输入 \"#%%\" 来创建一个单元 - 使用 \"Shift + Enter
\" 来运行一个单元,输出将显示在交互式窗口中",
- "StartPage.releaseNotes": "请查看 发行说明 ,了解更多最新功能。",
- "StartPage.tutorialAndDoc": "在 教程 中探索更多的功能,或查看 文档 以获得提示和排除故障。",
- "StartPage.dontShowAgain": "不再显示此页面",
- "StartPage.helloWorld": "Hello world",
- "StartPage.sampleNotebook": "笔记本介绍",
- "StartPage.openFolder": "打开文件夹或工作区",
- "StartPage.folderDesc": "- 打开 文件夹
- 打开 工作区
",
- "StartPage.badWebPanelFormatString": "{0} 文件名无效 ",
- "Jupyter.extensionRequired": "执行该任务需要 Jupyter 扩展。点击\"是 \"打开 Jupyter 扩展的安装页面。",
- "TensorBoard.useCurrentWorkingDirectory": "使用当前工作目录",
- "TensorBoard.currentDirectory": "当前:{0}",
- "TensorBoard.logDirectoryPrompt": "选择一个日志目录来启动 TensorBoard",
- "TensorBoard.progressMessage": "正在启动 TensorBoard 会话...",
- "TensorBoard.failedToStartSessionError": "启动 TensorBoard 会话失败,错误:{0}",
- "TensorBoard.nativeTensorBoardPrompt": "VS Code 现已集成了 TensorBoard 支持。是否启动 TensorBoard?(提示:打开命令面板并搜索 \"启动 TensorBoard\",即可随时启动 TensorBoard。)",
- "TensorBoard.selectAFolder": "选择一个文件夹",
- "TensorBoard.selectAnotherFolder": "选择另一个文件夹",
- "TensorBoard.selectAFolderDetail": "选择一个包含 tfevent 文件的日志目录",
- "TensorBoard.selectAnotherFolderDetail": "使用文件资源管理器选择另一个文件夹",
- "TensorBoard.useCurrentWorkingDirectoryDetail": "TensorBoard 将在当前工作目录的所有子目录中搜索 tfevent 文件",
- "TensorBoard.installPrompt": "启动 TensorBoard 会话需要安装 TensorBoard 包。是否安装?",
- "TensorBoard.launchNativeTensorBoardSessionCodeAction": "启动 TensorBoard 会话",
- "TensorBoard.launchNativeTensorBoardSessionCodeLens": "▶ 启动 TensorBoard 会话"
-}
diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json
deleted file mode 100644
index 373a44299d87..000000000000
--- a/package.nls.zh-tw.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "python.command.python.sortImports.title": "排序 Import 語句",
- "python.command.python.startREPL.title": "啟動 REPL",
- "python.command.python.createTerminal.title": "建立終端機",
- "python.command.python.buildWorkspaceSymbols.title": "建構工作區符號",
- "python.command.python.runtests.title": "執行所有單元測試",
- "python.command.python.debugtests.title": "偵錯所有單元測試",
- "python.command.python.execInTerminal.title": "在終端機中執行 Python 檔案",
- "python.command.python.setInterpreter.title": "選擇直譯器",
- "python.command.python.refactorExtractVariable.title": "提取變數",
- "python.command.python.refactorExtractMethod.title": "提取方法",
- "python.command.python.viewTestOutput.title": "顯示單元測試輸出",
- "python.command.python.selectAndRunTestMethod.title": "執行單元測試方法…",
- "python.command.python.selectAndDebugTestMethod.title": "偵錯單元測試方法…",
- "python.command.python.selectAndRunTestFile.title": "執行單元測試檔案…",
- "python.command.python.runCurrentTestFile.title": "執行目前單元測試檔案",
- "python.command.python.runFailedTests.title": "執行失敗的單元測試",
- "python.command.python.execSelectionInTerminal.title": "在 Python 終端機中執行選定內容/行",
- "python.command.python.execSelectionInDjangoShell.title": "在 Django Shell 中執行選定內容/行",
- "python.command.python.goToPythonObject.title": "跳至 Python 物件",
- "python.command.python.setLinter.title": "選擇 Linter",
- "python.command.python.enableLinting.title": "啟用 Linting",
- "python.command.python.runLinting.title": "執行 Linting",
- "python.snippet.launch.standard.label": "Python: 目前檔案",
- "python.snippet.launch.module.label": "Python: 模組",
- "python.snippet.launch.django.label": "Python: Django",
- "python.snippet.launch.flask.label": "Python: Flask",
- "python.snippet.launch.pyramid.label": "Python: Pyramid 程式",
- "python.snippet.launch.attach.label": "Python: 附加",
- "python.command.python.discoverTests.title": "探索 Unit 測試項目",
- "python.command.python.switchOffInsidersChannel.title": "切換至預設頻道",
- "python.command.python.switchToDailyChannel.title": "切換至 Insiders 每日頻道",
- "python.command.python.switchToWeeklyChannel.title": "切換至 Insiders 每週頻道",
- "python.command.python.viewOutput.title": "顯示輸出",
- "python.command.python.viewLanguageServerOutput.title": "顯示語言伺服器輸出",
- "python.command.python.discoveringTests.title": "正在探索...",
- "python.command.python.stopTests.title": "停止",
- "python.command.python.configureTests.title": "設定測試",
- "python.command.python.enableSourceMapSupport.title": "啟用供偵錯延伸模組的原始碼映射 (Source Map) 支援",
- "python.command.python.analysis.clearCache.title": "清除模組分析快取",
- "python.snippet.launch.module.default": "請輸入-模組-名稱",
- "python.snippet.launch.attachpid.label": "Python: 使用處理程序 ID 連結",
- "LanguageService.lsFailedToStart": "啟動語言伺服器時遇到問題。改回使用替代方案 \"Jedi\"。請檢查 Python 輸出面板以取得更多資訊。",
- "LanguageService.lsFailedToDownload": "下載語言伺服器時遇到問題。改回使用替代方案 \"Jedi\"。請檢查 Python 輸出面板以取得更多資訊。",
- "LanguageService.lsFailedToExtract": "擷取語言伺服器時遇到問題。改回使用替代方案 \"Jedi\"。請檢查 Python 輸出面板以取得更多資訊。",
- "Experiments.inGroup": "使用者屬於 \"{0}\" 實驗性群組",
- "Interpreters.RefreshingInterpreters": "正在重新整理 Python 解譯器",
- "Interpreters.LoadingInterpreters": "正在載入 Python 解譯器",
- "Interpreters.condaInheritEnvMessage": "我們發覺到您在使用 conda 環境。如果你在整合式終端器中使用這個環境時遇到問題,建議您讓 Python 延伸模組變更使用者設定中的 \"terminal.integrated.inheritEnv\" 為 false。",
- "Logging.CurrentWorkingDirectory": "cwd:",
- "Common.doNotShowAgain": "不再顯示",
- "Common.reload": "重新載入",
- "Common.moreInfo": "更多資訊",
- "OutputChannelNames.languageServer": "Python 語言伺服器",
- "OutputChannelNames.python": "Python",
- "OutputChannelNames.pythonTest": "Python 測試記錄",
- "ExtensionSurveyBanner.bannerMessage": "請問您是否可以用兩分鐘的時間,告訴我們 Python 延伸模組在您環境中的運作情況?",
- "ExtensionSurveyBanner.bannerLabelYes": "是,現在填寫調查",
- "ExtensionSurveyBanner.bannerLabelNo": "不了,謝謝",
- "ExtensionSurveyBanner.maybeLater": "等一下",
- "ExtensionChannels.installingInsidersMessage": "正在安裝 Insiders... ",
- "ExtensionChannels.installingStableMessage": "正在安裝穩定版... ",
- "ExtensionChannels.installationCompleteMessage": "完成。",
- "ExtensionChannels.downloadingInsidersMessage": "正在下載 Insiders 延伸模組... ",
- "ExtensionChannels.yesWeekly": "是,每週",
- "ExtensionChannels.yesDaily": "是,每天",
- "ExtensionChannels.promptMessage": "我們發覺到您在使用 Visual Studio Code Insiders。請問您是否想使用 Python 延伸模組的 Insiders 組建?",
- "ExtensionChannels.reloadToUseInsidersMessage": "請重新載入 Visual Studio Code 以使用 Python 延伸模組的 Insiders 組建。",
- "ExtensionChannels.downloadCompletedOutputMessage": "Insiders 組建下載完成。",
- "ExtensionChannels.startingDownloadOutputMessage": "開始下載 Insiders 組建。",
- "Interpreters.environmentPromptMessage": "We noticed a new virtual environment has been created. Do you want to select it for the workspace folder?",
- "Linter.enableLinter": "啟用 {0}",
- "Linter.enablePylint": "您的工作區有 pylintrc 檔案。是否啟用 pylint?",
- "Linter.replaceWithSelectedLinter": "設定中啟用了多個 Linter。是否用 '{0}' 取代?",
- "Installer.noCondaOrPipInstaller": "選取環境中沒有可用的 Conda 或 Pip 安裝工具。",
- "Installer.noPipInstaller": "選取環境中沒有可用的 Pip 安裝工具。",
- "Installer.searchForHelp": "搜尋說明",
- "diagnostics.warnSourceMaps": "已在 Python 延伸模組中啟用原始碼映射 (Source Map) 支援,這會降低延伸模組效能。",
- "diagnostics.disableSourceMaps": "停用原始碼映射 (Source Map) 支援",
- "diagnostics.warnBeforeEnablingSourceMaps": "在 Python 延伸模組中啟用原始碼映射 (Source Map) 支援會降低延伸模組效能。",
- "diagnostics.enableSourceMapsAndReloadVSC": "啟用並重新載入視窗",
- "diagnostics.lsNotSupported": "您的作業系統不符合 Python 語言伺服器的最低需求。改回使用替代自動完成提供者 \"Jedi\"。",
- "diagnostics.invalidPythonPathInDebuggerSettings": "開始偵錯前,您需要選取 Python 解譯器。\n\n小提示:按一下狀態列的 \"選擇 Python 解譯器\"。",
- "diagnostics.invalidPythonPathInDebuggerLaunch": "偵錯設定檔的 Python 路徑無效。",
- "diagnostics.invalidDebuggerTypeDiagnostic": "Your launch.json file needs to be updated to change the \"pythonExperimental\" debug configurations to use the \"python\" debugger type, otherwise Python debugging may not work. Would you like to automatically update your launch.json file now?",
- "diagnostics.consoleTypeDiagnostic": "Your launch.json file needs to be updated to change the console type string from \"none\" to \"internalConsole\", otherwise Python debugging may not work. Would you like to automatically update your launch.json file now?",
- "diagnostics.justMyCodeDiagnostic": "Configuration \"debugStdLib\" in launch.json is no longer supported. It's recommended to replace it with \"justMyCode\", which is the exact opposite of using \"debugStdLib\". Would you like to automatically update your launch.json file to do that?",
- "diagnostics.yesUpdateLaunch": "是,更新 launch.json",
- "diagnostics.invalidTestSettings": "Your settings needs to be updated to change the setting \"python.unitTest.\" to \"python.testing.\", otherwise testing Python code using the extension may not work. Would you like to automatically update your settings now?",
- "Common.canceled": "已取消",
- "Common.cancel": "取消",
- "Common.loadingPythonExtension": "正在載入 Python 延伸模組...",
- "debug.selectConfigurationTitle": "選擇偵錯設定檔",
- "debug.selectConfigurationPlaceholder": "偵錯設定檔",
- "debug.launchJsonConfigurationsCompletionLabel": "Python",
- "debug.launchJsonConfigurationsCompletionDescription": "選取 Python 偵錯設定檔",
- "debug.debugFileConfigurationLabel": "Python 檔案",
- "debug.debugFileConfigurationDescription": "偵錯目前使用中的 Python 檔案",
- "debug.debugModuleConfigurationLabel": "模組",
- "debug.debugModuleConfigurationDescription": "使用 '-m' 叫用以偵錯 Python 模組",
- "debug.moduleEnterModuleTitle": "偵錯模組",
- "debug.moduleEnterModulePrompt": "輸入 Python 模組 / 套件名稱",
- "debug.moduleEnterModuleDefault": "輸入-模組-名稱",
- "debug.moduleEnterModuleInvalidNameError": "請輸入有效的模組名稱",
- "debug.remoteAttachConfigurationLabel": "遠端連結",
- "debug.remoteAttachConfigurationDescription": "連結到遠端偵錯伺服器",
- "debug.attachRemoteHostTitle": "遠端偵錯",
- "debug.attachRemoteHostPrompt": "輸入主機名稱",
- "debug.attachRemoteHostValidationError": "請輸入有效的主機名稱或 IP 位址",
- "debug.attachRemotePortTitle": "遠端偵錯",
- "debug.attachRemotePortPrompt": "輸入偵錯伺服器正在監聽的連線埠號。",
- "debug.attachRemotePortValidationError": "請輸入有效的連線埠號。",
- "debug.attachPidConfigurationLabel": "使用處理程序 ID 連結",
- "debug.attachPidConfigurationDescription": "連結至本機處理程序",
- "debug.debugDjangoConfigurationLabel": "Django",
- "debug.debugDjangoConfigurationDescription": "執行並偵錯 Django 網路應用程式",
- "debug.djangoEnterManagePyPathTitle": "偵錯 Django",
- "debug.djangoEnterManagePyPathPrompt": "請輸入 manage.py 的路徑 ('${workspaceFolderToken}' 指向目前工作區資料夾的根目錄)",
- "debug.djangoEnterManagePyPathInvalidFilePathError": "請輸入有效的 Python 檔案路徑",
- "debug.debugFlaskConfigurationLabel": "Flask",
- "debug.debugFlaskConfigurationDescription": "執行並偵錯 Flask 網路應用程式",
- "debug.flaskEnterAppPathOrNamePathTitle": "偵錯 Flask",
- "debug.flaskEnterAppPathOrNamePathPrompt": "請輸入應用程式路徑。例如:'app.py' 或 'app'",
- "debug.flaskEnterAppPathOrNamePathInvalidNameError": "請輸入有效名稱",
- "debug.debugPyramidConfigurationLabel": "Pyramid",
- "debug.debugPyramidConfigurationDescription": "網路應用程式",
- "debug.pyramidEnterDevelopmentIniPathTitle": "偵錯 Pyramid",
- "debug.pyramidEnterDevelopmentIniPathPrompt": "`請輸入 development.ini 的路徑 ('${workspaceFolderToken}' 指向目前工作區資料夾的根目錄)`",
- "debug.pyramidEnterDevelopmentIniPathInvalidFilePathError": "請輸入有效的檔案路徑",
- "Testing.testErrorDiagnosticMessage": "錯誤",
- "Testing.testFailDiagnosticMessage": "失敗",
- "Testing.testSkippedDiagnosticMessage": "略過",
- "Testing.configureTests": "設定測試框架",
- "Testing.disableTests": "停用測試",
- "Common.openOutputPanel": "顯示輸出",
- "LanguageService.downloadFailedOutputMessage": "下載語言伺服器失敗",
- "LanguageService.extractionFailedOutputMessage": "擷取語言伺服器失敗",
- "LanguageService.extractionCompletedOutputMessage": "下載語言伺服器完成",
- "LanguageService.extractionDoneOutputMessage": "完成",
- "LanguageService.reloadVSCodeIfSeachPathHasChanged": "已為此 Python 解譯器變更搜尋路徑。請重新載入延伸模組以確保 IntelliSense 能夠正常運作",
- "AttachProcess.unsupportedOS": "不支援 '{0}' 作業系統。",
- "AttachProcess.attachTitle": "連結至處理程序",
- "AttachProcess.selectProcessPlaceholder": "選擇要連結的處理程序",
- "AttachProcess.noProcessSelected": "沒有選取的處理程序",
- "AttachProcess.refreshList": "重新整理處理程序列表",
- "diagnostics.updateSettings": "是,更新設定",
- "Common.noIWillDoItLater": "否,我稍候再做",
- "Common.notNow": "先不要",
- "Common.gotIt": "懂了!",
- "Interpreters.selectInterpreterTip": "小提示:您能透過按下狀態列中的 Python 版本,變更 Python 延伸模組使用的 Python 解譯器。",
- "downloading.file": "正在下載 {0}...",
- "downloading.file.progress": "目前 {0}{1},總共 {2} KB ({3}%)",
- "products.installingModule": "正在安裝 {0}"
-}
diff --git a/pythonExtensionApi/.eslintrc b/pythonExtensionApi/.eslintrc
new file mode 100644
index 000000000000..8828c49002ed
--- /dev/null
+++ b/pythonExtensionApi/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "overrides": [
+ {
+ "files": ["**/main.d.ts"],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off",
+ "padding-line-between-statements": ["error", { "blankLine": "always", "prev": "export", "next": "*" }]
+ }
+ }
+ ]
+}
diff --git a/pythonExtensionApi/.npmignore b/pythonExtensionApi/.npmignore
new file mode 100644
index 000000000000..283d589ea5fe
--- /dev/null
+++ b/pythonExtensionApi/.npmignore
@@ -0,0 +1,8 @@
+example/**
+dist/
+out/**/*.map
+out/**/*.tsbuildInfo
+src/
+.eslintrc*
+.eslintignore
+tsconfig*.json
diff --git a/pythonExtensionApi/LICENSE.md b/pythonExtensionApi/LICENSE.md
new file mode 100644
index 000000000000..767f4076ba05
--- /dev/null
+++ b/pythonExtensionApi/LICENSE.md
@@ -0,0 +1,21 @@
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/pythonExtensionApi/README.md b/pythonExtensionApi/README.md
new file mode 100644
index 000000000000..5208d90cdfa5
--- /dev/null
+++ b/pythonExtensionApi/README.md
@@ -0,0 +1,55 @@
+# Python extension's API
+
+This npm module implements an API facade for the Python extension in VS Code.
+
+## Example
+
+First we need to define a `package.json` for the extension that wants to use the API:
+
+```jsonc
+{
+ "name": "...",
+ ...
+ // depend on the Python extension
+ "extensionDependencies": [
+ "ms-python.python"
+ ],
+ // Depend on the Python extension facade npm module to get easier API access to the
+ // core extension.
+ "dependencies": {
+ "@vscode/python-extension": "...",
+ "@types/vscode": "..."
+ },
+}
+```
+
+Update `"@types/vscode"` to [a recent version](https://code.visualstudio.com/updates/) of VS Code, say `"^1.81.0"` for VS Code version `"1.81"`, in case there are any conflicts.
+
+The actual source code to get the active environment to run some script could look like this:
+
+```typescript
+// Import the API
+import { PythonExtension } from '@vscode/python-extension';
+
+...
+
+// Load the Python extension API
+const pythonApi: PythonExtension = await PythonExtension.api();
+
+// This will return something like /usr/bin/python
+const environmentPath = pythonApi.environments.getActiveEnvironmentPath();
+
+// `environmentPath.path` carries the value of the setting. Note that this path may point to a folder and not the
+// python binary. Depends entirely on how the env was created.
+// E.g., `conda create -n myenv python` ensures the env has a python binary
+// `conda create -n myenv` does not include a python binary.
+// Also, the path specified may not be valid, use the following to get complete details for this environment if
+// need be.
+
+const environment = await pythonApi.environments.resolveEnvironment(environmentPath);
+if (environment) {
+ // run your script here.
+}
+```
+
+Check out [the wiki](https://aka.ms/pythonEnvironmentApi) for many more examples and usage.
diff --git a/pythonExtensionApi/SECURITY.md b/pythonExtensionApi/SECURITY.md
new file mode 100644
index 000000000000..a050f362c152
--- /dev/null
+++ b/pythonExtensionApi/SECURITY.md
@@ -0,0 +1,41 @@
+
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
+
+
diff --git a/pythonExtensionApi/package-lock.json b/pythonExtensionApi/package-lock.json
new file mode 100644
index 000000000000..ef6914e0e786
--- /dev/null
+++ b/pythonExtensionApi/package-lock.json
@@ -0,0 +1,155 @@
+{
+ "name": "@vscode/python-extension",
+ "version": "1.0.5",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@vscode/python-extension",
+ "version": "1.0.5",
+ "license": "MIT",
+ "devDependencies": {
+ "@types/vscode": "^1.78.0",
+ "source-map": "^0.8.0-beta.0",
+ "typescript": "5.0.4"
+ },
+ "engines": {
+ "node": ">=18.17.1",
+ "vscode": "^1.78.0"
+ }
+ },
+ "node_modules/@types/vscode": {
+ "version": "1.80.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.80.0.tgz",
+ "integrity": "sha512-qK/CmOdS2o7ry3k6YqU4zD3R2AYlJfbwBoSbKpBoP+GpXNE+0NEgJOli4n0bm0diK5kfBnchgCEj4igQz/44Hg==",
+ "dev": true
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ },
+ "dependencies": {
+ "@types/vscode": {
+ "version": "1.80.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.80.0.tgz",
+ "integrity": "sha512-qK/CmOdS2o7ry3k6YqU4zD3R2AYlJfbwBoSbKpBoP+GpXNE+0NEgJOli4n0bm0diK5kfBnchgCEj4igQz/44Hg==",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^7.0.0"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "dev": true
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+}
diff --git a/pythonExtensionApi/package.json b/pythonExtensionApi/package.json
new file mode 100644
index 000000000000..9e58f1a2400c
--- /dev/null
+++ b/pythonExtensionApi/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@vscode/python-extension",
+ "description": "An API facade for the Python extension in VS Code",
+ "version": "1.0.5",
+ "author": {
+ "name": "Microsoft Corporation"
+ },
+ "keywords": [
+ "Python",
+ "VSCode",
+ "API"
+ ],
+ "main": "./out/main.js",
+ "types": "./out/main.d.ts",
+ "engines": {
+ "node": ">=18.17.1",
+ "vscode": "^1.78.0"
+ },
+ "license": "MIT",
+ "homepage": "https://github.com/microsoft/vscode-python/tree/main/pythonExtensionApi",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Microsoft/vscode-python"
+ },
+ "bugs": {
+ "url": "https://github.com/Microsoft/vscode-python/issues"
+ },
+ "devDependencies": {
+ "typescript": "5.0.4",
+ "@types/vscode": "^1.78.0",
+ "source-map": "^0.8.0-beta.0"
+ },
+ "scripts": {
+ "prepublishOnly": "echo \"⛔ Can only publish from a secure pipeline ⛔\" && node ../build/fail",
+ "prepack": "npm run all:publish",
+ "compile": "node ./node_modules/typescript/lib/tsc.js -b ./tsconfig.json",
+ "clean": "node ../node_modules/rimraf/bin.js out",
+ "lint": "node ../node_modules/eslint/bin/eslint.js --ext ts src",
+ "all": "npm run clean && npm run compile",
+ "formatTypings": "node ../node_modules/eslint/bin/eslint.js --fix ./out/main.d.ts",
+ "all:publish": "git clean -xfd . && npm install && npm run compile && npm run formatTypings"
+ }
+}
diff --git a/pythonExtensionApi/src/main.ts b/pythonExtensionApi/src/main.ts
new file mode 100644
index 000000000000..dccbd78f6f04
--- /dev/null
+++ b/pythonExtensionApi/src/main.ts
@@ -0,0 +1,349 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+import { CancellationToken, Event, Uri, WorkspaceFolder, extensions } from 'vscode';
+
+/*
+ * Do not introduce any breaking changes to this API.
+ * This is the public API for other extensions to interact with this extension.
+ */
+export interface PythonExtension {
+ /**
+ * Promise indicating whether all parts of the extension have completed loading or not.
+ */
+ ready: Promise;
+ debug: {
+ /**
+ * Generate an array of strings for commands to pass to the Python executable to launch the debugger for remote debugging.
+ * Users can append another array of strings of what they want to execute along with relevant arguments to Python.
+ * E.g `['/Users/..../pythonVSCode/python_files/lib/python/debugpy', '--listen', 'localhost:57039', '--wait-for-client']`
+ * @param host
+ * @param port
+ * @param waitUntilDebuggerAttaches Defaults to `true`.
+ */
+ getRemoteLauncherCommand(host: string, port: number, waitUntilDebuggerAttaches: boolean): Promise;
+
+ /**
+ * Gets the path to the debugger package used by the extension.
+ * @returns {Promise}
+ */
+ getDebuggerPackagePath(): Promise;
+ };
+
+ /**
+ * These APIs provide a way for extensions to work with by python environments available in the user's machine
+ * as found by the Python extension. See
+ * https://github.com/microsoft/vscode-python/wiki/Python-Environment-APIs for usage examples and more.
+ */
+ readonly environments: {
+ /**
+ * Returns the environment configured by user in settings. Note that this can be an invalid environment, use
+ * {@link resolveEnvironment} to get full details.
+ * @param resource : Uri of a file or workspace folder. This is used to determine the env in a multi-root
+ * scenario. If `undefined`, then the API returns what ever is set for the workspace.
+ */
+ getActiveEnvironmentPath(resource?: Resource): EnvironmentPath;
+ /**
+ * Sets the active environment path for the python extension for the resource. Configuration target will always
+ * be the workspace folder.
+ * @param environment : If string, it represents the full path to environment folder or python executable
+ * for the environment. Otherwise it can be {@link Environment} or {@link EnvironmentPath} itself.
+ * @param resource : [optional] File or workspace to scope to a particular workspace folder.
+ */
+ updateActiveEnvironmentPath(
+ environment: string | EnvironmentPath | Environment,
+ resource?: Resource,
+ ): Promise;
+ /**
+ * This event is triggered when the active environment setting changes.
+ */
+ readonly onDidChangeActiveEnvironmentPath: Event;
+ /**
+ * Carries environments known to the extension at the time of fetching the property. Note this may not
+ * contain all environments in the system as a refresh might be going on.
+ *
+ * Only reports environments in the current workspace.
+ */
+ readonly known: readonly Environment[];
+ /**
+ * This event is triggered when the known environment list changes, like when a environment
+ * is found, existing environment is removed, or some details changed on an environment.
+ */
+ readonly onDidChangeEnvironments: Event;
+ /**
+ * This API will trigger environment discovery, but only if it has not already happened in this VSCode session.
+ * Useful for making sure env list is up-to-date when the caller needs it for the first time.
+ *
+ * To force trigger a refresh regardless of whether a refresh was already triggered, see option
+ * {@link RefreshOptions.forceRefresh}.
+ *
+ * Note that if there is a refresh already going on then this returns the promise for that refresh.
+ * @param options Additional options for refresh.
+ * @param token A cancellation token that indicates a refresh is no longer needed.
+ */
+ refreshEnvironments(options?: RefreshOptions, token?: CancellationToken): Promise;
+ /**
+ * Returns details for the given environment, or `undefined` if the env is invalid.
+ * @param environment : If string, it represents the full path to environment folder or python executable
+ * for the environment. Otherwise it can be {@link Environment} or {@link EnvironmentPath} itself.
+ */
+ resolveEnvironment(
+ environment: Environment | EnvironmentPath | string,
+ ): Promise;
+ /**
+ * Returns the environment variables used by the extension for a resource, which includes the custom
+ * variables configured by user in `.env` files.
+ * @param resource : Uri of a file or workspace folder. This is used to determine the env in a multi-root
+ * scenario. If `undefined`, then the API returns what ever is set for the workspace.
+ */
+ getEnvironmentVariables(resource?: Resource): EnvironmentVariables;
+ /**
+ * This event is fired when the environment variables for a resource change. Note it's currently not
+ * possible to detect if environment variables in the system change, so this only fires if custom
+ * environment variables are updated in `.env` files.
+ */
+ readonly onDidEnvironmentVariablesChange: Event;
+ };
+}
+
+export type RefreshOptions = {
+ /**
+ * When `true`, force trigger a refresh regardless of whether a refresh was already triggered. Note this can be expensive so
+ * it's best to only use it if user manually triggers a refresh.
+ */
+ forceRefresh?: boolean;
+};
+
+/**
+ * Details about the environment. Note the environment folder, type and name never changes over time.
+ */
+export type Environment = EnvironmentPath & {
+ /**
+ * Carries details about python executable.
+ */
+ readonly executable: {
+ /**
+ * Uri of the python interpreter/executable. Carries `undefined` in case an executable does not belong to
+ * the environment.
+ */
+ readonly uri: Uri | undefined;
+ /**
+ * Bitness if known at this moment.
+ */
+ readonly bitness: Bitness | undefined;
+ /**
+ * Value of `sys.prefix` in sys module if known at this moment.
+ */
+ readonly sysPrefix: string | undefined;
+ };
+ /**
+ * Carries details if it is an environment, otherwise `undefined` in case of global interpreters and others.
+ */
+ readonly environment:
+ | {
+ /**
+ * Type of the environment.
+ */
+ readonly type: EnvironmentType;
+ /**
+ * Name to the environment if any.
+ */
+ readonly name: string | undefined;
+ /**
+ * Uri of the environment folder.
+ */
+ readonly folderUri: Uri;
+ /**
+ * Any specific workspace folder this environment is created for.
+ */
+ readonly workspaceFolder: WorkspaceFolder | undefined;
+ }
+ | undefined;
+ /**
+ * Carries Python version information known at this moment, carries `undefined` for envs without python.
+ */
+ readonly version:
+ | (VersionInfo & {
+ /**
+ * Value of `sys.version` in sys module if known at this moment.
+ */
+ readonly sysVersion: string | undefined;
+ })
+ | undefined;
+ /**
+ * Tools/plugins which created the environment or where it came from. First value in array corresponds
+ * to the primary tool which manages the environment, which never changes over time.
+ *
+ * Array is empty if no tool is responsible for creating/managing the environment. Usually the case for
+ * global interpreters.
+ */
+ readonly tools: readonly EnvironmentTools[];
+};
+
+/**
+ * Derived form of {@link Environment} where certain properties can no longer be `undefined`. Meant to represent an
+ * {@link Environment} with complete information.
+ */
+export type ResolvedEnvironment = Environment & {
+ /**
+ * Carries complete details about python executable.
+ */
+ readonly executable: {
+ /**
+ * Uri of the python interpreter/executable. Carries `undefined` in case an executable does not belong to
+ * the environment.
+ */
+ readonly uri: Uri | undefined;
+ /**
+ * Bitness of the environment.
+ */
+ readonly bitness: Bitness;
+ /**
+ * Value of `sys.prefix` in sys module.
+ */
+ readonly sysPrefix: string;
+ };
+ /**
+ * Carries complete Python version information, carries `undefined` for envs without python.
+ */
+ readonly version:
+ | (ResolvedVersionInfo & {
+ /**
+ * Value of `sys.version` in sys module if known at this moment.
+ */
+ readonly sysVersion: string;
+ })
+ | undefined;
+};
+
+export type EnvironmentsChangeEvent = {
+ readonly env: Environment;
+ /**
+ * * "add": New environment is added.
+ * * "remove": Existing environment in the list is removed.
+ * * "update": New information found about existing environment.
+ */
+ readonly type: 'add' | 'remove' | 'update';
+};
+
+export type ActiveEnvironmentPathChangeEvent = EnvironmentPath & {
+ /**
+ * Workspace folder the environment changed for.
+ */
+ readonly resource: WorkspaceFolder | undefined;
+};
+
+/**
+ * Uri of a file inside a workspace or workspace folder itself.
+ */
+export type Resource = Uri | WorkspaceFolder;
+
+export type EnvironmentPath = {
+ /**
+ * The ID of the environment.
+ */
+ readonly id: string;
+ /**
+ * Path to environment folder or path to python executable that uniquely identifies an environment. Environments
+ * lacking a python executable are identified by environment folder paths, whereas other envs can be identified
+ * using python executable path.
+ */
+ readonly path: string;
+};
+
+/**
+ * Tool/plugin where the environment came from. It can be {@link KnownEnvironmentTools} or custom string which
+ * was contributed.
+ */
+export type EnvironmentTools = KnownEnvironmentTools | string;
+/**
+ * Tools or plugins the Python extension currently has built-in support for. Note this list is expected to shrink
+ * once tools have their own separate extensions.
+ */
+export type KnownEnvironmentTools =
+ | 'Conda'
+ | 'Pipenv'
+ | 'Poetry'
+ | 'VirtualEnv'
+ | 'Venv'
+ | 'VirtualEnvWrapper'
+ | 'Pyenv'
+ | 'Unknown';
+
+/**
+ * Type of the environment. It can be {@link KnownEnvironmentTypes} or custom string which was contributed.
+ */
+export type EnvironmentType = KnownEnvironmentTypes | string;
+/**
+ * Environment types the Python extension is aware of. Note this list is expected to shrink once tools have their
+ * own separate extensions, in which case they're expected to provide the type themselves.
+ */
+export type KnownEnvironmentTypes = 'VirtualEnvironment' | 'Conda' | 'Unknown';
+
+/**
+ * Carries bitness for an environment.
+ */
+export type Bitness = '64-bit' | '32-bit' | 'Unknown';
+
+/**
+ * The possible Python release levels.
+ */
+export type PythonReleaseLevel = 'alpha' | 'beta' | 'candidate' | 'final';
+
+/**
+ * Release information for a Python version.
+ */
+export type PythonVersionRelease = {
+ readonly level: PythonReleaseLevel;
+ readonly serial: number;
+};
+
+export type VersionInfo = {
+ readonly major: number | undefined;
+ readonly minor: number | undefined;
+ readonly micro: number | undefined;
+ readonly release: PythonVersionRelease | undefined;
+};
+
+export type ResolvedVersionInfo = {
+ readonly major: number;
+ readonly minor: number;
+ readonly micro: number;
+ readonly release: PythonVersionRelease;
+};
+
+/**
+ * A record containing readonly keys.
+ */
+export type EnvironmentVariables = { readonly [key: string]: string | undefined };
+
+export type EnvironmentVariablesChangeEvent = {
+ /**
+ * Workspace folder the environment variables changed for.
+ */
+ readonly resource: WorkspaceFolder | undefined;
+ /**
+ * Updated value of environment variables.
+ */
+ readonly env: EnvironmentVariables;
+};
+
+export const PVSC_EXTENSION_ID = 'ms-python.python';
+
+// eslint-disable-next-line @typescript-eslint/no-namespace
+export namespace PythonExtension {
+ /**
+ * Returns the API exposed by the Python extension in VS Code.
+ */
+ export async function api(): Promise {
+ const extension = extensions.getExtension(PVSC_EXTENSION_ID);
+ if (extension === undefined) {
+ throw new Error(`Python extension is not installed or is disabled`);
+ }
+ if (!extension.isActive) {
+ await extension.activate();
+ }
+ const pythonApi: PythonExtension = extension.exports;
+ return pythonApi;
+ }
+}
diff --git a/pythonExtensionApi/tsconfig.json b/pythonExtensionApi/tsconfig.json
new file mode 100644
index 000000000000..9ab7617023df
--- /dev/null
+++ b/pythonExtensionApi/tsconfig.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "*": ["types/*"]
+ },
+ "module": "commonjs",
+ "target": "es2018",
+ "outDir": "./out",
+ "lib": [
+ "es6",
+ "es2018",
+ "dom",
+ "ES2019",
+ "ES2020"
+ ],
+ "sourceMap": true,
+ "rootDir": "src",
+ "experimentalDecorators": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "resolveJsonModule": true,
+ "declaration": true
+ },
+ "exclude": [
+ "node_modules",
+ "out"
+ ]
+}
diff --git a/pythonFiles/completion.py b/pythonFiles/completion.py
deleted file mode 100644
index 5a82d8177ecf..000000000000
--- a/pythonFiles/completion.py
+++ /dev/null
@@ -1,692 +0,0 @@
-import os
-import os.path
-import io
-import re
-import sys
-import json
-import traceback
-import platform
-
-jediPreview = False
-
-
-class RedirectStdout(object):
- def __init__(self, new_stdout=None):
- """If stdout is None, redirect to /dev/null"""
- self._new_stdout = new_stdout or open(os.devnull, "w")
-
- def __enter__(self):
- sys.stdout.flush()
- self.oldstdout_fno = os.dup(sys.stdout.fileno())
- os.dup2(self._new_stdout.fileno(), 1)
-
- def __exit__(self, exc_type, exc_value, traceback):
- self._new_stdout.flush()
- os.dup2(self.oldstdout_fno, 1)
- os.close(self.oldstdout_fno)
-
-
-class JediCompletion(object):
- basic_types = {
- "module": "import",
- "instance": "variable",
- "statement": "value",
- "param": "variable",
- }
-
- def __init__(self):
- self.default_sys_path = sys.path
- self._input = io.open(sys.stdin.fileno(), encoding="utf-8")
- if (os.path.sep == "/") and (platform.uname()[2].find("Microsoft") > -1):
- # WSL; does not support UNC paths
- self.drive_mount = "/mnt/"
- elif sys.platform == "cygwin":
- # cygwin
- self.drive_mount = "/cygdrive/"
- else:
- # Do no normalization, e.g. Windows build of Python.
- # Could add additional test: ((os.path.sep == '/') and os.path.isdir('/mnt/c'))
- # However, this may have more false positives trying to identify Windows/*nix hybrids
- self.drive_mount = ""
-
- def _get_definition_type(self, definition):
- # if definition.type not in ['import', 'keyword'] and is_built_in():
- # return 'builtin'
- try:
- if definition.type in ["statement"] and definition.name.isupper():
- return "constant"
- return self.basic_types.get(definition.type, definition.type)
- except Exception:
- return "builtin"
-
- def _additional_info(self, completion):
- """Provide additional information about the completion object."""
- if not hasattr(completion, "_definition") or completion._definition is None:
- return ""
- if completion.type == "statement":
- nodes_to_display = ["InstanceElement", "String", "Node", "Lambda", "Number"]
- return "".join(
- c.get_code()
- for c in completion._definition.children
- if type(c).__name__ in nodes_to_display
- ).replace("\n", "")
- return ""
-
- @classmethod
- def _get_top_level_module(cls, path):
- """Recursively walk through directories looking for top level module.
-
- Jedi will use current filepath to look for another modules at same
- path, but it will not be able to see modules **above**, so our goal
- is to find the higher python module available from filepath.
- """
- _path, _ = os.path.split(path)
- if os.path.isfile(os.path.join(_path, "__init__.py")):
- return cls._get_top_level_module(_path)
- return path
-
- def _generate_signature(self, completion):
- """Generate signature with function arguments."""
- if completion.type in ["module"] or not hasattr(completion, "params"):
- return ""
- return "%s(%s)" % (
- completion.name,
- ", ".join(p.description[6:] for p in completion.params if p),
- )
-
- def _get_call_signatures(self, script):
- """Extract call signatures from jedi.api.Script object in failsafe way.
-
- Returns:
- Tuple with original signature object, name and value.
- """
- _signatures = []
- try:
- call_signatures = script.call_signatures()
- except KeyError:
- call_signatures = []
- except:
- call_signatures = []
- for signature in call_signatures:
- for pos, param in enumerate(signature.params):
- if not param.name:
- continue
-
- name = self._get_param_name(param)
- if param.name == "self" and pos == 0:
- continue
- if name.startswith("*"):
- continue
-
- value = self._get_param_value(param)
- _signatures.append((signature, name, value))
- return _signatures
-
- def _get_param_name(self, p):
- if p.name.startswith("param "):
- return p.name[6:] # drop leading 'param '
- return p.name
-
- def _get_param_value(self, p):
- pair = p.description.split("=")
- if len(pair) > 1:
- return pair[1]
- return None
-
- def _get_call_signatures_with_args(self, script):
- """Extract call signatures from jedi.api.Script object in failsafe way.
-
- Returns:
- Array with dictionary
- """
- _signatures = []
- try:
- call_signatures = script.call_signatures()
- except KeyError:
- call_signatures = []
- for signature in call_signatures:
- sig = {
- "name": "",
- "description": "",
- "docstring": "",
- "paramindex": 0,
- "params": [],
- "bracketstart": [],
- }
- sig["description"] = signature.description
- try:
- sig["docstring"] = signature.docstring()
- sig["raw_docstring"] = signature.docstring(raw=True)
- except Exception:
- sig["docstring"] = ""
- sig["raw_docstring"] = ""
-
- sig["name"] = signature.name
- sig["paramindex"] = signature.index
- sig["bracketstart"].append(signature.index)
-
- _signatures.append(sig)
- for pos, param in enumerate(signature.params):
- if not param.name:
- continue
-
- name = self._get_param_name(param)
- if param.name == "self" and pos == 0:
- continue
-
- value = self._get_param_value(param)
- paramDocstring = ""
- try:
- paramDocstring = param.docstring()
- except Exception:
- paramDocstring = ""
-
- sig["params"].append(
- {
- "name": name,
- "value": value,
- "docstring": paramDocstring,
- "description": param.description,
- }
- )
- return _signatures
-
- def _serialize_completions(self, script, identifier=None, prefix=""):
- """Serialize response to be read from VSCode.
-
- Args:
- script: Instance of jedi.api.Script object.
- identifier: Unique completion identifier to pass back to VSCode.
- prefix: String with prefix to filter function arguments.
- Used only when fuzzy matcher turned off.
-
- Returns:
- Serialized string to send to VSCode.
- """
- _completions = []
-
- for signature, name, value in self._get_call_signatures(script):
- if not self.fuzzy_matcher and not name.lower().startswith(prefix.lower()):
- continue
- _completion = {
- "type": "property",
- "raw_type": "",
- "rightLabel": self._additional_info(signature),
- }
- _completion["description"] = ""
- _completion["raw_docstring"] = ""
-
- # we pass 'text' here only for fuzzy matcher
- if value:
- _completion["snippet"] = "%s=${1:%s}$0" % (name, value)
- _completion["text"] = "%s=" % (name)
- else:
- _completion["snippet"] = "%s=$1$0" % name
- _completion["text"] = name
- _completion["displayText"] = name
- _completions.append(_completion)
-
- try:
- completions = script.completions()
- except KeyError:
- completions = []
- except:
- completions = []
- for completion in completions:
- try:
- _completion = {
- "text": completion.name,
- "type": self._get_definition_type(completion),
- "raw_type": completion.type,
- "rightLabel": self._additional_info(completion),
- }
- except Exception:
- continue
-
- for c in _completions:
- if c["text"] == _completion["text"]:
- c["type"] = _completion["type"]
- c["raw_type"] = _completion["raw_type"]
-
- if any(
- [c["text"].split("=")[0] == _completion["text"] for c in _completions]
- ):
- # ignore function arguments we already have
- continue
- _completions.append(_completion)
- return json.dumps({"id": identifier, "results": _completions})
-
- def _serialize_methods(self, script, identifier=None, prefix=""):
- _methods = []
- try:
- completions = script.completions()
- except KeyError:
- return []
-
- for completion in completions:
- if completion.name == "__autocomplete_python":
- instance = completion.parent().name
- break
- else:
- instance = "self.__class__"
-
- for completion in completions:
- params = []
- if hasattr(completion, "params"):
- params = [p.description for p in completion.params if p]
- if completion.parent().type == "class":
- _methods.append(
- {
- "parent": completion.parent().name,
- "instance": instance,
- "name": completion.name,
- "params": params,
- "moduleName": completion.module_name,
- "fileName": completion.module_path,
- "line": completion.line,
- "column": completion.column,
- }
- )
- return json.dumps({"id": identifier, "results": _methods})
-
- def _serialize_arguments(self, script, identifier=None):
- """Serialize response to be read from VSCode.
-
- Args:
- script: Instance of jedi.api.Script object.
- identifier: Unique completion identifier to pass back to VSCode.
-
- Returns:
- Serialized string to send to VSCode.
- """
- return json.dumps(
- {"id": identifier, "results": self._get_call_signatures_with_args(script)}
- )
-
- def _top_definition(self, definition):
- for d in definition.goto_assignments():
- if d == definition:
- continue
- if d.type == "import":
- return self._top_definition(d)
- else:
- return d
- return definition
-
- def _extract_range_jedi_0_11_1(self, definition):
- from parso.utils import split_lines
-
- # get the scope range
- try:
- if definition.type in ["class", "function"]:
- tree_name = definition._name.tree_name
- scope = tree_name.get_definition()
- start_line = scope.start_pos[0] - 1
- start_column = scope.start_pos[1]
- # get the lines
- code = scope.get_code(include_prefix=False)
- lines = split_lines(code)
- # trim the lines
- lines = "\n".join(lines).rstrip().split("\n")
- end_line = start_line + len(lines) - 1
- end_column = len(lines[-1]) - 1
- else:
- symbol = definition._name.tree_name
- start_line = symbol.start_pos[0] - 1
- start_column = symbol.start_pos[1]
- end_line = symbol.end_pos[0] - 1
- end_column = symbol.end_pos[1]
- return {
- "start_line": start_line,
- "start_column": start_column,
- "end_line": end_line,
- "end_column": end_column,
- }
- except Exception as e:
- return {
- "start_line": definition.line - 1,
- "start_column": definition.column,
- "end_line": definition.line - 1,
- "end_column": definition.column,
- }
-
- def _extract_range(self, definition):
- """Provides the definition range of a given definition
-
- For regular symbols it returns the start and end location of the
- characters making up the symbol.
-
- For scoped containers it will return the entire definition of the
- scope.
-
- The scope that jedi provides ends with the first character of the next
- scope so it's not ideal. For vscode we need the scope to end with the
- last character of actual code. That's why we extract the lines that
- make up our scope and trim the trailing whitespace.
- """
- return self._extract_range_jedi_0_11_1(definition)
-
- def _get_definitionsx(self, definitions, identifier=None, ignoreNoModulePath=False):
- """Serialize response to be read from VSCode.
-
- Args:
- definitions: List of jedi.api.classes.Definition objects.
- identifier: Unique completion identifier to pass back to VSCode.
-
- Returns:
- Serialized string to send to VSCode.
- """
- _definitions = []
- for definition in definitions:
- try:
- if definition.type == "import":
- definition = self._top_definition(definition)
- definitionRange = {
- "start_line": 0,
- "start_column": 0,
- "end_line": 0,
- "end_column": 0,
- }
- module_path = ""
- if hasattr(definition, "module_path") and definition.module_path:
- module_path = definition.module_path
- definitionRange = self._extract_range(definition)
- else:
- if not ignoreNoModulePath:
- continue
- try:
- parent = definition.parent()
- container = parent.name if parent.type != "module" else ""
- except Exception:
- container = ""
-
- try:
- docstring = definition.docstring()
- rawdocstring = definition.docstring(raw=True)
- except Exception:
- docstring = ""
- rawdocstring = ""
- _definition = {
- "text": definition.name,
- "type": self._get_definition_type(definition),
- "raw_type": definition.type,
- "fileName": module_path,
- "container": container,
- "range": definitionRange,
- "description": definition.description,
- "docstring": docstring,
- "raw_docstring": rawdocstring,
- "signature": self._generate_signature(definition),
- }
- _definitions.append(_definition)
- except Exception as e:
- pass
- return _definitions
-
- def _serialize_definitions(self, definitions, identifier=None):
- """Serialize response to be read from VSCode.
-
- Args:
- definitions: List of jedi.api.classes.Definition objects.
- identifier: Unique completion identifier to pass back to VSCode.
-
- Returns:
- Serialized string to send to VSCode.
- """
- _definitions = []
- for definition in definitions:
- try:
- if definition.module_path:
- if definition.type == "import":
- definition = self._top_definition(definition)
- if not definition.module_path:
- continue
- try:
- parent = definition.parent()
- container = parent.name if parent.type != "module" else ""
- except Exception:
- container = ""
-
- try:
- docstring = definition.docstring()
- rawdocstring = definition.docstring(raw=True)
- except Exception:
- docstring = ""
- rawdocstring = ""
- _definition = {
- "text": definition.name,
- "type": self._get_definition_type(definition),
- "raw_type": definition.type,
- "fileName": definition.module_path,
- "container": container,
- "range": self._extract_range(definition),
- "description": definition.description,
- "docstring": docstring,
- "raw_docstring": rawdocstring,
- }
- _definitions.append(_definition)
- except Exception as e:
- pass
- return json.dumps({"id": identifier, "results": _definitions})
-
- def _serialize_tooltip(self, definitions, identifier=None):
- _definitions = []
- for definition in definitions:
- signature = definition.name
- description = None
- if definition.type in ["class", "function"]:
- signature = self._generate_signature(definition)
- try:
- description = definition.docstring(raw=True).strip()
- except Exception:
- description = ""
- if not description and not hasattr(definition, "get_line_code"):
- # jedi returns an empty string for compiled objects
- description = definition.docstring().strip()
- if definition.type == "module":
- signature = definition.full_name
- try:
- description = definition.docstring(raw=True).strip()
- except Exception:
- description = ""
- if not description and hasattr(definition, "get_line_code"):
- # jedi returns an empty string for compiled objects
- description = definition.docstring().strip()
- _definition = {
- "type": self._get_definition_type(definition),
- "text": definition.name,
- "description": description,
- "docstring": description,
- "signature": signature,
- }
- _definitions.append(_definition)
- return json.dumps({"id": identifier, "results": _definitions})
-
- def _serialize_usages(self, usages, identifier=None):
- _usages = []
- for usage in usages:
- _usages.append(
- {
- "name": usage.name,
- "moduleName": usage.module_name,
- "fileName": usage.module_path,
- "line": usage.line,
- "column": usage.column,
- }
- )
- return json.dumps({"id": identifier, "results": _usages})
-
- def _deserialize(self, request):
- """Deserialize request from VSCode.
-
- Args:
- request: String with raw request from VSCode.
-
- Returns:
- Python dictionary with request data.
- """
- return json.loads(request)
-
- def _set_request_config(self, config):
- """Sets config values for current request.
-
- This includes sys.path modifications which is getting restored to
- default value on each request so each project should be isolated
- from each other.
-
- Args:
- config: Dictionary with config values.
- """
- sys.path = self.default_sys_path
- self.use_snippets = config.get("useSnippets")
- self.show_doc_strings = config.get("showDescriptions", True)
- self.fuzzy_matcher = config.get("fuzzyMatcher", False)
- jedi.settings.case_insensitive_completion = config.get(
- "caseInsensitiveCompletion", True
- )
- for path in config.get("extraPaths", []):
- if path and path not in sys.path:
- sys.path.insert(0, path)
-
- def _normalize_request_path(self, request):
- """Normalize any Windows paths received by a *nix build of
- Python. Does not alter the reverse os.path.sep=='\\',
- i.e. *nix paths received by a Windows build of Python.
- """
- if "path" in request:
- if not self.drive_mount:
- return
- newPath = request["path"].replace("\\", "/")
- if newPath[0:1] == "/":
- # is absolute path with no drive letter
- request["path"] = newPath
- elif newPath[1:2] == ":":
- # is path with drive letter, only absolute can be mapped
- request["path"] = self.drive_mount + newPath[0:1].lower() + newPath[2:]
- else:
- # is relative path
- request["path"] = newPath
-
- def _process_request(self, request):
- """Accept serialized request from VSCode and write response."""
- request = self._deserialize(request)
-
- self._set_request_config(request.get("config", {}))
-
- self._normalize_request_path(request)
- path = self._get_top_level_module(request.get("path", ""))
- if len(path) > 0 and path not in sys.path:
- sys.path.insert(0, path)
- lookup = request.get("lookup", "completions")
-
- if lookup == "names":
- return self._serialize_definitions(
- jedi.Script(
- source=request.get("source", None), path=request.get("path", "")
- ).get_names(all_scopes=True),
- request["id"],
- )
-
- script = jedi.Script(
- source=request.get("source", None),
- line=request["line"] + 1,
- column=request["column"],
- path=request.get("path", ""),
- project=jedi.get_default_project(os.path.dirname(path)),
- sys_path=sys.path,
- )
-
- if lookup == "definitions":
- defs = self._get_definitionsx(
- script.goto_assignments(follow_imports=True), request["id"]
- )
- return json.dumps({"id": request["id"], "results": defs})
- if lookup == "tooltip":
- if jediPreview:
- defs = []
- try:
- defs = self._get_definitionsx(
- script.goto_definitions(), request["id"], True
- )
- except:
- pass
- try:
- if len(defs) == 0:
- defs = self._get_definitionsx(
- script.goto_assignments(), request["id"], True
- )
- except:
- pass
- return json.dumps({"id": request["id"], "results": defs})
- else:
- try:
- return self._serialize_tooltip(
- script.goto_definitions(), request["id"]
- )
- except:
- return json.dumps({"id": request["id"], "results": []})
- elif lookup == "arguments":
- return self._serialize_arguments(script, request["id"])
- elif lookup == "usages":
- return self._serialize_usages(script.usages(), request["id"])
- elif lookup == "methods":
- return self._serialize_methods(
- script, request["id"], request.get("prefix", "")
- )
- else:
- return self._serialize_completions(
- script, request["id"], request.get("prefix", "")
- )
-
- def _write_response(self, response):
- sys.stdout.write(response + "\n")
- sys.stdout.flush()
-
- def watch(self):
- while True:
- try:
- rq = self._input.readline()
- if len(rq) == 0:
- # Reached EOF - indication our parent process is gone.
- sys.stderr.write(
- "Received EOF from the standard input,exiting" + "\n"
- )
- sys.stderr.flush()
- return
- with RedirectStdout():
- response = self._process_request(rq)
- self._write_response(response)
-
- except Exception:
- sys.stderr.write(traceback.format_exc() + "\n")
- sys.stderr.flush()
-
-
-if __name__ == "__main__":
- cachePrefix = "v"
- modulesToLoad = ""
- if len(sys.argv) > 2 and sys.argv[1] == "custom":
- jediPath = sys.argv[2]
- jediPreview = True
- cachePrefix = "custom_v"
- if len(sys.argv) > 3:
- modulesToLoad = sys.argv[3]
- else:
- # release
- jediPath = os.path.join(os.path.dirname(__file__), "lib", "python")
- if len(sys.argv) > 1:
- modulesToLoad = sys.argv[1]
-
- sys.path.insert(0, jediPath)
- import jedi
-
- if jediPreview:
- jedi.settings.cache_directory = os.path.join(
- jedi.settings.cache_directory,
- cachePrefix + jedi.__version__.replace(".", ""),
- )
- # remove jedi from path after we import it so it will not be completed
- sys.path.pop(0)
- if len(modulesToLoad) > 0:
- jedi.preload_module(*modulesToLoad.split(","))
- JediCompletion().watch()
diff --git a/pythonFiles/install_debugpy.py b/pythonFiles/install_debugpy.py
deleted file mode 100644
index e9361a6aeb3e..000000000000
--- a/pythonFiles/install_debugpy.py
+++ /dev/null
@@ -1,63 +0,0 @@
-import io
-import json
-import os
-import urllib.request as url_lib
-import zipfile
-from packaging.version import parse as version_parser
-
-
-EXTENSION_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-DEBUGGER_DEST = os.path.join(EXTENSION_ROOT, "pythonFiles", "lib", "python")
-DEBUGGER_PACKAGE = "debugpy"
-DEBUGGER_PYTHON_VERSIONS = ("cp38",)
-
-
-def _contains(s, parts=()):
- return any(p for p in parts if p in s)
-
-
-def _get_package_data():
- json_uri = "https://pypi.org/pypi/{0}/json".format(DEBUGGER_PACKAGE)
- # Response format: https://warehouse.readthedocs.io/api-reference/json/#project
- # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst
- with url_lib.urlopen(json_uri) as response:
- return json.loads(response.read())
-
-
-def _get_debugger_wheel_urls(data, version):
- return list(
- r["url"]
- for r in data["releases"][version]
- if _contains(r["url"], DEBUGGER_PYTHON_VERSIONS)
- )
-
-
-def _download_and_extract(root, url, version):
- root = os.getcwd() if root is None or root == "." else root
- prefix = os.path.join("debugpy-{0}.data".format(version), "purelib")
- with url_lib.urlopen(url) as response:
- # Extract only the contents of the purelib subfolder (parent folder of debugpy),
- # since debugpy files rely on the presence of a 'debugpy' folder.
- with zipfile.ZipFile(io.BytesIO(response.read()), "r") as wheel:
- for zip_info in wheel.infolist():
- # Ignore dist info since we are merging multiple wheels
- if ".dist-info" in zip_info.filename:
- continue
- # Normalize path for Windows, the wheel folder structure
- # uses forward slashes.
- normalized = os.path.normpath(zip_info.filename)
- # Flatten the folder structure.
- zip_info.filename = normalized.split(prefix)[-1]
- wheel.extract(zip_info, root)
-
-
-def main(root):
- data = _get_package_data()
- latest_version = max(data["releases"].keys(), key=version_parser)
-
- for url in _get_debugger_wheel_urls(data, latest_version):
- _download_and_extract(root, url, latest_version)
-
-
-if __name__ == "__main__":
- main(DEBUGGER_DEST)
diff --git a/pythonFiles/normalizeSelection.py b/pythonFiles/normalizeSelection.py
deleted file mode 100644
index 621c59b806af..000000000000
--- a/pythonFiles/normalizeSelection.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import ast
-import json
-import re
-import sys
-import textwrap
-
-
-def split_lines(source):
- """
- Split selection lines in a version-agnostic way.
-
- Python grammar only treats \r, \n, and \r\n as newlines.
- But splitlines() in Python 3 has a much larger list: for example, it also includes \v, \f.
- As such, this function will split lines across all Python versions.
- """
- return re.split(r"[\n\r]+", source)
-
-
-def _get_statements(selection):
- """
- Process a multiline selection into a list of its top-level statements.
- This will remove empty newlines around and within the selection, dedent it,
- and split it using the result of `ast.parse()`.
- """
-
- # Remove blank lines within the selection to prevent the REPL from thinking the block is finished.
- lines = (line for line in split_lines(selection) if line.strip() != "")
-
- # Dedent the selection and parse it using the ast module.
- # Note that leading comments in the selection will be discarded during parsing.
- source = textwrap.dedent("\n".join(lines))
- tree = ast.parse(source)
-
- # We'll need the dedented lines to rebuild the selection.
- lines = split_lines(source)
-
- # Get the line ranges for top-level blocks returned from parsing the dedented text
- # and split the selection accordingly.
- # tree.body is a list of AST objects, which we rely on to extract top-level statements.
- # If we supported Python 3.8+ only we could use the lineno and end_lineno attributes of each object
- # to get the boundaries of each block.
- # However, earlier Python versions only have the lineno attribute, which is the range start position (1-indexed).
- # Therefore, to retrieve the end line of each block in a version-agnostic way we need to do
- # `end = next_block.lineno - 1`
- # for all blocks except the last one, which will will just run until the last line.
- ends = [node.lineno - 1 for node in tree.body[1:]] + [len(lines)]
- for node, end in zip(tree.body, ends):
- # Given this selection:
- # 1: if (m > 0 and
- # 2: n < 3):
- # 3: print('foo')
- # 4: value = 'bar'
- #
- # The first block would have lineno = 1,and the second block lineno = 4
- start = node.lineno - 1
- block = "\n".join(lines[start:end])
-
- # If the block is multiline, add an extra newline character at its end.
- # This way, when joining blocks back together, there will be a blank line between each multiline statement
- # and no blank lines between single-line statements, or it would look like this:
- # >>> x = 22
- # >>>
- # >>> total = x + 30
- # >>>
- # Note that for the multiline parentheses case this newline is redundant,
- # since the closing parenthesis terminates the statement already.
- # This means that for this pattern we'll end up with:
- # >>> x = [
- # ... 1
- # ... ]
- # >>>
- # >>> y = [
- # ... 2
- # ...]
- if end - start > 1:
- block += "\n"
-
- yield block
-
-
-def normalize_lines(selection):
- """
- Normalize the text selection received from the extension.
-
- If it is a single line selection, dedent it and append a newline and
- send it back to the extension.
- Otherwise, sanitize the multiline selection before returning it:
- split it in a list of top-level statements
- and add newlines between each of them so the REPL knows where each block ends.
- """
- try:
- # Parse the selection into a list of top-level blocks.
- # We don't differentiate between single and multiline statements
- # because it's not a perf bottleneck,
- # and the overhead from splitting and rejoining strings in the multiline case is one-off.
- statements = _get_statements(selection)
-
- # Insert a newline between each top-level statement, and append a newline to the selection.
- source = "\n".join(statements) + "\n"
- except:
- # If there's a problem when parsing statements,
- # append a blank line to end the block and send it as-is.
- source = selection + "\n\n"
-
- return source
-
-
-if __name__ == "__main__":
- # Content is being sent from the extension as a JSON object.
- # Decode the data from the raw bytes.
- stdin = sys.stdin if sys.version_info < (3,) else sys.stdin.buffer
- raw = stdin.read()
- contents = json.loads(raw.decode("utf-8"))
-
- normalized = normalize_lines(contents["code"])
-
- # Send the normalized code back to the extension in a JSON object.
- data = json.dumps({"normalized": normalized})
-
- stdout = sys.stdout if sys.version_info < (3,) else sys.stdout.buffer
- stdout.write(data.encode("utf-8"))
- stdout.close()
diff --git a/pythonFiles/printEnvVariablesToFile.py b/pythonFiles/printEnvVariablesToFile.py
deleted file mode 100644
index be966bcac28c..000000000000
--- a/pythonFiles/printEnvVariablesToFile.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import os
-import json
-import sys
-
-
-# Last argument is the target file into which we'll write the env variables as json.
-json_file = sys.argv[-1]
-
-with open(json_file, "w") as outfile:
- json.dump(dict(os.environ), outfile)
diff --git a/pythonFiles/pyproject.toml b/pythonFiles/pyproject.toml
deleted file mode 100644
index 52c7c96d11e7..000000000000
--- a/pythonFiles/pyproject.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[tool.black]
-exclude = '''
-
-(
- /(
- .data
- | .vscode
- | lib
- )/
-)
-'''
diff --git a/pythonFiles/refactor.py b/pythonFiles/refactor.py
deleted file mode 100644
index f9d3b29e3b19..000000000000
--- a/pythonFiles/refactor.py
+++ /dev/null
@@ -1,395 +0,0 @@
-# Arguments are:
-# 1. Working directory.
-# 2. Rope folder
-
-import difflib
-import io
-import json
-import os
-import sys
-import traceback
-
-try:
- import rope
- from rope.base import libutils
- from rope.refactor.rename import Rename
- from rope.refactor.extract import ExtractMethod, ExtractVariable
- import rope.base.project
- import rope.base.taskhandle
-except:
- jsonMessage = {
- "error": True,
- "message": "Rope not installed",
- "traceback": "",
- "type": "ModuleNotFoundError",
- }
- sys.stderr.write(json.dumps(jsonMessage))
- sys.stderr.flush()
-
-WORKSPACE_ROOT = sys.argv[1]
-ROPE_PROJECT_FOLDER = ".vscode/.ropeproject"
-
-
-class RefactorProgress:
- """
- Refactor progress information
- """
-
- def __init__(self, name="Task Name", message=None, percent=0):
- self.name = name
- self.message = message
- self.percent = percent
-
-
-class ChangeType:
- """
- Change Type Enum
- """
-
- EDIT = 0
- NEW = 1
- DELETE = 2
-
-
-class Change:
- """ """
-
- EDIT = 0
- NEW = 1
- DELETE = 2
-
- def __init__(self, filePath, fileMode=ChangeType.EDIT, diff=""):
- self.filePath = filePath
- self.diff = diff
- self.fileMode = fileMode
-
-
-def get_diff(changeset):
- """This is a copy of the code form the ChangeSet.get_description method found in Rope."""
- new = changeset.new_contents
- old = changeset.old_contents
- if old is None:
- if changeset.resource.exists():
- old = changeset.resource.read()
- else:
- old = ""
-
- # Ensure code has a trailing empty lines, before generating a diff.
- # https://github.com/Microsoft/vscode-python/issues/695.
- old_lines = old.splitlines(True)
- if not old_lines[-1].endswith("\n"):
- old_lines[-1] = old_lines[-1] + os.linesep
- new = new + os.linesep
-
- result = difflib.unified_diff(
- old_lines,
- new.splitlines(True),
- "a/" + changeset.resource.path,
- "b/" + changeset.resource.path,
- )
- return "".join(list(result))
-
-
-class BaseRefactoring(object):
- """
- Base class for refactorings
- """
-
- def __init__(self, project, resource, name="Refactor", progressCallback=None):
- self._progressCallback = progressCallback
- self._handle = rope.base.taskhandle.TaskHandle(name)
- self._handle.add_observer(self._update_progress)
- self.project = project
- self.resource = resource
- self.changes = []
-
- def _update_progress(self):
- jobset = self._handle.current_jobset()
- if jobset and not self._progressCallback is None:
- progress = RefactorProgress()
- # getting current job set name
- if jobset.get_name() is not None:
- progress.name = jobset.get_name()
- # getting active job name
- if jobset.get_active_job_name() is not None:
- progress.message = jobset.get_active_job_name()
- # adding done percent
- percent = jobset.get_percent_done()
- if percent is not None:
- progress.percent = percent
- if not self._progressCallback is None:
- self._progressCallback(progress)
-
- def stop(self):
- self._handle.stop()
-
- def refactor(self):
- try:
- self.onRefactor()
- except rope.base.exceptions.InterruptedTaskError:
- # we can ignore this exception, as user has cancelled refactoring
- pass
-
- def onRefactor(self):
- """
- To be implemented by each base class
- """
- pass
-
-
-class RenameRefactor(BaseRefactoring):
- def __init__(
- self,
- project,
- resource,
- name="Rename",
- progressCallback=None,
- startOffset=None,
- newName="new_Name",
- ):
- BaseRefactoring.__init__(self, project, resource, name, progressCallback)
- self._newName = newName
- self.startOffset = startOffset
-
- def onRefactor(self):
- renamed = Rename(self.project, self.resource, self.startOffset)
- changes = renamed.get_changes(self._newName, task_handle=self._handle)
- for item in changes.changes:
- if isinstance(item, rope.base.change.ChangeContents):
- self.changes.append(
- Change(item.resource.real_path, ChangeType.EDIT, get_diff(item))
- )
- else:
- raise Exception("Unknown Change")
-
-
-class ExtractVariableRefactor(BaseRefactoring):
- def __init__(
- self,
- project,
- resource,
- name="Extract Variable",
- progressCallback=None,
- startOffset=None,
- endOffset=None,
- newName="new_Name",
- similar=False,
- global_=False,
- ):
- BaseRefactoring.__init__(self, project, resource, name, progressCallback)
- self._newName = newName
- self._startOffset = startOffset
- self._endOffset = endOffset
- self._similar = similar
- self._global = global_
-
- def onRefactor(self):
- renamed = ExtractVariable(
- self.project, self.resource, self._startOffset, self._endOffset
- )
- changes = renamed.get_changes(self._newName, self._similar, self._global)
- for item in changes.changes:
- if isinstance(item, rope.base.change.ChangeContents):
- self.changes.append(
- Change(item.resource.real_path, ChangeType.EDIT, get_diff(item))
- )
- else:
- raise Exception("Unknown Change")
-
-
-class ExtractMethodRefactor(ExtractVariableRefactor):
- def __init__(
- self,
- project,
- resource,
- name="Extract Method",
- progressCallback=None,
- startOffset=None,
- endOffset=None,
- newName="new_Name",
- similar=False,
- global_=False,
- ):
- ExtractVariableRefactor.__init__(
- self,
- project,
- resource,
- name,
- progressCallback,
- startOffset=startOffset,
- endOffset=endOffset,
- newName=newName,
- similar=similar,
- global_=global_,
- )
-
- def onRefactor(self):
- renamed = ExtractMethod(
- self.project, self.resource, self._startOffset, self._endOffset
- )
- changes = renamed.get_changes(self._newName, self._similar, self._global)
- for item in changes.changes:
- if isinstance(item, rope.base.change.ChangeContents):
- self.changes.append(
- Change(item.resource.real_path, ChangeType.EDIT, get_diff(item))
- )
- else:
- raise Exception("Unknown Change")
-
-
-class RopeRefactoring(object):
- def __init__(self):
- self.default_sys_path = sys.path
- self._input = io.open(sys.stdin.fileno(), encoding="utf-8")
-
- def _rename(self, filePath, start, newName, indent_size):
- """
- Renames a variable
- """
- project = rope.base.project.Project(
- WORKSPACE_ROOT,
- ropefolder=ROPE_PROJECT_FOLDER,
- save_history=False,
- indent_size=indent_size,
- )
- resourceToRefactor = libutils.path_to_resource(project, filePath)
- refactor = RenameRefactor(
- project, resourceToRefactor, startOffset=start, newName=newName
- )
- refactor.refactor()
- changes = refactor.changes
- project.close()
- valueToReturn = []
- for change in changes:
- valueToReturn.append({"diff": change.diff})
- return valueToReturn
-
- def _extractVariable(self, filePath, start, end, newName, indent_size):
- """
- Extracts a variable
- """
- project = rope.base.project.Project(
- WORKSPACE_ROOT,
- ropefolder=ROPE_PROJECT_FOLDER,
- save_history=False,
- indent_size=indent_size,
- )
- resourceToRefactor = libutils.path_to_resource(project, filePath)
- refactor = ExtractVariableRefactor(
- project,
- resourceToRefactor,
- startOffset=start,
- endOffset=end,
- newName=newName,
- similar=True,
- )
- refactor.refactor()
- changes = refactor.changes
- project.close()
- valueToReturn = []
- for change in changes:
- valueToReturn.append({"diff": change.diff})
- return valueToReturn
-
- def _extractMethod(self, filePath, start, end, newName, indent_size):
- """
- Extracts a method
- """
- project = rope.base.project.Project(
- WORKSPACE_ROOT,
- ropefolder=ROPE_PROJECT_FOLDER,
- save_history=False,
- indent_size=indent_size,
- )
- resourceToRefactor = libutils.path_to_resource(project, filePath)
- refactor = ExtractMethodRefactor(
- project,
- resourceToRefactor,
- startOffset=start,
- endOffset=end,
- newName=newName,
- similar=True,
- )
- refactor.refactor()
- changes = refactor.changes
- project.close()
- valueToReturn = []
- for change in changes:
- valueToReturn.append({"diff": change.diff})
- return valueToReturn
-
- def _serialize(self, identifier, results):
- """
- Serializes the refactor results
- """
- return json.dumps({"id": identifier, "results": results})
-
- def _deserialize(self, request):
- """Deserialize request from VSCode.
-
- Args:
- request: String with raw request from VSCode.
-
- Returns:
- Python dictionary with request data.
- """
- return json.loads(request)
-
- def _process_request(self, request):
- """Accept serialized request from VSCode and write response."""
- request = self._deserialize(request)
- lookup = request.get("lookup", "")
-
- if lookup == "":
- pass
- elif lookup == "rename":
- changes = self._rename(
- request["file"],
- int(request["start"]),
- request["name"],
- int(request["indent_size"]),
- )
- return self._write_response(self._serialize(request["id"], changes))
- elif lookup == "extract_variable":
- changes = self._extractVariable(
- request["file"],
- int(request["start"]),
- int(request["end"]),
- request["name"],
- int(request["indent_size"]),
- )
- return self._write_response(self._serialize(request["id"], changes))
- elif lookup == "extract_method":
- changes = self._extractMethod(
- request["file"],
- int(request["start"]),
- int(request["end"]),
- request["name"],
- int(request["indent_size"]),
- )
- return self._write_response(self._serialize(request["id"], changes))
-
- def _write_response(self, response):
- sys.stdout.write(response + "\n")
- sys.stdout.flush()
-
- def watch(self):
- self._write_response("STARTED")
- while True:
- try:
- self._process_request(self._input.readline())
- except:
- exc_type, exc_value, exc_tb = sys.exc_info()
- tb_info = traceback.extract_tb(exc_tb)
- jsonMessage = {
- "error": True,
- "message": str(exc_value),
- "traceback": str(tb_info),
- "type": str(exc_type),
- }
- sys.stderr.write(json.dumps(jsonMessage))
- sys.stderr.flush()
-
-
-if __name__ == "__main__":
- RopeRefactoring().watch()
diff --git a/pythonFiles/run-jedi-language-server.py b/pythonFiles/run-jedi-language-server.py
deleted file mode 100644
index 31095121409f..000000000000
--- a/pythonFiles/run-jedi-language-server.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import sys
-import os
-
-# Add the lib path to our sys path so jedi_language_server can find its references
-EXTENSION_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-sys.path.insert(0, os.path.join(EXTENSION_ROOT, "pythonFiles", "lib", "jedilsp"))
-
-
-from jedi_language_server.cli import cli
-
-sys.exit(cli())
diff --git a/pythonFiles/sortImports.py b/pythonFiles/sortImports.py
deleted file mode 100644
index 070f7883fd66..000000000000
--- a/pythonFiles/sortImports.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import io
-import os
-import os.path
-import sys
-
-isort_path = os.path.join(os.path.dirname(__file__), "lib", "python")
-sys.path.insert(0, isort_path)
-
-import isort.main
-
-isort.main.main()
diff --git a/pythonFiles/symbolProvider.py b/pythonFiles/symbolProvider.py
deleted file mode 100644
index 033ce4b99900..000000000000
--- a/pythonFiles/symbolProvider.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import ast
-import json
-import sys
-
-
-class Visitor(ast.NodeVisitor):
- def __init__(self):
- self.symbols = {"classes": [], "methods": [], "functions": []}
-
- def visit_Module(self, node):
- self.visitChildren(node)
-
- def visitChildren(self, node, namespace=""):
- for child in node.body:
- if isinstance(child, ast.FunctionDef):
- self.visitDef(child, namespace)
- if isinstance(child, ast.ClassDef):
- self.visitClassDef(child, namespace)
- try:
- if isinstance(child, ast.AsyncFunctionDef):
- self.visitDef(child, namespace)
- except Exception:
- pass
-
- def visitDef(self, node, namespace=""):
- end_position = self.getEndPosition(node)
- symbol = "functions" if namespace == "" else "methods"
- self.symbols[symbol].append(self.getDataObject(node, namespace))
-
- def visitClassDef(self, node, namespace=""):
- end_position = self.getEndPosition(node)
- self.symbols["classes"].append(self.getDataObject(node, namespace))
-
- if len(namespace) > 0:
- namespace = "{0}::{1}".format(namespace, node.name)
- else:
- namespace = node.name
- self.visitChildren(node, namespace)
-
- def getDataObject(self, node, namespace=""):
- end_position = self.getEndPosition(node)
- return {
- "namespace": namespace,
- "name": node.name,
- "range": {
- "start": {"line": node.lineno - 1, "character": node.col_offset},
- "end": {"line": end_position[0], "character": end_position[1]},
- },
- }
-
- def getEndPosition(self, node):
- if not hasattr(node, "body") or len(node.body) == 0:
- return (node.lineno - 1, node.col_offset)
- return self.getEndPosition(node.body[-1])
-
-
-def provide_symbols(source):
- """Provides a list of all symbols in provided code.
-
- The list comprises of 3-item tuples that contain the starting line number,
- ending line number and whether the statement is a single line.
-
- """
- tree = ast.parse(source)
- visitor = Visitor()
- visitor.visit(tree)
- sys.stdout.write(json.dumps(visitor.symbols))
- sys.stdout.flush()
-
-
-if __name__ == "__main__":
- if len(sys.argv) == 3:
- contents = sys.argv[2]
- else:
- with open(sys.argv[1], "r") as source:
- contents = source.read()
-
- try:
- default_encoding = sys.getdefaultencoding()
- encoded_contents = contents.encode(default_encoding, "surrogateescape")
- contents = encoded_contents.decode(default_encoding, "replace")
- except (UnicodeError, LookupError):
- pass
- if isinstance(contents, bytes):
- contents = contents.decode("utf8")
- provide_symbols(contents)
diff --git a/pythonFiles/testing_tools/adapter/__main__.py b/pythonFiles/testing_tools/adapter/__main__.py
deleted file mode 100644
index 5857c63db049..000000000000
--- a/pythonFiles/testing_tools/adapter/__main__.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-from __future__ import absolute_import
-
-import argparse
-import sys
-
-from . import pytest, report
-from .errors import UnsupportedToolError, UnsupportedCommandError
-
-
-TOOLS = {
- "pytest": {
- "_add_subparser": pytest.add_cli_subparser,
- "discover": pytest.discover,
- },
-}
-REPORTERS = {
- "discover": report.report_discovered,
-}
-
-
-def parse_args(
- # the args to parse
- argv=sys.argv[1:],
- # the program name
- prog=sys.argv[0],
-):
- """
- Return the subcommand & tool to run, along with its args.
-
- This defines the standard CLI for the different testing frameworks.
- """
- parser = argparse.ArgumentParser(
- description="Run Python testing operations.",
- prog=prog,
- # ...
- )
- cmdsubs = parser.add_subparsers(dest="cmd")
-
- # Add "run" and "debug" subcommands when ready.
- for cmdname in ["discover"]:
- sub = cmdsubs.add_parser(cmdname)
- subsubs = sub.add_subparsers(dest="tool")
- for toolname in sorted(TOOLS):
- try:
- add_subparser = TOOLS[toolname]["_add_subparser"]
- except KeyError:
- continue
- subsub = add_subparser(cmdname, toolname, subsubs)
- if cmdname == "discover":
- subsub.add_argument("--simple", action="store_true")
- subsub.add_argument(
- "--no-hide-stdio", dest="hidestdio", action="store_false"
- )
- subsub.add_argument("--pretty", action="store_true")
-
- # Parse the args!
- if "--" in argv:
- sep_index = argv.index("--")
- toolargs = argv[sep_index + 1 :]
- argv = argv[:sep_index]
- else:
- toolargs = []
- args = parser.parse_args(argv)
- ns = vars(args)
-
- cmd = ns.pop("cmd")
- if not cmd:
- parser.error("missing command")
-
- tool = ns.pop("tool")
- if not tool:
- parser.error("missing tool")
-
- return tool, cmd, ns, toolargs
-
-
-def main(
- toolname,
- cmdname,
- subargs,
- toolargs,
- # internal args (for testing):
- _tools=TOOLS,
- _reporters=REPORTERS,
-):
- try:
- tool = _tools[toolname]
- except KeyError:
- raise UnsupportedToolError(toolname)
-
- try:
- run = tool[cmdname]
- report_result = _reporters[cmdname]
- except KeyError:
- raise UnsupportedCommandError(cmdname)
-
- parents, result = run(toolargs, **subargs)
- report_result(result, parents, **subargs)
-
-
-if __name__ == "__main__":
- tool, cmd, subargs, toolargs = parse_args()
- main(tool, cmd, subargs, toolargs)
diff --git a/pythonFiles/testing_tools/adapter/pytest/__init__.py b/pythonFiles/testing_tools/adapter/pytest/__init__.py
deleted file mode 100644
index e894f7bcdb8e..000000000000
--- a/pythonFiles/testing_tools/adapter/pytest/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-from __future__ import absolute_import
-
-from ._cli import add_subparser as add_cli_subparser
-from ._discovery import discover
diff --git a/pythonFiles/testlauncher.py b/pythonFiles/testlauncher.py
deleted file mode 100644
index 25b56b7c0604..000000000000
--- a/pythonFiles/testlauncher.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import os
-import sys
-
-
-def parse_argv():
- """Parses arguments for use with the test launcher.
- Arguments are:
- 1. Working directory.
- 2. Test runner, `pytest` or `nose`
- 3. Rest of the arguments are passed into the test runner.
- """
- cwd = sys.argv[1]
- testRunner = sys.argv[2]
- args = sys.argv[3:]
- if testRunner == "nose":
- # Nose expects the program name to be first argument in vargs
- args.insert(0, sys.argv[0])
-
- return (cwd, testRunner, args)
-
-
-def run(cwd, testRunner, args):
- """Runs the test
- cwd -- the current directory to be set
- testRunner -- test runner to be used `pytest` or `nose`
- args -- arguments passed into the test runner
- """
-
- sys.path[0] = os.getcwd()
- os.chdir(cwd)
-
- try:
- if testRunner == "pytest":
- import pytest
-
- pytest.main(args)
- else:
- import nose
-
- nose.run(argv=args)
- sys.exit(0)
- finally:
- pass
-
-
-if __name__ == "__main__":
- cwd, testRunner, args = parse_argv()
- run(cwd, testRunner, args)
diff --git a/pythonFiles/tests/__main__.py b/pythonFiles/tests/__main__.py
deleted file mode 100644
index 901385d41d87..000000000000
--- a/pythonFiles/tests/__main__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import argparse
-import sys
-
-import pytest
-
-from . import DEBUG_ADAPTER_ROOT, SRC_ROOT, TEST_ROOT, TESTING_TOOLS_ROOT
-
-
-def parse_args():
- parser = argparse.ArgumentParser()
- # To mark a test as functional: (decorator) @pytest.mark.functional
- parser.add_argument(
- "--functional", dest="markers", action="append_const", const="functional"
- )
- parser.add_argument(
- "--no-functional", dest="markers", action="append_const", const="not functional"
- )
- args, remainder = parser.parse_known_args()
-
- ns = vars(args)
-
- if remainder:
- for arg in remainder:
- if arg.startswith("-") and arg not in ("-v", "--verbose", "-h", "--help"):
- specific = False
- break
- else:
- specific = True
- else:
- specific = False
- args.specific = specific
-
- return ns, remainder
-
-
-def main(pytestargs, markers=None, specific=False):
- sys.path.insert(1, TESTING_TOOLS_ROOT)
- sys.path.insert(1, DEBUG_ADAPTER_ROOT)
-
- if not specific:
- pytestargs.insert(0, TEST_ROOT)
- pytestargs.insert(0, "--rootdir")
- pytestargs.insert(1, SRC_ROOT)
- for marker in reversed(markers or ()):
- pytestargs.insert(0, marker)
- pytestargs.insert(0, "-m")
-
- ec = pytest.main(pytestargs)
- return ec
-
-
-if __name__ == "__main__":
- mainkwargs, pytestargs = parse_args()
- ec = main(pytestargs, **mainkwargs)
- sys.exit(ec)
diff --git a/pythonFiles/tests/debug_adapter/test_install_debugpy.py b/pythonFiles/tests/debug_adapter/test_install_debugpy.py
deleted file mode 100644
index 19565c19675c..000000000000
--- a/pythonFiles/tests/debug_adapter/test_install_debugpy.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import os
-import pytest
-import subprocess
-import sys
-
-
-def _check_binaries(dir_path):
- expected_endswith = (
- "win_amd64.pyd",
- "win32.pyd",
- "darwin.so",
- "i386-linux-gnu.so",
- "x86_64-linux-gnu.so",
- )
-
- binaries = list(p for p in os.listdir(dir_path) if p.endswith(expected_endswith))
-
- assert len(binaries) == len(expected_endswith)
-
-
-@pytest.mark.skipif(
- sys.version_info[:2] != (3, 7),
- reason="DEBUGPY wheels shipped for Python 3.7 only",
-)
-def test_install_debugpy(tmpdir):
- import install_debugpy
-
- install_debugpy.main(str(tmpdir))
- dir_path = os.path.join(
- str(tmpdir), "debugpy", "_vendored", "pydevd", "_pydevd_bundle"
- )
- _check_binaries(dir_path)
-
- dir_path = os.path.join(
- str(tmpdir), "debugpy", "_vendored", "pydevd", "_pydevd_frame_eval"
- )
- _check_binaries(dir_path)
diff --git a/pythonFiles/tests/test_normalize_selection.py b/pythonFiles/tests/test_normalize_selection.py
deleted file mode 100644
index 6d852e9ae43b..000000000000
--- a/pythonFiles/tests/test_normalize_selection.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-import textwrap
-
-import normalizeSelection
-
-
-class TestNormalizationScript(object):
- """Unit tests for the normalization script."""
-
- def test_basicNormalization(self):
- src = 'print("this is a test")'
- expected = src + "\n"
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_moreThanOneLine(self):
- src = textwrap.dedent(
- """\
- # Some rando comment
-
- def show_something():
- print("Something")
- """
- )
- expected = textwrap.dedent(
- """\
- def show_something():
- print("Something")
-
- """
- )
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_withHangingIndent(self):
- src = textwrap.dedent(
- """\
- x = 22
- y = 30
- z = -10
- result = x + y + z
-
- if result == 42:
- print("The answer to life, the universe, and everything")
- """
- )
- expected = textwrap.dedent(
- """\
- x = 22
- y = 30
- z = -10
- result = x + y + z
- if result == 42:
- print("The answer to life, the universe, and everything")
-
- """
- )
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_clearOutExtraneousNewlines(self):
- src = textwrap.dedent(
- """\
- value_x = 22
-
- value_y = 30
-
- value_z = -10
-
- print(value_x + value_y + value_z)
-
- """
- )
- expected = textwrap.dedent(
- """\
- value_x = 22
- value_y = 30
- value_z = -10
- print(value_x + value_y + value_z)
- """
- )
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_clearOutExtraLinesAndWhitespace(self):
- src = textwrap.dedent(
- """\
- if True:
- x = 22
-
- y = 30
-
- z = -10
-
- print(x + y + z)
-
- """
- )
- expected = textwrap.dedent(
- """\
- if True:
- x = 22
- y = 30
- z = -10
-
- print(x + y + z)
- """
- )
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_partialSingleLine(self):
- src = " print('foo')"
- expected = textwrap.dedent(src) + "\n"
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_multiLineWithIndent(self):
- src = """\
-
- if (x > 0
- and condition == True):
- print('foo')
- else:
-
- print('bar')
- """
-
- expected = textwrap.dedent(
- """\
- if (x > 0
- and condition == True):
- print('foo')
- else:
- print('bar')
-
- """
- )
-
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_multiLineWithComment(self):
- src = textwrap.dedent(
- """\
-
- def show_something():
- # A comment
- print("Something")
- """
- )
- expected = textwrap.dedent(
- """\
- def show_something():
- # A comment
- print("Something")
-
- """
- )
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_exception(self):
- src = " if True:"
- expected = src + "\n\n"
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
-
- def test_multilineException(self):
- src = textwrap.dedent(
- """\
-
- def show_something():
- if True:
- """
- )
- expected = src + "\n\n"
- result = normalizeSelection.normalize_lines(src)
- assert result == expected
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/README.md b/pythonFiles/tests/testing_tools/adapter/.data/complex/README.md
deleted file mode 100644
index e30e96142d02..000000000000
--- a/pythonFiles/tests/testing_tools/adapter/.data/complex/README.md
+++ /dev/null
@@ -1,156 +0,0 @@
-## Directory Structure
-
-```
-pythonFiles/tests/testing_tools/adapter/.data/
- tests/ # test root
- test_doctest.txt
- test_pytest.py
- test_unittest.py
- test_mixed.py
- spam.py # note: no "test_" prefix, but contains tests
- test_foo.py
- test_42.py
- test_42-43.py # note the hyphen
- testspam.py
- v/
- __init__.py
- spam.py
- test_eggs.py
- test_ham.py
- test_spam.py
- w/
- # no __init__.py
- test_spam.py
- test_spam_ex.py
- x/y/z/ # each with a __init__.py
- test_ham.py
- a/
- __init__.py
- test_spam.py
- b/
- __init__.py
- test_spam.py
-```
-
-## Tests (and Suites)
-
-basic:
-
-- `./test_foo.py::test_simple`
-- `./test_pytest.py::test_simple`
-- `./test_pytest.py::TestSpam::test_simple`
-- `./test_pytest.py::TestSpam::TestHam::TestEggs::test_simple`
-- `./test_pytest.py::TestEggs::test_simple`
-- `./test_pytest.py::TestParam::test_simple`
-- `./test_mixed.py::test_top_level`
-- `./test_mixed.py::MyTests::test_simple`
-- `./test_mixed.py::TestMySuite::test_simple`
-- `./test_unittest.py::MyTests::test_simple`
-- `./test_unittest.py::OtherTests::test_simple`
-- `./x/y/z/test_ham.py::test_simple`
-- `./x/y/z/a/test_spam.py::test_simple`
-- `./x/y/z/b/test_spam.py::test_simple`
-
-failures:
-
-- `./test_pytest.py::test_failure`
-- `./test_pytest.py::test_runtime_failed`
-- `./test_pytest.py::test_raises`
-
-skipped:
-
-- `./test_mixed.py::test_skipped`
-- `./test_mixed.py::MyTests::test_skipped`
-- `./test_pytest.py::test_runtime_skipped`
-- `./test_pytest.py::test_skipped`
-- `./test_pytest.py::test_maybe_skipped`
-- `./test_pytest.py::SpamTests::test_skipped`
-- `./test_pytest.py::test_param_13_markers[???]`
-- `./test_pytest.py::test_param_13_skipped[*]`
-- `./test_unittest.py::MyTests::test_skipped`
-- (`./test_unittest.py::MyTests::test_maybe_skipped`)
-- (`./test_unittest.py::MyTests::test_maybe_not_skipped`)
-
-in namespace package:
-
-- `./w/test_spam.py::test_simple`
-- `./w/test_spam_ex.py::test_simple`
-
-filename oddities:
-
-- `./test_42.py::test_simple`
-- `./test_42-43.py::test_simple`
-- (`./testspam.py::test_simple` not discovered by default)
-- (`./spam.py::test_simple` not discovered)
-
-imports discovered:
-
-- `./v/test_eggs.py::test_simple`
-- `./v/test_eggs.py::TestSimple::test_simple`
-- `./v/test_ham.py::test_simple`
-- `./v/test_ham.py::test_not_hard`
-- `./v/test_spam.py::test_simple`
-- `./v/test_spam.py::test_simpler`
-
-subtests:
-
-- `./test_pytest.py::test_dynamic_*`
-- `./test_pytest.py::test_param_01[]`
-- `./test_pytest.py::test_param_11[1]`
-- `./test_pytest.py::test_param_13[*]`
-- `./test_pytest.py::test_param_13_markers[*]`
-- `./test_pytest.py::test_param_13_repeat[*]`
-- `./test_pytest.py::test_param_13_skipped[*]`
-- `./test_pytest.py::test_param_23_13[*]`
-- `./test_pytest.py::test_param_23_raises[*]`
-- `./test_pytest.py::test_param_33[*]`
-- `./test_pytest.py::test_param_33_ids[*]`
-- `./test_pytest.py::TestParam::test_param_13[*]`
-- `./test_pytest.py::TestParamAll::test_param_13[*]`
-- `./test_pytest.py::TestParamAll::test_spam_13[*]`
-- `./test_pytest.py::test_fixture_param[*]`
-- `./test_pytest.py::test_param_fixture[*]`
-- `./test_pytest_param.py::test_param_13[*]`
-- `./test_pytest_param.py::TestParamAll::test_param_13[*]`
-- `./test_pytest_param.py::TestParamAll::test_spam_13[*]`
-- (`./test_unittest.py::MyTests::test_with_subtests`)
-- (`./test_unittest.py::MyTests::test_with_nested_subtests`)
-- (`./test_unittest.py::MyTests::test_dynamic_*`)
-
-For more options for pytests's parametrize(), see
-https://docs.pytest.org/en/latest/example/parametrize.html#paramexamples.
-
-using fixtures:
-
-- `./test_pytest.py::test_fixture`
-- `./test_pytest.py::test_fixture_param[*]`
-- `./test_pytest.py::test_param_fixture[*]`
-- `./test_pytest.py::test_param_mark_fixture[*]`
-
-other markers:
-
-- `./test_pytest.py::test_known_failure`
-- `./test_pytest.py::test_param_markers[2]`
-- `./test_pytest.py::test_warned`
-- `./test_pytest.py::test_custom_marker`
-- `./test_pytest.py::test_multiple_markers`
-- (`./test_unittest.py::MyTests::test_known_failure`)
-
-others not discovered:
-
-- (`./test_pytest.py::TestSpam::TestHam::TestEggs::TestNoop1`)
-- (`./test_pytest.py::TestSpam::TestNoop2`)
-- (`./test_pytest.py::TestNoop3`)
-- (`./test_pytest.py::MyTests::test_simple`)
-- (`./test_unittest.py::MyTests::TestSub1`)
-- (`./test_unittest.py::MyTests::TestSub2`)
-- (`./test_unittest.py::NoTests`)
-
-doctests:
-
-- `./test_doctest.txt::test_doctest.txt`
-- (`./test_doctest.py::test_doctest.py`)
-- (`../mod.py::mod`)
-- (`../mod.py::mod.square`)
-- (`../mod.py::mod.Spam`)
-- (`../mod.py::mod.spam.eggs`)
diff --git a/pythonFiles/tests/testing_tools/adapter/pytest/test_discovery.py b/pythonFiles/tests/testing_tools/adapter/pytest/test_discovery.py
deleted file mode 100644
index 8ef4305f40b9..000000000000
--- a/pythonFiles/tests/testing_tools/adapter/pytest/test_discovery.py
+++ /dev/null
@@ -1,1553 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-from __future__ import print_function, unicode_literals
-
-try:
- from io import StringIO
-except ImportError:
- from StringIO import StringIO # type: ignore (for Pylance)
-import os
-import sys
-import tempfile
-import unittest
-
-import pytest
-import _pytest.doctest
-
-from .... import util
-from testing_tools.adapter import util as adapter_util
-from testing_tools.adapter.pytest import _pytest_item as pytest_item
-from testing_tools.adapter import info
-from testing_tools.adapter.pytest import _discovery
-
-# In Python 3.8 __len__ is called twice, which impacts some of the test assertions we do below.
-PYTHON_38_OR_LATER = sys.version_info[0] >= 3 and sys.version_info[1] >= 8
-
-
-class StubPyTest(util.StubProxy):
- def __init__(self, stub=None):
- super(StubPyTest, self).__init__(stub, "pytest")
- self.return_main = 0
-
- def main(self, args, plugins):
- self.add_call("main", None, {"args": args, "plugins": plugins})
- return self.return_main
-
-
-class StubPlugin(util.StubProxy):
-
- _started = True
-
- def __init__(self, stub=None, tests=None):
- super(StubPlugin, self).__init__(stub, "plugin")
- if tests is None:
- tests = StubDiscoveredTests(self.stub)
- self._tests = tests
-
- def __getattr__(self, name):
- if not name.startswith("pytest_"):
- raise AttributeError(name)
-
- def func(*args, **kwargs):
- self.add_call(name, args or None, kwargs or None)
-
- return func
-
-
-class StubDiscoveredTests(util.StubProxy):
-
- NOT_FOUND = object()
-
- def __init__(self, stub=None):
- super(StubDiscoveredTests, self).__init__(stub, "discovered")
- self.return_items = []
- self.return_parents = []
-
- def __len__(self):
- self.add_call("__len__", None, None)
- return len(self.return_items)
-
- def __getitem__(self, index):
- self.add_call("__getitem__", (index,), None)
- return self.return_items[index]
-
- @property
- def parents(self):
- self.add_call("parents", None, None)
- return self.return_parents
-
- def reset(self):
- self.add_call("reset", None, None)
-
- def add_test(self, test, parents):
- self.add_call("add_test", None, {"test": test, "parents": parents})
-
-
-class FakeFunc(object):
- def __init__(self, name):
- self.__name__ = name
-
-
-class FakeMarker(object):
- def __init__(self, name):
- self.name = name
-
-
-class StubPytestItem(util.StubProxy):
-
- _debugging = False
- _hasfunc = True
-
- def __init__(self, stub=None, **attrs):
- super(StubPytestItem, self).__init__(stub, "pytest.Item")
- if attrs.get("function") is None:
- attrs.pop("function", None)
- self._hasfunc = False
-
- attrs.setdefault("user_properties", [])
-
- slots = getattr(type(self), "__slots__", None)
- if slots:
- for name, value in attrs.items():
- if name in self.__slots__:
- setattr(self, name, value)
- else:
- self.__dict__[name] = value
- else:
- self.__dict__.update(attrs)
-
- if "own_markers" not in attrs:
- self.own_markers = ()
-
- def __repr__(self):
- return object.__repr__(self)
-
- def __getattr__(self, name):
- if not self._debugging:
- self.add_call(name + " (attr)", None, None)
- if name == "function":
- if not self._hasfunc:
- raise AttributeError(name)
-
- def func(*args, **kwargs):
- self.add_call(name, args or None, kwargs or None)
-
- return func
-
-
-class StubSubtypedItem(StubPytestItem):
- @classmethod
- def from_args(cls, *args, **kwargs):
- if not hasattr(cls, "from_parent"):
- return cls(*args, **kwargs)
- self = cls.from_parent(None, name=kwargs["name"], runner=None, dtest=None)
- self.__init__(*args, **kwargs)
- return self
-
- def __init__(self, *args, **kwargs):
- super(StubSubtypedItem, self).__init__(*args, **kwargs)
- if "nodeid" in self.__dict__:
- self._nodeid = self.__dict__.pop("nodeid")
-
- @property
- def location(self):
- return self.__dict__.get("location")
-
-
-class StubFunctionItem(StubSubtypedItem, pytest.Function):
- @property
- def function(self):
- return self.__dict__.get("function")
-
-
-def create_stub_function_item(*args, **kwargs):
- return StubFunctionItem.from_args(*args, **kwargs)
-
-
-class StubDoctestItem(StubSubtypedItem, _pytest.doctest.DoctestItem):
- pass
-
-
-def create_stub_doctest_item(*args, **kwargs):
- return StubDoctestItem.from_args(*args, **kwargs)
-
-
-class StubPytestSession(util.StubProxy):
- def __init__(self, stub=None):
- super(StubPytestSession, self).__init__(stub, "pytest.Session")
-
- def __getattr__(self, name):
- self.add_call(name + " (attr)", None, None)
-
- def func(*args, **kwargs):
- self.add_call(name, args or None, kwargs or None)
-
- return func
-
-
-class StubPytestConfig(util.StubProxy):
- def __init__(self, stub=None):
- super(StubPytestConfig, self).__init__(stub, "pytest.Config")
-
- def __getattr__(self, name):
- self.add_call(name + " (attr)", None, None)
-
- def func(*args, **kwargs):
- self.add_call(name, args or None, kwargs or None)
-
- return func
-
-
-def generate_parse_item(pathsep):
- if pathsep == "\\":
-
- def normcase(path):
- path = path.lower()
- return path.replace("/", "\\")
-
- else:
- raise NotImplementedError
- ##########
- def _fix_fileid(*args):
- return adapter_util.fix_fileid(
- *args,
- **dict(
- # dependency injection
- _normcase=normcase,
- _pathsep=pathsep,
- )
- )
-
- def _normalize_test_id(*args):
- return pytest_item._normalize_test_id(
- *args,
- **dict(
- # dependency injection
- _fix_fileid=_fix_fileid,
- _pathsep=pathsep,
- )
- )
-
- def _iter_nodes(*args):
- return pytest_item._iter_nodes(
- *args,
- **dict(
- # dependency injection
- _normalize_test_id=_normalize_test_id,
- _normcase=normcase,
- _pathsep=pathsep,
- )
- )
-
- def _parse_node_id(*args):
- return pytest_item._parse_node_id(
- *args,
- **dict(
- # dependency injection
- _iter_nodes=_iter_nodes,
- )
- )
-
- ##########
- def _split_fspath(*args):
- return pytest_item._split_fspath(
- *args,
- **dict(
- # dependency injection
- _normcase=normcase,
- )
- )
-
- ##########
- def _matches_relfile(*args):
- return pytest_item._matches_relfile(
- *args,
- **dict(
- # dependency injection
- _normcase=normcase,
- _pathsep=pathsep,
- )
- )
-
- def _is_legacy_wrapper(*args):
- return pytest_item._is_legacy_wrapper(
- *args,
- **dict(
- # dependency injection
- _pathsep=pathsep,
- )
- )
-
- def _get_location(*args):
- return pytest_item._get_location(
- *args,
- **dict(
- # dependency injection
- _matches_relfile=_matches_relfile,
- _is_legacy_wrapper=_is_legacy_wrapper,
- _pathsep=pathsep,
- )
- )
-
- ##########
- def _parse_item(item):
- return pytest_item.parse_item(
- item,
- **dict(
- # dependency injection
- _parse_node_id=_parse_node_id,
- _split_fspath=_split_fspath,
- _get_location=_get_location,
- )
- )
-
- return _parse_item
-
-
-##################################
-# tests
-
-
-def fake_pytest_main(stub, use_fd, pytest_stdout):
- def ret(args, plugins):
- stub.add_call("pytest.main", None, {"args": args, "plugins": plugins})
- if use_fd:
- os.write(sys.stdout.fileno(), pytest_stdout.encode())
- else:
- print(pytest_stdout, end="")
- return 0
-
- return ret
-
-
-class DiscoverTests(unittest.TestCase):
-
- DEFAULT_ARGS = [
- "--collect-only",
- ]
-
- def test_basic(self):
- stub = util.Stub()
- stubpytest = StubPyTest(stub)
- plugin = StubPlugin(stub)
- expected = []
- plugin.discovered = expected
- calls = [
- ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
- ("discovered.parents", None, None),
- ("discovered.__len__", None, None),
- ("discovered.__getitem__", (0,), None),
- ]
-
- # In Python 3.8 __len__ is called twice.
- if PYTHON_38_OR_LATER:
- calls.insert(3, ("discovered.__len__", None, None))
-
- parents, tests = _discovery.discover(
- [], _pytest_main=stubpytest.main, _plugin=plugin
- )
-
- self.assertEqual(parents, [])
- self.assertEqual(tests, expected)
- self.assertEqual(stub.calls, calls)
-
- def test_failure(self):
- stub = util.Stub()
- pytest = StubPyTest(stub)
- pytest.return_main = 2
- plugin = StubPlugin(stub)
-
- with self.assertRaises(Exception):
- _discovery.discover([], _pytest_main=pytest.main, _plugin=plugin)
-
- self.assertEqual(
- stub.calls,
- [
- # There's only one call.
- ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
- ],
- )
-
- def test_no_tests_found(self):
- stub = util.Stub()
- pytest = StubPyTest(stub)
- pytest.return_main = 5
- plugin = StubPlugin(stub)
- expected = []
- plugin.discovered = expected
- calls = [
- ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
- ("discovered.parents", None, None),
- ("discovered.__len__", None, None),
- ("discovered.__getitem__", (0,), None),
- ]
-
- # In Python 3.8 __len__ is called twice.
- if PYTHON_38_OR_LATER:
- calls.insert(3, ("discovered.__len__", None, None))
-
- parents, tests = _discovery.discover(
- [], _pytest_main=pytest.main, _plugin=plugin
- )
-
- self.assertEqual(parents, [])
- self.assertEqual(tests, expected)
- self.assertEqual(stub.calls, calls)
-
- def test_stdio_hidden_file(self):
- stub = util.Stub()
-
- plugin = StubPlugin(stub)
- plugin.discovered = []
- calls = [
- ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
- ("discovered.parents", None, None),
- ("discovered.__len__", None, None),
- ("discovered.__getitem__", (0,), None),
- ]
- pytest_stdout = "spamspamspamspamspamspamspammityspam"
-
- # In Python 3.8 __len__ is called twice.
- if PYTHON_38_OR_LATER:
- calls.insert(3, ("discovered.__len__", None, None))
-
- # to simulate stdio behavior in methods like os.dup,
- # use actual files (rather than StringIO)
- with tempfile.TemporaryFile("r+") as mock:
- sys.stdout = mock
- try:
- _discovery.discover(
- [],
- hidestdio=True,
- _pytest_main=fake_pytest_main(stub, False, pytest_stdout),
- _plugin=plugin,
- )
- finally:
- sys.stdout = sys.__stdout__
-
- mock.seek(0)
- captured = mock.read()
-
- self.assertEqual(captured, "")
- self.assertEqual(stub.calls, calls)
-
- def test_stdio_hidden_fd(self):
- # simulate cases where stdout comes from the lower layer than sys.stdout
- # via file descriptors (e.g., from cython)
- stub = util.Stub()
- plugin = StubPlugin(stub)
- pytest_stdout = "spamspamspamspamspamspamspammityspam"
-
- # Replace with contextlib.redirect_stdout() once Python 2.7 support is dropped.
- sys.stdout = StringIO()
- try:
- _discovery.discover(
- [],
- hidestdio=True,
- _pytest_main=fake_pytest_main(stub, True, pytest_stdout),
- _plugin=plugin,
- )
- captured = sys.stdout.read()
- self.assertEqual(captured, "")
- finally:
- sys.stdout = sys.__stdout__
-
- def test_stdio_not_hidden_file(self):
- stub = util.Stub()
-
- plugin = StubPlugin(stub)
- plugin.discovered = []
- calls = [
- ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
- ("discovered.parents", None, None),
- ("discovered.__len__", None, None),
- ("discovered.__getitem__", (0,), None),
- ]
- pytest_stdout = "spamspamspamspamspamspamspammityspam"
-
- # In Python 3.8 __len__ is called twice.
- if PYTHON_38_OR_LATER:
- calls.insert(3, ("discovered.__len__", None, None))
-
- buf = StringIO()
-
- sys.stdout = buf
- try:
- _discovery.discover(
- [],
- hidestdio=False,
- _pytest_main=fake_pytest_main(stub, False, pytest_stdout),
- _plugin=plugin,
- )
- finally:
- sys.stdout = sys.__stdout__
- captured = buf.getvalue()
-
- self.assertEqual(captured, pytest_stdout)
- self.assertEqual(stub.calls, calls)
-
- def test_stdio_not_hidden_fd(self):
- # simulate cases where stdout comes from the lower layer than sys.stdout
- # via file descriptors (e.g., from cython)
- stub = util.Stub()
- plugin = StubPlugin(stub)
- pytest_stdout = "spamspamspamspamspamspamspammityspam"
- stub.calls = []
- with tempfile.TemporaryFile("r+") as mock:
- sys.stdout = mock
- try:
- _discovery.discover(
- [],
- hidestdio=False,
- _pytest_main=fake_pytest_main(stub, True, pytest_stdout),
- _plugin=plugin,
- )
- finally:
- mock.seek(0)
- captured = sys.stdout.read()
- sys.stdout = sys.__stdout__
- self.assertEqual(captured, pytest_stdout)
-
-
-class CollectorTests(unittest.TestCase):
- def test_modifyitems(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- config = StubPytestConfig(stub)
- collector = _discovery.TestCollector(tests=discovered)
-
- testroot = adapter_util.fix_path("/a/b/c")
- relfile1 = adapter_util.fix_path("./test_spam.py")
- relfile2 = adapter_util.fix_path("x/y/z/test_eggs.py")
-
- collector.pytest_collection_modifyitems(
- session,
- config,
- [
- create_stub_function_item(
- stub,
- nodeid="test_spam.py::SpamTests::test_one",
- name="test_one",
- location=("test_spam.py", 12, "SpamTests.test_one"),
- fspath=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
- function=FakeFunc("test_one"),
- ),
- create_stub_function_item(
- stub,
- nodeid="test_spam.py::SpamTests::test_other",
- name="test_other",
- location=("test_spam.py", 19, "SpamTests.test_other"),
- fspath=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
- function=FakeFunc("test_other"),
- ),
- create_stub_function_item(
- stub,
- nodeid="test_spam.py::test_all",
- name="test_all",
- location=("test_spam.py", 144, "test_all"),
- fspath=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
- function=FakeFunc("test_all"),
- ),
- create_stub_function_item(
- stub,
- nodeid="test_spam.py::test_each[10-10]",
- name="test_each[10-10]",
- location=("test_spam.py", 273, "test_each[10-10]"),
- fspath=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
- function=FakeFunc("test_each"),
- ),
- create_stub_function_item(
- stub,
- nodeid=relfile2 + "::All::BasicTests::test_first",
- name="test_first",
- location=(relfile2, 31, "All.BasicTests.test_first"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile2),
- function=FakeFunc("test_first"),
- ),
- create_stub_function_item(
- stub,
- nodeid=relfile2 + "::All::BasicTests::test_each[1+2-3]",
- name="test_each[1+2-3]",
- location=(relfile2, 62, "All.BasicTests.test_each[1+2-3]"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile2),
- function=FakeFunc("test_each"),
- own_markers=[
- FakeMarker(v)
- for v in [
- # supported
- "skip",
- "skipif",
- "xfail",
- # duplicate
- "skip",
- # ignored (pytest-supported)
- "parameterize",
- "usefixtures",
- "filterwarnings",
- # ignored (custom)
- "timeout",
- ]
- ],
- ),
- ],
- )
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./test_spam.py::SpamTests", "SpamTests", "suite"),
- ("./test_spam.py", "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./test_spam.py::SpamTests::test_one",
- name="test_one",
- path=info.SingleTestPath(
- root=testroot,
- relfile=relfile1,
- func="SpamTests.test_one",
- sub=None,
- ),
- source="{}:{}".format(relfile1, 13),
- markers=None,
- parentid="./test_spam.py::SpamTests",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./test_spam.py::SpamTests", "SpamTests", "suite"),
- ("./test_spam.py", "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./test_spam.py::SpamTests::test_other",
- name="test_other",
- path=info.SingleTestPath(
- root=testroot,
- relfile=relfile1,
- func="SpamTests.test_other",
- sub=None,
- ),
- source="{}:{}".format(relfile1, 20),
- markers=None,
- parentid="./test_spam.py::SpamTests",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./test_spam.py", "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./test_spam.py::test_all",
- name="test_all",
- path=info.SingleTestPath(
- root=testroot,
- relfile=relfile1,
- func="test_all",
- sub=None,
- ),
- source="{}:{}".format(relfile1, 145),
- markers=None,
- parentid="./test_spam.py",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./test_spam.py::test_each", "test_each", "function"),
- ("./test_spam.py", "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./test_spam.py::test_each[10-10]",
- name="test_each[10-10]",
- path=info.SingleTestPath(
- root=testroot,
- relfile=relfile1,
- func="test_each",
- sub=["[10-10]"],
- ),
- source="{}:{}".format(relfile1, 274),
- markers=None,
- parentid="./test_spam.py::test_each",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (
- "./x/y/z/test_eggs.py::All::BasicTests",
- "BasicTests",
- "suite",
- ),
- ("./x/y/z/test_eggs.py::All", "All", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::All::BasicTests::test_first",
- name="test_first",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile2),
- func="All.BasicTests.test_first",
- sub=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile2), 32
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::All::BasicTests",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (
- "./x/y/z/test_eggs.py::All::BasicTests::test_each",
- "test_each",
- "function",
- ),
- (
- "./x/y/z/test_eggs.py::All::BasicTests",
- "BasicTests",
- "suite",
- ),
- ("./x/y/z/test_eggs.py::All", "All", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::All::BasicTests::test_each[1+2-3]",
- name="test_each[1+2-3]",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile2),
- func="All.BasicTests.test_each",
- sub=["[1+2-3]"],
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile2), 63
- ),
- markers=["expected-failure", "skip", "skip-if"],
- parentid="./x/y/z/test_eggs.py::All::BasicTests::test_each",
- ),
- ),
- ),
- ],
- )
-
- def test_finish(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- session.items = [
- create_stub_function_item(
- stub,
- nodeid=relfile + "::SpamTests::test_spam",
- name="test_spam",
- location=(relfile, 12, "SpamTests.test_spam"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::SpamTests::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="SpamTests.test_spam",
- sub=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 13
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::SpamTests",
- ),
- ),
- ),
- ],
- )
-
- def test_doctest(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- doctestfile = adapter_util.fix_path("x/test_doctest.txt")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- session.items = [
- create_stub_doctest_item(
- stub,
- nodeid=doctestfile + "::test_doctest.txt",
- name="test_doctest.txt",
- location=(doctestfile, 0, "[doctest] test_doctest.txt"),
- fspath=adapter_util.PATH_JOIN(testroot, doctestfile),
- ),
- # With --doctest-modules
- create_stub_doctest_item(
- stub,
- nodeid=relfile + "::test_eggs",
- name="test_eggs",
- location=(relfile, 0, "[doctest] test_eggs"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- ),
- create_stub_doctest_item(
- stub,
- nodeid=relfile + "::test_eggs.TestSpam",
- name="test_eggs.TestSpam",
- location=(relfile, 12, "[doctest] test_eggs.TestSpam"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- ),
- create_stub_doctest_item(
- stub,
- nodeid=relfile + "::test_eggs.TestSpam.TestEggs",
- name="test_eggs.TestSpam.TestEggs",
- location=(relfile, 27, "[doctest] test_eggs.TestSpam.TestEggs"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/test_doctest.txt", "test_doctest.txt", "file"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/test_doctest.txt::test_doctest.txt",
- name="test_doctest.txt",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(doctestfile),
- func=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(doctestfile), 1
- ),
- markers=[],
- parentid="./x/test_doctest.txt",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::test_eggs",
- name="test_eggs",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func=None,
- ),
- source="{}:{}".format(adapter_util.fix_relpath(relfile), 1),
- markers=[],
- parentid="./x/y/z/test_eggs.py",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::test_eggs.TestSpam",
- name="test_eggs.TestSpam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 13
- ),
- markers=[],
- parentid="./x/y/z/test_eggs.py",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::test_eggs.TestSpam.TestEggs",
- name="test_eggs.TestSpam.TestEggs",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 28
- ),
- markers=[],
- parentid="./x/y/z/test_eggs.py",
- ),
- ),
- ),
- ],
- )
-
- def test_nested_brackets(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- session.items = [
- create_stub_function_item(
- stub,
- nodeid=relfile + "::SpamTests::test_spam[a-[b]-c]",
- name="test_spam[a-[b]-c]",
- location=(relfile, 12, "SpamTests.test_spam[a-[b]-c]"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (
- "./x/y/z/test_eggs.py::SpamTests::test_spam",
- "test_spam",
- "function",
- ),
- ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::SpamTests::test_spam[a-[b]-c]",
- name="test_spam[a-[b]-c]",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="SpamTests.test_spam",
- sub=["[a-[b]-c]"],
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 13
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::SpamTests::test_spam",
- ),
- ),
- ),
- ],
- )
-
- def test_nested_suite(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- session.items = [
- create_stub_function_item(
- stub,
- nodeid=relfile + "::SpamTests::Ham::Eggs::test_spam",
- name="test_spam",
- location=(relfile, 12, "SpamTests.Ham.Eggs.test_spam"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (
- "./x/y/z/test_eggs.py::SpamTests::Ham::Eggs",
- "Eggs",
- "suite",
- ),
- ("./x/y/z/test_eggs.py::SpamTests::Ham", "Ham", "suite"),
- ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::SpamTests::Ham::Eggs::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="SpamTests.Ham.Eggs.test_spam",
- sub=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 13
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::SpamTests::Ham::Eggs",
- ),
- ),
- ),
- ],
- )
-
- def test_windows(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = r"C:\A\B\C"
- altroot = testroot.replace("\\", "/")
- relfile = r"X\Y\Z\test_Eggs.py"
- session.items = [
- # typical:
- create_stub_function_item(
- stub,
- # pytest always uses "/" as the path separator in node IDs:
- nodeid="X/Y/Z/test_Eggs.py::SpamTests::test_spam",
- name="test_spam",
- # normal path separator (contrast with nodeid):
- location=(relfile, 12, "SpamTests.test_spam"),
- # path separator matches location:
- fspath=testroot + "\\" + relfile,
- function=FakeFunc("test_spam"),
- ),
- ]
- tests = [
- # permutations of path separators
- (r"X/test_a.py", "\\", "\\"), # typical
- (r"X/test_b.py", "\\", "/"),
- (r"X/test_c.py", "/", "\\"),
- (r"X/test_d.py", "/", "/"),
- (r"X\test_e.py", "\\", "\\"),
- (r"X\test_f.py", "\\", "/"),
- (r"X\test_g.py", "/", "\\"),
- (r"X\test_h.py", "/", "/"),
- ]
- for fileid, locfile, fspath in tests:
- if locfile == "/":
- locfile = fileid.replace("\\", "/")
- elif locfile == "\\":
- locfile = fileid.replace("/", "\\")
- if fspath == "/":
- fspath = (testroot + "/" + fileid).replace("\\", "/")
- elif fspath == "\\":
- fspath = (testroot + "/" + fileid).replace("/", "\\")
- session.items.append(
- create_stub_function_item(
- stub,
- nodeid=fileid + "::test_spam",
- name="test_spam",
- location=(locfile, 12, "test_spam"),
- fspath=fspath,
- function=FakeFunc("test_spam"),
- )
- )
- collector = _discovery.TestCollector(tests=discovered)
- if os.name != "nt":
- collector.parse_item = generate_parse_item("\\")
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/Y/Z/test_Eggs.py::SpamTests", "SpamTests", "suite"),
- (r"./X/Y/Z/test_Eggs.py", "test_Eggs.py", "file"),
- (r"./X/Y/Z", "Z", "folder"),
- (r"./X/Y", "Y", "folder"),
- (r"./X", "X", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/Y/Z/test_Eggs.py::SpamTests::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot, # not normalized
- relfile=r".\X\Y\Z\test_Eggs.py", # not normalized
- func="SpamTests.test_spam",
- sub=None,
- ),
- source=r".\X\Y\Z\test_Eggs.py:13", # not normalized
- markers=None,
- parentid=r"./X/Y/Z/test_Eggs.py::SpamTests",
- ),
- ),
- ),
- # permutations
- # (*all* the IDs use "/")
- # (source path separator should match relfile, not location)
- # /, \, \
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_a.py", "test_a.py", "file"),
- (r"./X", "X", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_a.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=r".\X\test_a.py",
- func="test_spam",
- sub=None,
- ),
- source=r".\X\test_a.py:13",
- markers=None,
- parentid=r"./X/test_a.py",
- ),
- ),
- ),
- # /, \, /
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_b.py", "test_b.py", "file"),
- (r"./X", "X", "folder"),
- (".", altroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_b.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=altroot,
- relfile=r"./X/test_b.py",
- func="test_spam",
- sub=None,
- ),
- source=r"./X/test_b.py:13",
- markers=None,
- parentid=r"./X/test_b.py",
- ),
- ),
- ),
- # /, /, \
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_c.py", "test_c.py", "file"),
- (r"./X", "X", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_c.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=r".\X\test_c.py",
- func="test_spam",
- sub=None,
- ),
- source=r".\X\test_c.py:13",
- markers=None,
- parentid=r"./X/test_c.py",
- ),
- ),
- ),
- # /, /, /
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_d.py", "test_d.py", "file"),
- (r"./X", "X", "folder"),
- (".", altroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_d.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=altroot,
- relfile=r"./X/test_d.py",
- func="test_spam",
- sub=None,
- ),
- source=r"./X/test_d.py:13",
- markers=None,
- parentid=r"./X/test_d.py",
- ),
- ),
- ),
- # \, \, \
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_e.py", "test_e.py", "file"),
- (r"./X", "X", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_e.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=r".\X\test_e.py",
- func="test_spam",
- sub=None,
- ),
- source=r".\X\test_e.py:13",
- markers=None,
- parentid=r"./X/test_e.py",
- ),
- ),
- ),
- # \, \, /
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_f.py", "test_f.py", "file"),
- (r"./X", "X", "folder"),
- (".", altroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_f.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=altroot,
- relfile=r"./X/test_f.py",
- func="test_spam",
- sub=None,
- ),
- source=r"./X/test_f.py:13",
- markers=None,
- parentid=r"./X/test_f.py",
- ),
- ),
- ),
- # \, /, \
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_g.py", "test_g.py", "file"),
- (r"./X", "X", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_g.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=r".\X\test_g.py",
- func="test_spam",
- sub=None,
- ),
- source=r".\X\test_g.py:13",
- markers=None,
- parentid=r"./X/test_g.py",
- ),
- ),
- ),
- # \, /, /
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- (r"./X/test_h.py", "test_h.py", "file"),
- (r"./X", "X", "folder"),
- (".", altroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id=r"./X/test_h.py::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=altroot,
- relfile=r"./X/test_h.py",
- func="test_spam",
- sub=None,
- ),
- source=r"./X/test_h.py:13",
- markers=None,
- parentid=r"./X/test_h.py",
- ),
- ),
- ),
- ],
- )
-
- def test_mysterious_parens(self):
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- session.items = [
- create_stub_function_item(
- stub,
- nodeid=relfile + "::SpamTests::()::()::test_spam",
- name="test_spam",
- location=(relfile, 12, "SpamTests.test_spam"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::SpamTests::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="SpamTests.test_spam",
- sub=[],
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(relfile), 13
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::SpamTests",
- ),
- ),
- ),
- ],
- )
-
- def test_imported_test(self):
- # pytest will even discover tests that were imported from
- # another module!
- stub = util.Stub()
- discovered = StubDiscoveredTests(stub)
- session = StubPytestSession(stub)
- testroot = adapter_util.fix_path("/a/b/c")
- relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
- srcfile = adapter_util.fix_path("x/y/z/_extern.py")
- session.items = [
- create_stub_function_item(
- stub,
- nodeid=relfile + "::SpamTests::test_spam",
- name="test_spam",
- location=(srcfile, 12, "SpamTests.test_spam"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- create_stub_function_item(
- stub,
- nodeid=relfile + "::test_ham",
- name="test_ham",
- location=(srcfile, 3, "test_ham"),
- fspath=adapter_util.PATH_JOIN(testroot, relfile),
- function=FakeFunc("test_spam"),
- ),
- ]
- collector = _discovery.TestCollector(tests=discovered)
-
- collector.pytest_collection_finish(session)
-
- self.maxDiff = None
- self.assertEqual(
- stub.calls,
- [
- ("discovered.reset", None, None),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::SpamTests::test_spam",
- name="test_spam",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="SpamTests.test_spam",
- sub=None,
- ),
- source="{}:{}".format(
- adapter_util.fix_relpath(srcfile), 13
- ),
- markers=None,
- parentid="./x/y/z/test_eggs.py::SpamTests",
- ),
- ),
- ),
- (
- "discovered.add_test",
- None,
- dict(
- parents=[
- ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
- ("./x/y/z", "z", "folder"),
- ("./x/y", "y", "folder"),
- ("./x", "x", "folder"),
- (".", testroot, "folder"),
- ],
- test=info.SingleTestInfo(
- id="./x/y/z/test_eggs.py::test_ham",
- name="test_ham",
- path=info.SingleTestPath(
- root=testroot,
- relfile=adapter_util.fix_relpath(relfile),
- func="test_ham",
- sub=None,
- ),
- source="{}:{}".format(adapter_util.fix_relpath(srcfile), 4),
- markers=None,
- parentid="./x/y/z/test_eggs.py",
- ),
- ),
- ),
- ],
- )
diff --git a/pythonFiles/tests/testing_tools/adapter/test_discovery.py b/pythonFiles/tests/testing_tools/adapter/test_discovery.py
deleted file mode 100644
index ec3d198b0108..000000000000
--- a/pythonFiles/tests/testing_tools/adapter/test_discovery.py
+++ /dev/null
@@ -1,675 +0,0 @@
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License.
-
-from __future__ import absolute_import, print_function
-
-import unittest
-
-from testing_tools.adapter.util import fix_path, fix_relpath
-from testing_tools.adapter.info import SingleTestInfo, SingleTestPath, ParentInfo
-from testing_tools.adapter.discovery import fix_nodeid, DiscoveredTests
-
-
-def _fix_nodeid(nodeid):
-
- nodeid = nodeid.replace("\\", "/")
- if not nodeid.startswith("./"):
- nodeid = "./" + nodeid
- return nodeid
-
-
-class DiscoveredTestsTests(unittest.TestCase):
- def test_list(self):
- testroot = fix_path("/a/b/c")
- relfile = fix_path("./test_spam.py")
- tests = [
- SingleTestInfo(
- # missing "./":
- id="test_spam.py::test_each[10-10]",
- name="test_each[10-10]",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func="test_each",
- sub=["[10-10]"],
- ),
- source="{}:{}".format(relfile, 10),
- markers=None,
- # missing "./":
- parentid="test_spam.py::test_each",
- ),
- SingleTestInfo(
- id="test_spam.py::All::BasicTests::test_first",
- name="test_first",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func="All.BasicTests.test_first",
- sub=None,
- ),
- source="{}:{}".format(relfile, 62),
- markers=None,
- parentid="test_spam.py::All::BasicTests",
- ),
- ]
- allparents = [
- [
- (fix_path("./test_spam.py::test_each"), "test_each", "function"),
- (fix_path("./test_spam.py"), "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- [
- (fix_path("./test_spam.py::All::BasicTests"), "BasicTests", "suite"),
- (fix_path("./test_spam.py::All"), "All", "suite"),
- (fix_path("./test_spam.py"), "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- ]
- expected = [
- test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
- for test in tests
- ]
- discovered = DiscoveredTests()
- for test, parents in zip(tests, allparents):
- discovered.add_test(test, parents)
- size = len(discovered)
- items = [discovered[0], discovered[1]]
- snapshot = list(discovered)
-
- self.maxDiff = None
- self.assertEqual(size, 2)
- self.assertEqual(items, expected)
- self.assertEqual(snapshot, expected)
-
- def test_reset(self):
- testroot = fix_path("/a/b/c")
- discovered = DiscoveredTests()
- discovered.add_test(
- SingleTestInfo(
- id="./test_spam.py::test_each",
- name="test_each",
- path=SingleTestPath(
- root=testroot,
- relfile="test_spam.py",
- func="test_each",
- ),
- source="test_spam.py:11",
- markers=[],
- parentid="./test_spam.py",
- ),
- [
- ("./test_spam.py", "test_spam.py", "file"),
- (".", testroot, "folder"),
- ],
- )
-
- before = len(discovered), len(discovered.parents)
- discovered.reset()
- after = len(discovered), len(discovered.parents)
-
- self.assertEqual(before, (1, 2))
- self.assertEqual(after, (0, 0))
-
- def test_parents(self):
- testroot = fix_path("/a/b/c")
- relfile = fix_path("x/y/z/test_spam.py")
- tests = [
- SingleTestInfo(
- # missing "./", using pathsep:
- id=relfile + "::test_each[10-10]",
- name="test_each[10-10]",
- path=SingleTestPath(
- root=testroot,
- relfile=fix_relpath(relfile),
- func="test_each",
- sub=["[10-10]"],
- ),
- source="{}:{}".format(relfile, 10),
- markers=None,
- # missing "./", using pathsep:
- parentid=relfile + "::test_each",
- ),
- SingleTestInfo(
- # missing "./", using pathsep:
- id=relfile + "::All::BasicTests::test_first",
- name="test_first",
- path=SingleTestPath(
- root=testroot,
- relfile=fix_relpath(relfile),
- func="All.BasicTests.test_first",
- sub=None,
- ),
- source="{}:{}".format(relfile, 61),
- markers=None,
- # missing "./", using pathsep:
- parentid=relfile + "::All::BasicTests",
- ),
- ]
- allparents = [
- # missing "./", using pathsep:
- [
- (relfile + "::test_each", "test_each", "function"),
- (relfile, relfile, "file"),
- (".", testroot, "folder"),
- ],
- # missing "./", using pathsep:
- [
- (relfile + "::All::BasicTests", "BasicTests", "suite"),
- (relfile + "::All", "All", "suite"),
- (relfile, "test_spam.py", "file"),
- (fix_path("x/y/z"), "z", "folder"),
- (fix_path("x/y"), "y", "folder"),
- (fix_path("./x"), "x", "folder"),
- (".", testroot, "folder"),
- ],
- ]
- discovered = DiscoveredTests()
- for test, parents in zip(tests, allparents):
- discovered.add_test(test, parents)
-
- parents = discovered.parents
-
- self.maxDiff = None
- self.assertEqual(
- parents,
- [
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot,
- ),
- ParentInfo(
- id="./x",
- kind="folder",
- name="x",
- root=testroot,
- relpath=fix_path("./x"),
- parentid=".",
- ),
- ParentInfo(
- id="./x/y",
- kind="folder",
- name="y",
- root=testroot,
- relpath=fix_path("./x/y"),
- parentid="./x",
- ),
- ParentInfo(
- id="./x/y/z",
- kind="folder",
- name="z",
- root=testroot,
- relpath=fix_path("./x/y/z"),
- parentid="./x/y",
- ),
- ParentInfo(
- id="./x/y/z/test_spam.py",
- kind="file",
- name="test_spam.py",
- root=testroot,
- relpath=fix_relpath(relfile),
- parentid="./x/y/z",
- ),
- ParentInfo(
- id="./x/y/z/test_spam.py::All",
- kind="suite",
- name="All",
- root=testroot,
- parentid="./x/y/z/test_spam.py",
- ),
- ParentInfo(
- id="./x/y/z/test_spam.py::All::BasicTests",
- kind="suite",
- name="BasicTests",
- root=testroot,
- parentid="./x/y/z/test_spam.py::All",
- ),
- ParentInfo(
- id="./x/y/z/test_spam.py::test_each",
- kind="function",
- name="test_each",
- root=testroot,
- parentid="./x/y/z/test_spam.py",
- ),
- ],
- )
-
- def test_add_test_simple(self):
- testroot = fix_path("/a/b/c")
- relfile = "test_spam.py"
- test = SingleTestInfo(
- # missing "./":
- id=relfile + "::test_spam",
- name="test_spam",
- path=SingleTestPath(
- root=testroot,
- # missing "./":
- relfile=relfile,
- func="test_spam",
- ),
- # missing "./":
- source="{}:{}".format(relfile, 11),
- markers=[],
- # missing "./":
- parentid=relfile,
- )
- expected = test._replace(
- id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid)
- )
- discovered = DiscoveredTests()
-
- before = list(discovered), discovered.parents
- discovered.add_test(
- test,
- [
- (relfile, relfile, "file"),
- (".", testroot, "folder"),
- ],
- )
- after = list(discovered), discovered.parents
-
- self.maxDiff = None
- self.assertEqual(before, ([], []))
- self.assertEqual(
- after,
- (
- [expected],
- [
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot,
- ),
- ParentInfo(
- id="./test_spam.py",
- kind="file",
- name=relfile,
- root=testroot,
- relpath=relfile,
- parentid=".",
- ),
- ],
- ),
- )
-
- def test_multiroot(self):
- # the first root
- testroot1 = fix_path("/a/b/c")
- relfile1 = "test_spam.py"
- alltests = [
- SingleTestInfo(
- # missing "./":
- id=relfile1 + "::test_spam",
- name="test_spam",
- path=SingleTestPath(
- root=testroot1,
- relfile=fix_relpath(relfile1),
- func="test_spam",
- ),
- source="{}:{}".format(relfile1, 10),
- markers=[],
- # missing "./":
- parentid=relfile1,
- ),
- ]
- allparents = [
- # missing "./":
- [
- (relfile1, "test_spam.py", "file"),
- (".", testroot1, "folder"),
- ],
- ]
- # the second root
- testroot2 = fix_path("/x/y/z")
- relfile2 = fix_path("w/test_eggs.py")
- alltests.extend(
- [
- SingleTestInfo(
- id=relfile2 + "::BasicTests::test_first",
- name="test_first",
- path=SingleTestPath(
- root=testroot2,
- relfile=fix_relpath(relfile2),
- func="BasicTests.test_first",
- ),
- source="{}:{}".format(relfile2, 61),
- markers=[],
- parentid=relfile2 + "::BasicTests",
- ),
- ]
- )
- allparents.extend(
- [
- # missing "./", using pathsep:
- [
- (relfile2 + "::BasicTests", "BasicTests", "suite"),
- (relfile2, "test_eggs.py", "file"),
- (fix_path("./w"), "w", "folder"),
- (".", testroot2, "folder"),
- ],
- ]
- )
-
- discovered = DiscoveredTests()
- for test, parents in zip(alltests, allparents):
- discovered.add_test(test, parents)
- tests = list(discovered)
- parents = discovered.parents
-
- self.maxDiff = None
- self.assertEqual(
- tests,
- [
- # the first root
- SingleTestInfo(
- id="./test_spam.py::test_spam",
- name="test_spam",
- path=SingleTestPath(
- root=testroot1,
- relfile=fix_relpath(relfile1),
- func="test_spam",
- ),
- source="{}:{}".format(relfile1, 10),
- markers=[],
- parentid="./test_spam.py",
- ),
- # the secondroot
- SingleTestInfo(
- id="./w/test_eggs.py::BasicTests::test_first",
- name="test_first",
- path=SingleTestPath(
- root=testroot2,
- relfile=fix_relpath(relfile2),
- func="BasicTests.test_first",
- ),
- source="{}:{}".format(relfile2, 61),
- markers=[],
- parentid="./w/test_eggs.py::BasicTests",
- ),
- ],
- )
- self.assertEqual(
- parents,
- [
- # the first root
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot1,
- ),
- ParentInfo(
- id="./test_spam.py",
- kind="file",
- name="test_spam.py",
- root=testroot1,
- relpath=fix_relpath(relfile1),
- parentid=".",
- ),
- # the secondroot
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot2,
- ),
- ParentInfo(
- id="./w",
- kind="folder",
- name="w",
- root=testroot2,
- relpath=fix_path("./w"),
- parentid=".",
- ),
- ParentInfo(
- id="./w/test_eggs.py",
- kind="file",
- name="test_eggs.py",
- root=testroot2,
- relpath=fix_relpath(relfile2),
- parentid="./w",
- ),
- ParentInfo(
- id="./w/test_eggs.py::BasicTests",
- kind="suite",
- name="BasicTests",
- root=testroot2,
- parentid="./w/test_eggs.py",
- ),
- ],
- )
-
- def test_doctest(self):
- testroot = fix_path("/a/b/c")
- doctestfile = fix_path("./x/test_doctest.txt")
- relfile = fix_path("./x/y/z/test_eggs.py")
- alltests = [
- SingleTestInfo(
- id=doctestfile + "::test_doctest.txt",
- name="test_doctest.txt",
- path=SingleTestPath(
- root=testroot,
- relfile=doctestfile,
- func=None,
- ),
- source="{}:{}".format(doctestfile, 0),
- markers=[],
- parentid=doctestfile,
- ),
- # With --doctest-modules
- SingleTestInfo(
- id=relfile + "::test_eggs",
- name="test_eggs",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func=None,
- ),
- source="{}:{}".format(relfile, 0),
- markers=[],
- parentid=relfile,
- ),
- SingleTestInfo(
- id=relfile + "::test_eggs.TestSpam",
- name="test_eggs.TestSpam",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func=None,
- ),
- source="{}:{}".format(relfile, 12),
- markers=[],
- parentid=relfile,
- ),
- SingleTestInfo(
- id=relfile + "::test_eggs.TestSpam.TestEggs",
- name="test_eggs.TestSpam.TestEggs",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func=None,
- ),
- source="{}:{}".format(relfile, 27),
- markers=[],
- parentid=relfile,
- ),
- ]
- allparents = [
- [
- (doctestfile, "test_doctest.txt", "file"),
- (fix_path("./x"), "x", "folder"),
- (".", testroot, "folder"),
- ],
- [
- (relfile, "test_eggs.py", "file"),
- (fix_path("./x/y/z"), "z", "folder"),
- (fix_path("./x/y"), "y", "folder"),
- (fix_path("./x"), "x", "folder"),
- (".", testroot, "folder"),
- ],
- [
- (relfile, "test_eggs.py", "file"),
- (fix_path("./x/y/z"), "z", "folder"),
- (fix_path("./x/y"), "y", "folder"),
- (fix_path("./x"), "x", "folder"),
- (".", testroot, "folder"),
- ],
- [
- (relfile, "test_eggs.py", "file"),
- (fix_path("./x/y/z"), "z", "folder"),
- (fix_path("./x/y"), "y", "folder"),
- (fix_path("./x"), "x", "folder"),
- (".", testroot, "folder"),
- ],
- ]
- expected = [
- test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
- for test in alltests
- ]
-
- discovered = DiscoveredTests()
-
- for test, parents in zip(alltests, allparents):
- discovered.add_test(test, parents)
- tests = list(discovered)
- parents = discovered.parents
-
- self.maxDiff = None
- self.assertEqual(tests, expected)
- self.assertEqual(
- parents,
- [
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot,
- ),
- ParentInfo(
- id="./x",
- kind="folder",
- name="x",
- root=testroot,
- relpath=fix_path("./x"),
- parentid=".",
- ),
- ParentInfo(
- id="./x/test_doctest.txt",
- kind="file",
- name="test_doctest.txt",
- root=testroot,
- relpath=fix_path(doctestfile),
- parentid="./x",
- ),
- ParentInfo(
- id="./x/y",
- kind="folder",
- name="y",
- root=testroot,
- relpath=fix_path("./x/y"),
- parentid="./x",
- ),
- ParentInfo(
- id="./x/y/z",
- kind="folder",
- name="z",
- root=testroot,
- relpath=fix_path("./x/y/z"),
- parentid="./x/y",
- ),
- ParentInfo(
- id="./x/y/z/test_eggs.py",
- kind="file",
- name="test_eggs.py",
- root=testroot,
- relpath=fix_relpath(relfile),
- parentid="./x/y/z",
- ),
- ],
- )
-
- def test_nested_suite_simple(self):
- testroot = fix_path("/a/b/c")
- relfile = fix_path("./test_eggs.py")
- alltests = [
- SingleTestInfo(
- id=relfile + "::TestOuter::TestInner::test_spam",
- name="test_spam",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func="TestOuter.TestInner.test_spam",
- ),
- source="{}:{}".format(relfile, 10),
- markers=None,
- parentid=relfile + "::TestOuter::TestInner",
- ),
- SingleTestInfo(
- id=relfile + "::TestOuter::TestInner::test_eggs",
- name="test_eggs",
- path=SingleTestPath(
- root=testroot,
- relfile=relfile,
- func="TestOuter.TestInner.test_eggs",
- ),
- source="{}:{}".format(relfile, 21),
- markers=None,
- parentid=relfile + "::TestOuter::TestInner",
- ),
- ]
- allparents = [
- [
- (relfile + "::TestOuter::TestInner", "TestInner", "suite"),
- (relfile + "::TestOuter", "TestOuter", "suite"),
- (relfile, "test_eggs.py", "file"),
- (".", testroot, "folder"),
- ],
- [
- (relfile + "::TestOuter::TestInner", "TestInner", "suite"),
- (relfile + "::TestOuter", "TestOuter", "suite"),
- (relfile, "test_eggs.py", "file"),
- (".", testroot, "folder"),
- ],
- ]
- expected = [
- test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
- for test in alltests
- ]
-
- discovered = DiscoveredTests()
- for test, parents in zip(alltests, allparents):
- discovered.add_test(test, parents)
- tests = list(discovered)
- parents = discovered.parents
-
- self.maxDiff = None
- self.assertEqual(tests, expected)
- self.assertEqual(
- parents,
- [
- ParentInfo(
- id=".",
- kind="folder",
- name=testroot,
- ),
- ParentInfo(
- id="./test_eggs.py",
- kind="file",
- name="test_eggs.py",
- root=testroot,
- relpath=fix_relpath(relfile),
- parentid=".",
- ),
- ParentInfo(
- id="./test_eggs.py::TestOuter",
- kind="suite",
- name="TestOuter",
- root=testroot,
- parentid="./test_eggs.py",
- ),
- ParentInfo(
- id="./test_eggs.py::TestOuter::TestInner",
- kind="suite",
- name="TestInner",
- root=testroot,
- parentid="./test_eggs.py::TestOuter",
- ),
- ],
- )
diff --git a/pythonFiles/.env b/python_files/.env
similarity index 100%
rename from pythonFiles/.env
rename to python_files/.env
diff --git a/pythonFiles/.vscode/settings.json b/python_files/.vscode/settings.json
similarity index 100%
rename from pythonFiles/.vscode/settings.json
rename to python_files/.vscode/settings.json
diff --git a/pythonFiles/Notebooks intro.ipynb b/python_files/Notebooks intro.ipynb
similarity index 100%
rename from pythonFiles/Notebooks intro.ipynb
rename to python_files/Notebooks intro.ipynb
diff --git a/python_files/create_conda.py b/python_files/create_conda.py
new file mode 100644
index 000000000000..15320a8a1ce6
--- /dev/null
+++ b/python_files/create_conda.py
@@ -0,0 +1,131 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import os
+import pathlib
+import subprocess
+import sys
+from typing import Optional, Sequence, Union
+
+CONDA_ENV_NAME = ".conda"
+CWD = pathlib.Path.cwd()
+
+
+class VenvError(Exception):
+ pass
+
+
+def parse_args(argv: Sequence[str]) -> argparse.Namespace:
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "--python",
+ action="store",
+ help="Python version to install in the virtual environment.",
+ default=f"{sys.version_info.major}.{sys.version_info.minor}",
+ )
+ parser.add_argument(
+ "--install",
+ action="store_true",
+ default=False,
+ help="Install packages into the virtual environment.",
+ )
+ parser.add_argument(
+ "--git-ignore",
+ action="store_true",
+ default=False,
+ help="Add .gitignore to the newly created virtual environment.",
+ )
+ parser.add_argument(
+ "--name",
+ default=CONDA_ENV_NAME,
+ type=str,
+ help="Name of the virtual environment.",
+ metavar="NAME",
+ action="store",
+ )
+ return parser.parse_args(argv)
+
+
+def file_exists(path: Union[str, pathlib.PurePath]) -> bool:
+ return os.path.exists(path)
+
+
+def conda_env_exists(name: Union[str, pathlib.PurePath]) -> bool:
+ return os.path.exists(CWD / name)
+
+
+def run_process(args: Sequence[str], error_message: str) -> None:
+ try:
+ print("Running: " + " ".join(args))
+ subprocess.run(args, cwd=os.getcwd(), check=True)
+ except subprocess.CalledProcessError:
+ raise VenvError(error_message)
+
+
+def get_conda_env_path(name: str) -> str:
+ return os.fspath(CWD / name)
+
+
+def install_packages(env_path: str) -> None:
+ yml = os.fspath(CWD / "environment.yml")
+ if file_exists(yml):
+ print(f"CONDA_INSTALLING_YML: {yml}")
+ run_process(
+ [
+ sys.executable,
+ "-m",
+ "conda",
+ "env",
+ "update",
+ "--prefix",
+ env_path,
+ "--file",
+ yml,
+ ],
+ "CREATE_CONDA.FAILED_INSTALL_YML",
+ )
+ print("CREATE_CONDA.INSTALLED_YML")
+
+
+def add_gitignore(name: str) -> None:
+ git_ignore = os.fspath(CWD / name / ".gitignore")
+ if not file_exists(git_ignore):
+ print(f"Creating: {git_ignore}")
+ with open(git_ignore, "w") as f:
+ f.write("*")
+
+
+def main(argv: Optional[Sequence[str]] = None) -> None:
+ if argv is None:
+ argv = []
+ args = parse_args(argv)
+
+ if conda_env_exists(args.name):
+ env_path = get_conda_env_path(args.name)
+ print(f"EXISTING_CONDA_ENV:{env_path}")
+ else:
+ run_process(
+ [
+ sys.executable,
+ "-m",
+ "conda",
+ "create",
+ "--yes",
+ "--prefix",
+ args.name,
+ f"python={args.python}",
+ ],
+ "CREATE_CONDA.ENV_FAILED_CREATION",
+ )
+ env_path = get_conda_env_path(args.name)
+ print(f"CREATED_CONDA_ENV:{env_path}")
+ if args.git_ignore:
+ add_gitignore(args.name)
+
+ if args.install:
+ install_packages(env_path)
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
diff --git a/python_files/create_microvenv.py b/python_files/create_microvenv.py
new file mode 100644
index 000000000000..10eae38ab977
--- /dev/null
+++ b/python_files/create_microvenv.py
@@ -0,0 +1,60 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import os
+import pathlib
+import subprocess
+import sys
+from typing import Optional, Sequence
+
+VENV_NAME = ".venv"
+LIB_ROOT = pathlib.Path(__file__).parent / "lib" / "python"
+CWD = pathlib.Path.cwd()
+
+
+class MicroVenvError(Exception):
+ pass
+
+
+def run_process(args: Sequence[str], error_message: str) -> None:
+ try:
+ print("Running: " + " ".join(args))
+ subprocess.run(args, cwd=os.getcwd(), check=True)
+ except subprocess.CalledProcessError:
+ raise MicroVenvError(error_message)
+
+
+def parse_args(argv: Sequence[str]) -> argparse.Namespace:
+ parser = argparse.ArgumentParser()
+
+ parser.add_argument(
+ "--name",
+ default=VENV_NAME,
+ type=str,
+ help="Name of the virtual environment.",
+ metavar="NAME",
+ action="store",
+ )
+ return parser.parse_args(argv)
+
+
+def create_microvenv(name: str):
+ run_process(
+ [sys.executable, os.fspath(LIB_ROOT / "microvenv.py"), name],
+ "CREATE_MICROVENV.MICROVENV_FAILED_CREATION",
+ )
+
+
+def main(argv: Optional[Sequence[str]] = None) -> None:
+ if argv is None:
+ argv = []
+ args = parse_args(argv)
+
+ print("CREATE_MICROVENV.CREATING_MICROVENV")
+ create_microvenv(args.name)
+ print("CREATE_MICROVENV.CREATED_MICROVENV")
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
diff --git a/python_files/create_venv.py b/python_files/create_venv.py
new file mode 100644
index 000000000000..94724923cda5
--- /dev/null
+++ b/python_files/create_venv.py
@@ -0,0 +1,258 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import importlib.util as import_util
+import json
+import os
+import pathlib
+import subprocess
+import sys
+import urllib.request as url_lib
+from typing import List, Optional, Sequence, Union
+
+VENV_NAME = ".venv"
+CWD = pathlib.Path.cwd()
+MICROVENV_SCRIPT_PATH = pathlib.Path(__file__).parent / "create_microvenv.py"
+
+
+class VenvError(Exception):
+ pass
+
+
+def parse_args(argv: Sequence[str]) -> argparse.Namespace:
+ parser = argparse.ArgumentParser()
+
+ parser.add_argument(
+ "--requirements",
+ action="append",
+ default=[],
+ help="Install additional dependencies into the virtual environment.",
+ )
+
+ parser.add_argument(
+ "--toml",
+ action="store",
+ default=None,
+ help="Install additional dependencies from sources like `pyproject.toml` into the virtual environment.",
+ )
+
+ parser.add_argument(
+ "--extras",
+ action="append",
+ default=[],
+ help="Install specific package groups from `pyproject.toml` into the virtual environment.",
+ )
+
+ parser.add_argument(
+ "--git-ignore",
+ action="store_true",
+ default=False,
+ help="Add .gitignore to the newly created virtual environment.",
+ )
+
+ parser.add_argument(
+ "--name",
+ default=VENV_NAME,
+ type=str,
+ help="Name of the virtual environment.",
+ metavar="NAME",
+ action="store",
+ )
+
+ parser.add_argument(
+ "--stdin",
+ action="store_true",
+ default=False,
+ help="Read arguments from stdin.",
+ )
+
+ return parser.parse_args(argv)
+
+
+def is_installed(module: str) -> bool:
+ return import_util.find_spec(module) is not None
+
+
+def file_exists(path: Union[str, pathlib.PurePath]) -> bool:
+ return pathlib.Path(path).exists()
+
+
+def venv_exists(name: str) -> bool:
+ return (
+ (CWD / name).exists()
+ and (CWD / name / "pyvenv.cfg").exists()
+ and file_exists(get_venv_path(name))
+ )
+
+
+def run_process(args: Sequence[str], error_message: str) -> None:
+ try:
+ print("Running: " + " ".join(args))
+ subprocess.run(args, cwd=os.getcwd(), check=True)
+ except subprocess.CalledProcessError:
+ raise VenvError(error_message)
+
+
+def get_venv_path(name: str) -> str:
+ # See `venv` doc here for more details on binary location:
+ # https://docs.python.org/3/library/venv.html#creating-virtual-environments
+ if sys.platform == "win32":
+ return os.fspath(CWD / name / "Scripts" / "python.exe")
+ else:
+ return os.fspath(CWD / name / "bin" / "python")
+
+
+def install_requirements(venv_path: str, requirements: List[str]) -> None:
+ if not requirements:
+ return
+
+ for requirement in requirements:
+ print(f"VENV_INSTALLING_REQUIREMENTS: {requirement}")
+ run_process(
+ [venv_path, "-m", "pip", "install", "-r", requirement],
+ "CREATE_VENV.PIP_FAILED_INSTALL_REQUIREMENTS",
+ )
+ print("CREATE_VENV.PIP_INSTALLED_REQUIREMENTS")
+
+
+def install_toml(venv_path: str, extras: List[str]) -> None:
+ args = "." if len(extras) == 0 else f".[{','.join(extras)}]"
+ run_process(
+ [venv_path, "-m", "pip", "install", "-e", args],
+ "CREATE_VENV.PIP_FAILED_INSTALL_PYPROJECT",
+ )
+ print("CREATE_VENV.PIP_INSTALLED_PYPROJECT")
+
+
+def upgrade_pip(venv_path: str) -> None:
+ print("CREATE_VENV.UPGRADING_PIP")
+ run_process(
+ [venv_path, "-m", "pip", "install", "--upgrade", "pip"],
+ "CREATE_VENV.UPGRADE_PIP_FAILED",
+ )
+ print("CREATE_VENV.UPGRADED_PIP")
+
+
+def add_gitignore(name: str) -> None:
+ git_ignore = CWD / name / ".gitignore"
+ if not file_exists(git_ignore):
+ print("Creating: " + os.fspath(git_ignore))
+ with open(git_ignore, "w") as f:
+ f.write("*")
+
+
+def download_pip_pyz(name: str):
+ url = "https://bootstrap.pypa.io/pip/pip.pyz"
+ print("CREATE_VENV.DOWNLOADING_PIP")
+
+ try:
+ with url_lib.urlopen(url) as response:
+ pip_pyz_path = os.fspath(CWD / name / "pip.pyz")
+ with open(pip_pyz_path, "wb") as out_file:
+ data = response.read()
+ out_file.write(data)
+ out_file.flush()
+ except Exception:
+ raise VenvError("CREATE_VENV.DOWNLOAD_PIP_FAILED")
+
+
+def install_pip(name: str):
+ pip_pyz_path = os.fspath(CWD / name / "pip.pyz")
+ executable = get_venv_path(name)
+ print("CREATE_VENV.INSTALLING_PIP")
+ run_process(
+ [executable, pip_pyz_path, "install", "pip"],
+ "CREATE_VENV.INSTALL_PIP_FAILED",
+ )
+
+
+def get_requirements_from_args(args: argparse.Namespace) -> List[str]:
+ requirements = []
+ if args.stdin:
+ data = json.loads(sys.stdin.read())
+ requirements = data.get("requirements", [])
+ if args.requirements:
+ requirements.extend(args.requirements)
+ return requirements
+
+
+def main(argv: Optional[Sequence[str]] = None) -> None:
+ if argv is None:
+ argv = []
+ args = parse_args(argv)
+
+ use_micro_venv = False
+ venv_installed = is_installed("venv")
+ pip_installed = is_installed("pip")
+ ensure_pip_installed = is_installed("ensurepip")
+ distutils_installed = is_installed("distutils")
+
+ if not venv_installed:
+ if sys.platform == "win32":
+ raise VenvError("CREATE_VENV.VENV_NOT_FOUND")
+ else:
+ use_micro_venv = True
+ if not distutils_installed:
+ print("Install `python3-distutils` package or equivalent for your OS.")
+ print("On Debian/Ubuntu: `sudo apt install python3-distutils`")
+ raise VenvError("CREATE_VENV.DISTUTILS_NOT_INSTALLED")
+
+ if venv_exists(args.name):
+ # A virtual environment with same name exists.
+ # We will use the existing virtual environment.
+ venv_path = get_venv_path(args.name)
+ print(f"EXISTING_VENV:{venv_path}")
+ else:
+ if use_micro_venv:
+ # `venv` was not found but on this platform we can use `microvenv`
+ run_process(
+ [
+ sys.executable,
+ os.fspath(MICROVENV_SCRIPT_PATH),
+ "--name",
+ args.name,
+ ],
+ "CREATE_VENV.MICROVENV_FAILED_CREATION",
+ )
+ elif not pip_installed or not ensure_pip_installed:
+ # `venv` was found but `pip` or `ensurepip` was not found.
+ # We create a venv without `pip` in it. We will later install `pip`.
+ run_process(
+ [sys.executable, "-m", "venv", "--without-pip", args.name],
+ "CREATE_VENV.VENV_FAILED_CREATION",
+ )
+ else:
+ # Both `venv` and `pip` were found. So create a .venv normally
+ run_process(
+ [sys.executable, "-m", "venv", args.name],
+ "CREATE_VENV.VENV_FAILED_CREATION",
+ )
+
+ venv_path = get_venv_path(args.name)
+ print(f"CREATED_VENV:{venv_path}")
+
+ if args.git_ignore:
+ add_gitignore(args.name)
+
+ # At this point we have a .venv. Now we handle installing `pip`.
+ if pip_installed and ensure_pip_installed:
+ # We upgrade pip if it is already installed.
+ upgrade_pip(venv_path)
+ else:
+ # `pip` was not found, so we download it and install it.
+ download_pip_pyz(args.name)
+ install_pip(args.name)
+
+ requirements = get_requirements_from_args(args)
+ if requirements:
+ print(f"VENV_INSTALLING_REQUIREMENTS: {requirements}")
+ install_requirements(venv_path, requirements)
+
+ if args.toml:
+ print(f"VENV_INSTALLING_PYPROJECT: {args.toml}")
+ install_toml(venv_path, args.extras)
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
diff --git a/python_files/deactivate/bash/deactivate b/python_files/deactivate/bash/deactivate
new file mode 100755
index 000000000000..f6dd33425d1a
--- /dev/null
+++ b/python_files/deactivate/bash/deactivate
@@ -0,0 +1,44 @@
+# Same as deactivate in "/bin/activate"
+deactivate () {
+ if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+ PATH="${_OLD_VIRTUAL_PATH:-}"
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ fi
+ if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+ PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
+ export PYTHONHOME
+ unset _OLD_VIRTUAL_PYTHONHOME
+ fi
+ if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+ hash -r 2> /dev/null
+ fi
+ if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+ PS1="${_OLD_VIRTUAL_PS1:-}"
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ fi
+ unset VIRTUAL_ENV
+ unset VIRTUAL_ENV_PROMPT
+ if [ ! "${1:-}" = "nondestructive" ] ; then
+ unset -f deactivate
+ fi
+}
+
+# Get the directory of the current script
+SCRIPT_DIR=$(dirname "$0")
+# Construct the path to envVars.txt relative to the script directory
+ENV_FILE="$SCRIPT_DIR/envVars.txt"
+
+# Read the JSON file and set the variables
+TEMP_PS1=$(grep '^PS1=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PATH=$(grep '^PATH=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PYTHONHOME=$(grep '^PYTHONHOME=' $ENV_FILE | cut -d '=' -f 2)
+# Initialize the variables required by deactivate function
+_OLD_VIRTUAL_PS1="${TEMP_PS1:-}"
+_OLD_VIRTUAL_PATH="$TEMP_PATH"
+if [ -n "${PYTHONHOME:-}" ] ; then
+ _OLD_VIRTUAL_PYTHONHOME="${TEMP_PYTHONHOME:-}"
+fi
+deactivate
+bash
diff --git a/python_files/deactivate/fish/deactivate b/python_files/deactivate/fish/deactivate
new file mode 100755
index 000000000000..3a9d50ccde2b
--- /dev/null
+++ b/python_files/deactivate/fish/deactivate
@@ -0,0 +1,44 @@
+# Same as deactivate in "/bin/activate"
+deactivate () {
+ if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+ PATH="${_OLD_VIRTUAL_PATH:-}"
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ fi
+ if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+ PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
+ export PYTHONHOME
+ unset _OLD_VIRTUAL_PYTHONHOME
+ fi
+ if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+ hash -r 2> /dev/null
+ fi
+ if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+ PS1="${_OLD_VIRTUAL_PS1:-}"
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ fi
+ unset VIRTUAL_ENV
+ unset VIRTUAL_ENV_PROMPT
+ if [ ! "${1:-}" = "nondestructive" ] ; then
+ unset -f deactivate
+ fi
+}
+
+# Get the directory of the current script
+SCRIPT_DIR=$(dirname "$0")
+# Construct the path to envVars.txt relative to the script directory
+ENV_FILE="$SCRIPT_DIR/envVars.txt"
+
+# Read the JSON file and set the variables
+TEMP_PS1=$(grep '^PS1=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PATH=$(grep '^PATH=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PYTHONHOME=$(grep '^PYTHONHOME=' $ENV_FILE | cut -d '=' -f 2)
+# Initialize the variables required by deactivate function
+_OLD_VIRTUAL_PS1="${TEMP_PS1:-}"
+_OLD_VIRTUAL_PATH="$TEMP_PATH"
+if [ -n "${PYTHONHOME:-}" ] ; then
+ _OLD_VIRTUAL_PYTHONHOME="${TEMP_PYTHONHOME:-}"
+fi
+deactivate
+fish
diff --git a/python_files/deactivate/powershell/deactivate.ps1 b/python_files/deactivate/powershell/deactivate.ps1
new file mode 100644
index 000000000000..49365e0fbeff
--- /dev/null
+++ b/python_files/deactivate/powershell/deactivate.ps1
@@ -0,0 +1,11 @@
+# Load dotenv-style file and restore environment variables
+Get-Content -Path "$PSScriptRoot\envVars.txt" | ForEach-Object {
+ # Split each line into key and value at the first '='
+ $parts = $_ -split '=', 2
+ if ($parts.Count -eq 2) {
+ $key = $parts[0].Trim()
+ $value = $parts[1].Trim()
+ # Set the environment variable
+ Set-Item -Path "env:$key" -Value $value
+ }
+}
diff --git a/python_files/deactivate/zsh/deactivate b/python_files/deactivate/zsh/deactivate
new file mode 100755
index 000000000000..8b059318f988
--- /dev/null
+++ b/python_files/deactivate/zsh/deactivate
@@ -0,0 +1,44 @@
+# Same as deactivate in "/bin/activate"
+deactivate () {
+ if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+ PATH="${_OLD_VIRTUAL_PATH:-}"
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ fi
+ if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+ PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
+ export PYTHONHOME
+ unset _OLD_VIRTUAL_PYTHONHOME
+ fi
+ if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+ hash -r 2> /dev/null
+ fi
+ if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+ PS1="${_OLD_VIRTUAL_PS1:-}"
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ fi
+ unset VIRTUAL_ENV
+ unset VIRTUAL_ENV_PROMPT
+ if [ ! "${1:-}" = "nondestructive" ] ; then
+ unset -f deactivate
+ fi
+}
+
+# Get the directory of the current script
+SCRIPT_DIR=$(dirname "$0")
+# Construct the path to envVars.txt relative to the script directory
+ENV_FILE="$SCRIPT_DIR/envVars.txt"
+
+# Read the JSON file and set the variables
+TEMP_PS1=$(grep '^PS1=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PATH=$(grep '^PATH=' $ENV_FILE | cut -d '=' -f 2)
+TEMP_PYTHONHOME=$(grep '^PYTHONHOME=' $ENV_FILE | cut -d '=' -f 2)
+# Initialize the variables required by deactivate function
+_OLD_VIRTUAL_PS1="${TEMP_PS1:-}"
+_OLD_VIRTUAL_PATH="$TEMP_PATH"
+if [ -n "${PYTHONHOME:-}" ] ; then
+ _OLD_VIRTUAL_PYTHONHOME="${TEMP_PYTHONHOME:-}"
+fi
+deactivate
+zsh
diff --git a/python_files/download_get_pip.py b/python_files/download_get_pip.py
new file mode 100644
index 000000000000..0df610ef3547
--- /dev/null
+++ b/python_files/download_get_pip.py
@@ -0,0 +1,59 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import json
+import os
+import pathlib
+import urllib.request as url_lib
+from packaging.version import parse as version_parser
+
+EXTENSION_ROOT = pathlib.Path(__file__).parent.parent
+GET_PIP_DEST = EXTENSION_ROOT / "python_files"
+PIP_PACKAGE = "pip"
+PIP_VERSION = "latest" # Can be "latest", or specific version "23.1.2"
+
+
+def _get_package_data():
+ json_uri = "https://pypi.org/pypi/{0}/json".format(PIP_PACKAGE)
+ # Response format: https://warehouse.readthedocs.io/api-reference/json/#project
+ # Release metadata format: https://github.com/pypa/interoperability-peps/blob/master/pep-0426-core-metadata.rst
+ with url_lib.urlopen(json_uri) as response:
+ return json.loads(response.read())
+
+
+def _download_and_save(root, version):
+ root = os.getcwd() if root is None or root == "." else root
+ url = f"https://raw.githubusercontent.com/pypa/get-pip/{version}/public/get-pip.py"
+ print(url)
+ with url_lib.urlopen(url) as response:
+ data = response.read()
+ get_pip_file = pathlib.Path(root) / "get-pip.py"
+ get_pip_file.write_bytes(data)
+
+
+def main(root):
+ data = _get_package_data()
+
+ if PIP_VERSION == "latest":
+ # Pick latest 5 versions to try and get-pip
+ sorted_versions = sorted(data["releases"].keys(), key=version_parser, reverse=True)[:5]
+ downloaded = False
+ while sorted_versions:
+ use_version = sorted_versions.pop(0)
+ try:
+ print(f"Trying version: get-pip == {use_version}")
+ _download_and_save(root, use_version)
+ downloaded = True
+ break
+ except Exception as e:
+ print(f"Failed to download get-pip == {use_version}: {e}")
+ print(f"NExt attempt(s) with versions: {sorted_versions}")
+ if not downloaded:
+ raise Exception("Failed to download get-pip.py")
+ else:
+ use_version = PIP_VERSION
+ _download_and_save(root, use_version)
+
+
+if __name__ == "__main__":
+ main(GET_PIP_DEST)
diff --git a/python_files/get_output_via_markers.py b/python_files/get_output_via_markers.py
new file mode 100644
index 000000000000..00dd57065b3c
--- /dev/null
+++ b/python_files/get_output_via_markers.py
@@ -0,0 +1,32 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import runpy
+import sys
+
+# Sometimes executing scripts can print out stuff before the actual output is
+# printed. For eg. when activating conda. Hence, printing out markers to make
+# it more resilient to pull the output.
+print(">>>PYTHON-EXEC-OUTPUT")
+
+module = sys.argv[1]
+try:
+ if module == "-c":
+ ns = {}
+ code = sys.argv[2]
+ del sys.argv[2]
+ del sys.argv[0]
+ exec(code, ns, ns)
+ elif module.startswith("-m"):
+ moduleName = sys.argv[2]
+ sys.argv = sys.argv[2:] # It should begin with the module name.
+ runpy.run_module(moduleName, run_name="__main__", alter_sys=True)
+ elif module.endswith(".py"):
+ sys.argv = sys.argv[1:]
+ runpy.run_path(module, run_name="__main__")
+ elif module.startswith("-"):
+ raise NotImplementedError(sys.argv)
+ else:
+ runpy.run_module(module, run_name="__main__", alter_sys=True)
+finally:
+ print("<< Optional[Requirement]:
+ try:
+ req = Requirement(line.strip("\\"))
+ if req.marker is None:
+ return req
+ elif req.marker.evaluate():
+ return req
+ except Exception:
+ pass
+ return None
+
+
+def process_requirements(req_file: pathlib.Path) -> List[Dict[str, Union[str, int]]]:
+ diagnostics = []
+ for n, line in enumerate(req_file.read_text(encoding="utf-8").splitlines()):
+ if line.startswith(("#", "-", " ")) or line == "":
+ continue
+
+ req = parse_requirements(line)
+ if req:
+ try:
+ # Check if package is installed
+ metadata(req.name)
+ except Exception:
+ diagnostics.append(
+ {
+ "line": n,
+ "character": 0,
+ "endLine": n,
+ "endCharacter": len(req.name),
+ "package": req.name,
+ "code": "not-installed",
+ "severity": SEVERITY,
+ }
+ )
+ return diagnostics
+
+
+def get_pos(lines: List[str], text: str) -> Tuple[int, int, int, int]:
+ for n, line in enumerate(lines):
+ index = line.find(text)
+ if index >= 0:
+ return n, index, n, index + len(text)
+ return (0, 0, 0, 0)
+
+
+def process_pyproject(req_file: pathlib.Path) -> List[Dict[str, Union[str, int]]]:
+ diagnostics = []
+ try:
+ raw_text = req_file.read_text(encoding="utf-8")
+ pyproject = tomli.loads(raw_text)
+ except Exception:
+ return diagnostics
+
+ lines = raw_text.splitlines()
+ reqs = pyproject.get("project", {}).get("dependencies", [])
+ for raw_req in reqs:
+ req = parse_requirements(raw_req)
+ n, start, _, end = get_pos(lines, raw_req)
+ if req:
+ try:
+ # Check if package is installed
+ metadata(req.name)
+ except Exception:
+ diagnostics.append(
+ {
+ "line": n,
+ "character": start,
+ "endLine": n,
+ "endCharacter": end,
+ "package": req.name,
+ "code": "not-installed",
+ "severity": SEVERITY,
+ }
+ )
+ return diagnostics
+
+
+def get_diagnostics(req_file: pathlib.Path) -> List[Dict[str, Union[str, int]]]:
+ diagnostics = []
+ if not req_file.exists():
+ return diagnostics
+
+ if req_file.name == "pyproject.toml":
+ diagnostics = process_pyproject(req_file)
+ else:
+ diagnostics = process_requirements(req_file)
+
+ return diagnostics
+
+
+def main():
+ args = parse_args()
+ diagnostics = get_diagnostics(pathlib.Path(args.FILEPATH))
+ print(json.dumps(diagnostics, ensure_ascii=False))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/pythonFiles/interpreterInfo.py b/python_files/interpreterInfo.py
similarity index 86%
rename from pythonFiles/interpreterInfo.py
rename to python_files/interpreterInfo.py
index 601959b7c2d5..f15da9e48ea3 100644
--- a/pythonFiles/interpreterInfo.py
+++ b/python_files/interpreterInfo.py
@@ -8,6 +8,6 @@
obj["versionInfo"] = tuple(sys.version_info)
obj["sysPrefix"] = sys.prefix
obj["sysVersion"] = sys.version
-obj["is64Bit"] = sys.maxsize > 2 ** 32
+obj["is64Bit"] = sys.maxsize > 2**32
print(json.dumps(obj))
diff --git a/python_files/jedilsp_requirements/requirements.in b/python_files/jedilsp_requirements/requirements.in
new file mode 100644
index 000000000000..6d5404df8f0f
--- /dev/null
+++ b/python_files/jedilsp_requirements/requirements.in
@@ -0,0 +1,8 @@
+# This file is used to generate requirements.txt.
+# To update requirements.txt, run the following commands.
+# Use Python 3.8 when creating the environment or using pip-tools
+# 1) pip install pip-tools
+# 2) pip-compile --generate-hashes --upgrade python_files\jedilsp_requirements\requirements.in
+
+jedi-language-server>=0.34.3
+pygls>=0.10.3
diff --git a/python_files/jedilsp_requirements/requirements.txt b/python_files/jedilsp_requirements/requirements.txt
new file mode 100644
index 000000000000..5ee0244deb80
--- /dev/null
+++ b/python_files/jedilsp_requirements/requirements.txt
@@ -0,0 +1,69 @@
+#
+# This file is autogenerated by pip-compile with Python 3.8
+# by the following command:
+#
+# pip-compile --generate-hashes 'python_files\jedilsp_requirements\requirements.in'
+#
+attrs==23.1.0 \
+ --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \
+ --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015
+ # via
+ # cattrs
+ # lsprotocol
+cattrs==23.1.2 \
+ --hash=sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4 \
+ --hash=sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657
+ # via
+ # jedi-language-server
+ # lsprotocol
+docstring-to-markdown==0.12 \
+ --hash=sha256:40004224b412bd6f64c0f3b85bb357a41341afd66c4b4896709efa56827fb2bb \
+ --hash=sha256:7df6311a887dccf9e770f51242ec002b19f0591994c4783be49d24cdc1df3737
+ # via jedi-language-server
+exceptiongroup==1.1.3 \
+ --hash=sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9 \
+ --hash=sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3
+ # via cattrs
+importlib-metadata==6.8.0 \
+ --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \
+ --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743
+ # via typeguard
+jedi==0.19.1 \
+ --hash=sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd \
+ --hash=sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0
+ # via jedi-language-server
+jedi-language-server==0.41.1 \
+ --hash=sha256:3f15ca5cc28e728564f7d63583e171b418025582447ce023512e3f2b2d71ebae \
+ --hash=sha256:ca9b3e7f48b70f0988d85ffde4f01dd1ab94c8e0f69e8c6424e6657117b44f91
+ # via -r python_files\jedilsp_requirements\requirements.in
+lsprotocol==2023.0.0b1 \
+ --hash=sha256:ade2cd0fa0ede7965698cb59cd05d3adbd19178fd73e83f72ef57a032fbb9d62 \
+ --hash=sha256:f7a2d4655cbd5639f373ddd1789807450c543341fa0a32b064ad30dbb9f510d4
+ # via
+ # jedi-language-server
+ # pygls
+parso==0.8.3 \
+ --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \
+ --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75
+ # via jedi
+pygls==1.0.2 \
+ --hash=sha256:6d278d29fa6559b0f7a448263c85cb64ec6e9369548b02f1a7944060848b21f9 \
+ --hash=sha256:888ed63d1f650b4fc64d603d73d37545386ec533c0caac921aed80f80ea946a4
+ # via
+ # -r python_files\jedilsp_requirements\requirements.in
+ # jedi-language-server
+typeguard==3.0.2 \
+ --hash=sha256:bbe993854385284ab42fd5bd3bee6f6556577ce8b50696d6cb956d704f286c8e \
+ --hash=sha256:fee5297fdb28f8e9efcb8142b5ee219e02375509cd77ea9d270b5af826358d5a
+ # via pygls
+typing-extensions==4.8.0 \
+ --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \
+ --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef
+ # via
+ # cattrs
+ # jedi-language-server
+ # typeguard
+zipp==3.17.0 \
+ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \
+ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0
+ # via importlib-metadata
diff --git a/python_files/linter.py b/python_files/linter.py
new file mode 100644
index 000000000000..af9634f83f4b
--- /dev/null
+++ b/python_files/linter.py
@@ -0,0 +1,52 @@
+import subprocess
+import sys
+
+
+linter_settings = {
+ "pylint": {
+ "args": ["--reports=n", "--output-format=json"],
+ },
+ "flake8": {
+ "args": ["--format", "%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s"],
+ },
+ "bandit": {
+ "args": [
+ "-f",
+ "custom",
+ "--msg-template",
+ "{line},{col},{severity},{test_id}:{msg}",
+ "-n",
+ "-1",
+ ],
+ },
+ "mypy": {"args": []},
+ "prospector": {
+ "args": ["--absolute-paths", "--output-format=json"],
+ },
+ "pycodestyle": {
+ "args": ["--format", "%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s"],
+ },
+ "pydocstyle": {
+ "args": [],
+ },
+ "pylama": {"args": ["--format=parsable"]},
+}
+
+
+def main():
+ invoke = sys.argv[1]
+ if invoke == "-m":
+ linter = sys.argv[2]
+ args = [sys.executable, "-m", linter] + linter_settings[linter]["args"] + sys.argv[3:]
+ else:
+ linter = sys.argv[2]
+ args = [sys.argv[3]] + linter_settings[linter]["args"] + sys.argv[4:]
+
+ if hasattr(subprocess, "run"):
+ subprocess.run(args, encoding="utf-8", stdout=sys.stdout, stderr=sys.stderr)
+ else:
+ subprocess.call(args, stdout=sys.stdout, stderr=sys.stderr)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/python_files/normalizeSelection.py b/python_files/normalizeSelection.py
new file mode 100644
index 000000000000..71d28bb9c35c
--- /dev/null
+++ b/python_files/normalizeSelection.py
@@ -0,0 +1,297 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import ast
+import json
+import re
+import sys
+import textwrap
+from typing import Iterable
+
+
+def split_lines(source):
+ """
+ Split selection lines in a version-agnostic way.
+
+ Python grammar only treats \r, \n, and \r\n as newlines.
+ But splitlines() in Python 3 has a much larger list: for example, it also includes \v, \f.
+ As such, this function will split lines across all Python versions.
+ """
+ return re.split(r"[\n\r]+", source)
+
+
+def _get_statements(selection):
+ """
+ Process a multiline selection into a list of its top-level statements.
+ This will remove empty newlines around and within the selection, dedent it,
+ and split it using the result of `ast.parse()`.
+ """
+
+ # Remove blank lines within the selection to prevent the REPL from thinking the block is finished.
+ lines = (line for line in split_lines(selection) if line.strip() != "")
+
+ # Dedent the selection and parse it using the ast module.
+ # Note that leading comments in the selection will be discarded during parsing.
+ source = textwrap.dedent("\n".join(lines))
+ tree = ast.parse(source)
+
+ # We'll need the dedented lines to rebuild the selection.
+ lines = split_lines(source)
+
+ # Get the line ranges for top-level blocks returned from parsing the dedented text
+ # and split the selection accordingly.
+ # tree.body is a list of AST objects, which we rely on to extract top-level statements.
+ # If we supported Python 3.8+ only we could use the lineno and end_lineno attributes of each object
+ # to get the boundaries of each block.
+ # However, earlier Python versions only have the lineno attribute, which is the range start position (1-indexed).
+ # Therefore, to retrieve the end line of each block in a version-agnostic way we need to do
+ # `end = next_block.lineno - 1`
+ # for all blocks except the last one, which will will just run until the last line.
+ ends = []
+ for node in tree.body[1:]:
+ line_end = node.lineno - 1
+ # Special handling of decorators:
+ # In Python 3.8 and higher, decorators are not taken into account in the value returned by lineno,
+ # and we have to use the length of the decorator_list array to compute the actual start line.
+ # Before that, lineno takes into account decorators, so this offset check is unnecessary.
+ # Also, not all AST objects can have decorators.
+ if hasattr(node, "decorator_list") and sys.version_info >= (3, 8):
+ # Using getattr instead of node.decorator_list or pyright will complain about an unknown member.
+ line_end -= len(getattr(node, "decorator_list"))
+ ends.append(line_end)
+ ends.append(len(lines))
+
+ for node, end in zip(tree.body, ends):
+ # Given this selection:
+ # 1: if (m > 0 and
+ # 2: n < 3):
+ # 3: print('foo')
+ # 4: value = 'bar'
+ #
+ # The first block would have lineno = 1,and the second block lineno = 4
+ start = node.lineno - 1
+
+ # Special handling of decorators similar to what's above.
+ if hasattr(node, "decorator_list") and sys.version_info >= (3, 8):
+ # Using getattr instead of node.decorator_list or pyright will complain about an unknown member.
+ start -= len(getattr(node, "decorator_list"))
+ block = "\n".join(lines[start:end])
+
+ # If the block is multiline, add an extra newline character at its end.
+ # This way, when joining blocks back together, there will be a blank line between each multiline statement
+ # and no blank lines between single-line statements, or it would look like this:
+ # >>> x = 22
+ # >>>
+ # >>> total = x + 30
+ # >>>
+ # Note that for the multiline parentheses case this newline is redundant,
+ # since the closing parenthesis terminates the statement already.
+ # This means that for this pattern we'll end up with:
+ # >>> x = [
+ # ... 1
+ # ... ]
+ # >>>
+ # >>> y = [
+ # ... 2
+ # ...]
+ if end - start > 1:
+ block += "\n"
+
+ yield block
+
+
+def normalize_lines(selection):
+ """
+ Normalize the text selection received from the extension.
+
+ If it is a single line selection, dedent it and append a newline and
+ send it back to the extension.
+ Otherwise, sanitize the multiline selection before returning it:
+ split it in a list of top-level statements
+ and add newlines between each of them so the REPL knows where each block ends.
+ """
+ try:
+ # Parse the selection into a list of top-level blocks.
+ # We don't differentiate between single and multiline statements
+ # because it's not a perf bottleneck,
+ # and the overhead from splitting and rejoining strings in the multiline case is one-off.
+ statements = _get_statements(selection)
+
+ # Insert a newline between each top-level statement, and append a newline to the selection.
+ source = "\n".join(statements) + "\n"
+ if selection[-2] == "}" or selection[-2] == "]":
+ source = source[:-1]
+ except Exception:
+ # If there's a problem when parsing statements,
+ # append a blank line to end the block and send it as-is.
+ source = selection + "\n\n"
+
+ return source
+
+
+top_level_nodes = []
+min_key = None
+
+
+def check_exact_exist(top_level_nodes, start_line, end_line):
+ exact_nodes = []
+ for node in top_level_nodes:
+ if node.lineno == start_line and node.end_lineno == end_line:
+ exact_nodes.append(node)
+
+ return exact_nodes
+
+
+def traverse_file(wholeFileContent, start_line, end_line, was_highlighted):
+ """
+ Intended to traverse through a user's given file content and find, collect all appropriate lines
+ that should be sent to the REPL in case of smart selection.
+ This could be exact statement such as just a single line print statement,
+ or a multiline dictionary, or differently styled multi-line list comprehension, etc.
+ Then call the normalize_lines function to normalize our smartly selected code block.
+ """
+ parsed_file_content = None
+
+ try:
+ parsed_file_content = ast.parse(wholeFileContent)
+ except Exception:
+ # Handle case where user is attempting to run code where file contains deprecated Python code.
+ # Let typescript side know and show warning message.
+ return {
+ "normalized_smart_result": "deprecated",
+ "which_line_next": 0,
+ }
+
+ smart_code = ""
+ should_run_top_blocks = []
+
+ # Purpose of this loop is to fetch and collect all the
+ # AST top level nodes, and its node.body as child nodes.
+ # Individual nodes will contain information like
+ # the start line, end line and get source segment information
+ # that will be used to smartly select, and send normalized code.
+ for node in ast.iter_child_nodes(parsed_file_content):
+ top_level_nodes.append(node)
+
+ ast_types_with_nodebody = (
+ ast.Module,
+ ast.Interactive,
+ ast.Expression,
+ ast.FunctionDef,
+ ast.AsyncFunctionDef,
+ ast.ClassDef,
+ ast.For,
+ ast.AsyncFor,
+ ast.While,
+ ast.If,
+ ast.With,
+ ast.AsyncWith,
+ ast.Try,
+ ast.Lambda,
+ ast.IfExp,
+ ast.ExceptHandler,
+ )
+ if isinstance(node, ast_types_with_nodebody) and isinstance(node.body, Iterable):
+ for child_nodes in node.body:
+ top_level_nodes.append(child_nodes)
+
+ exact_nodes = check_exact_exist(top_level_nodes, start_line, end_line)
+
+ # Just return the exact top level line, if present.
+ if len(exact_nodes) > 0:
+ which_line_next = 0
+ for same_line_node in exact_nodes:
+ should_run_top_blocks.append(same_line_node)
+ smart_code += f"{ast.get_source_segment(wholeFileContent, same_line_node)}\n"
+ which_line_next = get_next_block_lineno(should_run_top_blocks)
+ return {
+ "normalized_smart_result": smart_code,
+ "which_line_next": which_line_next,
+ }
+
+ # For each of the nodes in the parsed file content,
+ # add the appropriate source code line(s) to be sent to the REPL, dependent on
+ # user is trying to send and execute single line/statement or multiple with smart selection.
+ for top_node in ast.iter_child_nodes(parsed_file_content):
+ if start_line == top_node.lineno and end_line == top_node.end_lineno:
+ should_run_top_blocks.append(top_node)
+
+ smart_code += f"{ast.get_source_segment(wholeFileContent, top_node)}\n"
+ break # If we found exact match, don't waste computation in parsing extra nodes.
+ elif start_line >= top_node.lineno and end_line <= top_node.end_lineno:
+ # Case to apply smart selection for multiple line.
+ # This is the case for when we have to add multiple lines that should be included in the smart send.
+ # For example:
+ # 'my_dictionary': {
+ # 'Audi': 'Germany',
+ # 'BMW': 'Germany',
+ # 'Genesis': 'Korea',
+ # }
+ # with the mouse cursor at 'BMW': 'Germany', should send all of the lines that pertains to my_dictionary.
+
+ should_run_top_blocks.append(top_node)
+
+ smart_code += str(ast.get_source_segment(wholeFileContent, top_node))
+ smart_code += "\n"
+
+ normalized_smart_result = normalize_lines(smart_code)
+ which_line_next = get_next_block_lineno(should_run_top_blocks)
+ return {
+ "normalized_smart_result": normalized_smart_result,
+ "which_line_next": which_line_next,
+ }
+
+
+# Look at the last top block added, find lineno for the next upcoming block,
+# This will be used in calculating lineOffset to move cursor in VS Code.
+def get_next_block_lineno(which_line_next):
+ last_ran_lineno = int(which_line_next[-1].end_lineno)
+ next_lineno = int(which_line_next[-1].end_lineno)
+
+ for reverse_node in top_level_nodes:
+ if reverse_node.lineno > last_ran_lineno:
+ next_lineno = reverse_node.lineno
+ break
+ return next_lineno
+
+
+if __name__ == "__main__":
+ # Content is being sent from the extension as a JSON object.
+ # Decode the data from the raw bytes.
+ stdin = sys.stdin if sys.version_info < (3,) else sys.stdin.buffer
+ raw = stdin.read()
+ contents = json.loads(raw.decode("utf-8"))
+ # Empty highlight means user has not explicitly selected specific text.
+ empty_Highlight = contents.get("emptyHighlight", False)
+
+ # We also get the activeEditor selection start line and end line from the typescript VS Code side.
+ # Remember to add 1 to each of the received since vscode starts line counting from 0 .
+ vscode_start_line = contents["startLine"] + 1
+ vscode_end_line = contents["endLine"] + 1
+
+ # Send the normalized code back to the extension in a JSON object.
+ data = None
+ which_line_next = 0
+
+ if empty_Highlight and contents.get("smartSendSettingsEnabled"):
+ result = traverse_file(
+ contents["wholeFileContent"],
+ vscode_start_line,
+ vscode_end_line,
+ not empty_Highlight,
+ )
+ normalized = result["normalized_smart_result"]
+ which_line_next = result["which_line_next"]
+ if normalized == "deprecated":
+ data = json.dumps({"normalized": normalized})
+ else:
+ data = json.dumps(
+ {"normalized": normalized, "nextBlockLineno": result["which_line_next"]}
+ )
+ else:
+ normalized = normalize_lines(contents["code"])
+ data = json.dumps({"normalized": normalized})
+
+ stdout = sys.stdout if sys.version_info < (3,) else sys.stdout.buffer
+ stdout.write(data.encode("utf-8"))
+ stdout.close()
diff --git a/pythonFiles/printEnvVariables.py b/python_files/printEnvVariables.py
similarity index 100%
rename from pythonFiles/printEnvVariables.py
rename to python_files/printEnvVariables.py
diff --git a/python_files/printEnvVariablesToFile.py b/python_files/printEnvVariablesToFile.py
new file mode 100644
index 000000000000..a4e0d24abbe0
--- /dev/null
+++ b/python_files/printEnvVariablesToFile.py
@@ -0,0 +1,12 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import sys
+
+# Last argument is the target file into which we'll write the env variables line by line.
+output_file = sys.argv[-1]
+
+with open(output_file, "w") as outfile:
+ for key, val in os.environ.items():
+ outfile.write(f"{key}={val}\n")
diff --git a/python_files/pyproject.toml b/python_files/pyproject.toml
new file mode 100644
index 000000000000..0f1b0f466940
--- /dev/null
+++ b/python_files/pyproject.toml
@@ -0,0 +1,47 @@
+[tool.black]
+exclude = '''
+
+(
+ /(
+ .data
+ | .vscode
+ | lib
+ )/
+)
+'''
+
+[tool.pyright]
+exclude = ['lib']
+extraPaths = ['lib/python', 'lib/jedilsp']
+ignore = [
+ # Ignore all pre-existing code with issues
+ 'get-pip.py',
+ 'tensorboard_launcher.py',
+ 'testlauncher.py',
+ 'visualstudio_py_testlauncher.py',
+ 'testing_tools/unittest_discovery.py',
+ 'testing_tools/adapter/util.py',
+ 'testing_tools/adapter/pytest/_discovery.py',
+ 'testing_tools/adapter/pytest/_pytest_item.py',
+ 'tests/testing_tools/adapter/.data',
+ 'tests/testing_tools/adapter/test___main__.py',
+ 'tests/testing_tools/adapter/test_discovery.py',
+ 'tests/testing_tools/adapter/test_functional.py',
+ 'tests/testing_tools/adapter/test_report.py',
+ 'tests/testing_tools/adapter/test_util.py',
+ 'tests/testing_tools/adapter/pytest/test_cli.py',
+ 'tests/testing_tools/adapter/pytest/test_discovery.py',
+]
+
+[tool.ruff]
+line-length = 100
+exclude = [
+ "tests/testing_tools/adapter/.data",
+ "tests/unittestadapter/.data"
+]
+
+[tool.ruff.format]
+docstring-code-format = true
+
+[tool.ruff.lint.pydocstyle]
+convention = "pep257"
diff --git a/python_files/python_server.py b/python_files/python_server.py
new file mode 100644
index 000000000000..30be834631c6
--- /dev/null
+++ b/python_files/python_server.py
@@ -0,0 +1,178 @@
+from typing import Dict, List, Optional, Union
+import sys
+import json
+import contextlib
+import io
+import traceback
+import uuid
+import ast
+
+STDIN = sys.stdin
+STDOUT = sys.stdout
+STDERR = sys.stderr
+USER_GLOBALS = {}
+
+
+def send_message(msg: str):
+ length_msg = len(msg)
+ STDOUT.buffer.write(f"Content-Length: {length_msg}\r\n\r\n{msg}".encode(encoding="utf-8"))
+ STDOUT.buffer.flush()
+
+
+def print_log(msg: str):
+ send_message(json.dumps({"jsonrpc": "2.0", "method": "log", "params": msg}))
+
+
+def send_response(response: str, response_id: int):
+ send_message(json.dumps({"jsonrpc": "2.0", "id": response_id, "result": response}))
+
+
+def send_request(params: Optional[Union[List, Dict]] = None):
+ request_id = uuid.uuid4().hex
+ if params is None:
+ send_message(json.dumps({"jsonrpc": "2.0", "id": request_id, "method": "input"}))
+ else:
+ send_message(
+ json.dumps({"jsonrpc": "2.0", "id": request_id, "method": "input", "params": params})
+ )
+ return request_id
+
+
+original_input = input
+
+
+def custom_input(prompt=""):
+ try:
+ send_request({"prompt": prompt})
+ headers = get_headers()
+ content_length = int(headers.get("Content-Length", 0))
+
+ if content_length:
+ message_text = STDIN.read(content_length)
+ message_json = json.loads(message_text)
+ our_user_input = message_json["result"]["userInput"]
+ return our_user_input
+ except Exception:
+ print_log(traceback.format_exc())
+
+
+# Set input to our custom input
+USER_GLOBALS["input"] = custom_input
+input = custom_input
+
+
+def handle_response(request_id):
+ while not STDIN.closed:
+ try:
+ headers = get_headers()
+ content_length = int(headers.get("Content-Length", 0))
+
+ if content_length:
+ message_text = STDIN.read(content_length)
+ message_json = json.loads(message_text)
+ our_user_input = message_json["result"]["userInput"]
+ if message_json["id"] == request_id:
+ send_response(our_user_input, message_json["id"])
+ elif message_json["method"] == "exit":
+ sys.exit(0)
+
+ except Exception:
+ print_log(traceback.format_exc())
+
+
+def exec_function(user_input):
+ try:
+ compile(user_input, "", "eval")
+ except SyntaxError:
+ return exec
+ return eval
+
+
+def check_valid_command(request):
+ try:
+ user_input = request["params"]
+ ast.parse(user_input[0])
+ send_response("True", request["id"])
+ except SyntaxError:
+ send_response("False", request["id"])
+
+
+def execute(request, user_globals):
+ str_output = CustomIO("", encoding="utf-8")
+ str_error = CustomIO("", encoding="utf-8")
+
+ with redirect_io("stdout", str_output):
+ with redirect_io("stderr", str_error):
+ str_input = CustomIO("", encoding="utf-8", newline="\n")
+ with redirect_io("stdin", str_input):
+ exec_user_input(request["params"], user_globals)
+ send_response(str_output.get_value(), request["id"])
+
+
+def exec_user_input(user_input, user_globals):
+ user_input = user_input[0] if isinstance(user_input, list) else user_input
+
+ try:
+ callable = exec_function(user_input)
+ retval = callable(user_input, user_globals)
+ if retval is not None:
+ print(retval)
+ except KeyboardInterrupt:
+ print(traceback.format_exc())
+ except Exception:
+ print(traceback.format_exc())
+
+
+class CustomIO(io.TextIOWrapper):
+ """Custom stream object to replace stdio."""
+
+ def __init__(self, name, encoding="utf-8", newline=None):
+ self._buffer = io.BytesIO()
+ self._custom_name = name
+ super().__init__(self._buffer, encoding=encoding, newline=newline)
+
+ def close(self):
+ """Provide this close method which is used by some tools."""
+ # This is intentionally empty.
+
+ def get_value(self) -> str:
+ """Returns value from the buffer as string."""
+ self.seek(0)
+ return self.read()
+
+
+@contextlib.contextmanager
+def redirect_io(stream: str, new_stream):
+ """Redirect stdio streams to a custom stream."""
+ old_stream = getattr(sys, stream)
+ setattr(sys, stream, new_stream)
+ yield
+ setattr(sys, stream, old_stream)
+
+
+def get_headers():
+ headers = {}
+ while line := STDIN.readline().strip():
+ name, value = line.split(":", 1)
+ headers[name] = value.strip()
+ return headers
+
+
+if __name__ == "__main__":
+ while not STDIN.closed:
+ try:
+ headers = get_headers()
+ content_length = int(headers.get("Content-Length", 0))
+
+ if content_length:
+ request_text = STDIN.read(content_length)
+ request_json = json.loads(request_text)
+ if request_json["method"] == "execute":
+ execute(request_json, USER_GLOBALS)
+ if request_json["method"] == "check_valid_command":
+ check_valid_command(request_json)
+ elif request_json["method"] == "exit":
+ sys.exit(0)
+
+ except Exception:
+ print_log(traceback.format_exc())
diff --git a/python_files/pythonrc.py b/python_files/pythonrc.py
new file mode 100644
index 000000000000..2edd88874674
--- /dev/null
+++ b/python_files/pythonrc.py
@@ -0,0 +1,80 @@
+import sys
+
+if sys.platform != "win32":
+ import readline
+
+original_ps1 = ">>> "
+
+
+class repl_hooks:
+ def __init__(self):
+ self.global_exit = None
+ self.failure_flag = False
+ self.original_excepthook = sys.excepthook
+ self.original_displayhook = sys.displayhook
+ sys.excepthook = self.my_excepthook
+ sys.displayhook = self.my_displayhook
+
+ def my_displayhook(self, value):
+ if value is None:
+ self.failure_flag = False
+
+ self.original_displayhook(value)
+
+ def my_excepthook(self, type, value, traceback):
+ self.global_exit = value
+ self.failure_flag = True
+
+ self.original_excepthook(type, value, traceback)
+
+
+def get_last_command():
+ # Get the last history item
+ last_command = ""
+ if sys.platform != "win32":
+ last_command = readline.get_history_item(readline.get_current_history_length())
+
+ return last_command
+
+
+class ps1:
+ hooks = repl_hooks()
+ sys.excepthook = hooks.my_excepthook
+ sys.displayhook = hooks.my_displayhook
+
+ # str will get called for every prompt with exit code to show success/failure
+ def __str__(self):
+ exit_code = 0
+ if self.hooks.failure_flag:
+ exit_code = 1
+ else:
+ exit_code = 0
+ self.hooks.failure_flag = False
+ # Guide following official VS Code doc for shell integration sequence:
+ result = ""
+ # For non-windows allow recent_command history.
+ if sys.platform != "win32":
+ result = "{command_line}{command_finished}{prompt_started}{prompt}{command_start}{command_executed}".format(
+ command_line="\x1b]633;E;" + str(get_last_command()) + "\x07",
+ command_finished="\x1b]633;D;" + str(exit_code) + "\x07",
+ prompt_started="\x1b]633;A\x07",
+ prompt=original_ps1,
+ command_start="\x1b]633;B\x07",
+ command_executed="\x1b]633;C\x07",
+ )
+ else:
+ result = "{command_finished}{prompt_started}{prompt}{command_start}{command_executed}".format(
+ command_finished="\x1b]633;D;" + str(exit_code) + "\x07",
+ prompt_started="\x1b]633;A\x07",
+ prompt=original_ps1,
+ command_start="\x1b]633;B\x07",
+ command_executed="\x1b]633;C\x07",
+ )
+
+ # result = f"{chr(27)}]633;D;{exit_code}{chr(7)}{chr(27)}]633;A{chr(7)}{original_ps1}{chr(27)}]633;B{chr(7)}{chr(27)}]633;C{chr(7)}"
+
+ return result
+
+
+if sys.platform != "win32":
+ sys.ps1 = ps1()
diff --git a/python_files/run-jedi-language-server.py b/python_files/run-jedi-language-server.py
new file mode 100644
index 000000000000..5a972799bc33
--- /dev/null
+++ b/python_files/run-jedi-language-server.py
@@ -0,0 +1,11 @@
+import os
+import sys
+
+# Add the lib path to our sys path so jedi_language_server can find its references
+EXTENSION_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+sys.path.insert(0, os.path.join(EXTENSION_ROOT, "python_files", "lib", "jedilsp"))
+
+
+from jedi_language_server.cli import cli # noqa: E402
+
+sys.exit(cli())
diff --git a/pythonFiles/shell_exec.py b/python_files/shell_exec.py
similarity index 99%
rename from pythonFiles/shell_exec.py
rename to python_files/shell_exec.py
index c521586ca31b..4987399a53ea 100644
--- a/pythonFiles/shell_exec.py
+++ b/python_files/shell_exec.py
@@ -1,9 +1,8 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
-import os
-import sys
import subprocess
+import sys
# This is a simple solution to waiting for completion of commands sent to terminal.
# 1. Intercept commands send to a terminal
diff --git a/pythonFiles/tensorboard_launcher.py b/python_files/tensorboard_launcher.py
similarity index 100%
rename from pythonFiles/tensorboard_launcher.py
rename to python_files/tensorboard_launcher.py
diff --git a/pythonFiles/testing_tools/__init__.py b/python_files/testing_tools/__init__.py
similarity index 100%
rename from pythonFiles/testing_tools/__init__.py
rename to python_files/testing_tools/__init__.py
diff --git a/pythonFiles/testing_tools/adapter/__init__.py b/python_files/testing_tools/adapter/__init__.py
similarity index 100%
rename from pythonFiles/testing_tools/adapter/__init__.py
rename to python_files/testing_tools/adapter/__init__.py
diff --git a/python_files/testing_tools/adapter/__main__.py b/python_files/testing_tools/adapter/__main__.py
new file mode 100644
index 000000000000..cc7084eb9439
--- /dev/null
+++ b/python_files/testing_tools/adapter/__main__.py
@@ -0,0 +1,103 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from __future__ import absolute_import
+
+import argparse
+import sys
+
+from . import pytest, report
+from .errors import UnsupportedCommandError, UnsupportedToolError
+
+TOOLS = {
+ "pytest": {
+ "_add_subparser": pytest.add_cli_subparser,
+ "discover": pytest.discover,
+ },
+}
+REPORTERS = {
+ "discover": report.report_discovered,
+}
+
+
+def parse_args(
+ # the args to parse
+ argv=sys.argv[1:],
+ # the program name
+ prog=sys.argv[0],
+):
+ """
+ Return the subcommand & tool to run, along with its args.
+
+ This defines the standard CLI for the different testing frameworks.
+ """
+ parser = argparse.ArgumentParser(
+ description="Run Python testing operations.",
+ prog=prog,
+ # ...
+ )
+ cmdsubs = parser.add_subparsers(dest="cmd")
+
+ # Add "run" and "debug" subcommands when ready.
+ for cmdname in ["discover"]:
+ sub = cmdsubs.add_parser(cmdname)
+ subsubs = sub.add_subparsers(dest="tool")
+ for toolname in sorted(TOOLS):
+ try:
+ add_subparser = TOOLS[toolname]["_add_subparser"]
+ except KeyError:
+ continue
+ subsub = add_subparser(cmdname, toolname, subsubs)
+ if cmdname == "discover":
+ subsub.add_argument("--simple", action="store_true")
+ subsub.add_argument("--no-hide-stdio", dest="hidestdio", action="store_false")
+ subsub.add_argument("--pretty", action="store_true")
+
+ # Parse the args!
+ if "--" in argv:
+ sep_index = argv.index("--")
+ toolargs = argv[sep_index + 1 :]
+ argv = argv[:sep_index]
+ else:
+ toolargs = []
+ args = parser.parse_args(argv)
+ ns = vars(args)
+
+ cmd = ns.pop("cmd")
+ if not cmd:
+ parser.error("missing command")
+
+ tool = ns.pop("tool")
+ if not tool:
+ parser.error("missing tool")
+
+ return tool, cmd, ns, toolargs
+
+
+def main(
+ toolname,
+ cmdname,
+ subargs,
+ toolargs,
+ # internal args (for testing):
+ _tools=TOOLS,
+ _reporters=REPORTERS,
+):
+ try:
+ tool = _tools[toolname]
+ except KeyError:
+ raise UnsupportedToolError(toolname)
+
+ try:
+ run = tool[cmdname]
+ report_result = _reporters[cmdname]
+ except KeyError:
+ raise UnsupportedCommandError(cmdname)
+
+ parents, result = run(toolargs, **subargs)
+ report_result(result, parents, **subargs)
+
+
+if __name__ == "__main__":
+ tool, cmd, subargs, toolargs = parse_args()
+ main(tool, cmd, subargs, toolargs)
diff --git a/pythonFiles/testing_tools/adapter/discovery.py b/python_files/testing_tools/adapter/discovery.py
similarity index 100%
rename from pythonFiles/testing_tools/adapter/discovery.py
rename to python_files/testing_tools/adapter/discovery.py
diff --git a/pythonFiles/testing_tools/adapter/errors.py b/python_files/testing_tools/adapter/errors.py
similarity index 100%
rename from pythonFiles/testing_tools/adapter/errors.py
rename to python_files/testing_tools/adapter/errors.py
diff --git a/pythonFiles/testing_tools/adapter/info.py b/python_files/testing_tools/adapter/info.py
similarity index 97%
rename from pythonFiles/testing_tools/adapter/info.py
rename to python_files/testing_tools/adapter/info.py
index f99ce0b6f9a2..8e5d0442ce15 100644
--- a/pythonFiles/testing_tools/adapter/info.py
+++ b/python_files/testing_tools/adapter/info.py
@@ -27,7 +27,6 @@ def __init__(self, *args, **kwargs):
class ParentInfo(namedtuple("ParentInfo", "id kind name root relpath parentid")):
-
KINDS = ("folder", "file", "suite", "function", "subtest")
def __new__(cls, id, kind, name, root=None, relpath=None, parentid=None):
@@ -62,9 +61,7 @@ def __init__(self, *args, **kwargs):
raise TypeError("missing relpath")
-class SingleTestInfo(
- namedtuple("TestInfo", "id name path source markers parentid kind")
-):
+class SingleTestInfo(namedtuple("TestInfo", "id name path source markers parentid kind")):
"""Info for a single test."""
MARKERS = ("skip", "skip-if", "expected-failure")
diff --git a/python_files/testing_tools/adapter/pytest/__init__.py b/python_files/testing_tools/adapter/pytest/__init__.py
new file mode 100644
index 000000000000..89b7c066a459
--- /dev/null
+++ b/python_files/testing_tools/adapter/pytest/__init__.py
@@ -0,0 +1,7 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from __future__ import absolute_import
+
+from ._cli import add_subparser as add_cli_subparser # noqa: F401
+from ._discovery import discover # noqa: F401
diff --git a/pythonFiles/testing_tools/adapter/pytest/_cli.py b/python_files/testing_tools/adapter/pytest/_cli.py
similarity index 100%
rename from pythonFiles/testing_tools/adapter/pytest/_cli.py
rename to python_files/testing_tools/adapter/pytest/_cli.py
diff --git a/pythonFiles/testing_tools/adapter/pytest/_discovery.py b/python_files/testing_tools/adapter/pytest/_discovery.py
similarity index 94%
rename from pythonFiles/testing_tools/adapter/pytest/_discovery.py
rename to python_files/testing_tools/adapter/pytest/_discovery.py
index 51c94527302d..bbe5ae9856c8 100644
--- a/pythonFiles/testing_tools/adapter/pytest/_discovery.py
+++ b/python_files/testing_tools/adapter/pytest/_discovery.py
@@ -7,7 +7,7 @@
import pytest
-from .. import util, discovery
+from .. import discovery, util
from ._pytest_item import parse_item
@@ -17,7 +17,7 @@ def discover(
# *,
_pytest_main=pytest.main,
_plugin=None,
- **_ignored
+ **_ignored,
):
"""Return the results of test discovery."""
if _plugin is None:
@@ -26,12 +26,15 @@ def discover(
pytestargs = _adjust_pytest_args(pytestargs)
# We use this helper rather than "-pno:terminal" due to possible
# platform-dependent issues.
- with (util.hide_stdio() if hidestdio else util.noop_cm()) as stdio:
+ with util.hide_stdio() if hidestdio else util.noop_cm() as stdio:
ec = _pytest_main(pytestargs, [_plugin])
# See: https://docs.pytest.org/en/latest/usage.html#possible-exit-codes
if ec == 5:
# No tests were discovered.
pass
+ elif ec == 1:
+ # Some tests where collected but with errors.
+ pass
elif ec != 0:
print(
"equivalent command: {} -m pytest {}".format(
diff --git a/pythonFiles/testing_tools/adapter/pytest/_pytest_item.py b/python_files/testing_tools/adapter/pytest/_pytest_item.py
similarity index 95%
rename from pythonFiles/testing_tools/adapter/pytest/_pytest_item.py
rename to python_files/testing_tools/adapter/pytest/_pytest_item.py
index f9ed1fe0f289..724b71a1ac44 100644
--- a/pythonFiles/testing_tools/adapter/pytest/_pytest_item.py
+++ b/python_files/testing_tools/adapter/pytest/_pytest_item.py
@@ -95,12 +95,12 @@
import sys
-import pytest
import _pytest.doctest
import _pytest.unittest
+import pytest
from ..info import SingleTestInfo, SingleTestPath
-from ..util import fix_fileid, PATH_SEP, NORMCASE
+from ..util import NORMCASE, PATH_SEP, fix_fileid
def should_never_reach_here(item, **extra):
@@ -158,9 +158,21 @@ def parse_item(
# Skip plugin generated tests
if kind is None:
return None, None
- (nodeid, parents, fileid, testfunc, parameterized) = _parse_node_id(
- item.nodeid, kind
- )
+
+ if kind == "function" and item.originalname and item.originalname != item.name:
+ # split out parametrized decorations `node[params]`) before parsing
+ # and manually attach parametrized portion back in when done.
+ parameterized = item.name[len(item.originalname) :]
+ (parentid, parents, fileid, testfunc, _) = _parse_node_id(
+ item.nodeid[: -len(parameterized)], kind
+ )
+ nodeid = "{}{}".format(parentid, parameterized)
+ parents = [(parentid, item.originalname, kind)] + parents
+ name = parameterized[1:-1] or ""
+ else:
+ (nodeid, parents, fileid, testfunc, parameterized) = _parse_node_id(item.nodeid, kind)
+ name = item.name
+
# Note: testfunc does not necessarily match item.function.__name__.
# This can result from importing a test function from another module.
@@ -209,7 +221,7 @@ def parse_item(
test = SingleTestInfo(
id=nodeid,
- name=item.name,
+ name=name,
path=SingleTestPath(
root=testroot,
relfile=relfile,
@@ -447,16 +459,6 @@ def _iter_nodes(
if len(nodeid) > len(testid):
testid = "." + _pathsep + testid
- if kind == "function" and nodeid.endswith("]"):
- funcid, sep, parameterized = nodeid.partition("[")
- if not sep:
- raise should_never_reach_here(
- nodeid,
- # ...
- )
- yield (nodeid, sep + parameterized, "subtest")
- nodeid = funcid
-
parentid, _, name = nodeid.rpartition("::")
if not parentid:
if kind is None:
@@ -506,6 +508,8 @@ def _normalize_test_id(
"""Return the canonical form for the given node ID."""
while "::()::" in testid:
testid = testid.replace("::()::", "::")
+ while ":::" in testid:
+ testid = testid.replace(":::", "::")
if kind is None:
return testid, testid
orig = testid
diff --git a/pythonFiles/testing_tools/adapter/report.py b/python_files/testing_tools/adapter/report.py
similarity index 99%
rename from pythonFiles/testing_tools/adapter/report.py
rename to python_files/testing_tools/adapter/report.py
index bacdef7b9a00..1ad02fe7bcd4 100644
--- a/pythonFiles/testing_tools/adapter/report.py
+++ b/python_files/testing_tools/adapter/report.py
@@ -13,7 +13,7 @@ def report_discovered(
pretty=False,
simple=False,
_send=print,
- **_ignored
+ **_ignored,
):
"""Serialize the discovered tests and write to stdout."""
if simple:
diff --git a/pythonFiles/testing_tools/adapter/util.py b/python_files/testing_tools/adapter/util.py
similarity index 94%
rename from pythonFiles/testing_tools/adapter/util.py
rename to python_files/testing_tools/adapter/util.py
index 77778c5b6126..9f3089fb29d0 100644
--- a/pythonFiles/testing_tools/adapter/util.py
+++ b/python_files/testing_tools/adapter/util.py
@@ -8,6 +8,7 @@
from io import StringIO
except ImportError:
from StringIO import StringIO # 2.7
+
import os
import os.path
import sys
@@ -45,12 +46,6 @@ def group_attr_names(attrnames):
return grouped
-if sys.version_info < (3,):
- _str_to_lower = lambda val: val.decode().lower()
-else:
- _str_to_lower = str.lower
-
-
#############################
# file paths
@@ -63,6 +58,7 @@ def group_attr_names(attrnames):
BASENAME = _os_path.basename
IS_ABS_PATH = _os_path.isabs
PATH_JOIN = _os_path.join
+ABS_PATH = _os_path.abspath
def fix_path(
@@ -132,7 +128,7 @@ def fix_fileid(
normalize=False,
strictpathsep=None,
_pathsep=PATH_SEP,
- **kwargs
+ **kwargs,
):
"""Return a pathsep-separated file ID ("./"-prefixed) for the given value.
@@ -154,7 +150,7 @@ def fix_fileid(
rootdir,
_pathsep=_pathsep,
# ...
- **kwargs
+ **kwargs,
)
if relpath: # Note that we treat "" here as an absolute path.
_fileid = "./" + relpath
@@ -162,7 +158,7 @@ def fix_fileid(
if normalize:
if strictpathsep:
raise ValueError("cannot normalize *and* keep strict path separator")
- _fileid = _str_to_lower(_fileid)
+ _fileid = _fileid.lower()
elif strictpathsep:
# We do not use _normcase since we want to preserve capitalization.
_fileid = _fileid.replace("/", _pathsep)
@@ -222,12 +218,6 @@ def _replace_stderr(target):
sys.stderr = orig
-if sys.version_info < (3,):
- _coerce_unicode = lambda s: unicode(s)
-else:
- _coerce_unicode = lambda s: s
-
-
@contextlib.contextmanager
def _temp_io():
sio = StringIO()
@@ -237,7 +227,7 @@ def _temp_io():
finally:
tmp.seek(0)
buff = tmp.read()
- sio.write(_coerce_unicode(buff))
+ sio.write(buff)
@contextlib.contextmanager
diff --git a/python_files/testing_tools/process_json_util.py b/python_files/testing_tools/process_json_util.py
new file mode 100644
index 000000000000..36067521ea27
--- /dev/null
+++ b/python_files/testing_tools/process_json_util.py
@@ -0,0 +1,31 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import io
+import json
+from typing import List, Dict
+
+CONTENT_LENGTH: str = "Content-Length:"
+
+
+def process_rpc_json(data: str) -> Dict[str, List[str]]:
+ """Process the JSON data which comes from the server."""
+ str_stream: io.StringIO = io.StringIO(data)
+
+ length: int = 0
+
+ while True:
+ line: str = str_stream.readline()
+ if CONTENT_LENGTH.lower() in line.lower():
+ length = int(line[len(CONTENT_LENGTH) :])
+ break
+
+ if not line or line.isspace():
+ raise ValueError("Header does not contain Content-Length")
+
+ while True: # keep reading until the number of bytes is the CONTENT_LENGTH
+ line: str = str_stream.readline()
+ if not line or line.isspace():
+ break
+
+ raw_json: str = str_stream.read(length)
+ return json.loads(raw_json)
diff --git a/pythonFiles/testing_tools/run_adapter.py b/python_files/testing_tools/run_adapter.py
similarity index 81%
rename from pythonFiles/testing_tools/run_adapter.py
rename to python_files/testing_tools/run_adapter.py
index 1eeef194f8f5..8af4e49dd31c 100644
--- a/pythonFiles/testing_tools/run_adapter.py
+++ b/python_files/testing_tools/run_adapter.py
@@ -7,8 +7,8 @@
sys.path.insert(
1,
- os.path.dirname( # pythonFiles
- os.path.dirname( # pythonFiles/testing_tools
+ os.path.dirname( # python_files
+ os.path.dirname( # python_files/testing_tools
os.path.abspath(__file__) # this file
)
),
diff --git a/python_files/testing_tools/socket_manager.py b/python_files/testing_tools/socket_manager.py
new file mode 100644
index 000000000000..31b78b254bba
--- /dev/null
+++ b/python_files/testing_tools/socket_manager.py
@@ -0,0 +1,118 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import socket
+import sys
+
+# set the socket before it gets blocked or overwritten by a user tests
+_SOCKET = socket.socket
+
+
+class PipeManager:
+ def __init__(self, name):
+ self.name = name
+
+ def __enter__(self):
+ return self.connect()
+
+ def __exit__(self, *_):
+ self.close()
+
+ def connect(self):
+ if sys.platform == "win32":
+ self._writer = open(self.name, "wt", encoding="utf-8")
+ # reader created in read method
+ else:
+ self._socket = _SOCKET(socket.AF_UNIX, socket.SOCK_STREAM)
+ self._socket.connect(self.name)
+ return self
+
+ def close(self):
+ if sys.platform == "win32":
+ self._writer.close()
+ else:
+ # add exception catch
+ self._socket.close()
+
+ def write(self, data: str):
+ if sys.platform == "win32":
+ try:
+ # for windows, is should only use \n\n
+ request = (
+ f"""content-length: {len(data)}\ncontent-type: application/json\n\n{data}"""
+ )
+ self._writer.write(request)
+ self._writer.flush()
+ except Exception as e:
+ print("error attempting to write to pipe", e)
+ raise (e)
+ else:
+ # must include the carriage-return defined (as \r\n) for unix systems
+ request = (
+ f"""content-length: {len(data)}\r\ncontent-type: application/json\r\n\r\n{data}"""
+ )
+ self._socket.send(request.encode("utf-8"))
+
+ def read(self, bufsize=1024) -> str:
+ """Read data from the socket.
+
+ Args:
+ bufsize (int): Number of bytes to read from the socket.
+
+ Returns:
+ data (str): Data received from the socket.
+ """
+ if sys.platform == "win32":
+ # returns a string automatically from read
+ if not hasattr(self, "_reader"):
+ self._reader = open(self.name, "rt", encoding="utf-8")
+ return self._reader.read(bufsize)
+ else:
+ # receive bytes and convert to string
+ while True:
+ part: bytes = self._socket.recv(bufsize)
+ data: str = part.decode("utf-8")
+ return data
+
+
+class SocketManager(object):
+ """Create a socket and connect to the given address.
+
+ The address is a (host: str, port: int) tuple.
+ Example usage:
+
+ ```
+ with SocketManager(("localhost", 6767)) as sock:
+ request = json.dumps(payload)
+ result = s.socket.sendall(request.encode("utf-8"))
+ ```
+ """
+
+ def __init__(self, addr):
+ self.addr = addr
+ self.socket = None
+
+ def __enter__(self):
+ return self.connect()
+
+ def __exit__(self, *_):
+ self.close()
+
+ def connect(self):
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
+ if sys.platform == "win32":
+ addr_use = socket.SO_EXCLUSIVEADDRUSE
+ else:
+ addr_use = socket.SO_REUSEADDR
+ self.socket.setsockopt(socket.SOL_SOCKET, addr_use, 1)
+ self.socket.connect(self.addr)
+
+ return self
+
+ def close(self):
+ if self.socket:
+ try:
+ self.socket.shutdown(socket.SHUT_RDWR)
+ except Exception:
+ pass
+ self.socket.close()
diff --git a/python_files/testing_tools/unittest_discovery.py b/python_files/testing_tools/unittest_discovery.py
new file mode 100644
index 000000000000..5d5e9bcc6601
--- /dev/null
+++ b/python_files/testing_tools/unittest_discovery.py
@@ -0,0 +1,64 @@
+import contextlib
+import inspect
+import os
+import sys
+import traceback
+import unittest
+
+start_dir = sys.argv[1]
+pattern = sys.argv[2]
+top_level_dir = sys.argv[3] if len(sys.argv) >= 4 else None
+sys.path.insert(0, os.getcwd())
+
+
+def get_sourceline(obj):
+ try:
+ s, n = inspect.getsourcelines(obj)
+ except Exception:
+ try:
+ # this handles `tornado` case we need a better
+ # way to get to the wrapped function.
+ # XXX This is a temporary solution
+ s, n = inspect.getsourcelines(obj.orig_method)
+ except Exception:
+ return "*"
+
+ for i, v in enumerate(s):
+ if v.strip().startswith(("def", "async def")):
+ return str(n + i)
+ return "*"
+
+
+def generate_test_cases(suite):
+ for test in suite:
+ if isinstance(test, unittest.TestCase):
+ yield test
+ else:
+ for test_case in generate_test_cases(test):
+ yield test_case
+
+
+try:
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern=pattern, top_level_dir=top_level_dir)
+
+ print("start") # Don't remove this line
+ loader_errors = []
+ for s in generate_test_cases(suite):
+ tm = getattr(s, s._testMethodName)
+ testId = s.id()
+ if testId.startswith("unittest.loader._FailedTest"):
+ loader_errors.append(s._exception)
+ else:
+ print(testId.replace(".", ":") + ":" + get_sourceline(tm))
+except Exception:
+ print("=== exception start ===")
+ traceback.print_exc()
+ print("=== exception end ===")
+
+
+for error in loader_errors:
+ with contextlib.suppress(Exception):
+ print("=== exception start ===")
+ print(error.msg)
+ print("=== exception end ===")
diff --git a/python_files/testlauncher.py b/python_files/testlauncher.py
new file mode 100644
index 000000000000..3278815b380c
--- /dev/null
+++ b/python_files/testlauncher.py
@@ -0,0 +1,44 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import sys
+
+
+def parse_argv():
+ """Parses arguments for use with the test launcher.
+ Arguments are:
+ 1. Working directory.
+ 2. Test runner `pytest`
+ 3. Rest of the arguments are passed into the test runner.
+ """
+ cwd = sys.argv[1]
+ testRunner = sys.argv[2]
+ args = sys.argv[3:]
+
+ return (cwd, testRunner, args)
+
+
+def run(cwd, testRunner, args):
+ """Runs the test
+ cwd -- the current directory to be set
+ testRunner -- test runner to be used `pytest`
+ args -- arguments passed into the test runner
+ """
+
+ sys.path[0] = os.getcwd()
+ os.chdir(cwd)
+
+ try:
+ if testRunner == "pytest":
+ import pytest
+
+ pytest.main(args)
+ sys.exit(0)
+ finally:
+ pass
+
+
+if __name__ == "__main__":
+ cwd, testRunner, args = parse_argv()
+ run(cwd, testRunner, args)
diff --git a/pythonFiles/tests/__init__.py b/python_files/tests/__init__.py
similarity index 100%
rename from pythonFiles/tests/__init__.py
rename to python_files/tests/__init__.py
diff --git a/python_files/tests/__main__.py b/python_files/tests/__main__.py
new file mode 100644
index 000000000000..347222bd85db
--- /dev/null
+++ b/python_files/tests/__main__.py
@@ -0,0 +1,56 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import sys
+
+import pytest
+
+from . import DEBUG_ADAPTER_ROOT, SRC_ROOT, TEST_ROOT, TESTING_TOOLS_ROOT
+
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ # To mark a test as functional: (decorator) @pytest.mark.functional
+ parser.add_argument("--functional", dest="markers", action="append_const", const="functional")
+ parser.add_argument(
+ "--no-functional", dest="markers", action="append_const", const="not functional"
+ )
+ args, remainder = parser.parse_known_args()
+
+ ns = vars(args)
+
+ if remainder:
+ for arg in remainder:
+ if arg.startswith("-") and arg not in ("-v", "--verbose", "-h", "--help"):
+ specific = False
+ break
+ else:
+ specific = True
+ else:
+ specific = False
+ args.specific = specific
+
+ return ns, remainder
+
+
+def main(pytestargs, markers=None, specific=False):
+ sys.path.insert(1, TESTING_TOOLS_ROOT)
+ sys.path.insert(1, DEBUG_ADAPTER_ROOT)
+
+ if not specific:
+ pytestargs.insert(0, TEST_ROOT)
+ pytestargs.insert(0, "--rootdir")
+ pytestargs.insert(1, SRC_ROOT)
+ for marker in reversed(markers or ()):
+ pytestargs.insert(0, marker)
+ pytestargs.insert(0, "-m")
+
+ ec = pytest.main(pytestargs)
+ return ec
+
+
+if __name__ == "__main__":
+ mainkwargs, pytestargs = parse_args()
+ ec = main(pytestargs, **mainkwargs)
+ sys.exit(ec)
diff --git a/python_files/tests/pytestadapter/.data/config_sub_folder/config/pytest.ini b/python_files/tests/pytestadapter/.data/config_sub_folder/config/pytest.ini
new file mode 100644
index 000000000000..dfac39a723e8
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/config_sub_folder/config/pytest.ini
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+[pytest]
+python_files =
+ test_*.py
+testpaths =
+ tests
diff --git a/python_files/tests/pytestadapter/.data/config_sub_folder/tests/test_hello.py b/python_files/tests/pytestadapter/.data/config_sub_folder/tests/test_hello.py
new file mode 100644
index 000000000000..2fd5e2b0a309
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/config_sub_folder/tests/test_hello.py
@@ -0,0 +1,6 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+def test_hello(): # test_marker--test_hello
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/dual_level_nested_folder/nested_folder_one/test_bottom_folder.py b/python_files/tests/pytestadapter/.data/dual_level_nested_folder/nested_folder_one/test_bottom_folder.py
new file mode 100644
index 000000000000..59738aeba37f
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/dual_level_nested_folder/nested_folder_one/test_bottom_folder.py
@@ -0,0 +1,14 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+# This test's id is dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_t.
+# This test passes.
+def test_bottom_function_t(): # test_marker--test_bottom_function_t
+ assert True
+
+
+# This test's id is dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_f.
+# This test fails.
+def test_bottom_function_f(): # test_marker--test_bottom_function_f
+ assert False
diff --git a/python_files/tests/pytestadapter/.data/dual_level_nested_folder/test_top_folder.py b/python_files/tests/pytestadapter/.data/dual_level_nested_folder/test_top_folder.py
new file mode 100644
index 000000000000..010c54cf4461
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/dual_level_nested_folder/test_top_folder.py
@@ -0,0 +1,14 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+# This test's id is dual_level_nested_folder/test_top_folder.py::test_top_function_t.
+# This test passes.
+def test_top_function_t(): # test_marker--test_top_function_t
+ assert True
+
+
+# This test's id is dual_level_nested_folder/test_top_folder.py::test_top_function_f.
+# This test fails.
+def test_top_function_f(): # test_marker--test_top_function_f
+ assert False
diff --git a/python_files/tests/pytestadapter/.data/empty_discovery.py b/python_files/tests/pytestadapter/.data/empty_discovery.py
new file mode 100644
index 000000000000..5f4ea27aec7f
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/empty_discovery.py
@@ -0,0 +1,7 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+# This file has no tests in it; the discovery will return an empty list of tests.
+def function_function(string):
+ return string
diff --git a/python_files/tests/pytestadapter/.data/error_parametrize_discovery.py b/python_files/tests/pytestadapter/.data/error_parametrize_discovery.py
new file mode 100644
index 000000000000..8e48224edf3b
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/error_parametrize_discovery.py
@@ -0,0 +1,10 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import pytest
+
+
+# This test has an error which will appear on pytest discovery.
+# This error is intentional and is meant to test pytest discovery error handling.
+@pytest.mark.parametrize("actual,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
+def test_function():
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/error_pytest_import.txt b/python_files/tests/pytestadapter/.data/error_pytest_import.txt
new file mode 100644
index 000000000000..7d65dee2ccc6
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/error_pytest_import.txt
@@ -0,0 +1,6 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+@pytest.mark.parametrize("num", range(1, 89))
+def test_odd_even(num):
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/error_raise_exception.py b/python_files/tests/pytestadapter/.data/error_raise_exception.py
new file mode 100644
index 000000000000..2506089abe07
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/error_raise_exception.py
@@ -0,0 +1,14 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import pytest
+
+
+@pytest.fixture
+def raise_fixture():
+ raise Exception("Dummy exception")
+
+
+class TestSomething:
+ def test_a(self, raise_fixture):
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/error_syntax_discovery.txt b/python_files/tests/pytestadapter/.data/error_syntax_discovery.txt
new file mode 100644
index 000000000000..78627fffb351
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/error_syntax_discovery.txt
@@ -0,0 +1,7 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+# This test has a syntax error.
+# This error is intentional and is meant to test pytest discovery error handling.
+def test_function()
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/folder_a/folder_b/folder_a/test_nest.py b/python_files/tests/pytestadapter/.data/folder_a/folder_b/folder_a/test_nest.py
new file mode 100644
index 000000000000..9ac9f7017f87
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/folder_a/folder_b/folder_a/test_nest.py
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+# This test's id is double_nested_folder/nested_folder_one/nested_folder_two/test_nest.py::test_function.
+# This test passes.
+def test_function(): # test_marker--test_function
+ assert 1 == 1
diff --git a/python_files/tests/pytestadapter/.data/param_same_name/test_param1.py b/python_files/tests/pytestadapter/.data/param_same_name/test_param1.py
new file mode 100644
index 000000000000..a16d0f49f411
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/param_same_name/test_param1.py
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import pytest
+
+
+@pytest.mark.parametrize("num", ["a", "b", "c"])
+def test_odd_even(num):
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/param_same_name/test_param2.py b/python_files/tests/pytestadapter/.data/param_same_name/test_param2.py
new file mode 100644
index 000000000000..c0ea8010e359
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/param_same_name/test_param2.py
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import pytest
+
+
+@pytest.mark.parametrize("num", range(1, 4))
+def test_odd_even(num):
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/parametrize_tests.py b/python_files/tests/pytestadapter/.data/parametrize_tests.py
new file mode 100644
index 000000000000..34d3c4201f0f
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/parametrize_tests.py
@@ -0,0 +1,23 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import pytest
+
+
+class TestClass:
+ # Testing pytest with parametrized tests. The first two pass, the third fails.
+ # The tests ids are parametrize_tests.py::test_adding[3+5-8] and so on.
+ @pytest.mark.parametrize( # test_marker--test_adding
+ "actual, expected", [("3+5", 8), ("2+4", 6), ("6+9", 16)]
+ )
+ def test_adding(self, actual, expected):
+ assert eval(actual) == expected
+
+
+# Testing pytest with parametrized tests. All three pass.
+# The tests ids are parametrize_tests.py::test_under_ten[1] and so on.
+@pytest.mark.parametrize( # test_marker--test_string
+ "string", ["hello", "complicated split [] ()"]
+)
+def test_string(string):
+ assert string == "hello"
diff --git a/python_files/tests/pytestadapter/.data/pytest.ini b/python_files/tests/pytestadapter/.data/pytest.ini
new file mode 100644
index 000000000000..ddbcd6544e5d
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/pytest.ini
@@ -0,0 +1,5 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+# pytest.ini is specified here so the root directory of the tests is kept at .data instead of referencing
+# the parent python_files/pyproject.toml for test_discovery.py and test_execution.py for pytest-adapter tests.
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py b/python_files/tests/pytestadapter/.data/root/tests/pytest.ini
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py
rename to python_files/tests/pytestadapter/.data/root/tests/pytest.ini
diff --git a/python_files/tests/pytestadapter/.data/root/tests/test_a.py b/python_files/tests/pytestadapter/.data/root/tests/test_a.py
new file mode 100644
index 000000000000..3ec3dd9626cb
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/root/tests/test_a.py
@@ -0,0 +1,6 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+def test_a_function(): # test_marker--test_a_function
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/root/tests/test_b.py b/python_files/tests/pytestadapter/.data/root/tests/test_b.py
new file mode 100644
index 000000000000..0d3148641f85
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/root/tests/test_b.py
@@ -0,0 +1,6 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+def test_b_function(): # test_marker--test_b_function
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/same_function_new_class_param.py b/python_files/tests/pytestadapter/.data/same_function_new_class_param.py
new file mode 100644
index 000000000000..6f85051436b8
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/same_function_new_class_param.py
@@ -0,0 +1,25 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import pytest
+
+
+class TestNotEmpty:
+ @pytest.mark.parametrize("a, b", [(1, 1), (2, 2)]) # test_marker--TestNotEmpty::test_integer
+ def test_integer(self, a, b):
+ assert a == b
+
+ @pytest.mark.parametrize( # test_marker--TestNotEmpty::test_string
+ "a, b", [("a", "a"), ("b", "b")]
+ )
+ def test_string(self, a, b):
+ assert a == b
+
+
+class TestEmpty:
+ @pytest.mark.parametrize("a, b", [(0, 0)]) # test_marker--TestEmpty::test_integer
+ def test_integer(self, a, b):
+ assert a == b
+
+ @pytest.mark.parametrize("a, b", [("", "")]) # test_marker--TestEmpty::test_string
+ def test_string(self, a, b):
+ assert a == b
diff --git a/python_files/tests/pytestadapter/.data/simple_pytest.py b/python_files/tests/pytestadapter/.data/simple_pytest.py
new file mode 100644
index 000000000000..9f9bfb014f3d
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/simple_pytest.py
@@ -0,0 +1,7 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+# This test passes.
+def test_function(): # test_marker--test_function
+ assert 1 == 1
diff --git a/python_files/tests/pytestadapter/.data/skip_tests.py b/python_files/tests/pytestadapter/.data/skip_tests.py
new file mode 100644
index 000000000000..871b0e7bf5c3
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/skip_tests.py
@@ -0,0 +1,40 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import pytest
+
+# Testing pytest with skipped tests. The first passes, the second three are skipped.
+
+
+def test_something(): # test_marker--test_something
+ # This tests passes successfully.
+ assert 1 + 1 == 2
+
+
+def test_another_thing(): # test_marker--test_another_thing
+ # Skip this test with a reason.
+ pytest.skip("Skipping this test for now")
+
+
+@pytest.mark.skip(
+ reason="Skipping this test as it requires additional setup" # test_marker--test_complex_thing
+)
+def test_decorator_thing():
+ # Skip this test as well, with a reason. This one uses a decorator.
+ assert True
+
+
+@pytest.mark.skipif(1 < 5, reason="is always true") # test_marker--test_complex_thing_2
+def test_decorator_thing_2():
+ # Skip this test as well, with a reason. This one uses a decorator with a condition.
+ assert True
+
+
+# With this test, the entire class is skipped.
+@pytest.mark.skip(reason="Skip TestClass")
+class TestClass:
+ def test_class_function_a(self): # test_marker--test_class_function_a
+ assert True
+
+ def test_class_function_b(self): # test_marker--test_class_function_b
+ assert False
diff --git a/python_files/tests/pytestadapter/.data/test_env_vars.py b/python_files/tests/pytestadapter/.data/test_env_vars.py
new file mode 100644
index 000000000000..c8a3add56763
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/test_env_vars.py
@@ -0,0 +1,32 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+
+
+def test_clear_env(monkeypatch):
+ # Clear all environment variables
+ monkeypatch.setattr(os, "environ", {})
+
+ # Now os.environ should be empty
+ assert not os.environ
+
+ # After the test finishes, the environment variables will be reset to their original state
+
+
+def test_check_env():
+ # This test will have access to the original environment variables
+ assert "PATH" in os.environ
+
+
+def test_clear_env_unsafe():
+ # Clear all environment variables
+ os.environ.clear()
+ # Now os.environ should be empty
+ assert not os.environ
+
+
+def test_check_env_unsafe():
+ # ("PATH" in os.environ) is False here if it runs after test_clear_env_unsafe.
+ # Regardless, this test will pass and TEST_PORT and TEST_UUID will still be set correctly
+ assert "PATH" not in os.environ
diff --git a/python_files/tests/pytestadapter/.data/test_logging.py b/python_files/tests/pytestadapter/.data/test_logging.py
new file mode 100644
index 000000000000..058ad8075718
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/test_logging.py
@@ -0,0 +1,35 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import logging
+import sys
+
+
+def test_logging2(caplog):
+ logger = logging.getLogger(__name__)
+ caplog.set_level(logging.DEBUG) # Set minimum log level to capture
+
+ logger.debug("This is a debug message.")
+ logger.info("This is an info message.")
+ logger.warning("This is a warning message.")
+ logger.error("This is an error message.")
+ logger.critical("This is a critical message.")
+
+ # Printing to stdout and stderr
+ print("This is a stdout message.")
+ print("This is a stderr message.", file=sys.stderr)
+ assert False
+
+
+def test_logging(caplog):
+ logger = logging.getLogger(__name__)
+ caplog.set_level(logging.DEBUG) # Set minimum log level to capture
+
+ logger.debug("This is a debug message.")
+ logger.info("This is an info message.")
+ logger.warning("This is a warning message.")
+ logger.error("This is an error message.")
+ logger.critical("This is a critical message.")
+
+ # Printing to stdout and stderr
+ print("This is a stdout message.")
+ print("This is a stderr message.", file=sys.stderr)
diff --git a/python_files/tests/pytestadapter/.data/test_multi_class_nest.py b/python_files/tests/pytestadapter/.data/test_multi_class_nest.py
new file mode 100644
index 000000000000..209f9d51915b
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/test_multi_class_nest.py
@@ -0,0 +1,19 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+class TestFirstClass:
+ class TestSecondClass:
+ def test_second(self): # test_marker--test_second
+ assert 1 == 2
+
+ def test_first(self): # test_marker--test_first
+ assert 1 == 2
+
+ class TestSecondClass2:
+ def test_second2(self): # test_marker--test_second2
+ assert 1 == 1
+
+
+def test_independent(): # test_marker--test_independent
+ assert 1 == 1
diff --git a/python_files/tests/pytestadapter/.data/test_param_span_class.py b/python_files/tests/pytestadapter/.data/test_param_span_class.py
new file mode 100644
index 000000000000..a024c438bbf9
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/test_param_span_class.py
@@ -0,0 +1,16 @@
+import pytest
+
+
+@pytest.fixture(scope="function", params=[1, 2])
+def setup(request):
+ return request.param
+
+
+class TestClass1:
+ def test_method1(self, setup): # test_marker--TestClass1::test_method1
+ assert 1 == 1
+
+
+class TestClass2:
+ def test_method1(self, setup): # test_marker--TestClass2::test_method1
+ assert 2 == 2
diff --git a/python_files/tests/pytestadapter/.data/text_docstring.txt b/python_files/tests/pytestadapter/.data/text_docstring.txt
new file mode 100644
index 000000000000..b29132c10b57
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/text_docstring.txt
@@ -0,0 +1,4 @@
+This is a doctest test which passes #test_marker--text_docstring.txt
+>>> x = 3
+>>> x
+3
diff --git a/python_files/tests/pytestadapter/.data/unittest_folder/test_add.py b/python_files/tests/pytestadapter/.data/unittest_folder/test_add.py
new file mode 100644
index 000000000000..e9bdda0ad2ad
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/unittest_folder/test_add.py
@@ -0,0 +1,29 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+
+def add(a, b):
+ return a + b
+
+
+class TestAddFunction(unittest.TestCase):
+ # This test's id is unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers.
+ # This test passes.
+ def test_add_positive_numbers(self): # test_marker--test_add_positive_numbers
+ result = add(2, 3)
+ self.assertEqual(result, 5)
+
+ # This test's id is unittest_folder/test_add.py::TestAddFunction::test_add_negative_numbers.
+ # This test passes.
+ def test_add_negative_numbers(self): # test_marker--test_add_negative_numbers
+ result = add(-2, -3)
+ self.assertEqual(result, -5)
+
+
+class TestDuplicateFunction(unittest.TestCase):
+ # This test's id is unittest_folder/test_subtract.py::TestDuplicateFunction::test_dup_a. It has the same class name as
+ # another test, but it's in a different file, so it should not be confused.
+ # This test passes.
+ def test_dup_a(self): # test_marker--test_dup_a
+ self.assertEqual(1, 1)
diff --git a/python_files/tests/pytestadapter/.data/unittest_folder/test_subtract.py b/python_files/tests/pytestadapter/.data/unittest_folder/test_subtract.py
new file mode 100644
index 000000000000..634a6d81f9eb
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/unittest_folder/test_subtract.py
@@ -0,0 +1,34 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+
+def subtract(a, b):
+ return a - b
+
+
+class TestSubtractFunction(unittest.TestCase):
+ # This test's id is unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_positive_numbers.
+ # This test passes.
+ def test_subtract_positive_numbers( # test_marker--test_subtract_positive_numbers
+ self,
+ ):
+ result = subtract(5, 3)
+ self.assertEqual(result, 2)
+
+ # This test's id is unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_negative_numbers.
+ # This test passes.
+ def test_subtract_negative_numbers( # test_marker--test_subtract_negative_numbers
+ self,
+ ):
+ result = subtract(-2, -3)
+ # This is intentional to test assertion failures
+ self.assertEqual(result, 100000)
+
+
+class TestDuplicateFunction(unittest.TestCase):
+ # This test's id is unittest_folder/test_subtract.py::TestDuplicateFunction::test_dup_s. It has the same class name as
+ # another test, but it's in a different file, so it should not be confused.
+ # This test passes.
+ def test_dup_s(self): # test_marker--test_dup_s
+ self.assertEqual(1, 1)
diff --git a/python_files/tests/pytestadapter/.data/unittest_pytest_same_file.py b/python_files/tests/pytestadapter/.data/unittest_pytest_same_file.py
new file mode 100644
index 000000000000..ac66779b9cbe
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/unittest_pytest_same_file.py
@@ -0,0 +1,17 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class TestExample(unittest.TestCase):
+ # This test's id is unittest_pytest_same_file.py::TestExample::test_true_unittest.
+ # Test type is unittest and this test passes.
+ def test_true_unittest(self): # test_marker--test_true_unittest
+ assert True
+
+
+# This test's id is unittest_pytest_same_file.py::test_true_pytest.
+# Test type is pytest and this test passes.
+def test_true_pytest(): # test_marker--test_true_pytest
+ assert True
diff --git a/python_files/tests/pytestadapter/.data/unittest_skiptest_file_level.py b/python_files/tests/pytestadapter/.data/unittest_skiptest_file_level.py
new file mode 100644
index 000000000000..362c74cbb76f
--- /dev/null
+++ b/python_files/tests/pytestadapter/.data/unittest_skiptest_file_level.py
@@ -0,0 +1,13 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+from unittest import SkipTest
+
+# Due to the skip at the file level, no tests will be discovered.
+raise SkipTest("Skip all tests in this file, they should not be recognized by pytest.")
+
+
+class SimpleTest(unittest.TestCase):
+ def testadd1(self):
+ assert True
diff --git a/pythonFiles/tests/debug_adapter/__init__.py b/python_files/tests/pytestadapter/__init__.py
similarity index 100%
rename from pythonFiles/tests/debug_adapter/__init__.py
rename to python_files/tests/pytestadapter/__init__.py
diff --git a/python_files/tests/pytestadapter/expected_discovery_test_output.py b/python_files/tests/pytestadapter/expected_discovery_test_output.py
new file mode 100644
index 000000000000..723adaabc3e5
--- /dev/null
+++ b/python_files/tests/pytestadapter/expected_discovery_test_output.py
@@ -0,0 +1,1397 @@
+import os
+
+
+from .helpers import TEST_DATA_PATH, find_test_line_number, get_absolute_test_id
+
+# This file contains the expected output dictionaries for tests discovery and is used in test_discovery.py.
+
+# This is the expected output for the empty_discovery.py file.
+# └──
+TEST_DATA_PATH_STR = os.fspath(TEST_DATA_PATH)
+empty_discovery_pytest_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the simple_pytest.py file.
+# └── simple_pytest.py
+# └── test_function
+simple_test_file_path = TEST_DATA_PATH / "simple_pytest.py"
+simple_discovery_pytest_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "simple_pytest.py",
+ "path": os.fspath(simple_test_file_path),
+ "type_": "file",
+ "id_": os.fspath(simple_test_file_path),
+ "children": [
+ {
+ "name": "test_function",
+ "path": os.fspath(simple_test_file_path),
+ "lineno": find_test_line_number(
+ "test_function",
+ simple_test_file_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "simple_pytest.py::test_function", simple_test_file_path
+ ),
+ "runID": get_absolute_test_id(
+ "simple_pytest.py::test_function", simple_test_file_path
+ ),
+ }
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the unittest_pytest_same_file.py file.
+# ├── unittest_pytest_same_file.py
+# ├── TestExample
+# │ └── test_true_unittest
+# └── test_true_pytest
+unit_pytest_same_file_path = TEST_DATA_PATH / "unittest_pytest_same_file.py"
+unit_pytest_same_file_discovery_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "unittest_pytest_same_file.py",
+ "path": os.fspath(unit_pytest_same_file_path),
+ "type_": "file",
+ "id_": os.fspath(unit_pytest_same_file_path),
+ "children": [
+ {
+ "name": "TestExample",
+ "path": os.fspath(unit_pytest_same_file_path),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_true_unittest",
+ "path": os.fspath(unit_pytest_same_file_path),
+ "lineno": find_test_line_number(
+ "test_true_unittest",
+ os.fspath(unit_pytest_same_file_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_pytest_same_file.py::TestExample::test_true_unittest",
+ unit_pytest_same_file_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_pytest_same_file.py::TestExample::test_true_unittest",
+ unit_pytest_same_file_path,
+ ),
+ }
+ ],
+ "id_": "unittest_pytest_same_file.py::TestExample",
+ },
+ {
+ "name": "test_true_pytest",
+ "path": os.fspath(unit_pytest_same_file_path),
+ "lineno": find_test_line_number(
+ "test_true_pytest",
+ unit_pytest_same_file_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_pytest_same_file.py::test_true_pytest",
+ unit_pytest_same_file_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_pytest_same_file.py::test_true_pytest",
+ unit_pytest_same_file_path,
+ ),
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the unittest_skip_file_level test.
+# └── unittest_skiptest_file_level.py
+unittest_skip_file_level_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the unittest_folder tests
+# └── unittest_folder
+# ├── test_add.py
+# │ └── TestAddFunction
+# │ ├── test_add_negative_numbers
+# │ └── test_add_positive_numbers
+# │ └── TestDuplicateFunction
+# │ └── test_dup_a
+# └── test_subtract.py
+# └── TestSubtractFunction
+# ├── test_subtract_negative_numbers
+# └── test_subtract_positive_numbers
+# │ └── TestDuplicateFunction
+# │ └── test_dup_s
+unittest_folder_path = TEST_DATA_PATH / "unittest_folder"
+test_add_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+test_subtract_path = TEST_DATA_PATH / "unittest_folder" / "test_subtract.py"
+unittest_folder_discovery_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "unittest_folder",
+ "path": os.fspath(unittest_folder_path),
+ "type_": "folder",
+ "id_": os.fspath(unittest_folder_path),
+ "children": [
+ {
+ "name": "test_add.py",
+ "path": os.fspath(test_add_path),
+ "type_": "file",
+ "id_": os.fspath(test_add_path),
+ "children": [
+ {
+ "name": "TestAddFunction",
+ "path": os.fspath(test_add_path),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_add_negative_numbers",
+ "path": os.fspath(test_add_path),
+ "lineno": find_test_line_number(
+ "test_add_negative_numbers",
+ os.fspath(test_add_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestAddFunction::test_add_negative_numbers",
+ test_add_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestAddFunction::test_add_negative_numbers",
+ test_add_path,
+ ),
+ },
+ {
+ "name": "test_add_positive_numbers",
+ "path": os.fspath(test_add_path),
+ "lineno": find_test_line_number(
+ "test_add_positive_numbers",
+ os.fspath(test_add_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ test_add_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ test_add_path,
+ ),
+ },
+ ],
+ "id_": "unittest_folder/test_add.py::TestAddFunction",
+ },
+ {
+ "name": "TestDuplicateFunction",
+ "path": os.fspath(test_add_path),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_dup_a",
+ "path": os.fspath(test_add_path),
+ "lineno": find_test_line_number(
+ "test_dup_a",
+ os.fspath(test_add_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestDuplicateFunction::test_dup_a",
+ test_add_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_add.py::TestDuplicateFunction::test_dup_a",
+ test_add_path,
+ ),
+ },
+ ],
+ "id_": "unittest_folder/test_add.py::TestDuplicateFunction",
+ },
+ ],
+ },
+ {
+ "name": "test_subtract.py",
+ "path": os.fspath(test_subtract_path),
+ "type_": "file",
+ "id_": os.fspath(test_subtract_path),
+ "children": [
+ {
+ "name": "TestSubtractFunction",
+ "path": os.fspath(test_subtract_path),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_subtract_negative_numbers",
+ "path": os.fspath(test_subtract_path),
+ "lineno": find_test_line_number(
+ "test_subtract_negative_numbers",
+ os.fspath(test_subtract_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_negative_numbers",
+ test_subtract_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_negative_numbers",
+ test_subtract_path,
+ ),
+ },
+ {
+ "name": "test_subtract_positive_numbers",
+ "path": os.fspath(test_subtract_path),
+ "lineno": find_test_line_number(
+ "test_subtract_positive_numbers",
+ os.fspath(test_subtract_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_positive_numbers",
+ test_subtract_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_positive_numbers",
+ test_subtract_path,
+ ),
+ },
+ ],
+ "id_": "unittest_folder/test_subtract.py::TestSubtractFunction",
+ },
+ {
+ "name": "TestDuplicateFunction",
+ "path": os.fspath(test_subtract_path),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_dup_s",
+ "path": os.fspath(test_subtract_path),
+ "lineno": find_test_line_number(
+ "test_dup_s",
+ os.fspath(test_subtract_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestDuplicateFunction::test_dup_s",
+ test_subtract_path,
+ ),
+ "runID": get_absolute_test_id(
+ "unittest_folder/test_subtract.py::TestDuplicateFunction::test_dup_s",
+ test_subtract_path,
+ ),
+ },
+ ],
+ "id_": "unittest_folder/test_subtract.py::TestDuplicateFunction",
+ },
+ ],
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+
+# This is the expected output for the dual_level_nested_folder tests
+# └── dual_level_nested_folder
+# └── test_top_folder.py
+# └── test_top_function_t
+# └── test_top_function_f
+# └── nested_folder_one
+# └── test_bottom_folder.py
+# └── test_bottom_function_t
+# └── test_bottom_function_f
+dual_level_nested_folder_path = TEST_DATA_PATH / "dual_level_nested_folder"
+test_top_folder_path = TEST_DATA_PATH / "dual_level_nested_folder" / "test_top_folder.py"
+
+test_nested_folder_one_path = TEST_DATA_PATH / "dual_level_nested_folder" / "nested_folder_one"
+
+test_bottom_folder_path = (
+ TEST_DATA_PATH / "dual_level_nested_folder" / "nested_folder_one" / "test_bottom_folder.py"
+)
+
+
+dual_level_nested_folder_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "dual_level_nested_folder",
+ "path": os.fspath(dual_level_nested_folder_path),
+ "type_": "folder",
+ "id_": os.fspath(dual_level_nested_folder_path),
+ "children": [
+ {
+ "name": "test_top_folder.py",
+ "path": os.fspath(test_top_folder_path),
+ "type_": "file",
+ "id_": os.fspath(test_top_folder_path),
+ "children": [
+ {
+ "name": "test_top_function_t",
+ "path": os.fspath(test_top_folder_path),
+ "lineno": find_test_line_number(
+ "test_top_function_t",
+ test_top_folder_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_t",
+ test_top_folder_path,
+ ),
+ "runID": get_absolute_test_id(
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_t",
+ test_top_folder_path,
+ ),
+ },
+ {
+ "name": "test_top_function_f",
+ "path": os.fspath(test_top_folder_path),
+ "lineno": find_test_line_number(
+ "test_top_function_f",
+ test_top_folder_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_f",
+ test_top_folder_path,
+ ),
+ "runID": get_absolute_test_id(
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_f",
+ test_top_folder_path,
+ ),
+ },
+ ],
+ },
+ {
+ "name": "nested_folder_one",
+ "path": os.fspath(test_nested_folder_one_path),
+ "type_": "folder",
+ "id_": os.fspath(test_nested_folder_one_path),
+ "children": [
+ {
+ "name": "test_bottom_folder.py",
+ "path": os.fspath(test_bottom_folder_path),
+ "type_": "file",
+ "id_": os.fspath(test_bottom_folder_path),
+ "children": [
+ {
+ "name": "test_bottom_function_t",
+ "path": os.fspath(test_bottom_folder_path),
+ "lineno": find_test_line_number(
+ "test_bottom_function_t",
+ test_bottom_folder_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_t",
+ test_bottom_folder_path,
+ ),
+ "runID": get_absolute_test_id(
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_t",
+ test_bottom_folder_path,
+ ),
+ },
+ {
+ "name": "test_bottom_function_f",
+ "path": os.fspath(test_bottom_folder_path),
+ "lineno": find_test_line_number(
+ "test_bottom_function_f",
+ test_bottom_folder_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_f",
+ test_bottom_folder_path,
+ ),
+ "runID": get_absolute_test_id(
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_f",
+ test_bottom_folder_path,
+ ),
+ },
+ ],
+ }
+ ],
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the double_nested_folder tests.
+# └── folder_a
+# └── folder_b
+# └── folder_a
+# └── test_nest.py
+# └── test_function
+
+folder_a_path = TEST_DATA_PATH / "folder_a"
+folder_b_path = TEST_DATA_PATH / "folder_a" / "folder_b"
+folder_a_nested_path = TEST_DATA_PATH / "folder_a" / "folder_b" / "folder_a"
+test_nest_path = TEST_DATA_PATH / "folder_a" / "folder_b" / "folder_a" / "test_nest.py"
+double_nested_folder_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "folder_a",
+ "path": os.fspath(folder_a_path),
+ "type_": "folder",
+ "id_": os.fspath(folder_a_path),
+ "children": [
+ {
+ "name": "folder_b",
+ "path": os.fspath(folder_b_path),
+ "type_": "folder",
+ "id_": os.fspath(folder_b_path),
+ "children": [
+ {
+ "name": "folder_a",
+ "path": os.fspath(folder_a_nested_path),
+ "type_": "folder",
+ "id_": os.fspath(folder_a_nested_path),
+ "children": [
+ {
+ "name": "test_nest.py",
+ "path": os.fspath(test_nest_path),
+ "type_": "file",
+ "id_": os.fspath(test_nest_path),
+ "children": [
+ {
+ "name": "test_function",
+ "path": os.fspath(test_nest_path),
+ "lineno": find_test_line_number(
+ "test_function",
+ test_nest_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "folder_a/folder_b/folder_a/test_nest.py::test_function",
+ test_nest_path,
+ ),
+ "runID": get_absolute_test_id(
+ "folder_a/folder_b/folder_a/test_nest.py::test_function",
+ test_nest_path,
+ ),
+ }
+ ],
+ }
+ ],
+ }
+ ],
+ }
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the nested_folder tests.
+# └── parametrize_tests.py
+# └── TestClass
+# └── test_adding
+# └── [3+5-8]
+# └── [2+4-6]
+# └── [6+9-16]
+# └── test_string
+# └── [hello]
+# └── [complicated split [] ()]
+parameterize_tests_path = TEST_DATA_PATH / "parametrize_tests.py"
+parametrize_tests_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "parametrize_tests.py",
+ "path": os.fspath(parameterize_tests_path),
+ "type_": "file",
+ "id_": os.fspath(parameterize_tests_path),
+ "children": [
+ {
+ "name": "TestClass",
+ "path": os.fspath(parameterize_tests_path),
+ "type_": "class",
+ "id_": "parametrize_tests.py::TestClass",
+ "children": [
+ {
+ "name": "test_adding",
+ "path": os.fspath(parameterize_tests_path),
+ "type_": "function",
+ "id_": os.fspath(parameterize_tests_path) + "::TestClass::test_adding",
+ "children": [
+ {
+ "name": "[3+5-8]",
+ "path": os.fspath(parameterize_tests_path),
+ "lineno": find_test_line_number(
+ "test_adding[3+5-8]",
+ parameterize_tests_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]",
+ parameterize_tests_path,
+ ),
+ "runID": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]",
+ parameterize_tests_path,
+ ),
+ },
+ {
+ "name": "[2+4-6]",
+ "path": os.fspath(parameterize_tests_path),
+ "lineno": find_test_line_number(
+ "test_adding[2+4-6]",
+ parameterize_tests_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[2+4-6]",
+ parameterize_tests_path,
+ ),
+ "runID": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[2+4-6]",
+ parameterize_tests_path,
+ ),
+ },
+ {
+ "name": "[6+9-16]",
+ "path": os.fspath(parameterize_tests_path),
+ "lineno": find_test_line_number(
+ "test_adding[6+9-16]",
+ parameterize_tests_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[6+9-16]",
+ parameterize_tests_path,
+ ),
+ "runID": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[6+9-16]",
+ parameterize_tests_path,
+ ),
+ },
+ ],
+ },
+ ],
+ },
+ {
+ "name": "test_string",
+ "path": os.fspath(parameterize_tests_path),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[hello]",
+ "path": os.fspath(parameterize_tests_path),
+ "lineno": find_test_line_number(
+ "test_string[hello]",
+ parameterize_tests_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "parametrize_tests.py::test_string[hello]",
+ parameterize_tests_path,
+ ),
+ "runID": get_absolute_test_id(
+ "parametrize_tests.py::test_string[hello]",
+ parameterize_tests_path,
+ ),
+ },
+ {
+ "name": "[complicated split [] ()]",
+ "path": os.fspath(parameterize_tests_path),
+ "lineno": find_test_line_number(
+ "test_string[1]",
+ parameterize_tests_path,
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "parametrize_tests.py::test_string[complicated split [] ()]",
+ parameterize_tests_path,
+ ),
+ "runID": get_absolute_test_id(
+ "parametrize_tests.py::test_string[complicated split [] ()]",
+ parameterize_tests_path,
+ ),
+ },
+ ],
+ "id_": os.fspath(parameterize_tests_path) + "::test_string",
+ },
+ ],
+ },
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the text_docstring.txt tests.
+# └── text_docstring.txt
+text_docstring_path = TEST_DATA_PATH / "text_docstring.txt"
+doctest_pytest_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "text_docstring.txt",
+ "path": os.fspath(text_docstring_path),
+ "type_": "file",
+ "id_": os.fspath(text_docstring_path),
+ "children": [
+ {
+ "name": "text_docstring.txt",
+ "path": os.fspath(text_docstring_path),
+ "lineno": find_test_line_number(
+ "text_docstring.txt",
+ os.fspath(text_docstring_path),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "text_docstring.txt::text_docstring.txt", text_docstring_path
+ ),
+ "runID": get_absolute_test_id(
+ "text_docstring.txt::text_docstring.txt", text_docstring_path
+ ),
+ }
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+# This is the expected output for the param_same_name tests.
+# └── param_same_name
+# └── test_param1.py
+# └── test_odd_even
+# └── [a]
+# └── [b]
+# └── [c]
+# └── test_param2.py
+# └── test_odd_even
+# └── [1]
+# └── [2]
+# └── [3]
+param1_path = TEST_DATA_PATH / "param_same_name" / "test_param1.py"
+param2_path = TEST_DATA_PATH / "param_same_name" / "test_param2.py"
+param_same_name_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "param_same_name",
+ "path": os.fspath(TEST_DATA_PATH / "param_same_name"),
+ "type_": "folder",
+ "id_": os.fspath(TEST_DATA_PATH / "param_same_name"),
+ "children": [
+ {
+ "name": "test_param1.py",
+ "path": os.fspath(param1_path),
+ "type_": "file",
+ "id_": os.fspath(param1_path),
+ "children": [
+ {
+ "name": "test_odd_even",
+ "path": os.fspath(param1_path),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[a]",
+ "path": os.fspath(param1_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[a]",
+ param1_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[a]",
+ param1_path,
+ ),
+ },
+ {
+ "name": "[b]",
+ "path": os.fspath(param1_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[b]",
+ param1_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[b]",
+ param1_path,
+ ),
+ },
+ {
+ "name": "[c]",
+ "path": os.fspath(param1_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[c]",
+ param1_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param1.py::test_odd_even[c]",
+ param1_path,
+ ),
+ },
+ ],
+ "id_": os.fspath(param1_path) + "::test_odd_even",
+ }
+ ],
+ },
+ {
+ "name": "test_param2.py",
+ "path": os.fspath(param2_path),
+ "type_": "file",
+ "id_": os.fspath(param2_path),
+ "children": [
+ {
+ "name": "test_odd_even",
+ "path": os.fspath(param2_path),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[1]",
+ "path": os.fspath(param2_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[1]",
+ param2_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[1]",
+ param2_path,
+ ),
+ },
+ {
+ "name": "[2]",
+ "path": os.fspath(param2_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[2]",
+ param2_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[2]",
+ param2_path,
+ ),
+ },
+ {
+ "name": "[3]",
+ "path": os.fspath(param2_path),
+ "lineno": "6",
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[3]",
+ param2_path,
+ ),
+ "runID": get_absolute_test_id(
+ "param_same_name/test_param2.py::test_odd_even[3]",
+ param2_path,
+ ),
+ },
+ ],
+ "id_": os.fspath(param2_path) + "::test_odd_even",
+ }
+ ],
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+tests_path = TEST_DATA_PATH / "root" / "tests"
+tests_a_path = TEST_DATA_PATH / "root" / "tests" / "test_a.py"
+tests_b_path = TEST_DATA_PATH / "root" / "tests" / "test_b.py"
+# This is the expected output for the root folder tests.
+# └── tests
+# └── test_a.py
+# └── test_a_function
+# └── test_b.py
+# └── test_b_function
+root_with_config_expected_output = {
+ "name": "tests",
+ "path": os.fspath(tests_path),
+ "type_": "folder",
+ "children": [
+ {
+ "name": "test_a.py",
+ "path": os.fspath(tests_a_path),
+ "type_": "file",
+ "id_": os.fspath(tests_a_path),
+ "children": [
+ {
+ "name": "test_a_function",
+ "path": os.fspath(os.path.join(tests_path, "test_a.py")),
+ "lineno": find_test_line_number(
+ "test_a_function",
+ os.path.join(tests_path, "test_a.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id("tests/test_a.py::test_a_function", tests_a_path),
+ "runID": get_absolute_test_id("tests/test_a.py::test_a_function", tests_a_path),
+ }
+ ],
+ },
+ {
+ "name": "test_b.py",
+ "path": os.fspath(tests_b_path),
+ "type_": "file",
+ "id_": os.fspath(tests_b_path),
+ "children": [
+ {
+ "name": "test_b_function",
+ "path": os.fspath(os.path.join(tests_path, "test_b.py")),
+ "lineno": find_test_line_number(
+ "test_b_function",
+ os.path.join(tests_path, "test_b.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id("tests/test_b.py::test_b_function", tests_b_path),
+ "runID": get_absolute_test_id("tests/test_b.py::test_b_function", tests_b_path),
+ }
+ ],
+ },
+ ],
+ "id_": os.fspath(tests_path),
+}
+TEST_MULTI_CLASS_NEST_PATH = TEST_DATA_PATH / "test_multi_class_nest.py"
+# This is the expected output for the nested_classes tests.
+# └── test_multi_class_nest.py
+# └── TestFirstClass
+# └── TestSecondClass
+# └── test_second
+# └── test_first
+# └── TestSecondClass2
+# └── test_second2
+# └── test_independent
+nested_classes_expected_test_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "test_multi_class_nest.py",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "type_": "file",
+ "id_": str(TEST_MULTI_CLASS_NEST_PATH),
+ "children": [
+ {
+ "name": "TestFirstClass",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "type_": "class",
+ "id_": "test_multi_class_nest.py::TestFirstClass",
+ "children": [
+ {
+ "name": "TestSecondClass",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "type_": "class",
+ "id_": "test_multi_class_nest.py::TestFirstClass::TestSecondClass",
+ "children": [
+ {
+ "name": "test_second",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "lineno": find_test_line_number(
+ "test_second",
+ str(TEST_MULTI_CLASS_NEST_PATH),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::TestSecondClass::test_second",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ "runID": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::TestSecondClass::test_second",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ }
+ ],
+ },
+ {
+ "name": "test_first",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "lineno": find_test_line_number(
+ "test_first", str(TEST_MULTI_CLASS_NEST_PATH)
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::test_first",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ "runID": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::test_first",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ },
+ {
+ "name": "TestSecondClass2",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "type_": "class",
+ "id_": "test_multi_class_nest.py::TestFirstClass::TestSecondClass2",
+ "children": [
+ {
+ "name": "test_second2",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "lineno": find_test_line_number(
+ "test_second2",
+ str(TEST_MULTI_CLASS_NEST_PATH),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::TestSecondClass2::test_second2",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ "runID": get_absolute_test_id(
+ "test_multi_class_nest.py::TestFirstClass::TestSecondClass2::test_second2",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ }
+ ],
+ },
+ ],
+ },
+ {
+ "name": "test_independent",
+ "path": str(TEST_MULTI_CLASS_NEST_PATH),
+ "lineno": find_test_line_number(
+ "test_independent", str(TEST_MULTI_CLASS_NEST_PATH)
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_multi_class_nest.py::test_independent",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ "runID": get_absolute_test_id(
+ "test_multi_class_nest.py::test_independent",
+ TEST_MULTI_CLASS_NEST_PATH,
+ ),
+ },
+ ],
+ }
+ ],
+ "id_": str(TEST_DATA_PATH),
+}
+SYMLINK_FOLDER_PATH = TEST_DATA_PATH / "symlink_folder"
+SYMLINK_FOLDER_PATH_TESTS = TEST_DATA_PATH / "symlink_folder" / "tests"
+SYMLINK_FOLDER_PATH_TESTS_TEST_A = TEST_DATA_PATH / "symlink_folder" / "tests" / "test_a.py"
+SYMLINK_FOLDER_PATH_TESTS_TEST_B = TEST_DATA_PATH / "symlink_folder" / "tests" / "test_b.py"
+
+# This is the expected output for the symlink_folder tests.
+# └── symlink_folder
+# └── tests
+# └── test_a.py
+# └── test_a_function
+# └── test_b.py
+# └── test_b_function
+symlink_expected_discovery_output = {
+ "name": "symlink_folder",
+ "path": str(SYMLINK_FOLDER_PATH),
+ "type_": "folder",
+ "children": [
+ {
+ "name": "tests",
+ "path": str(SYMLINK_FOLDER_PATH_TESTS),
+ "type_": "folder",
+ "id_": str(SYMLINK_FOLDER_PATH_TESTS),
+ "children": [
+ {
+ "name": "test_a.py",
+ "path": str(SYMLINK_FOLDER_PATH_TESTS_TEST_A),
+ "type_": "file",
+ "id_": str(SYMLINK_FOLDER_PATH_TESTS_TEST_A),
+ "children": [
+ {
+ "name": "test_a_function",
+ "path": str(SYMLINK_FOLDER_PATH_TESTS_TEST_A),
+ "lineno": find_test_line_number(
+ "test_a_function",
+ os.path.join(tests_path, "test_a.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "tests/test_a.py::test_a_function",
+ SYMLINK_FOLDER_PATH_TESTS_TEST_A,
+ ),
+ "runID": get_absolute_test_id(
+ "tests/test_a.py::test_a_function",
+ SYMLINK_FOLDER_PATH_TESTS_TEST_A,
+ ),
+ }
+ ],
+ },
+ {
+ "name": "test_b.py",
+ "path": str(SYMLINK_FOLDER_PATH_TESTS_TEST_B),
+ "type_": "file",
+ "id_": str(SYMLINK_FOLDER_PATH_TESTS_TEST_B),
+ "children": [
+ {
+ "name": "test_b_function",
+ "path": str(SYMLINK_FOLDER_PATH_TESTS_TEST_B),
+ "lineno": find_test_line_number(
+ "test_b_function",
+ os.path.join(tests_path, "test_b.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "tests/test_b.py::test_b_function",
+ SYMLINK_FOLDER_PATH_TESTS_TEST_B,
+ ),
+ "runID": get_absolute_test_id(
+ "tests/test_b.py::test_b_function",
+ SYMLINK_FOLDER_PATH_TESTS_TEST_B,
+ ),
+ }
+ ],
+ },
+ ],
+ }
+ ],
+ "id_": str(SYMLINK_FOLDER_PATH),
+}
+
+same_function_new_class_param_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "same_function_new_class_param.py",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "file",
+ "id_": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "children": [
+ {
+ "name": "TestNotEmpty",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_integer",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[1-1]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestNotEmpty::test_integer",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_integer[1-1]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_integer[1-1]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ {
+ "name": "[2-2]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestNotEmpty::test_integer",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_integer[2-2]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_integer[2-2]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py")
+ + "::TestNotEmpty::test_integer",
+ },
+ {
+ "name": "test_string",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[a-a]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestNotEmpty::test_string",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_string[a-a]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_string[a-a]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ {
+ "name": "[b-b]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestNotEmpty::test_string",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_string[b-b]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestNotEmpty::test_string[b-b]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py")
+ + "::TestNotEmpty::test_string",
+ },
+ ],
+ "id_": "same_function_new_class_param.py::TestNotEmpty",
+ },
+ {
+ "name": "TestEmpty",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_integer",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[0-0]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestEmpty::test_integer",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestEmpty::test_integer[0-0]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestEmpty::test_integer[0-0]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py")
+ + "::TestEmpty::test_integer",
+ },
+ {
+ "name": "test_string",
+ "path": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[-]",
+ "path": os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ "lineno": find_test_line_number(
+ "TestEmpty::test_string",
+ os.fspath(
+ TEST_DATA_PATH / "same_function_new_class_param.py"
+ ),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "same_function_new_class_param.py::TestEmpty::test_string[-]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ "runID": get_absolute_test_id(
+ "same_function_new_class_param.py::TestEmpty::test_string[-]",
+ TEST_DATA_PATH / "same_function_new_class_param.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "same_function_new_class_param.py")
+ + "::TestEmpty::test_string",
+ },
+ ],
+ "id_": "same_function_new_class_param.py::TestEmpty",
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
+
+test_param_span_class_expected_output = {
+ "name": ".data",
+ "path": TEST_DATA_PATH_STR,
+ "type_": "folder",
+ "children": [
+ {
+ "name": "test_param_span_class.py",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "type_": "file",
+ "id_": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "children": [
+ {
+ "name": "TestClass1",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_method1",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[1]",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "lineno": find_test_line_number(
+ "TestClass1::test_method1",
+ os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_param_span_class.py::TestClass1::test_method1[1]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ "runID": get_absolute_test_id(
+ "test_param_span_class.py::TestClass1::test_method1[1]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ },
+ {
+ "name": "[2]",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "lineno": find_test_line_number(
+ "TestClass1::test_method1",
+ os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_param_span_class.py::TestClass1::test_method1[2]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ "runID": get_absolute_test_id(
+ "test_param_span_class.py::TestClass1::test_method1[2]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(
+ TEST_DATA_PATH
+ / "test_param_span_class.py::TestClass1::test_method1"
+ ),
+ }
+ ],
+ "id_": "test_param_span_class.py::TestClass1",
+ },
+ {
+ "name": "TestClass2",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "type_": "class",
+ "children": [
+ {
+ "name": "test_method1",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "type_": "function",
+ "children": [
+ {
+ "name": "[1]",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "lineno": find_test_line_number(
+ "TestClass2::test_method1",
+ os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_param_span_class.py::TestClass2::test_method1[1]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ "runID": get_absolute_test_id(
+ "test_param_span_class.py::TestClass2::test_method1[1]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ },
+ {
+ "name": "[2]",
+ "path": os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ "lineno": find_test_line_number(
+ "TestClass2::test_method1",
+ os.fspath(TEST_DATA_PATH / "test_param_span_class.py"),
+ ),
+ "type_": "test",
+ "id_": get_absolute_test_id(
+ "test_param_span_class.py::TestClass2::test_method1[2]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ "runID": get_absolute_test_id(
+ "test_param_span_class.py::TestClass2::test_method1[2]",
+ TEST_DATA_PATH / "test_param_span_class.py",
+ ),
+ },
+ ],
+ "id_": os.fspath(
+ TEST_DATA_PATH
+ / "test_param_span_class.py::TestClass2::test_method1"
+ ),
+ }
+ ],
+ "id_": "test_param_span_class.py::TestClass2",
+ },
+ ],
+ }
+ ],
+ "id_": TEST_DATA_PATH_STR,
+}
diff --git a/python_files/tests/pytestadapter/expected_execution_test_output.py b/python_files/tests/pytestadapter/expected_execution_test_output.py
new file mode 100644
index 000000000000..521f72ab8439
--- /dev/null
+++ b/python_files/tests/pytestadapter/expected_execution_test_output.py
@@ -0,0 +1,648 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+from .helpers import TEST_DATA_PATH, get_absolute_test_id
+
+TEST_SUBTRACT_FUNCTION = "unittest_folder/test_subtract.py::TestSubtractFunction::"
+TEST_ADD_FUNCTION = "unittest_folder/test_add.py::TestAddFunction::"
+SUCCESS = "success"
+FAILURE = "failure"
+
+# This is the expected output for the unittest_folder execute tests
+# └── unittest_folder
+# ├── test_add.py
+# │ └── TestAddFunction
+# │ ├── test_add_negative_numbers: success
+# │ └── test_add_positive_numbers: success
+# └── test_subtract.py
+# └── TestSubtractFunction
+# ├── test_subtract_negative_numbers: failure
+# └── test_subtract_positive_numbers: success
+test_add_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+test_subtract_path = TEST_DATA_PATH / "unittest_folder" / "test_subtract.py"
+uf_execution_expected_output = {
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_negative_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_negative_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_negative_numbers",
+ test_subtract_path,
+ ): {
+ "test": get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_negative_numbers",
+ test_subtract_path,
+ ),
+ "outcome": FAILURE,
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_positive_numbers",
+ test_subtract_path,
+ ): {
+ "test": get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_positive_numbers",
+ test_subtract_path,
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+
+# This is the expected output for the unittest_folder only execute add.py tests
+# └── unittest_folder
+# ├── test_add.py
+# │ └── TestAddFunction
+# │ ├── test_add_negative_numbers: success
+# │ └── test_add_positive_numbers: success
+test_add_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+
+uf_single_file_expected_output = {
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_negative_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_negative_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+
+# This is the expected output for the unittest_folder execute only signle method
+# └── unittest_folder
+# ├── test_add.py
+# │ └── TestAddFunction
+# │ └── test_add_positive_numbers: success
+uf_single_method_execution_expected_output = {
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the unittest_folder tests run where two tests
+# run are in different files.
+# └── unittest_folder
+# ├── test_add.py
+# │ └── TestAddFunction
+# │ └── test_add_positive_numbers: success
+# └── test_subtract.py
+# └── TestSubtractFunction
+# └── test_subtract_positive_numbers: success
+test_subtract_path = TEST_DATA_PATH / "unittest_folder" / "test_subtract.py"
+test_add_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+
+uf_non_adjacent_tests_execution_expected_output = {
+ get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_positive_numbers", test_subtract_path
+ ): {
+ "test": get_absolute_test_id(
+ f"{TEST_SUBTRACT_FUNCTION}test_subtract_positive_numbers",
+ test_subtract_path,
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path): {
+ "test": get_absolute_test_id(
+ f"{TEST_ADD_FUNCTION}test_add_positive_numbers", test_add_path
+ ),
+ "outcome": SUCCESS,
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+
+# This is the expected output for the simple_pytest.py file.
+# └── simple_pytest.py
+# └── test_function: success
+simple_pytest_path = TEST_DATA_PATH / "unittest_folder" / "simple_pytest.py"
+
+simple_execution_pytest_expected_output = {
+ get_absolute_test_id("test_function", simple_pytest_path): {
+ "test": get_absolute_test_id("test_function", simple_pytest_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ }
+}
+
+
+# This is the expected output for the unittest_pytest_same_file.py file.
+# ├── unittest_pytest_same_file.py
+# ├── TestExample
+# │ └── test_true_unittest: success
+# └── test_true_pytest: success
+unit_pytest_same_file_path = TEST_DATA_PATH / "unittest_pytest_same_file.py"
+unit_pytest_same_file_execution_expected_output = {
+ get_absolute_test_id(
+ "unittest_pytest_same_file.py::TestExample::test_true_unittest",
+ unit_pytest_same_file_path,
+ ): {
+ "test": get_absolute_test_id(
+ "unittest_pytest_same_file.py::TestExample::test_true_unittest",
+ unit_pytest_same_file_path,
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "unittest_pytest_same_file.py::test_true_pytest", unit_pytest_same_file_path
+ ): {
+ "test": get_absolute_test_id(
+ "unittest_pytest_same_file.py::test_true_pytest",
+ unit_pytest_same_file_path,
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the error_raised_exception.py file.
+# └── error_raise_exception.py
+# ├── TestSomething
+# │ └── test_a: failure
+error_raised_exception_path = TEST_DATA_PATH / "error_raise_exception.py"
+error_raised_exception_execution_expected_output = {
+ get_absolute_test_id(
+ "error_raise_exception.py::TestSomething::test_a", error_raised_exception_path
+ ): {
+ "test": get_absolute_test_id(
+ "error_raise_exception.py::TestSomething::test_a",
+ error_raised_exception_path,
+ ),
+ "outcome": "error",
+ "message": "ERROR MESSAGE",
+ "traceback": "TRACEBACK",
+ "subtest": None,
+ }
+}
+
+# This is the expected output for the skip_tests.py file.
+# └── test_something: success
+# └── test_another_thing: skipped
+# └── test_decorator_thing: skipped
+# └── test_decorator_thing_2: skipped
+# ├── TestClass
+# │ └── test_class_function_a: skipped
+# │ └── test_class_function_b: skipped
+
+skip_tests_path = TEST_DATA_PATH / "skip_tests.py"
+skip_tests_execution_expected_output = {
+ get_absolute_test_id("skip_tests.py::test_something", skip_tests_path): {
+ "test": get_absolute_test_id("skip_tests.py::test_something", skip_tests_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("skip_tests.py::test_another_thing", skip_tests_path): {
+ "test": get_absolute_test_id("skip_tests.py::test_another_thing", skip_tests_path),
+ "outcome": "skipped",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("skip_tests.py::test_decorator_thing", skip_tests_path): {
+ "test": get_absolute_test_id("skip_tests.py::test_decorator_thing", skip_tests_path),
+ "outcome": "skipped",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("skip_tests.py::test_decorator_thing_2", skip_tests_path): {
+ "test": get_absolute_test_id("skip_tests.py::test_decorator_thing_2", skip_tests_path),
+ "outcome": "skipped",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("skip_tests.py::TestClass::test_class_function_a", skip_tests_path): {
+ "test": get_absolute_test_id(
+ "skip_tests.py::TestClass::test_class_function_a", skip_tests_path
+ ),
+ "outcome": "skipped",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("skip_tests.py::TestClass::test_class_function_b", skip_tests_path): {
+ "test": get_absolute_test_id(
+ "skip_tests.py::TestClass::test_class_function_b", skip_tests_path
+ ),
+ "outcome": "skipped",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+
+# This is the expected output for the dual_level_nested_folder.py tests
+# └── dual_level_nested_folder
+# └── test_top_folder.py
+# └── test_top_function_t: success
+# └── test_top_function_f: failure
+# └── nested_folder_one
+# └── test_bottom_folder.py
+# └── test_bottom_function_t: success
+# └── test_bottom_function_f: failure
+dual_level_nested_folder_top_path = (
+ TEST_DATA_PATH / "dual_level_nested_folder" / "test_top_folder.py"
+)
+dual_level_nested_folder_bottom_path = (
+ TEST_DATA_PATH / "dual_level_nested_folder" / "nested_folder_one" / "test_bottom_folder.py"
+)
+dual_level_nested_folder_execution_expected_output = {
+ get_absolute_test_id(
+ "test_top_folder.py::test_top_function_t", dual_level_nested_folder_top_path
+ ): {
+ "test": get_absolute_test_id(
+ "test_top_folder.py::test_top_function_t", dual_level_nested_folder_top_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "test_top_folder.py::test_top_function_f", dual_level_nested_folder_top_path
+ ): {
+ "test": get_absolute_test_id(
+ "test_top_folder.py::test_top_function_f", dual_level_nested_folder_top_path
+ ),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "nested_folder_one/test_bottom_folder.py::test_bottom_function_t",
+ dual_level_nested_folder_bottom_path,
+ ): {
+ "test": get_absolute_test_id(
+ "nested_folder_one/test_bottom_folder.py::test_bottom_function_t",
+ dual_level_nested_folder_bottom_path,
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "nested_folder_one/test_bottom_folder.py::test_bottom_function_f",
+ dual_level_nested_folder_bottom_path,
+ ): {
+ "test": get_absolute_test_id(
+ "nested_folder_one/test_bottom_folder.py::test_bottom_function_f",
+ dual_level_nested_folder_bottom_path,
+ ),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the nested_folder tests.
+# └── folder_a
+# └── folder_b
+# └── folder_a
+# └── test_nest.py
+# └── test_function: success
+
+nested_folder_path = TEST_DATA_PATH / "folder_a" / "folder_b" / "folder_a" / "test_nest.py"
+double_nested_folder_expected_execution_output = {
+ get_absolute_test_id(
+ "folder_a/folder_b/folder_a/test_nest.py::test_function", nested_folder_path
+ ): {
+ "test": get_absolute_test_id(
+ "folder_a/folder_b/folder_a/test_nest.py::test_function", nested_folder_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ }
+}
+# This is the expected output for the nested_folder tests.
+# └── parametrize_tests.py
+# └── TestClass
+# └── test_adding[3+5-8]: success
+# └── test_adding[2+4-6]: success
+# └── test_adding[6+9-16]: failure
+parametrize_tests_path = TEST_DATA_PATH / "parametrize_tests.py"
+
+parametrize_tests_expected_execution_output = {
+ get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]", parametrize_tests_path
+ ): {
+ "test": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]", parametrize_tests_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[2+4-6]", parametrize_tests_path
+ ): {
+ "test": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[2+4-6]", parametrize_tests_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[6+9-16]", parametrize_tests_path
+ ): {
+ "test": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[6+9-16]", parametrize_tests_path
+ ),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the single parameterized tests.
+# └── parametrize_tests.py
+# └── TestClass
+# └── test_adding[3+5-8]: success
+single_parametrize_tests_expected_execution_output = {
+ get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]", parametrize_tests_path
+ ): {
+ "test": get_absolute_test_id(
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]", parametrize_tests_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the single parameterized tests.
+# └── text_docstring.txt
+# └── text_docstring: success
+doc_test_path = TEST_DATA_PATH / "text_docstring.txt"
+doctest_pytest_expected_execution_output = {
+ get_absolute_test_id("text_docstring.txt::text_docstring.txt", doc_test_path): {
+ "test": get_absolute_test_id("text_docstring.txt::text_docstring.txt", doc_test_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ }
+}
+
+# Will run all tests in the cwd that fit the test file naming pattern.
+folder_a_path = TEST_DATA_PATH / "folder_a" / "folder_b" / "folder_a" / "test_nest.py"
+dual_level_nested_folder_top_path = (
+ TEST_DATA_PATH / "dual_level_nested_folder" / "test_top_folder.py"
+)
+dual_level_nested_folder_bottom_path = (
+ TEST_DATA_PATH / "dual_level_nested_folder" / "nested_folder_one" / "test_bottom_folder.py"
+)
+unittest_folder_add_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+unittest_folder_subtract_path = TEST_DATA_PATH / "unittest_folder" / "test_subtract.py"
+
+no_test_ids_pytest_execution_expected_output = {
+ get_absolute_test_id("test_function", folder_a_path): {
+ "test": get_absolute_test_id("test_function", folder_a_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_top_function_t", dual_level_nested_folder_top_path): {
+ "test": get_absolute_test_id("test_top_function_t", dual_level_nested_folder_top_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_top_function_f", dual_level_nested_folder_top_path): {
+ "test": get_absolute_test_id("test_top_function_f", dual_level_nested_folder_top_path),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_bottom_function_t", dual_level_nested_folder_bottom_path): {
+ "test": get_absolute_test_id(
+ "test_bottom_function_t", dual_level_nested_folder_bottom_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_bottom_function_f", dual_level_nested_folder_bottom_path): {
+ "test": get_absolute_test_id(
+ "test_bottom_function_f", dual_level_nested_folder_bottom_path
+ ),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("TestAddFunction::test_add_negative_numbers", unittest_folder_add_path): {
+ "test": get_absolute_test_id(
+ "TestAddFunction::test_add_negative_numbers", unittest_folder_add_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("TestAddFunction::test_add_positive_numbers", unittest_folder_add_path): {
+ "test": get_absolute_test_id(
+ "TestAddFunction::test_add_positive_numbers", unittest_folder_add_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "TestSubtractFunction::test_subtract_negative_numbers",
+ unittest_folder_subtract_path,
+ ): {
+ "test": get_absolute_test_id(
+ "TestSubtractFunction::test_subtract_negative_numbers",
+ unittest_folder_subtract_path,
+ ),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "TestSubtractFunction::test_subtract_positive_numbers",
+ unittest_folder_subtract_path,
+ ): {
+ "test": get_absolute_test_id(
+ "TestSubtractFunction::test_subtract_positive_numbers",
+ unittest_folder_subtract_path,
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the root folder with the config file referenced.
+# └── test_a.py
+# └── test_a_function: success
+test_add_path = TEST_DATA_PATH / "root" / "tests" / "test_a.py"
+config_file_pytest_expected_execution_output = {
+ get_absolute_test_id("tests/test_a.py::test_a_function", test_add_path): {
+ "test": get_absolute_test_id("tests/test_a.py::test_a_function", test_add_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ }
+}
+
+
+# This is the expected output for the test logging file.
+# └── test_logging.py
+# └── test_logging2: failure
+# └── test_logging: success
+test_logging_path = TEST_DATA_PATH / "test_logging.py"
+
+logging_test_expected_execution_output = {
+ get_absolute_test_id("test_logging.py::test_logging2", test_logging_path): {
+ "test": get_absolute_test_id("test_logging.py::test_logging2", test_logging_path),
+ "outcome": "failure",
+ "message": "ERROR MESSAGE",
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_logging.py::test_logging", test_logging_path): {
+ "test": get_absolute_test_id("test_logging.py::test_logging", test_logging_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the test safe clear env vars file.
+# └── test_env_vars.py
+# └── test_clear_env: success
+# └── test_check_env: success
+
+test_safe_clear_env_vars_path = TEST_DATA_PATH / "test_env_vars.py"
+safe_clear_env_vars_expected_execution_output = {
+ get_absolute_test_id("test_env_vars.py::test_clear_env", test_safe_clear_env_vars_path): {
+ "test": get_absolute_test_id(
+ "test_env_vars.py::test_clear_env", test_safe_clear_env_vars_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id("test_env_vars.py::test_check_env", test_safe_clear_env_vars_path): {
+ "test": get_absolute_test_id(
+ "test_env_vars.py::test_check_env", test_safe_clear_env_vars_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# This is the expected output for the test unsafe clear env vars file.
+# └── test_env_vars.py
+# └── test_clear_env_unsafe: success
+# └── test_check_env_unsafe: success
+unsafe_clear_env_vars_expected_execution_output = {
+ get_absolute_test_id(
+ "test_env_vars.py::test_clear_env_unsafe", test_safe_clear_env_vars_path
+ ): {
+ "test": get_absolute_test_id(
+ "test_env_vars.py::test_clear_env_unsafe", test_safe_clear_env_vars_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+ get_absolute_test_id(
+ "test_env_vars.py::test_check_env_unsafe", test_safe_clear_env_vars_path
+ ): {
+ "test": get_absolute_test_id(
+ "test_env_vars.py::test_check_env_unsafe", test_safe_clear_env_vars_path
+ ),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ },
+}
+
+# Constant for the symlink execution test where TEST_DATA_PATH / "root" the target and TEST_DATA_PATH / "symlink_folder" the symlink
+test_a_symlink_path = TEST_DATA_PATH / "symlink_folder" / "tests" / "test_a.py"
+symlink_run_expected_execution_output = {
+ get_absolute_test_id("test_a.py::test_a_function", test_a_symlink_path): {
+ "test": get_absolute_test_id("test_a.py::test_a_function", test_a_symlink_path),
+ "outcome": "success",
+ "message": None,
+ "traceback": None,
+ "subtest": None,
+ }
+}
diff --git a/python_files/tests/pytestadapter/helpers.py b/python_files/tests/pytestadapter/helpers.py
new file mode 100644
index 000000000000..978fd7f9ce08
--- /dev/null
+++ b/python_files/tests/pytestadapter/helpers.py
@@ -0,0 +1,350 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import contextlib
+import io
+import json
+import os
+import pathlib
+import socket
+import subprocess
+import sys
+import tempfile
+import threading
+from typing import Any, Dict, List, Optional, Tuple
+import uuid
+
+if sys.platform == "win32":
+ from namedpipe import NPopen
+
+
+script_dir = pathlib.Path(__file__).parent.parent.parent
+script_dir_child = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+sys.path.append(os.fspath(script_dir_child))
+sys.path.append(os.fspath(script_dir / "lib" / "python"))
+print("sys add path", script_dir)
+
+TEST_DATA_PATH = pathlib.Path(__file__).parent / ".data"
+CONTENT_LENGTH: str = "Content-Length:"
+CONTENT_TYPE: str = "Content-Type:"
+
+
+@contextlib.contextmanager
+def text_to_python_file(text_file_path: pathlib.Path):
+ """Convert a text file to a python file and yield the python file path."""
+ python_file = None
+ try:
+ contents = text_file_path.read_text(encoding="utf-8")
+ python_file = text_file_path.with_suffix(".py")
+ python_file.write_text(contents, encoding="utf-8")
+ yield python_file
+ finally:
+ if python_file:
+ os.unlink(os.fspath(python_file))
+
+
+@contextlib.contextmanager
+def create_symlink(root: pathlib.Path, target_ext: str, destination_ext: str):
+ destination = None
+ try:
+ destination = root / destination_ext
+ target = root / target_ext
+ if destination and destination.exists():
+ print("destination already exists", destination)
+ try:
+ destination.symlink_to(target)
+ except Exception as e:
+ print("error occurred when attempting to create a symlink", e)
+ yield target, destination
+ finally:
+ if destination and destination.exists():
+ destination.unlink()
+ print("destination unlinked", destination)
+
+
+def process_data_received(data: str) -> List[Dict[str, Any]]:
+ """Process the all JSON data which comes from the server. After listen is finished, this function will be called.
+ Here the data must be split into individual JSON messages and then parsed.
+
+ This function also:
+ - Checks that the jsonrpc value is 2.0
+ - Checks that the last JSON message contains the `eot` token.
+
+ """
+ json_messages = []
+ remaining = data
+ while remaining:
+ json_data, remaining = parse_rpc_message(remaining)
+ # here json_data is a single rpc payload, now check its jsonrpc 2 and save the param data
+ if "params" not in json_data or "jsonrpc" not in json_data:
+ raise ValueError("Invalid JSON-RPC message received, missing params or jsonrpc key")
+ elif json_data["jsonrpc"] != "2.0":
+ raise ValueError("Invalid JSON-RPC version received, not version 2.0")
+ else:
+ json_messages.append(json_data["params"])
+
+ last_json = json_messages.pop(-1)
+ if "eot" not in last_json:
+ raise ValueError("Last JSON messages does not contain 'eot' as its last payload.")
+ return json_messages # return the list of json messages, only the params part without the EOT token
+
+
+def parse_rpc_message(data: str) -> Tuple[Dict[str, str], str]:
+ """Process the JSON data which comes from the server.
+
+ A single rpc payload is in the format:
+ content-length: #LEN# \r\ncontent-type: application/json\r\n\r\n{"jsonrpc": "2.0", "params": ENTIRE_DATA}
+ with EOT params: "params": {"command_type": "discovery", "eot": true}
+
+ returns:
+ json_data: A single rpc payload of JSON data from the server.
+ remaining: The remaining data after the JSON data."""
+ str_stream: io.StringIO = io.StringIO(data)
+
+ length: int = 0
+ while True:
+ line: str = str_stream.readline()
+ if CONTENT_LENGTH.lower() in line.lower():
+ length = int(line[len(CONTENT_LENGTH) :])
+
+ line: str = str_stream.readline()
+ if CONTENT_TYPE.lower() not in line.lower():
+ raise ValueError("Header does not contain Content-Type")
+
+ line = str_stream.readline()
+ if line not in ["\r\n", "\n"]:
+ raise ValueError("Header does not contain space to separate header and body")
+ # if it passes all these checks then it has the right headers
+ break
+
+ if not line or line.isspace():
+ raise ValueError("Header does not contain Content-Length")
+
+ while True: # keep reading until the number of bytes is the CONTENT_LENGTH
+ line: str = str_stream.readline(length)
+ try:
+ # try to parse the json, if successful it is single payload so return with remaining data
+ json_data: dict[str, str] = json.loads(line)
+ return json_data, str_stream.read()
+ except json.JSONDecodeError:
+ print("json decode error")
+
+
+def _listen_on_pipe_new(listener, result: List[str], completed: threading.Event):
+ """Listen on the named pipe or Unix domain socket for JSON data from the server.
+ Created as a separate function for clarity in threading context.
+ """
+ # Windows design
+ if sys.platform == "win32":
+ all_data: list = []
+ stream = listener.wait()
+ while True:
+ # Read data from collection
+ close = stream.closed
+ if close:
+ break
+ data = stream.readlines()
+ if not data:
+ if completed.is_set():
+ break # Exit loop if completed event is set
+ else:
+ try:
+ # Attempt to accept another connection if the current one closes unexpectedly
+ print("attempt another connection")
+ except socket.timeout:
+ # On timeout, append all collected data to result and return
+ # result.append("".join(all_data))
+ return
+ data_decoded = "".join(data)
+ all_data.append(data_decoded)
+ # Append all collected data to result array
+ result.append("".join(all_data))
+ else: # Unix design
+ connection, _ = listener.socket.accept()
+ listener.socket.settimeout(1)
+ all_data: list = []
+ while True:
+ # Reading from connection
+ data: bytes = connection.recv(1024 * 1024)
+ if not data:
+ if completed.is_set():
+ break # Exit loop if completed event is set
+ else:
+ try:
+ # Attempt to accept another connection if the current one closes unexpectedly
+ connection, _ = listener.socket.accept()
+ except socket.timeout:
+ # On timeout, append all collected data to result and return
+ result.append("".join(all_data))
+ return
+ all_data.append(data.decode("utf-8"))
+ # Append all collected data to result array
+ result.append("".join(all_data))
+
+
+def _run_test_code(proc_args: List[str], proc_env, proc_cwd: str, completed: threading.Event):
+ result = subprocess.run(proc_args, env=proc_env, cwd=proc_cwd)
+ completed.set()
+ return result
+
+
+def runner(args: List[str]) -> Optional[List[Dict[str, Any]]]:
+ """Run the pytest discovery and return the JSON data from the server."""
+ print("\n Running python test subprocess with cwd set to: ", TEST_DATA_PATH)
+ return runner_with_cwd(args, TEST_DATA_PATH)
+
+
+def runner_with_cwd(args: List[str], path: pathlib.Path) -> Optional[List[Dict[str, Any]]]:
+ """Run the pytest discovery and return the JSON data from the server."""
+ process_args: List[str] = [
+ sys.executable,
+ "-m",
+ "pytest",
+ "-p",
+ "vscode_pytest",
+ "-s",
+ ] + args
+
+ # Generate pipe name, pipe name specific per OS type.
+ pipe_name = generate_random_pipe_name("pytest-discovery-test")
+
+ # Windows design
+ if sys.platform == "win32":
+ with NPopen("r+t", name=pipe_name, bufsize=0) as pipe:
+ # Update the environment with the pipe name and PYTHONPATH.
+ env = os.environ.copy()
+ env.update(
+ {
+ "TEST_RUN_PIPE": pipe.path,
+ "PYTHONPATH": os.fspath(pathlib.Path(__file__).parent.parent.parent),
+ }
+ )
+
+ completed = threading.Event()
+
+ result = [] # result is a string array to store the data during threading
+ t1: threading.Thread = threading.Thread(
+ target=_listen_on_pipe_new, args=(pipe, result, completed)
+ )
+ t1.start()
+
+ t2 = threading.Thread(
+ target=_run_test_code,
+ args=(process_args, env, path, completed),
+ )
+ t2.start()
+
+ t1.join()
+ t2.join()
+
+ return process_data_received(result[0]) if result else None
+ else: # Unix design
+ # Update the environment with the pipe name and PYTHONPATH.
+ env = os.environ.copy()
+ env.update(
+ {
+ "TEST_RUN_PIPE": pipe_name,
+ "PYTHONPATH": os.fspath(pathlib.Path(__file__).parent.parent.parent),
+ }
+ )
+ server = UnixPipeServer(pipe_name)
+ server.start()
+
+ completed = threading.Event()
+
+ result = [] # result is a string array to store the data during threading
+ t1: threading.Thread = threading.Thread(
+ target=_listen_on_pipe_new, args=(server, result, completed)
+ )
+ t1.start()
+
+ t2 = threading.Thread(
+ target=_run_test_code,
+ args=(process_args, env, path, completed),
+ )
+ t2.start()
+
+ t1.join()
+ t2.join()
+
+ return process_data_received(result[0]) if result else None
+
+
+def find_test_line_number(test_name: str, test_file_path) -> str:
+ """Function which finds the correct line number for a test by looking for the "test_marker--[test_name]" string.
+
+ The test_name is split on the "[" character to remove the parameterization information.
+
+ Args:
+ test_name: The name of the test to find the line number for, will be unique per file.
+ test_file_path: The path to the test file where the test is located.
+ """
+ test_file_unique_id: str = "test_marker--" + test_name.split("[")[0]
+ with open(test_file_path) as f:
+ for i, line in enumerate(f):
+ if test_file_unique_id in line:
+ return str(i + 1)
+ error_str: str = f"Test {test_name!r} not found on any line in {test_file_path}"
+ raise ValueError(error_str)
+
+
+def get_absolute_test_id(test_id: str, testPath: pathlib.Path) -> str:
+ """Get the absolute test id by joining the testPath with the test_id."""
+ split_id = test_id.split("::")[1:]
+ absolute_test_id = "::".join([str(testPath), *split_id])
+ return absolute_test_id
+
+
+def generate_random_pipe_name(prefix=""):
+ # Generate a random suffix using UUID4, ensuring uniqueness.
+ random_suffix = uuid.uuid4().hex[:10]
+ # Default prefix if not provided.
+ if not prefix:
+ prefix = "python-ext-rpc"
+
+ # For Windows, named pipes have a specific naming convention.
+ if sys.platform == "win32":
+ return f"\\\\.\\pipe\\{prefix}-{random_suffix}-sock"
+
+ # For Unix-like systems, use either the XDG_RUNTIME_DIR or a temporary directory.
+ xdg_runtime_dir = os.getenv("XDG_RUNTIME_DIR")
+ if xdg_runtime_dir:
+ return os.path.join(xdg_runtime_dir, f"{prefix}-{random_suffix}.sock")
+ else:
+ return os.path.join(tempfile.gettempdir(), f"{prefix}-{random_suffix}.sock")
+
+
+class UnixPipeServer:
+ def __init__(self, name):
+ self.name = name
+ self.is_windows = sys.platform == "win32"
+ if self.is_windows:
+ raise NotImplementedError(
+ "This class is only intended for Unix-like systems, not Windows."
+ )
+ else:
+ # For Unix-like systems, use a Unix domain socket.
+ self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ # Ensure the socket does not already exist
+ try:
+ os.unlink(self.name)
+ except OSError:
+ if os.path.exists(self.name):
+ raise
+
+ def start(self):
+ if self.is_windows:
+ raise NotImplementedError(
+ "This class is only intended for Unix-like systems, not Windows."
+ )
+ else:
+ # Bind the socket to the address and listen for incoming connections.
+ self.socket.bind(self.name)
+ self.socket.listen(1)
+ print(f"Server listening on {self.name}")
+
+ def stop(self):
+ # Clean up the server socket.
+ self.socket.close()
+ print("Server stopped.")
diff --git a/python_files/tests/pytestadapter/test_discovery.py b/python_files/tests/pytestadapter/test_discovery.py
new file mode 100644
index 000000000000..f8c4890658c9
--- /dev/null
+++ b/python_files/tests/pytestadapter/test_discovery.py
@@ -0,0 +1,323 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import json
+import os
+import sys
+from typing import Any, Dict, List, Optional
+
+import pytest
+
+from tests.tree_comparison_helper import is_same_tree # noqa: E402
+
+from . import expected_discovery_test_output, helpers # noqa: E402
+
+
+def test_import_error():
+ """Test pytest discovery on a file that has a pytest marker but does not import pytest.
+
+ Copies the contents of a .txt file to a .py file in the temporary directory
+ to then run pytest discovery on.
+
+ The json should still be returned but the errors list should be present.
+
+ Keyword arguments:
+ tmp_path -- pytest fixture that creates a temporary directory.
+ """
+ file_path = helpers.TEST_DATA_PATH / "error_pytest_import.txt"
+ with helpers.text_to_python_file(file_path) as p:
+ actual: Optional[List[Dict[str, Any]]] = helpers.runner(["--collect-only", os.fspath(p)])
+
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "error"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH)
+
+ # Ensure that 'error' is a list and then check its length
+ error_content = actual_item.get("error")
+ if error_content is not None and isinstance(
+ error_content, (list, tuple, str)
+ ): # You can add other types if needed
+ assert len(error_content) == 2
+ else:
+ assert False
+
+
+def test_syntax_error(tmp_path):
+ """Test pytest discovery on a file that has a syntax error.
+
+ Copies the contents of a .txt file to a .py file in the temporary directory
+ to then run pytest discovery on.
+
+ The json should still be returned but the errors list should be present.
+
+ Keyword arguments:
+ tmp_path -- pytest fixture that creates a temporary directory.
+ """
+ # Saving some files as .txt to avoid that file displaying a syntax error for
+ # the extension as a whole. Instead, rename it before running this test
+ # in order to test the error handling.
+ file_path = helpers.TEST_DATA_PATH / "error_syntax_discovery.txt"
+ with helpers.text_to_python_file(file_path) as p:
+ actual = helpers.runner(["--collect-only", os.fspath(p)])
+
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "error"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH)
+
+ # Ensure that 'error' is a list and then check its length
+ error_content = actual_item.get("error")
+ if error_content is not None and isinstance(
+ error_content, (list, tuple, str)
+ ): # You can add other types if needed
+ assert len(error_content) == 2
+ else:
+ assert False
+
+
+def test_parameterized_error_collect():
+ """Tests pytest discovery on specific file that incorrectly uses parametrize.
+
+ The json should still be returned but the errors list should be present.
+ """
+ file_path_str = "error_parametrize_discovery.py"
+ actual = helpers.runner(["--collect-only", file_path_str])
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "error"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH)
+
+ # Ensure that 'error' is a list and then check its length
+ error_content = actual_item.get("error")
+ if error_content is not None and isinstance(
+ error_content, (list, tuple, str)
+ ): # You can add other types if needed
+ assert len(error_content) == 2
+ else:
+ assert False
+
+
+@pytest.mark.parametrize(
+ "file, expected_const",
+ [
+ (
+ "test_param_span_class.py",
+ expected_discovery_test_output.test_param_span_class_expected_output,
+ ),
+ (
+ "test_multi_class_nest.py",
+ expected_discovery_test_output.nested_classes_expected_test_output,
+ ),
+ (
+ "same_function_new_class_param.py",
+ expected_discovery_test_output.same_function_new_class_param_expected_output,
+ ),
+ (
+ "test_multi_class_nest.py",
+ expected_discovery_test_output.nested_classes_expected_test_output,
+ ),
+ (
+ "unittest_skiptest_file_level.py",
+ expected_discovery_test_output.unittest_skip_file_level_expected_output,
+ ),
+ (
+ "param_same_name",
+ expected_discovery_test_output.param_same_name_expected_output,
+ ),
+ (
+ "parametrize_tests.py",
+ expected_discovery_test_output.parametrize_tests_expected_output,
+ ),
+ (
+ "empty_discovery.py",
+ expected_discovery_test_output.empty_discovery_pytest_expected_output,
+ ),
+ (
+ "simple_pytest.py",
+ expected_discovery_test_output.simple_discovery_pytest_expected_output,
+ ),
+ (
+ "unittest_pytest_same_file.py",
+ expected_discovery_test_output.unit_pytest_same_file_discovery_expected_output,
+ ),
+ (
+ "unittest_folder",
+ expected_discovery_test_output.unittest_folder_discovery_expected_output,
+ ),
+ (
+ "dual_level_nested_folder",
+ expected_discovery_test_output.dual_level_nested_folder_expected_output,
+ ),
+ (
+ "folder_a",
+ expected_discovery_test_output.double_nested_folder_expected_output,
+ ),
+ (
+ "text_docstring.txt",
+ expected_discovery_test_output.doctest_pytest_expected_output,
+ ),
+ ],
+)
+def test_pytest_collect(file, expected_const):
+ """
+ Test to test pytest discovery on a variety of test files/ folder structures.
+ Uses variables from expected_discovery_test_output.py to store the expected dictionary return.
+ Only handles discovery and therefore already contains the arg --collect-only.
+ All test discovery will succeed, be in the correct cwd, and match expected test output.
+
+ Keyword arguments:
+ file -- a string with the file or folder to run pytest discovery on.
+ expected_const -- the expected output from running pytest discovery on the file.
+ """
+ actual = helpers.runner(
+ [
+ os.fspath(helpers.TEST_DATA_PATH / file),
+ "--collect-only",
+ ]
+ )
+
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert (
+ actual_item.get("status") == "success"
+ ), f"Status is not 'success', error is: {actual_item.get('error')}"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH)
+ assert is_same_tree(
+ actual_item.get("tests"),
+ expected_const,
+ ["id_", "lineno", "name", "runID"],
+ ), f"Tests tree does not match expected value. \n Expected: {json.dumps(expected_const, indent=4)}. \n Actual: {json.dumps(actual_item.get('tests'), indent=4)}"
+
+
+@pytest.mark.skipif(
+ sys.platform == "win32",
+ reason="See https://stackoverflow.com/questions/32877260/privlege-error-trying-to-create-symlink-using-python-on-windows-10",
+)
+def test_symlink_root_dir():
+ """
+ Test to test pytest discovery with the command line arg --rootdir specified as a symlink path.
+ Discovery should succeed and testids should be relative to the symlinked root directory.
+ """
+ with helpers.create_symlink(helpers.TEST_DATA_PATH, "root", "symlink_folder") as (
+ source,
+ destination,
+ ):
+ assert destination.is_symlink()
+
+ # Run pytest with the cwd being the resolved symlink path (as it will be when we run the subprocess from node).
+ actual = helpers.runner_with_cwd(
+ ["--collect-only", f"--rootdir={os.fspath(destination)}"], source
+ )
+ expected = expected_discovery_test_output.symlink_expected_discovery_output
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+ try:
+ # Check if all requirements
+ assert all(
+ item in actual_item.keys() for item in ("status", "cwd", "error")
+ ), "Required keys are missing"
+ assert actual_item.get("status") == "success", "Status is not 'success'"
+ assert actual_item.get("cwd") == os.fspath(
+ destination
+ ), f"CWD does not match: {os.fspath(destination)}"
+ assert actual_item.get("tests") == expected, "Tests do not match expected value"
+ except AssertionError as e:
+ # Print the actual_item in JSON format if an assertion fails
+ print(json.dumps(actual_item, indent=4))
+ pytest.fail(str(e))
+
+
+def test_pytest_root_dir():
+ """
+ Test to test pytest discovery with the command line arg --rootdir specified to be a subfolder
+ of the workspace root. Discovery should succeed and testids should be relative to workspace root.
+ """
+ rd = f"--rootdir={helpers.TEST_DATA_PATH / 'root' / 'tests'}"
+ actual = helpers.runner_with_cwd(
+ [
+ "--collect-only",
+ rd,
+ ],
+ helpers.TEST_DATA_PATH / "root",
+ )
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH / "root")
+ assert is_same_tree(
+ actual_item.get("tests"),
+ expected_discovery_test_output.root_with_config_expected_output,
+ ["id_", "lineno", "name", "runID"],
+ ), f"Tests tree does not match expected value. \n Expected: {json.dumps(expected_discovery_test_output.root_with_config_expected_output, indent=4)}. \n Actual: {json.dumps(actual_item.get('tests'), indent=4)}"
+
+
+def test_pytest_config_file():
+ """
+ Test to test pytest discovery with the command line arg -c with a specified config file which
+ changes the workspace root. Discovery should succeed and testids should be relative to workspace root.
+ """
+ actual = helpers.runner_with_cwd(
+ [
+ "--collect-only",
+ "tests/",
+ ],
+ helpers.TEST_DATA_PATH / "root",
+ )
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH / "root")
+ assert is_same_tree(
+ actual_item.get("tests"),
+ expected_discovery_test_output.root_with_config_expected_output,
+ ["id_", "lineno", "name", "runID"],
+ ), f"Tests tree does not match expected value. \n Expected: {json.dumps(expected_discovery_test_output.root_with_config_expected_output, indent=4)}. \n Actual: {json.dumps(actual_item.get('tests'), indent=4)}"
+
+
+def test_config_sub_folder():
+ """Here the session node will be a subfolder of the workspace root and the test are in another subfolder.
+ This tests checks to see if test node path are under the session node and if so the session node is correctly updated to the common path."""
+ folder_path = helpers.TEST_DATA_PATH / "config_sub_folder"
+ actual = helpers.runner_with_cwd(
+ [
+ "--collect-only",
+ "-c=config/pytest.ini",
+ "--rootdir=config/",
+ "-vv",
+ ],
+ folder_path,
+ )
+
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(helpers.TEST_DATA_PATH / "config_sub_folder")
+ assert actual_item.get("tests") is not None
+ if actual_item.get("tests") is not None:
+ tests: Any = actual_item.get("tests")
+ assert tests.get("name") == "config_sub_folder"
diff --git a/python_files/tests/pytestadapter/test_execution.py b/python_files/tests/pytestadapter/test_execution.py
new file mode 100644
index 000000000000..98ed00954d60
--- /dev/null
+++ b/python_files/tests/pytestadapter/test_execution.py
@@ -0,0 +1,318 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import json
+import os
+import pathlib
+import shutil
+import sys
+from typing import Any, Dict, List
+
+import pytest
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+
+from tests.pytestadapter import expected_execution_test_output # noqa: E402
+
+from .helpers import ( # noqa: E402
+ TEST_DATA_PATH,
+ create_symlink,
+ get_absolute_test_id,
+ runner,
+ runner_with_cwd,
+)
+
+
+def test_config_file():
+ """Test pytest execution when a config file is specified."""
+ args = [
+ "-c",
+ "tests/pytest.ini",
+ str(TEST_DATA_PATH / "root" / "tests" / "test_a.py::test_a_function"),
+ ]
+ new_cwd = TEST_DATA_PATH / "root"
+ actual = runner_with_cwd(args, new_cwd)
+ expected_const = expected_execution_test_output.config_file_pytest_expected_execution_output
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ assert len(actual_list) == len(expected_const)
+ actual_result_dict = dict()
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "result"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(new_cwd)
+ actual_result_dict.update(actual_item["result"])
+ assert actual_result_dict == expected_const
+
+
+def test_rootdir_specified():
+ """Test pytest execution when a --rootdir is specified."""
+ rd = f"--rootdir={TEST_DATA_PATH / 'root' / 'tests'}"
+ args = [rd, "tests/test_a.py::test_a_function"]
+ new_cwd = TEST_DATA_PATH / "root"
+ actual = runner_with_cwd(args, new_cwd)
+ expected_const = expected_execution_test_output.config_file_pytest_expected_execution_output
+ assert actual
+ actual_list: List[Dict[str, Dict[str, Any]]] = actual
+ assert len(actual_list) == len(expected_const)
+ actual_result_dict = dict()
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "result"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(new_cwd)
+ actual_result_dict.update(actual_item["result"])
+ assert actual_result_dict == expected_const
+
+
+@pytest.mark.skipif(
+ sys.platform == "win32",
+ reason="See https://github.com/microsoft/vscode-python/issues/22965",
+)
+def test_syntax_error_execution(tmp_path):
+ """Test pytest execution on a file that has a syntax error.
+
+ Copies the contents of a .txt file to a .py file in the temporary directory
+ to then run pytest execution on.
+
+ The json should still be returned but the errors list should be present.
+
+ Keyword arguments:
+ tmp_path -- pytest fixture that creates a temporary directory.
+ """
+ # Saving some files as .txt to avoid that file displaying a syntax error for
+ # the extension as a whole. Instead, rename it before running this test
+ # in order to test the error handling.
+ file_path = TEST_DATA_PATH / "error_syntax_discovery.txt"
+ temp_dir = tmp_path / "temp_data"
+ temp_dir.mkdir()
+ p = temp_dir / "error_syntax_discovery.py"
+ shutil.copyfile(file_path, p)
+ actual = runner(["error_syntax_discover.py::test_function"])
+ assert actual
+ actual_list: List[Dict[str, Dict[str, Any]]] = actual
+
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "error"
+ assert actual_item.get("cwd") == os.fspath(TEST_DATA_PATH)
+ error_content = actual_item.get("error")
+ if error_content is not None and isinstance(
+ error_content, (list, tuple, str)
+ ): # You can add other types if needed
+ assert len(error_content) == 1
+ else:
+ assert False
+
+
+def test_bad_id_error_execution():
+ """Test pytest discovery with a non-existent test_id.
+
+ The json should still be returned but the errors list should be present.
+ """
+ actual = runner(["not/a/real::test_id"])
+ assert actual
+ actual_list: List[Dict[str, Dict[str, Any]]] = actual
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "error"))
+ assert actual_item.get("status") == "error"
+ assert actual_item.get("cwd") == os.fspath(TEST_DATA_PATH)
+ error_content = actual_item.get("error")
+ if error_content is not None and isinstance(
+ error_content, (list, tuple, str)
+ ): # You can add other types if needed
+ assert len(error_content) == 1
+ else:
+ assert False
+
+
+@pytest.mark.parametrize(
+ "test_ids, expected_const",
+ [
+ (
+ [
+ "test_env_vars.py::test_clear_env",
+ "test_env_vars.py::test_check_env",
+ ],
+ expected_execution_test_output.safe_clear_env_vars_expected_execution_output,
+ ),
+ (
+ [
+ "skip_tests.py::test_something",
+ "skip_tests.py::test_another_thing",
+ "skip_tests.py::test_decorator_thing",
+ "skip_tests.py::test_decorator_thing_2",
+ "skip_tests.py::TestClass::test_class_function_a",
+ "skip_tests.py::TestClass::test_class_function_b",
+ ],
+ expected_execution_test_output.skip_tests_execution_expected_output,
+ ),
+ (
+ ["error_raise_exception.py::TestSomething::test_a"],
+ expected_execution_test_output.error_raised_exception_execution_expected_output,
+ ),
+ (
+ [
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ "unittest_folder/test_add.py::TestAddFunction::test_add_negative_numbers",
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_positive_numbers",
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_negative_numbers",
+ ],
+ expected_execution_test_output.uf_execution_expected_output,
+ ),
+ (
+ [
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ "unittest_folder/test_add.py::TestAddFunction::test_add_negative_numbers",
+ ],
+ expected_execution_test_output.uf_single_file_expected_output,
+ ),
+ (
+ [
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ ],
+ expected_execution_test_output.uf_single_method_execution_expected_output,
+ ),
+ (
+ [
+ "unittest_folder/test_add.py::TestAddFunction::test_add_positive_numbers",
+ "unittest_folder/test_subtract.py::TestSubtractFunction::test_subtract_positive_numbers",
+ ],
+ expected_execution_test_output.uf_non_adjacent_tests_execution_expected_output,
+ ),
+ (
+ [
+ "unittest_pytest_same_file.py::TestExample::test_true_unittest",
+ "unittest_pytest_same_file.py::test_true_pytest",
+ ],
+ expected_execution_test_output.unit_pytest_same_file_execution_expected_output,
+ ),
+ (
+ [
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_t",
+ "dual_level_nested_folder/test_top_folder.py::test_top_function_f",
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_t",
+ "dual_level_nested_folder/nested_folder_one/test_bottom_folder.py::test_bottom_function_f",
+ ],
+ expected_execution_test_output.dual_level_nested_folder_execution_expected_output,
+ ),
+ (
+ ["folder_a/folder_b/folder_a/test_nest.py::test_function"], ##
+ expected_execution_test_output.double_nested_folder_expected_execution_output,
+ ),
+ (
+ [
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]", ##
+ "parametrize_tests.py::TestClass::test_adding[2+4-6]",
+ "parametrize_tests.py::TestClass::test_adding[6+9-16]",
+ ],
+ expected_execution_test_output.parametrize_tests_expected_execution_output,
+ ),
+ (
+ [
+ "parametrize_tests.py::TestClass::test_adding[3+5-8]",
+ ],
+ expected_execution_test_output.single_parametrize_tests_expected_execution_output,
+ ),
+ (
+ [
+ "text_docstring.txt::text_docstring.txt",
+ ],
+ expected_execution_test_output.doctest_pytest_expected_execution_output,
+ ),
+ (
+ ["test_logging.py::test_logging2", "test_logging.py::test_logging"],
+ expected_execution_test_output.logging_test_expected_execution_output,
+ ),
+ ],
+)
+def test_pytest_execution(test_ids, expected_const):
+ """
+ Test that pytest discovery works as expected where run pytest is always successful
+ but the actual test results are both successes and failures.:
+ 1: skip_tests_execution_expected_output: test run on a file with skipped tests.
+ 2. error_raised_exception_execution_expected_output: test run on a file that raises an exception.
+ 3. uf_execution_expected_output: unittest tests run on multiple files.
+ 4. uf_single_file_expected_output: test run on a single file.
+ 5. uf_single_method_execution_expected_output: test run on a single method in a file.
+ 6. uf_non_adjacent_tests_execution_expected_output: test run on unittests in two files with single selection in test explorer.
+ 7. unit_pytest_same_file_execution_expected_output: test run on a file with both unittest and pytest tests.
+ 8. dual_level_nested_folder_execution_expected_output: test run on a file with one test file
+ at the top level and one test file in a nested folder.
+ 9. double_nested_folder_expected_execution_output: test run on a double nested folder.
+ 10. parametrize_tests_expected_execution_output: test run on a parametrize test with 3 inputs.
+ 11. single_parametrize_tests_expected_execution_output: test run on single parametrize test.
+ 12. doctest_pytest_expected_execution_output: test run on doctest file.
+ 13. logging_test_expected_execution_output: test run on a file with logging.
+
+
+ Keyword arguments:
+ test_ids -- an array of test_ids to run.
+ expected_const -- a dictionary of the expected output from running pytest discovery on the files.
+ """
+ args = test_ids
+ actual = runner(args)
+ assert actual
+ actual_list: List[Dict[str, Dict[str, Any]]] = actual
+ assert len(actual_list) == len(expected_const)
+ actual_result_dict = dict()
+ if actual_list is not None:
+ for actual_item in actual_list:
+ assert all(item in actual_item.keys() for item in ("status", "cwd", "result"))
+ assert actual_item.get("status") == "success"
+ assert actual_item.get("cwd") == os.fspath(TEST_DATA_PATH)
+ actual_result_dict.update(actual_item["result"])
+ for key in actual_result_dict:
+ if (
+ actual_result_dict[key]["outcome"] == "failure"
+ or actual_result_dict[key]["outcome"] == "error"
+ ):
+ actual_result_dict[key]["message"] = "ERROR MESSAGE"
+ if actual_result_dict[key]["traceback"] is not None:
+ actual_result_dict[key]["traceback"] = "TRACEBACK"
+ assert actual_result_dict == expected_const
+
+
+def test_symlink_run():
+ """
+ Test to test pytest discovery with the command line arg --rootdir specified as a symlink path.
+ Discovery should succeed and testids should be relative to the symlinked root directory.
+ """
+ with create_symlink(TEST_DATA_PATH, "root", "symlink_folder") as (
+ source,
+ destination,
+ ):
+ assert destination.is_symlink()
+ test_a_path = TEST_DATA_PATH / "symlink_folder" / "tests" / "test_a.py"
+ test_a_id = get_absolute_test_id(
+ "tests/test_a.py::test_a_function",
+ test_a_path,
+ )
+
+ # Run pytest with the cwd being the resolved symlink path (as it will be when we run the subprocess from node).
+ actual = runner_with_cwd([f"--rootdir={os.fspath(destination)}", test_a_id], source)
+
+ expected_const = expected_execution_test_output.symlink_run_expected_execution_output
+ assert actual
+ actual_list: List[Dict[str, Any]] = actual
+ if actual_list is not None:
+ actual_item = actual_list.pop(0)
+ try:
+ # Check if all requirements
+ assert all(
+ item in actual_item.keys() for item in ("status", "cwd", "result")
+ ), "Required keys are missing"
+ assert actual_item.get("status") == "success", "Status is not 'success'"
+ assert actual_item.get("cwd") == os.fspath(
+ destination
+ ), f"CWD does not match: {os.fspath(destination)}"
+ actual_result_dict = dict()
+ actual_result_dict.update(actual_item["result"])
+ assert actual_result_dict == expected_const
+ except AssertionError as e:
+ # Print the actual_item in JSON format if an assertion fails
+ print(json.dumps(actual_item, indent=4))
+ pytest.fail(str(e))
diff --git a/python_files/tests/pytestadapter/test_utils.py b/python_files/tests/pytestadapter/test_utils.py
new file mode 100644
index 000000000000..9a1a58376ad8
--- /dev/null
+++ b/python_files/tests/pytestadapter/test_utils.py
@@ -0,0 +1,35 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import pathlib
+import tempfile
+import os
+import sys
+
+from .helpers import ( # noqa: E402
+ TEST_DATA_PATH,
+)
+
+script_dir = pathlib.Path(__file__).parent.parent.parent
+sys.path.append(os.fspath(script_dir))
+from vscode_pytest import has_symlink_parent # noqa: E402
+
+
+def test_has_symlink_parent_with_symlink():
+ # Create a temporary directory and a file in it
+ with tempfile.TemporaryDirectory() as temp_dir:
+ file_path = pathlib.Path(temp_dir) / "file"
+ file_path.touch()
+
+ # Create a symbolic link to the temporary directory
+ symlink_path = pathlib.Path(temp_dir) / "symlink"
+ symlink_path.symlink_to(temp_dir)
+
+ # Check that has_symlink_parent correctly identifies the symbolic link
+ assert has_symlink_parent(symlink_path / "file")
+
+
+def test_has_symlink_parent_without_symlink():
+ folder_path = TEST_DATA_PATH / "unittest_folder" / "test_add.py"
+ # Check that has_symlink_parent correctly identifies that there are no symbolic links
+ assert not has_symlink_parent(folder_path)
diff --git a/pythonFiles/tests/run_all.py b/python_files/tests/run_all.py
similarity index 85%
rename from pythonFiles/tests/run_all.py
rename to python_files/tests/run_all.py
index ce5a62649962..7c864ba7c5c1 100644
--- a/pythonFiles/tests/run_all.py
+++ b/python_files/tests/run_all.py
@@ -7,8 +7,7 @@
sys.path[0] = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-from tests.__main__ import main, parse_args
-
+from tests.__main__ import main, parse_args # noqa: E402
if __name__ == "__main__":
mainkwargs, pytestargs = parse_args()
diff --git a/python_files/tests/test_create_conda.py b/python_files/tests/test_create_conda.py
new file mode 100644
index 000000000000..8681184ba821
--- /dev/null
+++ b/python_files/tests/test_create_conda.py
@@ -0,0 +1,70 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import importlib
+import sys
+
+import create_conda
+import pytest
+
+
+@pytest.mark.parametrize("env_exists", [True, False])
+@pytest.mark.parametrize("git_ignore", [True, False])
+@pytest.mark.parametrize("install", [True, False])
+@pytest.mark.parametrize("python", [True, False])
+def test_create_env(env_exists, git_ignore, install, python):
+ importlib.reload(create_conda)
+ create_conda.conda_env_exists = lambda _n: env_exists
+
+ install_packages_called = False
+
+ def install_packages(_name):
+ nonlocal install_packages_called
+ install_packages_called = True
+
+ create_conda.install_packages = install_packages
+
+ run_process_called = False
+
+ def run_process(args, error_message):
+ nonlocal run_process_called
+ run_process_called = True
+ version = "12345" if python else f"{sys.version_info.major}.{sys.version_info.minor}"
+ if not env_exists:
+ assert args == [
+ sys.executable,
+ "-m",
+ "conda",
+ "create",
+ "--yes",
+ "--prefix",
+ create_conda.CONDA_ENV_NAME,
+ f"python={version}",
+ ]
+ assert error_message == "CREATE_CONDA.ENV_FAILED_CREATION"
+
+ create_conda.run_process = run_process
+
+ add_gitignore_called = False
+
+ def add_gitignore(_name):
+ nonlocal add_gitignore_called
+ add_gitignore_called = True
+
+ create_conda.add_gitignore = add_gitignore
+
+ args = []
+ if git_ignore:
+ args.append("--git-ignore")
+ if install:
+ args.append("--install")
+ if python:
+ args.extend(["--python", "12345"])
+ create_conda.main(args)
+ assert install_packages_called == install
+
+ # run_process is called when the venv does not exist
+ assert run_process_called != env_exists
+
+ # add_gitignore is called when new venv is created and git_ignore is True
+ assert add_gitignore_called == (not env_exists and git_ignore)
diff --git a/python_files/tests/test_create_microvenv.py b/python_files/tests/test_create_microvenv.py
new file mode 100644
index 000000000000..e5d4e68802e9
--- /dev/null
+++ b/python_files/tests/test_create_microvenv.py
@@ -0,0 +1,28 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import importlib
+import os
+import sys
+
+import create_microvenv
+
+
+def test_create_microvenv():
+ importlib.reload(create_microvenv)
+ run_process_called = False
+
+ def run_process(args, error_message):
+ nonlocal run_process_called
+ run_process_called = True
+ assert args == [
+ sys.executable,
+ os.fspath(create_microvenv.LIB_ROOT / "microvenv.py"),
+ create_microvenv.VENV_NAME,
+ ]
+ assert error_message == "CREATE_MICROVENV.MICROVENV_FAILED_CREATION"
+
+ create_microvenv.run_process = run_process
+
+ create_microvenv.main()
+ assert run_process_called is True
diff --git a/python_files/tests/test_create_venv.py b/python_files/tests/test_create_venv.py
new file mode 100644
index 000000000000..1539f1d9b44e
--- /dev/null
+++ b/python_files/tests/test_create_venv.py
@@ -0,0 +1,287 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import contextlib
+import importlib
+import io
+import json
+import os
+import sys
+
+import pytest
+
+import create_venv
+
+
+@pytest.mark.skipif(sys.platform == "win32", reason="Windows does not have micro venv fallback.")
+def test_venv_not_installed_unix():
+ importlib.reload(create_venv)
+ create_venv.is_installed = lambda module: module != "venv"
+ run_process_called = False
+
+ def run_process(args, error_message):
+ nonlocal run_process_called
+ microvenv_path = os.fspath(create_venv.MICROVENV_SCRIPT_PATH)
+ if microvenv_path in args:
+ run_process_called = True
+ assert args == [
+ sys.executable,
+ microvenv_path,
+ "--name",
+ ".test_venv",
+ ]
+ assert error_message == "CREATE_VENV.MICROVENV_FAILED_CREATION"
+
+ create_venv.run_process = run_process
+
+ create_venv.main(["--name", ".test_venv"])
+
+ # run_process is called when the venv does not exist
+ assert run_process_called is True
+
+
+@pytest.mark.skipif(sys.platform != "win32", reason="Windows does not have microvenv fallback.")
+def test_venv_not_installed_windows():
+ importlib.reload(create_venv)
+ create_venv.is_installed = lambda module: module != "venv"
+ with pytest.raises(create_venv.VenvError) as e:
+ create_venv.main()
+ assert str(e.value) == "CREATE_VENV.VENV_NOT_FOUND"
+
+
+@pytest.mark.parametrize("env_exists", ["hasEnv", "noEnv"])
+@pytest.mark.parametrize("git_ignore", ["useGitIgnore", "skipGitIgnore"])
+@pytest.mark.parametrize("install", ["requirements", "toml", "skipInstall"])
+def test_create_env(env_exists, git_ignore, install):
+ importlib.reload(create_venv)
+ create_venv.is_installed = lambda _x: True
+ create_venv.venv_exists = lambda _n: env_exists == "hasEnv"
+ create_venv.upgrade_pip = lambda _x: None
+
+ install_packages_called = False
+
+ def install_packages(_env, _name):
+ nonlocal install_packages_called
+ install_packages_called = True
+
+ create_venv.install_requirements = install_packages
+ create_venv.install_toml = install_packages
+
+ run_process_called = False
+
+ def run_process(args, error_message):
+ nonlocal run_process_called
+ run_process_called = True
+ if env_exists == "noEnv":
+ assert args == [sys.executable, "-m", "venv", create_venv.VENV_NAME]
+ assert error_message == "CREATE_VENV.VENV_FAILED_CREATION"
+
+ create_venv.run_process = run_process
+
+ add_gitignore_called = False
+
+ def add_gitignore(_name):
+ nonlocal add_gitignore_called
+ add_gitignore_called = True
+
+ create_venv.add_gitignore = add_gitignore
+
+ args = []
+ if git_ignore == "useGitIgnore":
+ args += ["--git-ignore"]
+ if install == "requirements":
+ args += ["--requirements", "requirements-for-test.txt"]
+ elif install == "toml":
+ args += ["--toml", "pyproject.toml", "--extras", "test"]
+
+ create_venv.main(args)
+ assert install_packages_called == (install != "skipInstall")
+
+ # run_process is called when the venv does not exist
+ assert run_process_called == (env_exists == "noEnv")
+
+ # add_gitignore is called when new venv is created and git_ignore is True
+ assert add_gitignore_called == ((env_exists == "noEnv") and (git_ignore == "useGitIgnore"))
+
+
+@pytest.mark.parametrize("install_type", ["requirements", "pyproject", "both"])
+def test_install_packages(install_type):
+ importlib.reload(create_venv)
+ create_venv.is_installed = lambda _x: True
+ create_venv.file_exists = lambda x: install_type in x
+
+ pip_upgraded = False
+ installing = None
+
+ order = []
+
+ def run_process(args, error_message):
+ nonlocal pip_upgraded, installing, order
+ if args[1:] == ["-m", "pip", "install", "--upgrade", "pip"]:
+ pip_upgraded = True
+ assert error_message == "CREATE_VENV.UPGRADE_PIP_FAILED"
+ elif args[1:-1] == ["-m", "pip", "install", "-r"]:
+ installing = "requirements"
+ order += ["requirements"]
+ assert error_message == "CREATE_VENV.PIP_FAILED_INSTALL_REQUIREMENTS"
+ elif args[1:] == ["-m", "pip", "install", "-e", ".[test]"]:
+ installing = "pyproject"
+ order += ["pyproject"]
+ assert error_message == "CREATE_VENV.PIP_FAILED_INSTALL_PYPROJECT"
+
+ create_venv.run_process = run_process
+
+ if install_type == "requirements":
+ create_venv.main(["--requirements", "requirements-for-test.txt"])
+ elif install_type == "pyproject":
+ create_venv.main(["--toml", "pyproject.toml", "--extras", "test"])
+ elif install_type == "both":
+ create_venv.main(
+ [
+ "--requirements",
+ "requirements-for-test.txt",
+ "--toml",
+ "pyproject.toml",
+ "--extras",
+ "test",
+ ]
+ )
+
+ assert pip_upgraded
+ if install_type == "both":
+ assert order == ["requirements", "pyproject"]
+ else:
+ assert installing == install_type
+
+
+@pytest.mark.parametrize(
+ ("extras", "expected"),
+ [
+ ([], ["-m", "pip", "install", "-e", "."]),
+ (["test"], ["-m", "pip", "install", "-e", ".[test]"]),
+ (["test", "doc"], ["-m", "pip", "install", "-e", ".[test,doc]"]),
+ ],
+)
+def test_toml_args(extras, expected):
+ importlib.reload(create_venv)
+
+ actual = []
+
+ def run_process(args, error_message):
+ nonlocal actual
+ actual = args[1:]
+
+ create_venv.run_process = run_process
+
+ create_venv.install_toml(sys.executable, extras)
+
+ assert actual == expected
+
+
+@pytest.mark.parametrize(
+ ("extras", "expected"),
+ [
+ ([], []),
+ (
+ ["requirements/test.txt"],
+ [[sys.executable, "-m", "pip", "install", "-r", "requirements/test.txt"]],
+ ),
+ (
+ ["requirements/test.txt", "requirements/doc.txt"],
+ [
+ [sys.executable, "-m", "pip", "install", "-r", "requirements/test.txt"],
+ [sys.executable, "-m", "pip", "install", "-r", "requirements/doc.txt"],
+ ],
+ ),
+ ],
+)
+def test_requirements_args(extras, expected):
+ importlib.reload(create_venv)
+
+ actual = []
+
+ def run_process(args, error_message):
+ nonlocal actual
+ actual.append(args)
+
+ create_venv.run_process = run_process
+
+ create_venv.install_requirements(sys.executable, extras)
+
+ assert actual == expected
+
+
+def test_create_venv_missing_pip():
+ importlib.reload(create_venv)
+ create_venv.venv_exists = lambda _n: True
+ create_venv.is_installed = lambda module: module != "pip"
+
+ download_pip_pyz_called = False
+
+ def download_pip_pyz(name):
+ nonlocal download_pip_pyz_called
+ download_pip_pyz_called = True
+ assert name == create_venv.VENV_NAME
+
+ create_venv.download_pip_pyz = download_pip_pyz
+
+ run_process_called = False
+
+ def run_process(args, error_message):
+ if "install" in args and "pip" in args:
+ nonlocal run_process_called
+ run_process_called = True
+ pip_pyz_path = os.fspath(create_venv.CWD / create_venv.VENV_NAME / "pip.pyz")
+ assert args[1:] == [pip_pyz_path, "install", "pip"]
+ assert error_message == "CREATE_VENV.INSTALL_PIP_FAILED"
+
+ create_venv.run_process = run_process
+ create_venv.main([])
+
+
+@contextlib.contextmanager
+def redirect_io(stream: str, new_stream):
+ """Redirect stdio streams to a custom stream."""
+ old_stream = getattr(sys, stream)
+ setattr(sys, stream, new_stream)
+ yield
+ setattr(sys, stream, old_stream)
+
+
+class CustomIO(io.TextIOWrapper):
+ """Custom stream object to replace stdio."""
+
+ name: str = "customio"
+
+ def __init__(self, name: str, encoding="utf-8", newline=None):
+ self._buffer = io.BytesIO()
+ self._buffer.name = name
+ super().__init__(self._buffer, encoding=encoding, newline=newline)
+
+ def close(self):
+ """Provide this close method which is used by some tools."""
+ # This is intentionally empty.
+
+ def get_value(self) -> str:
+ """Returns value from the buffer as string."""
+ self.seek(0)
+ return self.read()
+
+
+def test_requirements_from_stdin():
+ importlib.reload(create_venv)
+
+ cli_requirements = [f"cli-requirement{i}.txt" for i in range(3)]
+ args = argparse.Namespace()
+ args.__dict__.update({"stdin": True, "requirements": cli_requirements})
+
+ stdin_requirements = [f"stdin-requirement{i}.txt" for i in range(20)]
+ text = json.dumps({"requirements": stdin_requirements})
+ str_input = CustomIO("", encoding="utf-8", newline="\n")
+ with redirect_io("stdin", str_input):
+ str_input.write(text)
+ str_input.seek(0)
+ actual = create_venv.get_requirements_from_args(args)
+
+ assert actual == stdin_requirements + cli_requirements
diff --git a/python_files/tests/test_data/missing-deps.data b/python_files/tests/test_data/missing-deps.data
new file mode 100644
index 000000000000..c8c911f218a8
--- /dev/null
+++ b/python_files/tests/test_data/missing-deps.data
@@ -0,0 +1,121 @@
+#
+# This file is autogenerated by pip-compile with Python 3.8
+# by the following command:
+#
+# pip-compile --generate-hashes --resolver=backtracking requirements-test.in
+#
+flake8-csv==0.2.0 \
+ --hash=sha256:246e07207fefbf8f80a59ff7e878f153635f562ebaf20cf796a2b00b1528ea9a \
+ --hash=sha256:bf3ac6aecbaebe36a2c7d5d275f310996fcc33b7370cdd81feec04b79af2e07c
+ # via -r requirements-test.in
+levenshtein==0.21.0 \
+ --hash=sha256:01dd427cf72b4978b09558e3d36e3f92c8eef467e3eb4653c3fdccd8d70aaa08 \
+ --hash=sha256:0236c8ff4648c50ebd81ac3692430d2241b134936ac9d86d7ca32ba6ab4a4e63 \
+ --hash=sha256:023ca95c833ca548280e444e9a4c34fdecb3be3851e96af95bad290ae0c708b9 \
+ --hash=sha256:024302c82d49fc1f1d044794997ef7aa9d01b509a9040e222480b64a01cd4b80 \
+ --hash=sha256:04046878a57129da4e2352c032df7c1fceaa54870916d12772cad505ef998290 \
+ --hash=sha256:04850a0719e503014acb3fee6d4ec7d7f170a2c7375ffbc5833c7256b7cd10ee \
+ --hash=sha256:0cc3679978cd0250bf002963cf2e08855b93f70fa0fc9f74956115c343983fbb \
+ --hash=sha256:0f42b8dba2cce257cd34efd1ce9678d06f3248cb0bb2a92a5db8402e1e4a6f30 \
+ --hash=sha256:13e8a5b1b58de49befea555bb913dc394614f2d3553bc5b86bc672c69ef1a85a \
+ --hash=sha256:1f19fe25ea0dd845d0f48505e8947f6080728e10b7642ba0dad34e9b48c81130 \
+ --hash=sha256:1fde464f937878e6f5c30c234b95ce2cb969331a175b3089367e077113428062 \
+ --hash=sha256:2290732763e3b75979888364b26acce79d72b8677441b5762a4e97b3630cc3d9 \
+ --hash=sha256:24843f28cbbdcbcfc18b08e7d3409dbaad7896fb7113442592fa978590a7bbf0 \
+ --hash=sha256:25576ad9c337ecb342306fe87166b54b2f49e713d4ff592c752cc98e0046296e \
+ --hash=sha256:26c6fb012538a245d78adea786d2cfe3c1506b835762c1c523a4ed6b9e08dc0b \
+ --hash=sha256:31cb59d86a5f99147cd4a67ebced8d6df574b5d763dcb63c033a642e29568746 \
+ --hash=sha256:32dfda2e64d0c50553e47d0ab2956413970f940253351c196827ad46f17916d5 \
+ --hash=sha256:3305262cb85ff78ace9e2d8d2dfc029b34dc5f93aa2d24fd20b6ed723e2ad501 \
+ --hash=sha256:37a99d858fa1d88b1a917b4059a186becd728534e5e889d583086482356b7ca1 \
+ --hash=sha256:3c6858cfd84568bc1df3ad545553b5c27af6ed3346973e8f4b57d23c318cf8f4 \
+ --hash=sha256:3e1723d515ab287b9b2c2e4a111894dc6b474f5d28826fff379647486cae98d2 \
+ --hash=sha256:3e22d31375d5fea5797c9b7aa0f8cc36579c31dcf5754e9931ca86c27d9011f8 \
+ --hash=sha256:426883be613d912495cf6ee2a776d2ab84aa6b3de5a8d82c43a994267ea6e0e3 \
+ --hash=sha256:4357bf8146cbadb10016ad3a950bba16e042f79015362a575f966181d95b4bc7 \
+ --hash=sha256:4515f9511cb91c66d254ee30154206aad76b57d8b25f64ba1402aad43efdb251 \
+ --hash=sha256:457442911df185e28a32fd8b788b14ca22ab3a552256b556e7687173d5f18bc4 \
+ --hash=sha256:46dab8c6e8fae563ca77acfaeb3824c4dd4b599996328b8a081b06f16befa6a0 \
+ --hash=sha256:4b2156f32e46d16b74a055ccb4f64ee3c64399372a6aaf1ee98f6dccfadecee1 \
+ --hash=sha256:4bbceef2caba4b2ae613b0e853a7aaab990c1a13bddb9054ba1328a84bccdbf7 \
+ --hash=sha256:4c8eaaa6f0df2838437d1d8739629486b145f7a3405d3ef0874301a9f5bc7dcd \
+ --hash=sha256:4dc79033140f82acaca40712a6d26ed190cc2dd403e104020a87c24f2771aa72 \
+ --hash=sha256:4ec2ef9836a34a3bb009a81e5efe4d9d43515455fb5f182c5d2cf8ae61c79496 \
+ --hash=sha256:5369827ace536c6df04e0e670d782999bc17bf9eb111e77435fdcdaecb10c2a3 \
+ --hash=sha256:5378a8139ba61d7271c0f9350201259c11eb90bfed0ac45539c4aeaed3907230 \
+ --hash=sha256:545635d9e857711d049dcdb0b8609fb707b34b032517376c531ca159fcd46265 \
+ --hash=sha256:587ad51770de41eb491bea1bfb676abc7ff9a94dbec0e2bc51fc6a25abef99c4 \
+ --hash=sha256:5cfbc4ed7ee2965e305bf81388fea377b795dabc82ee07f04f31d1fb8677a885 \
+ --hash=sha256:5e748c2349719cb1bc90f802d9d7f07310633dcf166d468a5bd821f78ed17698 \
+ --hash=sha256:608beb1683508c3cdbfff669c1c872ea02b47965e1bbb8a630de548e2490f96a \
+ --hash=sha256:6338a47b6f8c7f1ee8b5636cc8b245ad2d1d0ee47f7bb6f33f38a522ef0219cc \
+ --hash=sha256:668ea30b311944c643f866ce5e45edf346f05e920075c0056f2ba7f74dde6071 \
+ --hash=sha256:66d303cd485710fe6d62108209219b7a695bdd10a722f4e86abdaf26f4bf2202 \
+ --hash=sha256:6ebabcf982ae161534f8729d13fe05eebc977b497ac34936551f97cf8b07dd9e \
+ --hash=sha256:6ede583155f24c8b2456a7720fbbfa5d9c1154ae04b4da3cf63368e2406ea099 \
+ --hash=sha256:709a727f58d31a5ee1e5e83b247972fe55ef0014f6222256c9692c5efa471785 \
+ --hash=sha256:742b785c93d16c63289902607219c200bd2b6077dafc788073c74337cae382fb \
+ --hash=sha256:76d5d34a8e21de8073c66ae801f053520f946d499fa533fbba654712775f8132 \
+ --hash=sha256:7bc550d0986ace95bde003b8a60e622449baf2bdf24d8412f7a50f401a289ec3 \
+ --hash=sha256:7c2d67220867d640e36931b3d63b8349369b485d52cf6f4a2635bec8da92d678 \
+ --hash=sha256:7ce3f14a8e006fb7e3fc7bab965ab7da5817f48fc48d25cf735fcec8f1d2e39a \
+ --hash=sha256:7e40a4bac848c9a8883225f926cfa7b2bc9f651e989a8b7006cdb596edc7ac9b \
+ --hash=sha256:80e67bd73a05592ecd52aede4afa8ea49575de70f9d5bfbe2c52ebd3541b20be \
+ --hash=sha256:8446f8da38857482ec0cfd616fe5e7dcd3695fd323cc65f37366a9ff6a31c9cb \
+ --hash=sha256:8476862a5c3150b8d63a7475563a4bff6dc50bbc0447894eb6b6a116ced0809d \
+ --hash=sha256:84b55b732e311629a8308ad2778a0f9824e29e3c35987eb35610fc52eb6d4634 \
+ --hash=sha256:88ccdc8dc20c16e8059ace00fb58d353346a04fd24c0733b009678b2554801d2 \
+ --hash=sha256:8aa92b05156dfa2e248c3743670d5deb41a45b5789416d5fa31be009f4f043ab \
+ --hash=sha256:8ac4ed77d3263eac7f9b6ed89d451644332aecd55cda921201e348803a1e5c57 \
+ --hash=sha256:8bdbcd1570340b07549f71e8a5ba3f0a6d84408bf86c4051dc7b70a29ae342bb \
+ --hash=sha256:8c031cbe3685b0343f5cc2dcf2172fd21b82f8ccc5c487179a895009bf0e4ea8 \
+ --hash=sha256:8c27a5178ce322b56527a451185b4224217aa81955d9b0dad6f5a8de81ffe80f \
+ --hash=sha256:8cf87a5e2962431d7260dd81dc1ca0697f61aad81036145d3666f4c0d514ce3a \
+ --hash=sha256:8d4ba0df46bb41d660d77e7cc6b4d38c8d5b6f977d51c48ed1217db6a8474cde \
+ --hash=sha256:8dd8ef4239b24fb1c9f0b536e48e55194d5966d351d349af23e67c9eb3875c68 \
+ --hash=sha256:92bf2370b01d7a4862abf411f8f60f39f064cebebce176e3e9ee14e744db8288 \
+ --hash=sha256:9485f2a5c88113410153256657072bc93b81bf5c8690d47e4cc3df58135dbadb \
+ --hash=sha256:9ff1255c499fcb41ba37a578ad8c1b8dab5c44f78941b8e1c1d7fab5b5e831bc \
+ --hash=sha256:a18c8e4d1aae3f9950797d049020c64a8a63cc8b4e43afcca91ec400bf6304c5 \
+ --hash=sha256:a68b05614d25cc2a5fbcc4d2fd124be7668d075fd5ac3d82f292eec573157361 \
+ --hash=sha256:a7adaabe07c5ceb6228332b9184f06eb9cda89c227d198a1b8a6f78c05b3c672 \
+ --hash=sha256:aa39bb773915e4df330d311bb6c100a8613e265cc50d5b25b015c8db824e1c47 \
+ --hash=sha256:ac8b6266799645827980ab1af4e0bfae209c1f747a10bdf6e5da96a6ebe511a2 \
+ --hash=sha256:b0ba9723c7d67a61e160b3457259552f7d679d74aaa144b892eb68b7e2a5ebb6 \
+ --hash=sha256:b167b32b3e336c5ec5e0212f025587f9248344ae6e73ed668270eba5c6a506e5 \
+ --hash=sha256:b646ace5085a60d4f89b28c81301c9d9e8cd6a9bdda908181b2fa3dfac7fc10d \
+ --hash=sha256:bd0bfa71b1441be359e99e77709885b79c22857bf9bb7f4e84c09e501f6c5fad \
+ --hash=sha256:be038321695267a8faa5ae1b1a83deb3748827f0b6f72471e0beed36afcbd72a \
+ --hash=sha256:be87998ffcbb5fb0c37a76d100f63b4811f48527192677da0ec3624b49ab8a64 \
+ --hash=sha256:c270487d60b33102efea73be6dcd5835f3ddc3dc06e77499f0963df6cba2ec71 \
+ --hash=sha256:c290a7211f1b4f87c300df4424cc46b7379cead3b6f37fa8d3e7e6c6212ccd39 \
+ --hash=sha256:cc36ba40027b4f8821155c9e3e0afadffccdccbe955556039d1d1169dfc659c9 \
+ --hash=sha256:ce7e76c6341abb498368d42b8081f2f45c245ac2a221af6a0394349d41302c08 \
+ --hash=sha256:cefd5a668f6d7af1279aca10104b43882fdd83f9bdc68933ba5429257a628abe \
+ --hash=sha256:cf2dee0f8c71598f8be51e3feceb9142ac01576277b9e691e25740987761c86e \
+ --hash=sha256:d23c647b03acbb5783f9bdfd51cfa5365d51f7df9f4029717a35eff5cc32bbcc \
+ --hash=sha256:d647f1e0c30c7a73f70f4de7376ed7dafc2b856b67fe480d32a81af133edbaeb \
+ --hash=sha256:d932cb21e40beb93cfc8973de7f25fbf25ba4a07d1dccac3b9ba977164cf9887 \
+ --hash=sha256:db7567997ffbc2feb999e30002a92461a76f17a596a142bdb463b5f7037f160c \
+ --hash=sha256:de2dfd6498454c7d89036d56a53c0a01fd9bcf1c2970253e469b5e8bb938b69f \
+ --hash=sha256:df9b0f8f511270ad259c7bfba22ab6d5a0c33d81cd594461668e67cd80dd9052 \
+ --hash=sha256:e043b79e39f165026bc941c95582bfc4bfdd297a1de6f13ace0d0a7abf486288 \
+ --hash=sha256:e2686c37d22faf27d02a19e83b55812d248b32b7ba3aa638e768d0ea032e1f3c \
+ --hash=sha256:e9a6251818b9eb6d519bffd7a0b745f3a99b3e99563a4c9d3cad26e34f6ac880 \
+ --hash=sha256:eab6c253983a6659e749f4c44fcc2215194c2e00bf7b1c5e90fe683ea3b7b00f \
+ --hash=sha256:ec64b7b3fb95bc9c20c72548277794b81281a6ba9da85eda2c87324c218441ff \
+ --hash=sha256:ee62ec5882a857b252faffeb7867679f7e418052ca6bf7d6b56099f6498a2b0e \
+ --hash=sha256:ee757fd36bad66ad8b961958840894021ecaad22194f65219a666432739393ff \
+ --hash=sha256:f55623094b665d79a3b82ba77386ac34fa85049163edfe65387063e5127d4184 \
+ --hash=sha256:f622f542bd065ffec7d26b26d44d0c9a25c9c1295fd8ba6e4d77778e2293a12c \
+ --hash=sha256:f873af54014cac12082c7f5ccec6bbbeb5b57f63466e7f9c61a34588621313fb \
+ --hash=sha256:fae24c875c4ecc8c5f34a9715eb2a459743b4ca21d35c51819b640ee2f71cb51 \
+ --hash=sha256:fb26e69fc6c12534fbaa1657efed3b6482f1a166ba8e31227fa6f6f062a59070
+ # via -r requirements-test.in
+pytest==7.3.1 \
+ --hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \
+ --hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3
+
+tomli==2.0.1 \
+ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
+ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
diff --git a/python_files/tests/test_data/no-missing-deps.data b/python_files/tests/test_data/no-missing-deps.data
new file mode 100644
index 000000000000..d5d04476dec0
--- /dev/null
+++ b/python_files/tests/test_data/no-missing-deps.data
@@ -0,0 +1,13 @@
+#
+# This file is autogenerated by pip-compile with Python 3.8
+# by the following command:
+#
+# pip-compile --generate-hashes --resolver=backtracking requirements-test.in
+#
+pytest==7.3.1 \
+ --hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \
+ --hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3
+
+tomli==2.0.1 \
+ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
+ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
diff --git a/python_files/tests/test_data/pyproject-missing-deps.data b/python_files/tests/test_data/pyproject-missing-deps.data
new file mode 100644
index 000000000000..e4d6f9eb10d3
--- /dev/null
+++ b/python_files/tests/test_data/pyproject-missing-deps.data
@@ -0,0 +1,9 @@
+[build-system]
+requires = ["flit_core >=3.2,<4"]
+build-backend = "flit_core.buildapi"
+
+[project]
+name = "something"
+version = "2023.0.0"
+requires-python = ">=3.8"
+dependencies = ["pytest==7.3.1", "flake8-csv"]
diff --git a/python_files/tests/test_data/pyproject-no-missing-deps.data b/python_files/tests/test_data/pyproject-no-missing-deps.data
new file mode 100644
index 000000000000..64dadf6fdf2e
--- /dev/null
+++ b/python_files/tests/test_data/pyproject-no-missing-deps.data
@@ -0,0 +1,9 @@
+[build-system]
+requires = ["flit_core >=3.2,<4"]
+build-backend = "flit_core.buildapi"
+
+[project]
+name = "something"
+version = "2023.0.0"
+requires-python = ">=3.8"
+dependencies = [jedi-language-server"]
diff --git a/python_files/tests/test_dynamic_cursor.py b/python_files/tests/test_dynamic_cursor.py
new file mode 100644
index 000000000000..7aea59427aa6
--- /dev/null
+++ b/python_files/tests/test_dynamic_cursor.py
@@ -0,0 +1,203 @@
+import importlib
+import textwrap
+
+import normalizeSelection
+
+
+def test_dictionary_mouse_mover():
+ """
+ Having the mouse cursor on second line,
+ 'my_dict = {'
+ and pressing shift+enter should bring the
+ mouse cursor to line 6, on and to be able to run
+ 'print('only send the dictionary')'
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ not_dictionary = 'hi'
+ my_dict = {
+ "key1": "value1",
+ "key2": "value2"
+ }
+ print('only send the dictionary')
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 2, 2, False)
+
+ assert result["which_line_next"] == 6
+
+
+def test_beginning_func():
+ """
+ Pressing shift+enter on the very first line,
+ of function definition, such as 'my_func():'
+ It should properly skip the comment and assert the
+ next executable line to be executed is line 5 at
+ 'my_dict = {'
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ def my_func():
+ print("line 2")
+ print("line 3")
+ # Skip line 4 because it is a comment
+ my_dict = {
+ "key1": "value1",
+ "key2": "value2"
+ }
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["which_line_next"] == 5
+
+
+def test_cursor_forloop():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ lucid_dream = ["Corgi", "Husky", "Pomsky"]
+ for dogs in lucid_dream: # initial starting position
+ print(dogs)
+ print("I wish I had a dog!")
+
+ print("This should be the next block that should be ran")
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 2, 2, False)
+
+ assert result["which_line_next"] == 6
+
+
+def test_inside_forloop():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ for food in lucid_dream:
+ print("We are starting") # initial starting position
+ print("Next cursor should be here!")
+
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 2, 2, False)
+
+ assert result["which_line_next"] == 3
+
+
+def test_skip_sameline_statements():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ print("Audi");print("BMW");print("Mercedes")
+ print("Next line to be run is here!")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["which_line_next"] == 2
+
+
+def test_skip_multi_comp_lambda():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ (
+ my_first_var
+ for my_first_var in range(1, 10)
+ if my_first_var % 2 == 0
+ )
+
+ my_lambda = lambda x: (
+ x + 1
+ )
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ # Shift enter from the very first ( should make
+ # next executable statement as the lambda expression
+ assert result["which_line_next"] == 7
+
+
+def test_move_whole_class():
+ """
+ Shift+enter on a class definition
+ should move the cursor after running whole class.
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ class Stub(object):
+ def __init__(self):
+ self.calls = []
+
+ def add_call(self, name, args=None, kwargs=None):
+ self.calls.append((name, args, kwargs))
+ print("We should be here after running whole class")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["which_line_next"] == 7
+
+
+def test_def_to_def():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ def my_dogs():
+ print("Corgi")
+ print("Husky")
+ print("Corgi2")
+ print("Husky2")
+ print("no dogs")
+
+ # Skip here
+ def next_func():
+ print("Not here but above")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["which_line_next"] == 9
+
+
+def test_try_catch_move():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ try:
+ 1+1
+ except:
+ print("error")
+
+ print("Should be here afterwards")
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["which_line_next"] == 6
+
+
+def test_skip_nested():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ for j in range(1, 6):
+ for x in range(1, 5):
+ for y in range(1, 5):
+ for z in range(1,10):
+ print(i, j, x, y, z)
+
+ print("Cursor should be here after running line 1")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["which_line_next"] == 8
diff --git a/python_files/tests/test_installed_check.py b/python_files/tests/test_installed_check.py
new file mode 100644
index 000000000000..dae019359e08
--- /dev/null
+++ b/python_files/tests/test_installed_check.py
@@ -0,0 +1,139 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import contextlib
+import json
+import os
+import pathlib
+import subprocess
+import sys
+
+import pytest
+from typing import Dict, List, Optional, Union
+
+SCRIPT_PATH = pathlib.Path(__file__).parent.parent / "installed_check.py"
+TEST_DATA = pathlib.Path(__file__).parent / "test_data"
+DEFAULT_SEVERITY = 3
+
+
+@contextlib.contextmanager
+def generate_file(base_file: pathlib.Path):
+ basename = "pyproject.toml" if "pyproject" in base_file.name else "requirements.txt"
+ fullpath = base_file.parent / basename
+ if fullpath.exists():
+ os.unlink(os.fspath(fullpath))
+ fullpath.write_text(base_file.read_text(encoding="utf-8"))
+ try:
+ yield fullpath
+ finally:
+ os.unlink(str(fullpath))
+
+
+def run_on_file(
+ file_path: pathlib.Path, severity: Optional[str] = None
+) -> List[Dict[str, Union[str, int]]]:
+ env = os.environ.copy()
+ if severity:
+ env["VSCODE_MISSING_PGK_SEVERITY"] = severity
+ result = subprocess.run(
+ [
+ sys.executable,
+ os.fspath(SCRIPT_PATH),
+ os.fspath(file_path),
+ ],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ check=True,
+ env=env,
+ )
+ assert result.returncode == 0
+ assert result.stderr == b""
+ return json.loads(result.stdout)
+
+
+EXPECTED_DATA = {
+ "missing-deps": [
+ {
+ "line": 6,
+ "character": 0,
+ "endLine": 6,
+ "endCharacter": 10,
+ "package": "flake8-csv",
+ "code": "not-installed",
+ "severity": 3,
+ },
+ {
+ "line": 10,
+ "character": 0,
+ "endLine": 10,
+ "endCharacter": 11,
+ "package": "levenshtein",
+ "code": "not-installed",
+ "severity": 3,
+ },
+ ],
+ "no-missing-deps": [],
+ "pyproject-missing-deps": [
+ {
+ "line": 8,
+ "character": 34,
+ "endLine": 8,
+ "endCharacter": 44,
+ "package": "flake8-csv",
+ "code": "not-installed",
+ "severity": 3,
+ }
+ ],
+ "pyproject-no-missing-deps": [],
+}
+
+
+@pytest.mark.parametrize("test_name", EXPECTED_DATA.keys())
+def test_installed_check(test_name: str):
+ base_file = TEST_DATA / f"{test_name}.data"
+ with generate_file(base_file) as file_path:
+ result = run_on_file(file_path)
+ assert result == EXPECTED_DATA[test_name]
+
+
+EXPECTED_DATA2 = {
+ "missing-deps": [
+ {
+ "line": 6,
+ "character": 0,
+ "endLine": 6,
+ "endCharacter": 10,
+ "package": "flake8-csv",
+ "code": "not-installed",
+ "severity": 0,
+ },
+ {
+ "line": 10,
+ "character": 0,
+ "endLine": 10,
+ "endCharacter": 11,
+ "package": "levenshtein",
+ "code": "not-installed",
+ "severity": 0,
+ },
+ ],
+ "pyproject-missing-deps": [
+ {
+ "line": 8,
+ "character": 34,
+ "endLine": 8,
+ "endCharacter": 44,
+ "package": "flake8-csv",
+ "code": "not-installed",
+ "severity": 0,
+ }
+ ],
+}
+
+
+@pytest.mark.parametrize("test_name", EXPECTED_DATA2.keys())
+def test_with_severity(test_name: str):
+ base_file = TEST_DATA / f"{test_name}.data"
+ with generate_file(base_file) as file_path:
+ result = run_on_file(file_path, severity="0")
+ assert result == EXPECTED_DATA2[test_name]
diff --git a/python_files/tests/test_normalize_selection.py b/python_files/tests/test_normalize_selection.py
new file mode 100644
index 000000000000..60dfddb11e2d
--- /dev/null
+++ b/python_files/tests/test_normalize_selection.py
@@ -0,0 +1,270 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+
+import importlib
+import textwrap
+
+# __file__ = "/Users/anthonykim/Desktop/vscode-python/python_files/normalizeSelection.py"
+# sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__))))
+import normalizeSelection
+
+
+class TestNormalizationScript(object):
+ """Unit tests for the normalization script."""
+
+ def test_basicNormalization(self):
+ src = 'print("this is a test")'
+ expected = src + "\n"
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_moreThanOneLine(self):
+ src = textwrap.dedent(
+ """\
+ # Some rando comment
+
+ def show_something():
+ print("Something")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ def show_something():
+ print("Something")
+
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_withHangingIndent(self):
+ src = textwrap.dedent(
+ """\
+ x = 22
+ y = 30
+ z = -10
+ result = x + y + z
+
+ if result == 42:
+ print("The answer to life, the universe, and everything")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ x = 22
+ y = 30
+ z = -10
+ result = x + y + z
+ if result == 42:
+ print("The answer to life, the universe, and everything")
+
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_clearOutExtraneousNewlines(self):
+ src = textwrap.dedent(
+ """\
+ value_x = 22
+
+ value_y = 30
+
+ value_z = -10
+
+ print(value_x + value_y + value_z)
+
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ value_x = 22
+ value_y = 30
+ value_z = -10
+ print(value_x + value_y + value_z)
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_clearOutExtraLinesAndWhitespace(self):
+ src = textwrap.dedent(
+ """\
+ if True:
+ x = 22
+
+ y = 30
+
+ z = -10
+
+ print(x + y + z)
+
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ if True:
+ x = 22
+ y = 30
+ z = -10
+
+ print(x + y + z)
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_partialSingleLine(self):
+ src = " print('foo')"
+ expected = textwrap.dedent(src) + "\n"
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_multiLineWithIndent(self):
+ src = """\
+
+ if (x > 0
+ and condition == True):
+ print('foo')
+ else:
+
+ print('bar')
+ """
+
+ expected = textwrap.dedent(
+ """\
+ if (x > 0
+ and condition == True):
+ print('foo')
+ else:
+ print('bar')
+
+ """
+ )
+
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_multiLineWithComment(self):
+ src = textwrap.dedent(
+ """\
+
+ def show_something():
+ # A comment
+ print("Something")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ def show_something():
+ # A comment
+ print("Something")
+
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_exception(self):
+ src = " if True:"
+ expected = src + "\n\n"
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_multilineException(self):
+ src = textwrap.dedent(
+ """\
+
+ def show_something():
+ if True:
+ """
+ )
+ expected = src + "\n\n"
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_decorators(self):
+ src = textwrap.dedent(
+ """\
+ def foo(func):
+
+ def wrapper():
+ print('before')
+ func()
+ print('after')
+
+ return wrapper
+
+
+ @foo
+ def show_something():
+ print("Something")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ def foo(func):
+ def wrapper():
+ print('before')
+ func()
+ print('after')
+ return wrapper
+
+ @foo
+ def show_something():
+ print("Something")
+
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+ assert result == expected
+
+ def test_fstring(self):
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ name = "Ahri"
+ age = 10
+
+ print(f'My name is {name}')
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ name = "Ahri"
+ age = 10
+ print(f'My name is {name}')
+ """
+ )
+ result = normalizeSelection.normalize_lines(src)
+
+ assert result == expected
+
+ def test_list_comp(self):
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ names = ['Ahri', 'Bobby', 'Charlie']
+ breed = ['Pomeranian', 'Welsh Corgi', 'Siberian Husky']
+ dogs = [(name, breed) for name, breed in zip(names, breed)]
+
+ print(dogs)
+ my_family_dog = 'Corgi'
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ names = ['Ahri', 'Bobby', 'Charlie']
+ breed = ['Pomeranian', 'Welsh Corgi', 'Siberian Husky']
+ dogs = [(name, breed) for name, breed in zip(names, breed)]
+ print(dogs)
+ my_family_dog = 'Corgi'
+ """
+ )
+
+ result = normalizeSelection.normalize_lines(src)
+
+ assert result == expected
diff --git a/python_files/tests/test_shell_integration.py b/python_files/tests/test_shell_integration.py
new file mode 100644
index 000000000000..c5911aad2d1d
--- /dev/null
+++ b/python_files/tests/test_shell_integration.py
@@ -0,0 +1,59 @@
+import importlib
+import sys
+from unittest.mock import Mock
+import pythonrc
+
+
+def test_decoration_success():
+ importlib.reload(pythonrc)
+ ps1 = pythonrc.ps1()
+
+ ps1.hooks.failure_flag = False
+ result = str(ps1)
+ if sys.platform != "win32":
+ assert (
+ result
+ == "\x1b]633;E;None\x07\x1b]633;D;0\x07\x1b]633;A\x07>>> \x1b]633;B\x07\x1b]633;C\x07"
+ )
+ else:
+ pass
+
+
+def test_decoration_failure():
+ importlib.reload(pythonrc)
+ ps1 = pythonrc.ps1()
+
+ ps1.hooks.failure_flag = True
+ result = str(ps1)
+ if sys.platform != "win32":
+ assert (
+ result
+ == "\x1b]633;E;None\x07\x1b]633;D;1\x07\x1b]633;A\x07>>> \x1b]633;B\x07\x1b]633;C\x07"
+ )
+ else:
+ pass
+
+
+def test_displayhook_call():
+ importlib.reload(pythonrc)
+ pythonrc.ps1()
+ mock_displayhook = Mock()
+
+ hooks = pythonrc.repl_hooks()
+ hooks.original_displayhook = mock_displayhook
+
+ hooks.my_displayhook("mock_value")
+
+ mock_displayhook.assert_called_once_with("mock_value")
+
+
+def test_excepthook_call():
+ importlib.reload(pythonrc)
+ pythonrc.ps1()
+ mock_excepthook = Mock()
+
+ hooks = pythonrc.repl_hooks()
+ hooks.original_excepthook = mock_excepthook
+
+ hooks.my_excepthook("mock_type", "mock_value", "mock_traceback")
+ mock_excepthook.assert_called_once_with("mock_type", "mock_value", "mock_traceback")
diff --git a/python_files/tests/test_smart_selection.py b/python_files/tests/test_smart_selection.py
new file mode 100644
index 000000000000..b86e6f9dc82e
--- /dev/null
+++ b/python_files/tests/test_smart_selection.py
@@ -0,0 +1,388 @@
+import importlib
+import textwrap
+
+import normalizeSelection
+
+
+def test_part_dictionary():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ not_dictionary = 'hi'
+ my_dict = {
+ "key1": "value1",
+ "key2": "value2"
+ }
+ print('only send the dictionary')
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ my_dict = {
+ "key1": "value1",
+ "key2": "value2"
+ }
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 3, 3, False)
+ assert result["normalized_smart_result"] == expected
+
+
+def test_nested_loop():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ for j in range(1, 6):
+ for x in range(1, 5):
+ for y in range(1, 5):
+ for z in range(1,10):
+ print(i, j, x, y, z)
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ for j in range(1, 6):
+ for x in range(1, 5):
+ for y in range(1, 5):
+ for z in range(1,10):
+ print(i, j, x, y, z)
+
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["normalized_smart_result"] == expected
+
+
+def test_smart_shift_enter_multiple_statements():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ import textwrap
+ import ast
+
+ print("Porsche")
+ print("Genesis")
+
+
+ print("Audi");print("BMW");print("Mercedes")
+
+ print("dont print me")
+
+ """
+ )
+ # Expected to printing statement line by line,
+ # for when multiple print statements are ran
+ # from the same line.
+ expected = textwrap.dedent(
+ """\
+ print("Audi")
+ print("BMW")
+ print("Mercedes")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 8, 8, False)
+ assert result["normalized_smart_result"] == expected
+
+
+def test_two_layer_dictionary():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ print("dont print me")
+
+ two_layered_dictionary = {
+ 'inner_dict_one': {
+ 'Audi': 'Germany',
+ 'BMW': 'Germnay',
+ 'Genesis': 'Korea',
+ },
+ 'inner_dict_two': {
+ 'Mercedes': 'Germany',
+ 'Porsche': 'Germany',
+ 'Lamborghini': 'Italy',
+ 'Ferrari': 'Italy',
+ 'Maserati': 'Italy'
+ }
+ }
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ two_layered_dictionary = {
+ 'inner_dict_one': {
+ 'Audi': 'Germany',
+ 'BMW': 'Germnay',
+ 'Genesis': 'Korea',
+ },
+ 'inner_dict_two': {
+ 'Mercedes': 'Germany',
+ 'Porsche': 'Germany',
+ 'Lamborghini': 'Italy',
+ 'Ferrari': 'Italy',
+ 'Maserati': 'Italy'
+ }
+ }
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 6, 7, False)
+
+ assert result["normalized_smart_result"] == expected
+
+
+def test_run_whole_func():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ print("Decide which dog you will choose")
+ def my_dogs():
+ print("Corgi")
+ print("Husky")
+ print("Corgi2")
+ print("Husky2")
+ print("no dogs")
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ def my_dogs():
+ print("Corgi")
+ print("Husky")
+ print("Corgi2")
+ print("Husky2")
+ print("no dogs")
+
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 2, 2, False)
+
+ assert result["normalized_smart_result"] == expected
+
+
+def test_small_forloop():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ print(i)
+ print("Please also send this print statement")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ print(i)
+ print("Please also send this print statement")
+
+ """
+ )
+
+ # Cover the whole for loop block with multiple inner statements
+ # Make sure to contain all of the print statements included.
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["normalized_smart_result"] == expected
+
+
+def inner_for_loop_component():
+ """
+ Pressing shift+enter inside a for loop,
+ specifically on a viable expression
+ by itself, such as print(i)
+ should only return that exact expression
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ for i in range(1, 6):
+ print(i)
+ print("Please also send this print statement")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 2, 2, False)
+ expected = textwrap.dedent(
+ """\
+ print(i)
+ """
+ )
+
+ assert result["normalized_smart_result"] == expected
+
+
+def test_dict_comprehension():
+ """
+ Having the mouse cursor on the first line,
+ and pressing shift+enter should return the
+ whole dictionary comp, respecting user's code style.
+ """
+
+ importlib.reload
+ src = textwrap.dedent(
+ """\
+ my_dict_comp = {temp_mover:
+ temp_mover for temp_mover in range(1, 7)}
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ my_dict_comp = {temp_mover:
+ temp_mover for temp_mover in range(1, 7)}
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["normalized_smart_result"] == expected
+
+
+def test_send_whole_generator():
+ """
+ Pressing shift+enter on the first line, which is the '('
+ should be returning the whole generator expression instead of just the '('
+ """
+
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ (
+ my_first_var
+ for my_first_var in range(1, 10)
+ if my_first_var % 2 == 0
+ )
+ """
+ )
+
+ expected = textwrap.dedent(
+ """\
+ (
+ my_first_var
+ for my_first_var in range(1, 10)
+ if my_first_var % 2 == 0
+ )
+
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+
+ assert result["normalized_smart_result"] == expected
+
+
+def test_multiline_lambda():
+ """
+ Shift+enter on part of the lambda expression
+ should return the whole lambda expression,
+ regardless of whether all the component of
+ lambda expression is on the same or not.
+ """
+
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ my_lambda = lambda x: (
+ x + 1
+ )
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ my_lambda = lambda x: (
+ x + 1
+ )
+
+ """
+ )
+
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["normalized_smart_result"] == expected
+
+
+def test_send_whole_class():
+ """
+ Shift+enter on a class definition
+ should send the whole class definition
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ class Stub(object):
+ def __init__(self):
+ self.calls = []
+
+ def add_call(self, name, args=None, kwargs=None):
+ self.calls.append((name, args, kwargs))
+ print("We should be here after running whole class")
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ expected = textwrap.dedent(
+ """\
+ class Stub(object):
+ def __init__(self):
+ self.calls = []
+ def add_call(self, name, args=None, kwargs=None):
+ self.calls.append((name, args, kwargs))
+
+ """
+ )
+ assert result["normalized_smart_result"] == expected
+
+
+def test_send_whole_if_statement():
+ """
+ Shift+enter on an if statement
+ should send the whole if statement
+ including statements inside and else.
+ """
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ if True:
+ print('send this')
+ else:
+ print('also send this')
+
+ print('cursor here afterwards')
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ if True:
+ print('send this')
+ else:
+ print('also send this')
+
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["normalized_smart_result"] == expected
+
+
+def test_send_try():
+ importlib.reload(normalizeSelection)
+ src = textwrap.dedent(
+ """\
+ try:
+ 1+1
+ except:
+ print("error")
+
+ print("Not running this")
+ """
+ )
+ expected = textwrap.dedent(
+ """\
+ try:
+ 1+1
+ except:
+ print("error")
+
+ """
+ )
+ result = normalizeSelection.traverse_file(src, 1, 1, False)
+ assert result["normalized_smart_result"] == expected
diff --git a/pythonFiles/tests/testing_tools/__init__.py b/python_files/tests/testing_tools/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/__init__.py
rename to python_files/tests/testing_tools/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py b/python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py b/python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/test_Spam.py b/python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/test_Spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/test_Spam.py
rename to python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/C/test_Spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py b/python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/NormCase/tests/A/b/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/__init__.py b/python_files/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/NormCase/tests/__init__.py
diff --git a/python_files/tests/testing_tools/adapter/.data/complex/README.md b/python_files/tests/testing_tools/adapter/.data/complex/README.md
new file mode 100644
index 000000000000..8840cda1e834
--- /dev/null
+++ b/python_files/tests/testing_tools/adapter/.data/complex/README.md
@@ -0,0 +1,156 @@
+## Directory Structure
+
+```
+python_files/tests/testing_tools/adapter/.data/
+ tests/ # test root
+ test_doctest.txt
+ test_pytest.py
+ test_unittest.py
+ test_mixed.py
+ spam.py # note: no "test_" prefix, but contains tests
+ test_foo.py
+ test_42.py
+ test_42-43.py # note the hyphen
+ testspam.py
+ v/
+ __init__.py
+ spam.py
+ test_eggs.py
+ test_ham.py
+ test_spam.py
+ w/
+ # no __init__.py
+ test_spam.py
+ test_spam_ex.py
+ x/y/z/ # each with a __init__.py
+ test_ham.py
+ a/
+ __init__.py
+ test_spam.py
+ b/
+ __init__.py
+ test_spam.py
+```
+
+## Tests (and Suites)
+
+basic:
+
+- `./test_foo.py::test_simple`
+- `./test_pytest.py::test_simple`
+- `./test_pytest.py::TestSpam::test_simple`
+- `./test_pytest.py::TestSpam::TestHam::TestEggs::test_simple`
+- `./test_pytest.py::TestEggs::test_simple`
+- `./test_pytest.py::TestParam::test_simple`
+- `./test_mixed.py::test_top_level`
+- `./test_mixed.py::MyTests::test_simple`
+- `./test_mixed.py::TestMySuite::test_simple`
+- `./test_unittest.py::MyTests::test_simple`
+- `./test_unittest.py::OtherTests::test_simple`
+- `./x/y/z/test_ham.py::test_simple`
+- `./x/y/z/a/test_spam.py::test_simple`
+- `./x/y/z/b/test_spam.py::test_simple`
+
+failures:
+
+- `./test_pytest.py::test_failure`
+- `./test_pytest.py::test_runtime_failed`
+- `./test_pytest.py::test_raises`
+
+skipped:
+
+- `./test_mixed.py::test_skipped`
+- `./test_mixed.py::MyTests::test_skipped`
+- `./test_pytest.py::test_runtime_skipped`
+- `./test_pytest.py::test_skipped`
+- `./test_pytest.py::test_maybe_skipped`
+- `./test_pytest.py::SpamTests::test_skipped`
+- `./test_pytest.py::test_param_13_markers[???]`
+- `./test_pytest.py::test_param_13_skipped[*]`
+- `./test_unittest.py::MyTests::test_skipped`
+- (`./test_unittest.py::MyTests::test_maybe_skipped`)
+- (`./test_unittest.py::MyTests::test_maybe_not_skipped`)
+
+in namespace package:
+
+- `./w/test_spam.py::test_simple`
+- `./w/test_spam_ex.py::test_simple`
+
+filename oddities:
+
+- `./test_42.py::test_simple`
+- `./test_42-43.py::test_simple`
+- (`./testspam.py::test_simple` not discovered by default)
+- (`./spam.py::test_simple` not discovered)
+
+imports discovered:
+
+- `./v/test_eggs.py::test_simple`
+- `./v/test_eggs.py::TestSimple::test_simple`
+- `./v/test_ham.py::test_simple`
+- `./v/test_ham.py::test_not_hard`
+- `./v/test_spam.py::test_simple`
+- `./v/test_spam.py::test_simpler`
+
+subtests:
+
+- `./test_pytest.py::test_dynamic_*`
+- `./test_pytest.py::test_param_01[]`
+- `./test_pytest.py::test_param_11[1]`
+- `./test_pytest.py::test_param_13[*]`
+- `./test_pytest.py::test_param_13_markers[*]`
+- `./test_pytest.py::test_param_13_repeat[*]`
+- `./test_pytest.py::test_param_13_skipped[*]`
+- `./test_pytest.py::test_param_23_13[*]`
+- `./test_pytest.py::test_param_23_raises[*]`
+- `./test_pytest.py::test_param_33[*]`
+- `./test_pytest.py::test_param_33_ids[*]`
+- `./test_pytest.py::TestParam::test_param_13[*]`
+- `./test_pytest.py::TestParamAll::test_param_13[*]`
+- `./test_pytest.py::TestParamAll::test_spam_13[*]`
+- `./test_pytest.py::test_fixture_param[*]`
+- `./test_pytest.py::test_param_fixture[*]`
+- `./test_pytest_param.py::test_param_13[*]`
+- `./test_pytest_param.py::TestParamAll::test_param_13[*]`
+- `./test_pytest_param.py::TestParamAll::test_spam_13[*]`
+- (`./test_unittest.py::MyTests::test_with_subtests`)
+- (`./test_unittest.py::MyTests::test_with_nested_subtests`)
+- (`./test_unittest.py::MyTests::test_dynamic_*`)
+
+For more options for pytests's parametrize(), see
+https://docs.pytest.org/en/latest/example/parametrize.html#paramexamples.
+
+using fixtures:
+
+- `./test_pytest.py::test_fixture`
+- `./test_pytest.py::test_fixture_param[*]`
+- `./test_pytest.py::test_param_fixture[*]`
+- `./test_pytest.py::test_param_mark_fixture[*]`
+
+other markers:
+
+- `./test_pytest.py::test_known_failure`
+- `./test_pytest.py::test_param_markers[2]`
+- `./test_pytest.py::test_warned`
+- `./test_pytest.py::test_custom_marker`
+- `./test_pytest.py::test_multiple_markers`
+- (`./test_unittest.py::MyTests::test_known_failure`)
+
+others not discovered:
+
+- (`./test_pytest.py::TestSpam::TestHam::TestEggs::TestNoop1`)
+- (`./test_pytest.py::TestSpam::TestNoop2`)
+- (`./test_pytest.py::TestNoop3`)
+- (`./test_pytest.py::MyTests::test_simple`)
+- (`./test_unittest.py::MyTests::TestSub1`)
+- (`./test_unittest.py::MyTests::TestSub2`)
+- (`./test_unittest.py::NoTests`)
+
+doctests:
+
+- `./test_doctest.txt::test_doctest.txt`
+- (`./test_doctest.py::test_doctest.py`)
+- (`../mod.py::mod`)
+- (`../mod.py::mod.square`)
+- (`../mod.py::mod.Spam`)
+- (`../mod.py::mod.spam.eggs`)
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/mod.py b/python_files/tests/testing_tools/adapter/.data/complex/mod.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/mod.py
rename to python_files/tests/testing_tools/adapter/.data/complex/mod.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_42-43.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_42-43.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_42-43.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_42-43.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_42.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_42.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_42.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_42.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_doctest.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_doctest.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_doctest.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_doctest.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_doctest.txt b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_doctest.txt
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_doctest.txt
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_doctest.txt
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_foo.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_foo.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_foo.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_foo.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_mixed.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_mixed.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_mixed.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_mixed.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_pytest.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_pytest.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_pytest.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_pytest.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_pytest_param.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_pytest_param.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_pytest_param.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_pytest_param.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_unittest.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/test_unittest.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/test_unittest.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/test_unittest.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/testspam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/testspam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/testspam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/testspam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/v/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/v/spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/v/spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_eggs.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_eggs.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_eggs.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_eggs.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_ham.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_ham.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_ham.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_ham.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/v/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/v/test_spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/w/test_spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/w/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/w/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/w/test_spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/w/test_spam_ex.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/w/test_spam_ex.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/w/test_spam_ex.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/w/test_spam_ex.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/test_spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/a/test_spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/notests/tests/__init__.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/notests/tests/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/test_spam.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/b/test_spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/test_ham.py b/python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/test_ham.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/complex/tests/x/y/z/test_ham.py
rename to python_files/tests/testing_tools/adapter/.data/complex/tests/x/y/z/test_ham.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/simple/tests/__init__.py b/python_files/tests/testing_tools/adapter/.data/notests/tests/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/simple/tests/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/notests/tests/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py b/python_files/tests/testing_tools/adapter/.data/simple/tests/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/simple/tests/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/simple/tests/test_spam.py b/python_files/tests/testing_tools/adapter/.data/simple/tests/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/simple/tests/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/simple/tests/test_spam.py
diff --git a/src/test/pythonFiles/autoimport/two/__init__.py b/python_files/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py
similarity index 100%
rename from src/test/pythonFiles/autoimport/two/__init__.py
rename to python_files/tests/testing_tools/adapter/.data/syntax-error/tests/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/test_spam.py b/python_files/tests/testing_tools/adapter/.data/syntax-error/tests/test_spam.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/.data/syntax-error/tests/test_spam.py
rename to python_files/tests/testing_tools/adapter/.data/syntax-error/tests/test_spam.py
diff --git a/pythonFiles/tests/testing_tools/adapter/__init__.py b/python_files/tests/testing_tools/adapter/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/__init__.py
rename to python_files/tests/testing_tools/adapter/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/pytest/__init__.py b/python_files/tests/testing_tools/adapter/pytest/__init__.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/pytest/__init__.py
rename to python_files/tests/testing_tools/adapter/pytest/__init__.py
diff --git a/pythonFiles/tests/testing_tools/adapter/pytest/test_cli.py b/python_files/tests/testing_tools/adapter/pytest/test_cli.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/pytest/test_cli.py
rename to python_files/tests/testing_tools/adapter/pytest/test_cli.py
diff --git a/python_files/tests/testing_tools/adapter/pytest/test_discovery.py b/python_files/tests/testing_tools/adapter/pytest/test_discovery.py
new file mode 100644
index 000000000000..55a0e65102ae
--- /dev/null
+++ b/python_files/tests/testing_tools/adapter/pytest/test_discovery.py
@@ -0,0 +1,1621 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from __future__ import print_function, unicode_literals
+
+try:
+ from io import StringIO
+except ImportError:
+ from StringIO import StringIO # type: ignore (for Pylance)
+
+import os
+import sys
+import tempfile
+import unittest
+
+import _pytest.doctest
+import pytest
+from testing_tools.adapter import info
+from testing_tools.adapter import util as adapter_util
+from testing_tools.adapter.pytest import _discovery
+from testing_tools.adapter.pytest import _pytest_item as pytest_item
+
+from .... import util
+
+
+def unique(collection, key):
+ result = []
+ keys = []
+ for item in collection:
+ k = key(item)
+ if k in keys:
+ continue
+ result.append(item)
+ keys.append(k)
+ return result
+
+
+class StubPyTest(util.StubProxy):
+ def __init__(self, stub=None):
+ super(StubPyTest, self).__init__(stub, "pytest")
+ self.return_main = 0
+
+ def main(self, args, plugins):
+ self.add_call("main", None, {"args": args, "plugins": plugins})
+ return self.return_main
+
+
+class StubPlugin(util.StubProxy):
+ _started = True
+
+ def __init__(self, stub=None, tests=None):
+ super(StubPlugin, self).__init__(stub, "plugin")
+ if tests is None:
+ tests = StubDiscoveredTests(self.stub)
+ self._tests = tests
+
+ def __getattr__(self, name):
+ if not name.startswith("pytest_"):
+ raise AttributeError(name)
+
+ def func(*args, **kwargs):
+ self.add_call(name, args or None, kwargs or None)
+
+ return func
+
+
+class StubDiscoveredTests(util.StubProxy):
+ NOT_FOUND = object()
+
+ def __init__(self, stub=None):
+ super(StubDiscoveredTests, self).__init__(stub, "discovered")
+ self.return_items = []
+ self.return_parents = []
+
+ def __len__(self):
+ self.add_call("__len__", None, None)
+ return len(self.return_items)
+
+ def __getitem__(self, index):
+ self.add_call("__getitem__", (index,), None)
+ return self.return_items[index]
+
+ @property
+ def parents(self):
+ self.add_call("parents", None, None)
+ return self.return_parents
+
+ def reset(self):
+ self.add_call("reset", None, None)
+
+ def add_test(self, test, parents):
+ self.add_call("add_test", None, {"test": test, "parents": parents})
+
+
+class FakeFunc(object):
+ def __init__(self, name):
+ self.__name__ = name
+
+
+class FakeMarker(object):
+ def __init__(self, name):
+ self.name = name
+
+
+class StubPytestItem(util.StubProxy):
+ _debugging = False
+ _hasfunc = True
+
+ def __init__(self, stub=None, **attrs):
+ super(StubPytestItem, self).__init__(stub, "pytest.Item")
+ if attrs.get("function") is None:
+ attrs.pop("function", None)
+ self._hasfunc = False
+
+ attrs.setdefault("user_properties", [])
+
+ slots = getattr(type(self), "__slots__", None)
+ if slots:
+ for name, value in attrs.items():
+ if name in self.__slots__:
+ setattr(self, name, value)
+ else:
+ self.__dict__[name] = value
+ else:
+ self.__dict__.update(attrs)
+
+ if "own_markers" not in attrs:
+ self.own_markers = ()
+
+ def __repr__(self):
+ return object.__repr__(self)
+
+ def __getattr__(self, name):
+ if not self._debugging:
+ self.add_call(name + " (attr)", None, None)
+ if name == "function":
+ if not self._hasfunc:
+ raise AttributeError(name)
+
+ def func(*args, **kwargs):
+ self.add_call(name, args or None, kwargs or None)
+
+ return func
+
+
+class StubSubtypedItem(StubPytestItem):
+ @classmethod
+ def from_args(cls, *args, **kwargs):
+ if not hasattr(cls, "from_parent"):
+ return cls(*args, **kwargs)
+ self = cls.from_parent(None, name=kwargs["name"], runner=None, dtest=None)
+ self.__init__(*args, **kwargs)
+ return self
+
+ def __init__(self, *args, **kwargs):
+ super(StubSubtypedItem, self).__init__(*args, **kwargs)
+ if "nodeid" in self.__dict__:
+ self._nodeid = self.__dict__.pop("nodeid")
+
+ @property
+ def location(self):
+ return self.__dict__.get("location")
+
+
+class StubFunctionItem(StubSubtypedItem, pytest.Function):
+ @property
+ def function(self):
+ return self.__dict__.get("function")
+
+
+def create_stub_function_item(*args, **kwargs):
+ return StubFunctionItem.from_args(*args, **kwargs)
+
+
+class StubDoctestItem(StubSubtypedItem, _pytest.doctest.DoctestItem):
+ pass
+
+
+def create_stub_doctest_item(*args, **kwargs):
+ return StubDoctestItem.from_args(*args, **kwargs)
+
+
+class StubPytestSession(util.StubProxy):
+ def __init__(self, stub=None):
+ super(StubPytestSession, self).__init__(stub, "pytest.Session")
+
+ def __getattr__(self, name):
+ self.add_call(name + " (attr)", None, None)
+
+ def func(*args, **kwargs):
+ self.add_call(name, args or None, kwargs or None)
+
+ return func
+
+
+class StubPytestConfig(util.StubProxy):
+ def __init__(self, stub=None):
+ super(StubPytestConfig, self).__init__(stub, "pytest.Config")
+
+ def __getattr__(self, name):
+ self.add_call(name + " (attr)", None, None)
+
+ def func(*args, **kwargs):
+ self.add_call(name, args or None, kwargs or None)
+
+ return func
+
+
+def generate_parse_item(pathsep):
+ if pathsep == "\\":
+
+ def normcase(path):
+ path = path.lower()
+ return path.replace("/", "\\")
+
+ else:
+ raise NotImplementedError
+
+ ##########
+ def _fix_fileid(*args):
+ return adapter_util.fix_fileid(
+ *args,
+ **dict(
+ # dependency injection
+ _normcase=normcase,
+ _pathsep=pathsep,
+ ),
+ )
+
+ def _normalize_test_id(*args):
+ return pytest_item._normalize_test_id(
+ *args,
+ **dict(
+ # dependency injection
+ _fix_fileid=_fix_fileid,
+ _pathsep=pathsep,
+ ),
+ )
+
+ def _iter_nodes(*args):
+ return pytest_item._iter_nodes(
+ *args,
+ **dict(
+ # dependency injection
+ _normalize_test_id=_normalize_test_id,
+ _normcase=normcase,
+ _pathsep=pathsep,
+ ),
+ )
+
+ def _parse_node_id(*args):
+ return pytest_item._parse_node_id(
+ *args,
+ **dict(
+ # dependency injection
+ _iter_nodes=_iter_nodes,
+ ),
+ )
+
+ ##########
+ def _split_fspath(*args):
+ return pytest_item._split_fspath(
+ *args,
+ **dict(
+ # dependency injection
+ _normcase=normcase,
+ ),
+ )
+
+ ##########
+ def _matches_relfile(*args):
+ return pytest_item._matches_relfile(
+ *args,
+ **dict(
+ # dependency injection
+ _normcase=normcase,
+ _pathsep=pathsep,
+ ),
+ )
+
+ def _is_legacy_wrapper(*args):
+ return pytest_item._is_legacy_wrapper(
+ *args,
+ **dict(
+ # dependency injection
+ _pathsep=pathsep,
+ ),
+ )
+
+ def _get_location(*args):
+ return pytest_item._get_location(
+ *args,
+ **dict(
+ # dependency injection
+ _matches_relfile=_matches_relfile,
+ _is_legacy_wrapper=_is_legacy_wrapper,
+ _pathsep=pathsep,
+ ),
+ )
+
+ ##########
+ def _parse_item(item):
+ return pytest_item.parse_item(
+ item,
+ **dict(
+ # dependency injection
+ _parse_node_id=_parse_node_id,
+ _split_fspath=_split_fspath,
+ _get_location=_get_location,
+ ),
+ )
+
+ return _parse_item
+
+
+##################################
+# tests
+
+
+def fake_pytest_main(stub, use_fd, pytest_stdout):
+ def ret(args, plugins):
+ stub.add_call("pytest.main", None, {"args": args, "plugins": plugins})
+ if use_fd:
+ os.write(sys.stdout.fileno(), pytest_stdout.encode())
+ else:
+ print(pytest_stdout, end="")
+ return 0
+
+ return ret
+
+
+class DiscoverTests(unittest.TestCase):
+ DEFAULT_ARGS = [
+ "--collect-only",
+ ]
+
+ def test_basic(self):
+ stub = util.Stub()
+ stubpytest = StubPyTest(stub)
+ plugin = StubPlugin(stub)
+ expected = []
+ plugin.discovered = expected
+ calls = [
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ("discovered.parents", None, None),
+ ("discovered.__len__", None, None),
+ ("discovered.__getitem__", (0,), None),
+ ]
+
+ parents, tests = _discovery.discover([], _pytest_main=stubpytest.main, _plugin=plugin)
+
+ actual_calls = unique(stub.calls, lambda k: k[0])
+ expected_calls = unique(calls, lambda k: k[0])
+
+ self.assertEqual(parents, [])
+ self.assertEqual(tests, expected)
+ self.assertEqual(actual_calls, expected_calls)
+
+ def test_failure(self):
+ stub = util.Stub()
+ pytest = StubPyTest(stub)
+ pytest.return_main = 2
+ plugin = StubPlugin(stub)
+
+ with self.assertRaises(Exception):
+ _discovery.discover([], _pytest_main=pytest.main, _plugin=plugin)
+
+ self.assertEqual(
+ stub.calls,
+ [
+ # There's only one call.
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ],
+ )
+
+ def test_no_tests_found(self):
+ stub = util.Stub()
+ pytest = StubPyTest(stub)
+ pytest.return_main = 5
+ plugin = StubPlugin(stub)
+ expected = []
+ plugin.discovered = expected
+ calls = [
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ("discovered.parents", None, None),
+ ("discovered.__len__", None, None),
+ ("discovered.__getitem__", (0,), None),
+ ]
+
+ parents, tests = _discovery.discover([], _pytest_main=pytest.main, _plugin=plugin)
+
+ actual_calls = unique(stub.calls, lambda k: k[0])
+ expected_calls = unique(calls, lambda k: k[0])
+
+ self.assertEqual(parents, [])
+ self.assertEqual(tests, expected)
+ self.assertEqual(actual_calls, expected_calls)
+
+ def test_found_with_collection_error(self):
+ stub = util.Stub()
+ pytest = StubPyTest(stub)
+ pytest.return_main = 1
+ plugin = StubPlugin(stub)
+ expected = []
+ plugin.discovered = expected
+ calls = [
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ("discovered.parents", None, None),
+ ("discovered.__len__", None, None),
+ ("discovered.__getitem__", (0,), None),
+ ]
+
+ parents, tests = _discovery.discover([], _pytest_main=pytest.main, _plugin=plugin)
+
+ actual_calls = unique(stub.calls, lambda k: k[0])
+ expected_calls = unique(calls, lambda k: k[0])
+
+ self.assertEqual(parents, [])
+ self.assertEqual(tests, expected)
+ self.assertEqual(actual_calls, expected_calls)
+
+ def test_stdio_hidden_file(self):
+ stub = util.Stub()
+
+ plugin = StubPlugin(stub)
+ plugin.discovered = []
+ calls = [
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ("discovered.parents", None, None),
+ ("discovered.__len__", None, None),
+ ("discovered.__getitem__", (0,), None),
+ ]
+ pytest_stdout = "spamspamspamspamspamspamspammityspam"
+
+ # to simulate stdio behavior in methods like os.dup,
+ # use actual files (rather than StringIO)
+ with tempfile.TemporaryFile("r+") as mock:
+ sys.stdout = mock
+ try:
+ _discovery.discover(
+ [],
+ hidestdio=True,
+ _pytest_main=fake_pytest_main(stub, False, pytest_stdout),
+ _plugin=plugin,
+ )
+ finally:
+ sys.stdout = sys.__stdout__
+
+ mock.seek(0)
+ captured = mock.read()
+
+ actual_calls = unique(stub.calls, lambda k: k[0])
+ expected_calls = unique(calls, lambda k: k[0])
+
+ self.assertEqual(captured, "")
+ self.assertEqual(actual_calls, expected_calls)
+
+ def test_stdio_hidden_fd(self):
+ # simulate cases where stdout comes from the lower layer than sys.stdout
+ # via file descriptors (e.g., from cython)
+ stub = util.Stub()
+ plugin = StubPlugin(stub)
+ pytest_stdout = "spamspamspamspamspamspamspammityspam"
+
+ # Replace with contextlib.redirect_stdout() once Python 2.7 support is dropped.
+ sys.stdout = StringIO()
+ try:
+ _discovery.discover(
+ [],
+ hidestdio=True,
+ _pytest_main=fake_pytest_main(stub, True, pytest_stdout),
+ _plugin=plugin,
+ )
+ captured = sys.stdout.read()
+ self.assertEqual(captured, "")
+ finally:
+ sys.stdout = sys.__stdout__
+
+ def test_stdio_not_hidden_file(self):
+ stub = util.Stub()
+
+ plugin = StubPlugin(stub)
+ plugin.discovered = []
+ calls = [
+ ("pytest.main", None, {"args": self.DEFAULT_ARGS, "plugins": [plugin]}),
+ ("discovered.parents", None, None),
+ ("discovered.__len__", None, None),
+ ("discovered.__getitem__", (0,), None),
+ ]
+ pytest_stdout = "spamspamspamspamspamspamspammityspam"
+
+ buf = StringIO()
+
+ sys.stdout = buf
+ try:
+ _discovery.discover(
+ [],
+ hidestdio=False,
+ _pytest_main=fake_pytest_main(stub, False, pytest_stdout),
+ _plugin=plugin,
+ )
+ finally:
+ sys.stdout = sys.__stdout__
+ captured = buf.getvalue()
+
+ actual_calls = unique(stub.calls, lambda k: k[0])
+ expected_calls = unique(calls, lambda k: k[0])
+
+ self.assertEqual(captured, pytest_stdout)
+ self.assertEqual(actual_calls, expected_calls)
+
+ def test_stdio_not_hidden_fd(self):
+ # simulate cases where stdout comes from the lower layer than sys.stdout
+ # via file descriptors (e.g., from cython)
+ stub = util.Stub()
+ plugin = StubPlugin(stub)
+ pytest_stdout = "spamspamspamspamspamspamspammityspam"
+ stub.calls = []
+ with tempfile.TemporaryFile("r+") as mock:
+ sys.stdout = mock
+ try:
+ _discovery.discover(
+ [],
+ hidestdio=False,
+ _pytest_main=fake_pytest_main(stub, True, pytest_stdout),
+ _plugin=plugin,
+ )
+ finally:
+ mock.seek(0)
+ captured = sys.stdout.read()
+ sys.stdout = sys.__stdout__
+ self.assertEqual(captured, pytest_stdout)
+
+
+class CollectorTests(unittest.TestCase):
+ def test_modifyitems(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ config = StubPytestConfig(stub)
+ collector = _discovery.TestCollector(tests=discovered)
+
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile1 = adapter_util.fix_path("./test_spam.py")
+ relfile2 = adapter_util.fix_path("x/y/z/test_eggs.py")
+
+ collector.pytest_collection_modifyitems(
+ session,
+ config,
+ [
+ create_stub_function_item(
+ stub,
+ nodeid="test_spam.py::SpamTests::test_one",
+ name="test_one",
+ originalname=None,
+ location=("test_spam.py", 12, "SpamTests.test_one"),
+ path=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
+ function=FakeFunc("test_one"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid="test_spam.py::SpamTests::test_other",
+ name="test_other",
+ originalname=None,
+ location=("test_spam.py", 19, "SpamTests.test_other"),
+ path=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
+ function=FakeFunc("test_other"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid="test_spam.py::test_all",
+ name="test_all",
+ originalname=None,
+ location=("test_spam.py", 144, "test_all"),
+ path=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
+ function=FakeFunc("test_all"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid="test_spam.py::test_each[10-10]",
+ name="test_each[10-10]",
+ originalname="test_each",
+ location=("test_spam.py", 273, "test_each[10-10]"),
+ path=adapter_util.PATH_JOIN(testroot, "test_spam.py"),
+ function=FakeFunc("test_each"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid=relfile2 + "::All::BasicTests::test_first",
+ name="test_first",
+ originalname=None,
+ location=(relfile2, 31, "All.BasicTests.test_first"),
+ path=adapter_util.PATH_JOIN(testroot, relfile2),
+ function=FakeFunc("test_first"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid=relfile2 + "::All::BasicTests::test_each[1+2-3]",
+ name="test_each[1+2-3]",
+ originalname="test_each",
+ location=(relfile2, 62, "All.BasicTests.test_each[1+2-3]"),
+ path=adapter_util.PATH_JOIN(testroot, relfile2),
+ function=FakeFunc("test_each"),
+ own_markers=[
+ FakeMarker(v)
+ for v in [
+ # supported
+ "skip",
+ "skipif",
+ "xfail",
+ # duplicate
+ "skip",
+ # ignored (pytest-supported)
+ "parameterize",
+ "usefixtures",
+ "filterwarnings",
+ # ignored (custom)
+ "timeout",
+ ]
+ ],
+ ),
+ ],
+ )
+
+ self.maxDiff = None
+ expected = [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./test_spam.py::SpamTests", "SpamTests", "suite"),
+ ("./test_spam.py", "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./test_spam.py::SpamTests::test_one",
+ name="test_one",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=relfile1,
+ func="SpamTests.test_one",
+ sub=None,
+ ),
+ source="{}:{}".format(relfile1, 13),
+ markers=None,
+ parentid="./test_spam.py::SpamTests",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./test_spam.py::SpamTests", "SpamTests", "suite"),
+ ("./test_spam.py", "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./test_spam.py::SpamTests::test_other",
+ name="test_other",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=relfile1,
+ func="SpamTests.test_other",
+ sub=None,
+ ),
+ source="{}:{}".format(relfile1, 20),
+ markers=None,
+ parentid="./test_spam.py::SpamTests",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./test_spam.py", "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./test_spam.py::test_all",
+ name="test_all",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=relfile1,
+ func="test_all",
+ sub=None,
+ ),
+ source="{}:{}".format(relfile1, 145),
+ markers=None,
+ parentid="./test_spam.py",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./test_spam.py::test_each", "test_each", "function"),
+ ("./test_spam.py", "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./test_spam.py::test_each[10-10]",
+ name="10-10",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=relfile1,
+ func="test_each",
+ sub=["[10-10]"],
+ ),
+ source="{}:{}".format(relfile1, 274),
+ markers=None,
+ parentid="./test_spam.py::test_each",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (
+ "./x/y/z/test_eggs.py::All::BasicTests",
+ "BasicTests",
+ "suite",
+ ),
+ ("./x/y/z/test_eggs.py::All", "All", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::All::BasicTests::test_first",
+ name="test_first",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile2),
+ func="All.BasicTests.test_first",
+ sub=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile2), 32),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::All::BasicTests",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (
+ "./x/y/z/test_eggs.py::All::BasicTests::test_each",
+ "test_each",
+ "function",
+ ),
+ (
+ "./x/y/z/test_eggs.py::All::BasicTests",
+ "BasicTests",
+ "suite",
+ ),
+ ("./x/y/z/test_eggs.py::All", "All", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::All::BasicTests::test_each[1+2-3]",
+ name="1+2-3",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile2),
+ func="All.BasicTests.test_each",
+ sub=["[1+2-3]"],
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile2), 63),
+ markers=["expected-failure", "skip", "skip-if"],
+ parentid="./x/y/z/test_eggs.py::All::BasicTests::test_each",
+ ),
+ ),
+ ),
+ ]
+ self.assertEqual(stub.calls, expected)
+
+ def test_finish(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(relfile, 12, "SpamTests.test_spam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.test_spam",
+ sub=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ def test_doctest(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ doctestfile = adapter_util.fix_path("x/test_doctest.txt")
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_doctest_item(
+ stub,
+ nodeid=doctestfile + "::test_doctest.txt",
+ name="test_doctest.txt",
+ location=(doctestfile, 0, "[doctest] test_doctest.txt"),
+ path=adapter_util.PATH_JOIN(testroot, doctestfile),
+ ),
+ # With --doctest-modules
+ create_stub_doctest_item(
+ stub,
+ nodeid=relfile + "::test_eggs",
+ name="test_eggs",
+ location=(relfile, 0, "[doctest] test_eggs"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ ),
+ create_stub_doctest_item(
+ stub,
+ nodeid=relfile + "::test_eggs.TestSpam",
+ name="test_eggs.TestSpam",
+ location=(relfile, 12, "[doctest] test_eggs.TestSpam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ ),
+ create_stub_doctest_item(
+ stub,
+ nodeid=relfile + "::test_eggs.TestSpam.TestEggs",
+ name="test_eggs.TestSpam.TestEggs",
+ location=(relfile, 27, "[doctest] test_eggs.TestSpam.TestEggs"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/test_doctest.txt", "test_doctest.txt", "file"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/test_doctest.txt::test_doctest.txt",
+ name="test_doctest.txt",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(doctestfile),
+ func=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(doctestfile), 1),
+ markers=[],
+ parentid="./x/test_doctest.txt",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::test_eggs",
+ name="test_eggs",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 1),
+ markers=[],
+ parentid="./x/y/z/test_eggs.py",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::test_eggs.TestSpam",
+ name="test_eggs.TestSpam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=[],
+ parentid="./x/y/z/test_eggs.py",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::test_eggs.TestSpam.TestEggs",
+ name="test_eggs.TestSpam.TestEggs",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 28),
+ markers=[],
+ parentid="./x/y/z/test_eggs.py",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ def test_nested_brackets(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests::test_spam[a-[b]-c]",
+ name="test_spam[a-[b]-c]",
+ originalname="test_spam",
+ location=(relfile, 12, "SpamTests.test_spam[a-[b]-c]"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (
+ "./x/y/z/test_eggs.py::SpamTests::test_spam",
+ "test_spam",
+ "function",
+ ),
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::test_spam[a-[b]-c]",
+ name="a-[b]-c",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.test_spam",
+ sub=["[a-[b]-c]"],
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests::test_spam",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ def test_nested_suite(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests::Ham::Eggs::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(relfile, 12, "SpamTests.Ham.Eggs.test_spam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (
+ "./x/y/z/test_eggs.py::SpamTests::Ham::Eggs",
+ "Eggs",
+ "suite",
+ ),
+ ("./x/y/z/test_eggs.py::SpamTests::Ham", "Ham", "suite"),
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::Ham::Eggs::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.Ham.Eggs.test_spam",
+ sub=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests::Ham::Eggs",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ @pytest.mark.skipif(sys.platform != "win32", reason="Windows specific test.")
+ def test_windows(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = r"C:\A\B\C"
+ relfile = r"X\Y\Z\test_Eggs.py"
+ session.items = [
+ # typical:
+ create_stub_function_item(
+ stub,
+ # pytest always uses "/" as the path separator in node IDs:
+ nodeid="X/Y/Z/test_Eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ originalname=None,
+ # normal path separator (contrast with nodeid):
+ location=(relfile, 12, "SpamTests.test_spam"),
+ # path separator matches location:
+ path=testroot + "\\" + relfile,
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ tests = [
+ # permutations of path separators
+ (r"X/test_a.py", "\\", "\\"), # typical
+ (r"X/test_b.py", "\\", "/"),
+ (r"X/test_c.py", "/", "\\"),
+ (r"X/test_d.py", "/", "/"),
+ (r"X\test_e.py", "\\", "\\"),
+ (r"X\test_f.py", "\\", "/"),
+ (r"X\test_g.py", "/", "\\"),
+ (r"X\test_h.py", "/", "/"),
+ ]
+ for fileid, locfile, fspath in tests:
+ if locfile == "/":
+ locfile = fileid.replace("\\", "/")
+ elif locfile == "\\":
+ locfile = fileid.replace("/", "\\")
+ if fspath == "/":
+ fspath = (testroot + "/" + fileid).replace("\\", "/")
+ elif fspath == "\\":
+ fspath = (testroot + "/" + fileid).replace("/", "\\")
+ session.items.append(
+ create_stub_function_item(
+ stub,
+ nodeid=fileid + "::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(locfile, 12, "test_spam"),
+ path=fspath,
+ function=FakeFunc("test_spam"),
+ )
+ )
+ collector = _discovery.TestCollector(tests=discovered)
+ if os.name != "nt":
+ collector.parse_item = generate_parse_item("\\")
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ expected = [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/Y/Z/test_Eggs.py::SpamTests", "SpamTests", "suite"),
+ (r"./X/Y/Z/test_Eggs.py", "test_Eggs.py", "file"),
+ (r"./X/Y/Z", "Z", "folder"),
+ (r"./X/Y", "Y", "folder"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/Y/Z/test_Eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot, # not normalized
+ relfile=r".\X\Y\Z\test_Eggs.py", # not normalized
+ func="SpamTests.test_spam",
+ sub=None,
+ ),
+ source=r".\X\Y\Z\test_Eggs.py:13", # not normalized
+ markers=None,
+ parentid=r"./X/Y/Z/test_Eggs.py::SpamTests",
+ ),
+ ),
+ ),
+ # permutations
+ # (*all* the IDs use "/")
+ # (source path separator should match relfile, not location)
+ # /, \, \
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_a.py", "test_a.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_a.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_a.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_a.py:13",
+ markers=None,
+ parentid=r"./X/test_a.py",
+ ),
+ ),
+ ),
+ # /, \, /
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_b.py", "test_b.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_b.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_b.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_b.py:13",
+ markers=None,
+ parentid=r"./X/test_b.py",
+ ),
+ ),
+ ),
+ # /, /, \
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_c.py", "test_c.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_c.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_c.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_c.py:13",
+ markers=None,
+ parentid=r"./X/test_c.py",
+ ),
+ ),
+ ),
+ # /, /, /
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_d.py", "test_d.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_d.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_d.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_d.py:13",
+ markers=None,
+ parentid=r"./X/test_d.py",
+ ),
+ ),
+ ),
+ # \, \, \
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_e.py", "test_e.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_e.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_e.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_e.py:13",
+ markers=None,
+ parentid=r"./X/test_e.py",
+ ),
+ ),
+ ),
+ # \, \, /
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_f.py", "test_f.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_f.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_f.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_f.py:13",
+ markers=None,
+ parentid=r"./X/test_f.py",
+ ),
+ ),
+ ),
+ # \, /, \
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_g.py", "test_g.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_g.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_g.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_g.py:13",
+ markers=None,
+ parentid=r"./X/test_g.py",
+ ),
+ ),
+ ),
+ # \, /, /
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ (r"./X/test_h.py", "test_h.py", "file"),
+ (r"./X", "X", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id=r"./X/test_h.py::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=r".\X\test_h.py",
+ func="test_spam",
+ sub=None,
+ ),
+ source=r".\X\test_h.py:13",
+ markers=None,
+ parentid=r"./X/test_h.py",
+ ),
+ ),
+ ),
+ ]
+ self.assertEqual(stub.calls, expected)
+
+ def test_mysterious_parens(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests::()::()::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(relfile, 12, "SpamTests.test_spam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.test_spam",
+ sub=[],
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ def test_mysterious_colons(self):
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests:::()::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(relfile, 12, "SpamTests.test_spam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.test_spam",
+ sub=[],
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(relfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests",
+ ),
+ ),
+ ),
+ ],
+ )
+
+ def test_imported_test(self):
+ # pytest will even discover tests that were imported from
+ # another module!
+ stub = util.Stub()
+ discovered = StubDiscoveredTests(stub)
+ session = StubPytestSession(stub)
+ testroot = adapter_util.ABS_PATH(adapter_util.fix_path("/a/b/c"))
+ relfile = adapter_util.fix_path("x/y/z/test_eggs.py")
+ srcfile = adapter_util.fix_path("x/y/z/_extern.py")
+ session.items = [
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::SpamTests::test_spam",
+ name="test_spam",
+ originalname=None,
+ location=(srcfile, 12, "SpamTests.test_spam"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ create_stub_function_item(
+ stub,
+ nodeid=relfile + "::test_ham",
+ name="test_ham",
+ originalname=None,
+ location=(srcfile, 3, "test_ham"),
+ path=adapter_util.PATH_JOIN(testroot, relfile),
+ function=FakeFunc("test_spam"),
+ ),
+ ]
+ collector = _discovery.TestCollector(tests=discovered)
+
+ collector.pytest_collection_finish(session)
+
+ self.maxDiff = None
+ self.assertEqual(
+ stub.calls,
+ [
+ ("discovered.reset", None, None),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py::SpamTests", "SpamTests", "suite"),
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::SpamTests::test_spam",
+ name="test_spam",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="SpamTests.test_spam",
+ sub=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(srcfile), 13),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py::SpamTests",
+ ),
+ ),
+ ),
+ (
+ "discovered.add_test",
+ None,
+ dict(
+ parents=[
+ ("./x/y/z/test_eggs.py", "test_eggs.py", "file"),
+ ("./x/y/z", "z", "folder"),
+ ("./x/y", "y", "folder"),
+ ("./x", "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ test=info.SingleTestInfo(
+ id="./x/y/z/test_eggs.py::test_ham",
+ name="test_ham",
+ path=info.SingleTestPath(
+ root=testroot,
+ relfile=adapter_util.fix_relpath(relfile),
+ func="test_ham",
+ sub=None,
+ ),
+ source="{}:{}".format(adapter_util.fix_relpath(srcfile), 4),
+ markers=None,
+ parentid="./x/y/z/test_eggs.py",
+ ),
+ ),
+ ),
+ ],
+ )
diff --git a/pythonFiles/tests/testing_tools/adapter/test___main__.py b/python_files/tests/testing_tools/adapter/test___main__.py
similarity index 94%
rename from pythonFiles/tests/testing_tools/adapter/test___main__.py
rename to python_files/tests/testing_tools/adapter/test___main__.py
index 53500a2f4afe..5ff0ec30c947 100644
--- a/pythonFiles/tests/testing_tools/adapter/test___main__.py
+++ b/python_files/tests/testing_tools/adapter/test___main__.py
@@ -3,14 +3,15 @@
import unittest
-from ...util import Stub, StubProxy
from testing_tools.adapter.__main__ import (
- parse_args,
- main,
- UnsupportedToolError,
UnsupportedCommandError,
+ UnsupportedToolError,
+ main,
+ parse_args,
)
+from ...util import Stub, StubProxy
+
class StubTool(StubProxy):
def __init__(self, name, stub=None):
@@ -110,14 +111,11 @@ def test_pytest_opts(self):
def test_unsupported_tool(self):
with self.assertRaises(SystemExit):
parse_args(["discover", "unittest"])
- with self.assertRaises(SystemExit):
- parse_args(["discover", "nose"])
with self.assertRaises(SystemExit):
parse_args(["discover", "???"])
class MainTests(unittest.TestCase):
-
# TODO: We could use an integration test for pytest.discover().
def test_discover(self):
@@ -159,15 +157,6 @@ def test_unsupported_tool(self):
_tools={"pytest": None},
_reporters=None,
)
- with self.assertRaises(UnsupportedToolError):
- main(
- "nose",
- "discover",
- {"spam": "eggs"},
- [],
- _tools={"pytest": None},
- _reporters=None,
- )
with self.assertRaises(UnsupportedToolError):
main(
"???",
diff --git a/python_files/tests/testing_tools/adapter/test_discovery.py b/python_files/tests/testing_tools/adapter/test_discovery.py
new file mode 100644
index 000000000000..2fe4db7caa37
--- /dev/null
+++ b/python_files/tests/testing_tools/adapter/test_discovery.py
@@ -0,0 +1,672 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from __future__ import absolute_import, print_function
+
+import unittest
+
+from testing_tools.adapter.discovery import DiscoveredTests
+from testing_tools.adapter.info import ParentInfo, SingleTestInfo, SingleTestPath
+from testing_tools.adapter.util import fix_path, fix_relpath
+
+
+def _fix_nodeid(nodeid):
+ nodeid = nodeid.replace("\\", "/")
+ if not nodeid.startswith("./"):
+ nodeid = "./" + nodeid
+ return nodeid
+
+
+class DiscoveredTestsTests(unittest.TestCase):
+ def test_list(self):
+ testroot = fix_path("/a/b/c")
+ relfile = fix_path("./test_spam.py")
+ tests = [
+ SingleTestInfo(
+ # missing "./":
+ id="test_spam.py::test_each[10-10]",
+ name="test_each[10-10]",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func="test_each",
+ sub=["[10-10]"],
+ ),
+ source="{}:{}".format(relfile, 10),
+ markers=None,
+ # missing "./":
+ parentid="test_spam.py::test_each",
+ ),
+ SingleTestInfo(
+ id="test_spam.py::All::BasicTests::test_first",
+ name="test_first",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func="All.BasicTests.test_first",
+ sub=None,
+ ),
+ source="{}:{}".format(relfile, 62),
+ markers=None,
+ parentid="test_spam.py::All::BasicTests",
+ ),
+ ]
+ allparents = [
+ [
+ (fix_path("./test_spam.py::test_each"), "test_each", "function"),
+ (fix_path("./test_spam.py"), "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ [
+ (fix_path("./test_spam.py::All::BasicTests"), "BasicTests", "suite"),
+ (fix_path("./test_spam.py::All"), "All", "suite"),
+ (fix_path("./test_spam.py"), "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ ]
+ expected = [
+ test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
+ for test in tests
+ ]
+ discovered = DiscoveredTests()
+ for test, parents in zip(tests, allparents):
+ discovered.add_test(test, parents)
+ size = len(discovered)
+ items = [discovered[0], discovered[1]]
+ snapshot = list(discovered)
+
+ self.maxDiff = None
+ self.assertEqual(size, 2)
+ self.assertEqual(items, expected)
+ self.assertEqual(snapshot, expected)
+
+ def test_reset(self):
+ testroot = fix_path("/a/b/c")
+ discovered = DiscoveredTests()
+ discovered.add_test(
+ SingleTestInfo(
+ id="./test_spam.py::test_each",
+ name="test_each",
+ path=SingleTestPath(
+ root=testroot,
+ relfile="test_spam.py",
+ func="test_each",
+ ),
+ source="test_spam.py:11",
+ markers=[],
+ parentid="./test_spam.py",
+ ),
+ [
+ ("./test_spam.py", "test_spam.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ )
+
+ before = len(discovered), len(discovered.parents)
+ discovered.reset()
+ after = len(discovered), len(discovered.parents)
+
+ self.assertEqual(before, (1, 2))
+ self.assertEqual(after, (0, 0))
+
+ def test_parents(self):
+ testroot = fix_path("/a/b/c")
+ relfile = fix_path("x/y/z/test_spam.py")
+ tests = [
+ SingleTestInfo(
+ # missing "./", using pathsep:
+ id=relfile + "::test_each[10-10]",
+ name="test_each[10-10]",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=fix_relpath(relfile),
+ func="test_each",
+ sub=["[10-10]"],
+ ),
+ source="{}:{}".format(relfile, 10),
+ markers=None,
+ # missing "./", using pathsep:
+ parentid=relfile + "::test_each",
+ ),
+ SingleTestInfo(
+ # missing "./", using pathsep:
+ id=relfile + "::All::BasicTests::test_first",
+ name="test_first",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=fix_relpath(relfile),
+ func="All.BasicTests.test_first",
+ sub=None,
+ ),
+ source="{}:{}".format(relfile, 61),
+ markers=None,
+ # missing "./", using pathsep:
+ parentid=relfile + "::All::BasicTests",
+ ),
+ ]
+ allparents = [
+ # missing "./", using pathsep:
+ [
+ (relfile + "::test_each", "test_each", "function"),
+ (relfile, relfile, "file"),
+ (".", testroot, "folder"),
+ ],
+ # missing "./", using pathsep:
+ [
+ (relfile + "::All::BasicTests", "BasicTests", "suite"),
+ (relfile + "::All", "All", "suite"),
+ (relfile, "test_spam.py", "file"),
+ (fix_path("x/y/z"), "z", "folder"),
+ (fix_path("x/y"), "y", "folder"),
+ (fix_path("./x"), "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ ]
+ discovered = DiscoveredTests()
+ for test, parents in zip(tests, allparents):
+ discovered.add_test(test, parents)
+
+ parents = discovered.parents
+
+ self.maxDiff = None
+ self.assertEqual(
+ parents,
+ [
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot,
+ ),
+ ParentInfo(
+ id="./x",
+ kind="folder",
+ name="x",
+ root=testroot,
+ relpath=fix_path("./x"),
+ parentid=".",
+ ),
+ ParentInfo(
+ id="./x/y",
+ kind="folder",
+ name="y",
+ root=testroot,
+ relpath=fix_path("./x/y"),
+ parentid="./x",
+ ),
+ ParentInfo(
+ id="./x/y/z",
+ kind="folder",
+ name="z",
+ root=testroot,
+ relpath=fix_path("./x/y/z"),
+ parentid="./x/y",
+ ),
+ ParentInfo(
+ id="./x/y/z/test_spam.py",
+ kind="file",
+ name="test_spam.py",
+ root=testroot,
+ relpath=fix_relpath(relfile),
+ parentid="./x/y/z",
+ ),
+ ParentInfo(
+ id="./x/y/z/test_spam.py::All",
+ kind="suite",
+ name="All",
+ root=testroot,
+ parentid="./x/y/z/test_spam.py",
+ ),
+ ParentInfo(
+ id="./x/y/z/test_spam.py::All::BasicTests",
+ kind="suite",
+ name="BasicTests",
+ root=testroot,
+ parentid="./x/y/z/test_spam.py::All",
+ ),
+ ParentInfo(
+ id="./x/y/z/test_spam.py::test_each",
+ kind="function",
+ name="test_each",
+ root=testroot,
+ parentid="./x/y/z/test_spam.py",
+ ),
+ ],
+ )
+
+ def test_add_test_simple(self):
+ testroot = fix_path("/a/b/c")
+ relfile = "test_spam.py"
+ test = SingleTestInfo(
+ # missing "./":
+ id=relfile + "::test_spam",
+ name="test_spam",
+ path=SingleTestPath(
+ root=testroot,
+ # missing "./":
+ relfile=relfile,
+ func="test_spam",
+ ),
+ # missing "./":
+ source="{}:{}".format(relfile, 11),
+ markers=[],
+ # missing "./":
+ parentid=relfile,
+ )
+ expected = test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
+ discovered = DiscoveredTests()
+
+ before = list(discovered), discovered.parents
+ discovered.add_test(
+ test,
+ [
+ (relfile, relfile, "file"),
+ (".", testroot, "folder"),
+ ],
+ )
+ after = list(discovered), discovered.parents
+
+ self.maxDiff = None
+ self.assertEqual(before, ([], []))
+ self.assertEqual(
+ after,
+ (
+ [expected],
+ [
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot,
+ ),
+ ParentInfo(
+ id="./test_spam.py",
+ kind="file",
+ name=relfile,
+ root=testroot,
+ relpath=relfile,
+ parentid=".",
+ ),
+ ],
+ ),
+ )
+
+ def test_multiroot(self):
+ # the first root
+ testroot1 = fix_path("/a/b/c")
+ relfile1 = "test_spam.py"
+ alltests = [
+ SingleTestInfo(
+ # missing "./":
+ id=relfile1 + "::test_spam",
+ name="test_spam",
+ path=SingleTestPath(
+ root=testroot1,
+ relfile=fix_relpath(relfile1),
+ func="test_spam",
+ ),
+ source="{}:{}".format(relfile1, 10),
+ markers=[],
+ # missing "./":
+ parentid=relfile1,
+ ),
+ ]
+ allparents = [
+ # missing "./":
+ [
+ (relfile1, "test_spam.py", "file"),
+ (".", testroot1, "folder"),
+ ],
+ ]
+ # the second root
+ testroot2 = fix_path("/x/y/z")
+ relfile2 = fix_path("w/test_eggs.py")
+ alltests.extend(
+ [
+ SingleTestInfo(
+ id=relfile2 + "::BasicTests::test_first",
+ name="test_first",
+ path=SingleTestPath(
+ root=testroot2,
+ relfile=fix_relpath(relfile2),
+ func="BasicTests.test_first",
+ ),
+ source="{}:{}".format(relfile2, 61),
+ markers=[],
+ parentid=relfile2 + "::BasicTests",
+ ),
+ ]
+ )
+ allparents.extend(
+ [
+ # missing "./", using pathsep:
+ [
+ (relfile2 + "::BasicTests", "BasicTests", "suite"),
+ (relfile2, "test_eggs.py", "file"),
+ (fix_path("./w"), "w", "folder"),
+ (".", testroot2, "folder"),
+ ],
+ ]
+ )
+
+ discovered = DiscoveredTests()
+ for test, parents in zip(alltests, allparents):
+ discovered.add_test(test, parents)
+ tests = list(discovered)
+ parents = discovered.parents
+
+ self.maxDiff = None
+ self.assertEqual(
+ tests,
+ [
+ # the first root
+ SingleTestInfo(
+ id="./test_spam.py::test_spam",
+ name="test_spam",
+ path=SingleTestPath(
+ root=testroot1,
+ relfile=fix_relpath(relfile1),
+ func="test_spam",
+ ),
+ source="{}:{}".format(relfile1, 10),
+ markers=[],
+ parentid="./test_spam.py",
+ ),
+ # the secondroot
+ SingleTestInfo(
+ id="./w/test_eggs.py::BasicTests::test_first",
+ name="test_first",
+ path=SingleTestPath(
+ root=testroot2,
+ relfile=fix_relpath(relfile2),
+ func="BasicTests.test_first",
+ ),
+ source="{}:{}".format(relfile2, 61),
+ markers=[],
+ parentid="./w/test_eggs.py::BasicTests",
+ ),
+ ],
+ )
+ self.assertEqual(
+ parents,
+ [
+ # the first root
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot1,
+ ),
+ ParentInfo(
+ id="./test_spam.py",
+ kind="file",
+ name="test_spam.py",
+ root=testroot1,
+ relpath=fix_relpath(relfile1),
+ parentid=".",
+ ),
+ # the secondroot
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot2,
+ ),
+ ParentInfo(
+ id="./w",
+ kind="folder",
+ name="w",
+ root=testroot2,
+ relpath=fix_path("./w"),
+ parentid=".",
+ ),
+ ParentInfo(
+ id="./w/test_eggs.py",
+ kind="file",
+ name="test_eggs.py",
+ root=testroot2,
+ relpath=fix_relpath(relfile2),
+ parentid="./w",
+ ),
+ ParentInfo(
+ id="./w/test_eggs.py::BasicTests",
+ kind="suite",
+ name="BasicTests",
+ root=testroot2,
+ parentid="./w/test_eggs.py",
+ ),
+ ],
+ )
+
+ def test_doctest(self):
+ testroot = fix_path("/a/b/c")
+ doctestfile = fix_path("./x/test_doctest.txt")
+ relfile = fix_path("./x/y/z/test_eggs.py")
+ alltests = [
+ SingleTestInfo(
+ id=doctestfile + "::test_doctest.txt",
+ name="test_doctest.txt",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=doctestfile,
+ func=None,
+ ),
+ source="{}:{}".format(doctestfile, 0),
+ markers=[],
+ parentid=doctestfile,
+ ),
+ # With --doctest-modules
+ SingleTestInfo(
+ id=relfile + "::test_eggs",
+ name="test_eggs",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func=None,
+ ),
+ source="{}:{}".format(relfile, 0),
+ markers=[],
+ parentid=relfile,
+ ),
+ SingleTestInfo(
+ id=relfile + "::test_eggs.TestSpam",
+ name="test_eggs.TestSpam",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func=None,
+ ),
+ source="{}:{}".format(relfile, 12),
+ markers=[],
+ parentid=relfile,
+ ),
+ SingleTestInfo(
+ id=relfile + "::test_eggs.TestSpam.TestEggs",
+ name="test_eggs.TestSpam.TestEggs",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func=None,
+ ),
+ source="{}:{}".format(relfile, 27),
+ markers=[],
+ parentid=relfile,
+ ),
+ ]
+ allparents = [
+ [
+ (doctestfile, "test_doctest.txt", "file"),
+ (fix_path("./x"), "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ [
+ (relfile, "test_eggs.py", "file"),
+ (fix_path("./x/y/z"), "z", "folder"),
+ (fix_path("./x/y"), "y", "folder"),
+ (fix_path("./x"), "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ [
+ (relfile, "test_eggs.py", "file"),
+ (fix_path("./x/y/z"), "z", "folder"),
+ (fix_path("./x/y"), "y", "folder"),
+ (fix_path("./x"), "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ [
+ (relfile, "test_eggs.py", "file"),
+ (fix_path("./x/y/z"), "z", "folder"),
+ (fix_path("./x/y"), "y", "folder"),
+ (fix_path("./x"), "x", "folder"),
+ (".", testroot, "folder"),
+ ],
+ ]
+ expected = [
+ test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
+ for test in alltests
+ ]
+
+ discovered = DiscoveredTests()
+
+ for test, parents in zip(alltests, allparents):
+ discovered.add_test(test, parents)
+ tests = list(discovered)
+ parents = discovered.parents
+
+ self.maxDiff = None
+ self.assertEqual(tests, expected)
+ self.assertEqual(
+ parents,
+ [
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot,
+ ),
+ ParentInfo(
+ id="./x",
+ kind="folder",
+ name="x",
+ root=testroot,
+ relpath=fix_path("./x"),
+ parentid=".",
+ ),
+ ParentInfo(
+ id="./x/test_doctest.txt",
+ kind="file",
+ name="test_doctest.txt",
+ root=testroot,
+ relpath=fix_path(doctestfile),
+ parentid="./x",
+ ),
+ ParentInfo(
+ id="./x/y",
+ kind="folder",
+ name="y",
+ root=testroot,
+ relpath=fix_path("./x/y"),
+ parentid="./x",
+ ),
+ ParentInfo(
+ id="./x/y/z",
+ kind="folder",
+ name="z",
+ root=testroot,
+ relpath=fix_path("./x/y/z"),
+ parentid="./x/y",
+ ),
+ ParentInfo(
+ id="./x/y/z/test_eggs.py",
+ kind="file",
+ name="test_eggs.py",
+ root=testroot,
+ relpath=fix_relpath(relfile),
+ parentid="./x/y/z",
+ ),
+ ],
+ )
+
+ def test_nested_suite_simple(self):
+ testroot = fix_path("/a/b/c")
+ relfile = fix_path("./test_eggs.py")
+ alltests = [
+ SingleTestInfo(
+ id=relfile + "::TestOuter::TestInner::test_spam",
+ name="test_spam",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func="TestOuter.TestInner.test_spam",
+ ),
+ source="{}:{}".format(relfile, 10),
+ markers=None,
+ parentid=relfile + "::TestOuter::TestInner",
+ ),
+ SingleTestInfo(
+ id=relfile + "::TestOuter::TestInner::test_eggs",
+ name="test_eggs",
+ path=SingleTestPath(
+ root=testroot,
+ relfile=relfile,
+ func="TestOuter.TestInner.test_eggs",
+ ),
+ source="{}:{}".format(relfile, 21),
+ markers=None,
+ parentid=relfile + "::TestOuter::TestInner",
+ ),
+ ]
+ allparents = [
+ [
+ (relfile + "::TestOuter::TestInner", "TestInner", "suite"),
+ (relfile + "::TestOuter", "TestOuter", "suite"),
+ (relfile, "test_eggs.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ [
+ (relfile + "::TestOuter::TestInner", "TestInner", "suite"),
+ (relfile + "::TestOuter", "TestOuter", "suite"),
+ (relfile, "test_eggs.py", "file"),
+ (".", testroot, "folder"),
+ ],
+ ]
+ expected = [
+ test._replace(id=_fix_nodeid(test.id), parentid=_fix_nodeid(test.parentid))
+ for test in alltests
+ ]
+
+ discovered = DiscoveredTests()
+ for test, parents in zip(alltests, allparents):
+ discovered.add_test(test, parents)
+ tests = list(discovered)
+ parents = discovered.parents
+
+ self.maxDiff = None
+ self.assertEqual(tests, expected)
+ self.assertEqual(
+ parents,
+ [
+ ParentInfo(
+ id=".",
+ kind="folder",
+ name=testroot,
+ ),
+ ParentInfo(
+ id="./test_eggs.py",
+ kind="file",
+ name="test_eggs.py",
+ root=testroot,
+ relpath=fix_relpath(relfile),
+ parentid=".",
+ ),
+ ParentInfo(
+ id="./test_eggs.py::TestOuter",
+ kind="suite",
+ name="TestOuter",
+ root=testroot,
+ parentid="./test_eggs.py",
+ ),
+ ParentInfo(
+ id="./test_eggs.py::TestOuter::TestInner",
+ kind="suite",
+ name="TestInner",
+ root=testroot,
+ parentid="./test_eggs.py::TestOuter",
+ ),
+ ],
+ )
diff --git a/pythonFiles/tests/testing_tools/adapter/test_functional.py b/python_files/tests/testing_tools/adapter/test_functional.py
similarity index 95%
rename from pythonFiles/tests/testing_tools/adapter/test_functional.py
rename to python_files/tests/testing_tools/adapter/test_functional.py
index 153ad5508d9b..45c85ee951dc 100644
--- a/pythonFiles/tests/testing_tools/adapter/test_functional.py
+++ b/python_files/tests/testing_tools/adapter/test_functional.py
@@ -10,8 +10,9 @@
import sys
import unittest
+from testing_tools.adapter.util import PATH_SEP, fix_path
+
from ...__main__ import TESTING_TOOLS_ROOT
-from testing_tools.adapter.util import fix_path, PATH_SEP
# Pytest 3.7 and later uses pathlib/pathlib2 for path resolution.
try:
@@ -47,9 +48,7 @@ def _run_adapter(cmd, tool, *cliargs, **kwargs):
argv.insert(4, "--no-hide-stdio")
kwds["stderr"] = subprocess.STDOUT
argv.append("--cache-clear")
- print(
- "running {!r}".format(" ".join(arg.rpartition(CWD + "/")[-1] for arg in argv))
- )
+ print("running {!r}".format(" ".join(arg.rpartition(CWD + "/")[-1] for arg in argv)))
output = subprocess.check_output(argv, universal_newlines=True, **kwds)
return output
@@ -944,224 +943,224 @@ def test_discover_normcase(self):
},
{
"id": "./tests/test_pytest.py::test_param_01[]",
- "name": "test_param_01[]",
+ "name": "",
"source": fix_path("./tests/test_pytest.py:103"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_01",
},
{
"id": "./tests/test_pytest.py::test_param_11[x0]",
- "name": "test_param_11[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:108"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_11",
},
{
"id": "./tests/test_pytest.py::test_param_13[x0]",
- "name": "test_param_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:113"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13",
},
{
"id": "./tests/test_pytest.py::test_param_13[x1]",
- "name": "test_param_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:113"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13",
},
{
"id": "./tests/test_pytest.py::test_param_13[x2]",
- "name": "test_param_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:113"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13",
},
{
"id": "./tests/test_pytest.py::test_param_13_repeat[x0]",
- "name": "test_param_13_repeat[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:118"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13_repeat",
},
{
"id": "./tests/test_pytest.py::test_param_13_repeat[x1]",
- "name": "test_param_13_repeat[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:118"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13_repeat",
},
{
"id": "./tests/test_pytest.py::test_param_13_repeat[x2]",
- "name": "test_param_13_repeat[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:118"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13_repeat",
},
{
"id": "./tests/test_pytest.py::test_param_33[1-1-1]",
- "name": "test_param_33[1-1-1]",
+ "name": "1-1-1",
"source": fix_path("./tests/test_pytest.py:123"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33",
},
{
"id": "./tests/test_pytest.py::test_param_33[3-4-5]",
- "name": "test_param_33[3-4-5]",
+ "name": "3-4-5",
"source": fix_path("./tests/test_pytest.py:123"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33",
},
{
"id": "./tests/test_pytest.py::test_param_33[0-0-0]",
- "name": "test_param_33[0-0-0]",
+ "name": "0-0-0",
"source": fix_path("./tests/test_pytest.py:123"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33",
},
{
"id": "./tests/test_pytest.py::test_param_33_ids[v1]",
- "name": "test_param_33_ids[v1]",
+ "name": "v1",
"source": fix_path("./tests/test_pytest.py:128"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33_ids",
},
{
"id": "./tests/test_pytest.py::test_param_33_ids[v2]",
- "name": "test_param_33_ids[v2]",
+ "name": "v2",
"source": fix_path("./tests/test_pytest.py:128"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33_ids",
},
{
"id": "./tests/test_pytest.py::test_param_33_ids[v3]",
- "name": "test_param_33_ids[v3]",
+ "name": "v3",
"source": fix_path("./tests/test_pytest.py:128"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_33_ids",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[1-1-z0]",
- "name": "test_param_23_13[1-1-z0]",
+ "name": "1-1-z0",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[1-1-z1]",
- "name": "test_param_23_13[1-1-z1]",
+ "name": "1-1-z1",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[1-1-z2]",
- "name": "test_param_23_13[1-1-z2]",
+ "name": "1-1-z2",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[3-4-z0]",
- "name": "test_param_23_13[3-4-z0]",
+ "name": "3-4-z0",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[3-4-z1]",
- "name": "test_param_23_13[3-4-z1]",
+ "name": "3-4-z1",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[3-4-z2]",
- "name": "test_param_23_13[3-4-z2]",
+ "name": "3-4-z2",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[0-0-z0]",
- "name": "test_param_23_13[0-0-z0]",
+ "name": "0-0-z0",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[0-0-z1]",
- "name": "test_param_23_13[0-0-z1]",
+ "name": "0-0-z1",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_23_13[0-0-z2]",
- "name": "test_param_23_13[0-0-z2]",
+ "name": "0-0-z2",
"source": fix_path("./tests/test_pytest.py:134"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_13",
},
{
"id": "./tests/test_pytest.py::test_param_13_markers[x0]",
- "name": "test_param_13_markers[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:140"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_13_markers",
},
{
"id": "./tests/test_pytest.py::test_param_13_markers[???]",
- "name": "test_param_13_markers[???]",
+ "name": "???",
"source": fix_path("./tests/test_pytest.py:140"),
"markers": ["skip"],
"parentid": "./tests/test_pytest.py::test_param_13_markers",
},
{
"id": "./tests/test_pytest.py::test_param_13_markers[2]",
- "name": "test_param_13_markers[2]",
+ "name": "2",
"source": fix_path("./tests/test_pytest.py:140"),
"markers": ["expected-failure"],
"parentid": "./tests/test_pytest.py::test_param_13_markers",
},
{
"id": "./tests/test_pytest.py::test_param_13_skipped[x0]",
- "name": "test_param_13_skipped[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:149"),
"markers": ["skip"],
"parentid": "./tests/test_pytest.py::test_param_13_skipped",
},
{
"id": "./tests/test_pytest.py::test_param_13_skipped[x1]",
- "name": "test_param_13_skipped[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:149"),
"markers": ["skip"],
"parentid": "./tests/test_pytest.py::test_param_13_skipped",
},
{
"id": "./tests/test_pytest.py::test_param_13_skipped[x2]",
- "name": "test_param_13_skipped[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:149"),
"markers": ["skip"],
"parentid": "./tests/test_pytest.py::test_param_13_skipped",
},
{
"id": "./tests/test_pytest.py::test_param_23_raises[1-None]",
- "name": "test_param_23_raises[1-None]",
+ "name": "1-None",
"source": fix_path("./tests/test_pytest.py:155"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_raises",
},
{
"id": "./tests/test_pytest.py::test_param_23_raises[1.0-None]",
- "name": "test_param_23_raises[1.0-None]",
+ "name": "1.0-None",
"source": fix_path("./tests/test_pytest.py:155"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_raises",
},
{
"id": "./tests/test_pytest.py::test_param_23_raises[2-catch2]",
- "name": "test_param_23_raises[2-catch2]",
+ "name": "2-catch2",
"source": fix_path("./tests/test_pytest.py:155"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_23_raises",
@@ -1175,63 +1174,63 @@ def test_discover_normcase(self):
},
{
"id": "./tests/test_pytest.py::TestParam::test_param_13[x0]",
- "name": "test_param_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:167"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParam::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParam::test_param_13[x1]",
- "name": "test_param_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:167"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParam::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParam::test_param_13[x2]",
- "name": "test_param_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:167"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParam::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_param_13[x0]",
- "name": "test_param_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:175"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_param_13[x1]",
- "name": "test_param_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:175"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_param_13[x2]",
- "name": "test_param_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:175"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_spam_13[x0]",
- "name": "test_spam_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:178"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_spam_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_spam_13[x1]",
- "name": "test_spam_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:178"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_spam_13",
},
{
"id": "./tests/test_pytest.py::TestParamAll::test_spam_13[x2]",
- "name": "test_spam_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:178"),
"markers": [],
"parentid": "./tests/test_pytest.py::TestParamAll::test_spam_13",
@@ -1252,56 +1251,56 @@ def test_discover_normcase(self):
},
{
"id": "./tests/test_pytest.py::test_param_fixture[x0]",
- "name": "test_param_fixture[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:201"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_fixture",
},
{
"id": "./tests/test_pytest.py::test_param_fixture[x1]",
- "name": "test_param_fixture[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:201"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_fixture",
},
{
"id": "./tests/test_pytest.py::test_param_fixture[x2]",
- "name": "test_param_fixture[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest.py:201"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_fixture",
},
{
- "id": "./tests/test_pytest.py::test_param_mark_fixture[x0]",
- "name": "test_param_mark_fixture[x0]",
+ "id": "./tests/test_pytest.py::test_param_mark_fixture[(1+0j)]",
+ "name": "(1+0j)",
"source": fix_path("./tests/test_pytest.py:207"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_mark_fixture",
},
{
- "id": "./tests/test_pytest.py::test_param_mark_fixture[x1]",
- "name": "test_param_mark_fixture[x1]",
+ "id": "./tests/test_pytest.py::test_param_mark_fixture[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest.py:207"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_mark_fixture",
},
{
- "id": "./tests/test_pytest.py::test_param_mark_fixture[x2]",
- "name": "test_param_mark_fixture[x2]",
+ "id": "./tests/test_pytest.py::test_param_mark_fixture[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest.py:207"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_param_mark_fixture",
},
{
"id": "./tests/test_pytest.py::test_fixture_param[spam]",
- "name": "test_fixture_param[spam]",
+ "name": "spam",
"source": fix_path("./tests/test_pytest.py:216"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_fixture_param",
},
{
"id": "./tests/test_pytest.py::test_fixture_param[eggs]",
- "name": "test_fixture_param[eggs]",
+ "name": "eggs",
"source": fix_path("./tests/test_pytest.py:216"),
"markers": [],
"parentid": "./tests/test_pytest.py::test_fixture_param",
@@ -1309,63 +1308,63 @@ def test_discover_normcase(self):
######
{
"id": "./tests/test_pytest_param.py::test_param_13[x0]",
- "name": "test_param_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest_param.py:8"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::test_param_13[x1]",
- "name": "test_param_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest_param.py:8"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::test_param_13[x2]",
- "name": "test_param_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest_param.py:8"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_param_13[x0]",
- "name": "test_param_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest_param.py:14"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_param_13[x1]",
- "name": "test_param_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest_param.py:14"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_param_13[x2]",
- "name": "test_param_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest_param.py:14"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_param_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_spam_13[x0]",
- "name": "test_spam_13[x0]",
+ "name": "x0",
"source": fix_path("./tests/test_pytest_param.py:17"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_spam_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_spam_13[x1]",
- "name": "test_spam_13[x1]",
+ "name": "x1",
"source": fix_path("./tests/test_pytest_param.py:17"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_spam_13",
},
{
"id": "./tests/test_pytest_param.py::TestParamAll::test_spam_13[x2]",
- "name": "test_spam_13[x2]",
+ "name": "x2",
"source": fix_path("./tests/test_pytest_param.py:17"),
"markers": [],
"parentid": "./tests/test_pytest_param.py::TestParamAll::test_spam_13",
diff --git a/pythonFiles/tests/testing_tools/adapter/test_report.py b/python_files/tests/testing_tools/adapter/test_report.py
similarity index 100%
rename from pythonFiles/tests/testing_tools/adapter/test_report.py
rename to python_files/tests/testing_tools/adapter/test_report.py
diff --git a/pythonFiles/tests/testing_tools/adapter/test_util.py b/python_files/tests/testing_tools/adapter/test_util.py
similarity index 98%
rename from pythonFiles/tests/testing_tools/adapter/test_util.py
rename to python_files/tests/testing_tools/adapter/test_util.py
index 822ba2ed1b22..8a7cd475a1c7 100644
--- a/pythonFiles/tests/testing_tools/adapter/test_util.py
+++ b/python_files/tests/testing_tools/adapter/test_util.py
@@ -11,7 +11,6 @@
import sys
import unittest
-import pytest
# Pytest 3.7 and later uses pathlib/pathlib2 for path resolution.
try:
@@ -260,9 +259,7 @@ def test_fix_fileid(self):
)
for fileid, rootdir, _os_path, expected in tests:
pathsep = _os_path.sep
- with self.subTest(
- r"for {} (with rootdir {!r}): {!r}".format(pathsep, rootdir, fileid)
- ):
+ with self.subTest(r"for {} (with rootdir {!r}): {!r}".format(pathsep, rootdir, fileid)):
fixed = fix_fileid(
fileid,
rootdir,
diff --git a/python_files/tests/tree_comparison_helper.py b/python_files/tests/tree_comparison_helper.py
new file mode 100644
index 000000000000..3d9d1d39194b
--- /dev/null
+++ b/python_files/tests/tree_comparison_helper.py
@@ -0,0 +1,39 @@
+def is_same_tree(tree1, tree2, test_key_arr, path="root") -> bool:
+ """Helper function to test if two test trees are the same with detailed error logs.
+
+ `is_same_tree` starts by comparing the root attributes, and then checks if all children are the same.
+ """
+ # Compare the root.
+ for key in ["path", "name", "type_", "id_"]:
+ if tree1.get(key) != tree2.get(key):
+ print(
+ f"Difference found at {path}: '{key}' is '{tree1.get(key)}' in tree1 and '{tree2.get(key)}' in tree2."
+ )
+ return False
+
+ # Compare child test nodes if they exist, otherwise compare test items.
+ if "children" in tree1 and "children" in tree2:
+ # Sort children by path before comparing since order doesn't matter of children
+ children1 = sorted(tree1["children"], key=lambda x: x["path"])
+ children2 = sorted(tree2["children"], key=lambda x: x["path"])
+
+ # Compare test nodes.
+ if len(children1) != len(children2):
+ print(
+ f"Difference in number of children at {path}: {len(children1)} in tree1 and {len(children2)} in tree2."
+ )
+ return False
+ else:
+ for i, (child1, child2) in enumerate(zip(children1, children2)):
+ if not is_same_tree(child1, child2, test_key_arr, path=f"{path} -> child {i}"):
+ return False
+ elif "id_" in tree1 and "id_" in tree2:
+ # Compare test items.
+ for key in test_key_arr:
+ if tree1.get(key) != tree2.get(key):
+ print(
+ f"Difference found at {path}: '{key}' is '{tree1.get(key)}' in tree1 and '{tree2.get(key)}' in tree2."
+ )
+ return False
+
+ return True
diff --git a/python_files/tests/unittestadapter/.data/discovery_empty.py b/python_files/tests/unittestadapter/.data/discovery_empty.py
new file mode 100644
index 000000000000..9af5071303ce
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/discovery_empty.py
@@ -0,0 +1,15 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class DiscoveryEmpty(unittest.TestCase):
+ """Test class for the test_empty_discovery test.
+
+ The discover_tests function should return a dictionary with a "success" status, no errors, and no test tree
+ if unittest discovery was performed successfully but no tests were found.
+ """
+
+ def something(self) -> bool:
+ return True
diff --git a/python_files/tests/unittestadapter/.data/discovery_error/file_one.py b/python_files/tests/unittestadapter/.data/discovery_error/file_one.py
new file mode 100644
index 000000000000..031b6f6c9d68
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/discovery_error/file_one.py
@@ -0,0 +1,20 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+import something_else # type: ignore # noqa: F401
+
+
+class DiscoveryErrorOne(unittest.TestCase):
+ """Test class for the test_error_discovery test.
+
+ The discover_tests function should return a dictionary with an "error" status, the discovered tests, and a list of errors
+ if unittest discovery failed at some point.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/discovery_error/file_two.py b/python_files/tests/unittestadapter/.data/discovery_error/file_two.py
new file mode 100644
index 000000000000..5d6d54f886a1
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/discovery_error/file_two.py
@@ -0,0 +1,18 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class DiscoveryErrorTwo(unittest.TestCase):
+ """Test class for the test_error_discovery test.
+
+ The discover_tests function should return a dictionary with an "error" status, the discovered tests, and a list of errors
+ if unittest discovery failed at some point.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/discovery_simple.py b/python_files/tests/unittestadapter/.data/discovery_simple.py
new file mode 100644
index 000000000000..1859436d5b5b
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/discovery_simple.py
@@ -0,0 +1,18 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class DiscoverySimple(unittest.TestCase):
+ """Test class for the test_simple_discovery test.
+
+ The discover_tests function should return a dictionary with a "success" status, no errors, and a test tree
+ if unittest discovery was performed successfully.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/test_fail_simple.py b/python_files/tests/unittestadapter/.data/test_fail_simple.py
new file mode 100644
index 000000000000..e329c3fd7003
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/test_fail_simple.py
@@ -0,0 +1,21 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+# Test class for the test_fail_simple test.
+# The test_failed_tests function should return a dictionary with a "success" status
+# and the two tests with their outcome as "failed".
+
+class RunFailSimple(unittest.TestCase):
+ """Test class for the test_fail_simple test.
+
+ The test_failed_tests function should return a dictionary with a "success" status
+ and the two tests with their outcome as "failed".
+ """
+
+ def test_one_fail(self) -> None:
+ self.assertGreater(2, 3)
+
+ def test_two_fail(self) -> None:
+ self.assertNotEqual(1, 1)
diff --git a/python_files/tests/unittestadapter/.data/test_scenarios/tests/__init__.py b/python_files/tests/unittestadapter/.data/test_scenarios/tests/__init__.py
new file mode 100644
index 000000000000..6b8fbbc579ab
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/test_scenarios/tests/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+
+import testresources
+from testscenarios import generate_scenarios
+
+def load_tests(loader, tests, pattern):
+ this_dir = os.path.dirname(__file__)
+ mytests = loader.discover(start_dir=this_dir, pattern=pattern)
+ result = testresources.OptimisingTestSuite()
+ result.addTests(generate_scenarios(mytests))
+ result.addTests(generate_scenarios(tests))
+ return result
diff --git a/python_files/tests/unittestadapter/.data/test_scenarios/tests/test_scene.py b/python_files/tests/unittestadapter/.data/test_scenarios/tests/test_scene.py
new file mode 100644
index 000000000000..1f66cbde4ef7
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/test_scenarios/tests/test_scene.py
@@ -0,0 +1,25 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from testscenarios import TestWithScenarios
+
+class TestMathOperations(TestWithScenarios):
+ scenarios = [
+ ('add', {'test_id': 'test_add', 'a': 5, 'b': 3, 'expected': 8}),
+ ('subtract', {'test_id': 'test_subtract', 'a': 5, 'b': 3, 'expected': 2}),
+ ('multiply', {'test_id': 'test_multiply', 'a': 5, 'b': 3, 'expected': 15})
+ ]
+ a: int = 0
+ b: int = 0
+ expected: int = 0
+ test_id: str = ""
+
+ def test_operations(self):
+ result = None
+ if self.test_id == 'test_add':
+ result = self.a + self.b
+ elif self.test_id == 'test_subtract':
+ result = self.a - self.b
+ elif self.test_id == 'test_multiply':
+ result = self.a * self.b
+ self.assertEqual(result, self.expected)
diff --git a/python_files/tests/unittestadapter/.data/test_subtest.py b/python_files/tests/unittestadapter/.data/test_subtest.py
new file mode 100644
index 000000000000..b913b8773701
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/test_subtest.py
@@ -0,0 +1,18 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+# Test class for the test_subtest_run test.
+# The test_failed_tests function should return a dictionary that has a "success" status
+# and the "result" value is a dict with 6 entries, one for each subtest.
+
+
+class NumbersTest(unittest.TestCase):
+ def test_even(self):
+ """
+ Test that numbers between 0 and 5 are all even.
+ """
+ for i in range(0, 6):
+ with self.subTest(i=i):
+ self.assertEqual(i % 2, 0)
diff --git a/python_files/tests/unittestadapter/.data/test_two_classes.py b/python_files/tests/unittestadapter/.data/test_two_classes.py
new file mode 100644
index 000000000000..60b26706ad42
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/test_two_classes.py
@@ -0,0 +1,20 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+# Test class which runs for the test_multiple_ids_run test with the two class parameters.
+# Both test functions will be returned in a dictionary with a "success" status,
+# and the two tests with their outcome as "success".
+
+
+class ClassOne(unittest.TestCase):
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+class ClassTwo(unittest.TestCase):
+
+ def test_two(self) -> None:
+ self.assertGreater(2, 1)
+
diff --git a/python_files/tests/unittestadapter/.data/two_patterns/pattern_a_test.py b/python_files/tests/unittestadapter/.data/two_patterns/pattern_a_test.py
new file mode 100644
index 000000000000..52641360b526
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/two_patterns/pattern_a_test.py
@@ -0,0 +1,21 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+# Test class for the two file pattern test. It is pattern *test.py.
+# The test_ids_multiple_runs function should return a dictionary with a "success" status,
+# and the two tests with their outcome as "success".
+
+
+class DiscoveryA(unittest.TestCase):
+ """Test class for the two file pattern test. It is pattern *test.py
+
+ The test_ids_multiple_runs function should return a dictionary with a "success" status,
+ and the two tests with their outcome as "success".
+ """
+
+ def test_one_a(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two_a(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/two_patterns/test_pattern_b.py b/python_files/tests/unittestadapter/.data/two_patterns/test_pattern_b.py
new file mode 100644
index 000000000000..06b6a818537d
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/two_patterns/test_pattern_b.py
@@ -0,0 +1,15 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+# Test class for the two file pattern test. This file is pattern test*.py.
+# The test_ids_multiple_runs function should return a dictionary with a "success" status,
+# and the two tests with their outcome as "success".
+
+
+class DiscoveryB(unittest.TestCase):
+ def test_one_b(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two_b(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/unittest_folder/test_add.py b/python_files/tests/unittestadapter/.data/unittest_folder/test_add.py
new file mode 100644
index 000000000000..f562474b596a
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/unittest_folder/test_add.py
@@ -0,0 +1,21 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+# Test class which runs for the test_multiple_ids_run test with the two test
+# files in the same folder. The cwd is set to the parent folder. This should return
+# a dictionary with a "success" status and the two tests with their outcome as "success".
+
+
+def add(a, b):
+ return a + b
+
+
+class TestAddFunction(unittest.TestCase):
+ def test_add_positive_numbers(self):
+ result = add(2, 3)
+ self.assertEqual(result, 5)
+
+ def test_add_negative_numbers(self):
+ result = add(-2, -3)
+ self.assertEqual(result, -5)
diff --git a/python_files/tests/unittestadapter/.data/unittest_folder/test_subtract.py b/python_files/tests/unittestadapter/.data/unittest_folder/test_subtract.py
new file mode 100644
index 000000000000..8ac3988a3251
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/unittest_folder/test_subtract.py
@@ -0,0 +1,21 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+# Test class which runs for the test_multiple_ids_run test with the two test
+# files in the same folder. The cwd is set to the parent folder. This should return
+# a dictionary with a "success" status and the two tests with their outcome as "success".
+
+
+def subtract(a, b):
+ return a - b
+
+
+class TestSubtractFunction(unittest.TestCase):
+ def test_subtract_positive_numbers(self):
+ result = subtract(5, 3)
+ self.assertEqual(result, 2)
+
+ def test_subtract_negative_numbers(self):
+ result = subtract(-2, -3)
+ self.assertEqual(result, 1)
diff --git a/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_file.py b/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_file.py
new file mode 100644
index 000000000000..927a56bc920b
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_file.py
@@ -0,0 +1,10 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from unittest import SkipTest
+
+raise SkipTest("This is unittest.SkipTest calling")
+
+
+def test_example():
+ assert 1 == 1
diff --git a/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_function.py b/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_function.py
new file mode 100644
index 000000000000..59e66e9a1d40
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/unittest_skip/unittest_skip_function.py
@@ -0,0 +1,18 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+def add(x, y):
+ return x + y
+
+
+class SimpleTest(unittest.TestCase):
+ @unittest.skip("demonstrating skipping")
+ def testadd1(self):
+ self.assertEquals(add(4, 5), 9)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/src/test/pythonFiles/definition/navigation/__init__.py b/python_files/tests/unittestadapter/.data/utils_complex_tree/__init__.py
similarity index 100%
rename from src/test/pythonFiles/definition/navigation/__init__.py
rename to python_files/tests/unittestadapter/.data/utils_complex_tree/__init__.py
diff --git a/src/test/pythonFiles/testFiles/multi/tests/more_tests/__init__.py b/python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/__init__.py
similarity index 100%
rename from src/test/pythonFiles/testFiles/multi/tests/more_tests/__init__.py
rename to python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/__init__.py
diff --git a/src/test/pythonFiles/testFiles/standard/tests/__init__.py b/python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/test_inner_folder/__init__.py
similarity index 100%
rename from src/test/pythonFiles/testFiles/standard/tests/__init__.py
rename to python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/test_inner_folder/__init__.py
diff --git a/python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/test_inner_folder/test_utils_complex_tree.py b/python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/test_inner_folder/test_utils_complex_tree.py
new file mode 100644
index 000000000000..8f57fb880ff1
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_complex_tree/test_outer_folder/test_inner_folder/test_utils_complex_tree.py
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+import unittest
+
+
+class TreeOne(unittest.TestCase):
+ def test_one(self):
+ assert True
diff --git a/python_files/tests/unittestadapter/.data/utils_decorated_tree.py b/python_files/tests/unittestadapter/.data/utils_decorated_tree.py
new file mode 100644
index 000000000000..90fdfc89a27b
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_decorated_tree.py
@@ -0,0 +1,29 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+from functools import wraps
+
+
+def my_decorator(f):
+ @wraps(f)
+ def wrapper(*args, **kwds):
+ print("Calling decorated function")
+ return f(*args, **kwds)
+
+ return wrapper
+
+
+class TreeOne(unittest.TestCase):
+ """Test class for the test_build_decorated_tree test.
+
+ build_test_tree should build a test tree with these test cases.
+ """
+
+ @my_decorator
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ @my_decorator
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/utils_nested_cases/file_one.py b/python_files/tests/unittestadapter/.data/utils_nested_cases/file_one.py
new file mode 100644
index 000000000000..84f7fefc4ebd
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_nested_cases/file_one.py
@@ -0,0 +1,17 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class CaseTwoFileOne(unittest.TestCase):
+ """Test class for the test_nested_test_cases test.
+
+ get_test_case should return tests from the test suites in this folder.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/__init__.py b/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/__init__.py
new file mode 100644
index 000000000000..5b7f7a925cc0
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/__init__.py
@@ -0,0 +1,2 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
diff --git a/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/file_two.py b/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/file_two.py
new file mode 100644
index 000000000000..235a104016a3
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_nested_cases/folder/file_two.py
@@ -0,0 +1,17 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class CaseTwoFileTwo(unittest.TestCase):
+ """Test class for the test_nested_test_cases test.
+
+ get_test_case should return tests from the test suites in this folder.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/utils_simple_cases.py b/python_files/tests/unittestadapter/.data/utils_simple_cases.py
new file mode 100644
index 000000000000..fb3ae7eb7909
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_simple_cases.py
@@ -0,0 +1,17 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class CaseOne(unittest.TestCase):
+ """Test class for the test_simple_test_cases test.
+
+ get_test_case should return tests from the test suite.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/.data/utils_simple_tree.py b/python_files/tests/unittestadapter/.data/utils_simple_tree.py
new file mode 100644
index 000000000000..6db51a4fd80b
--- /dev/null
+++ b/python_files/tests/unittestadapter/.data/utils_simple_tree.py
@@ -0,0 +1,17 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import unittest
+
+
+class TreeOne(unittest.TestCase):
+ """Test class for the test_build_simple_tree test.
+
+ build_test_tree should build a test tree with these test cases.
+ """
+
+ def test_one(self) -> None:
+ self.assertGreater(2, 1)
+
+ def test_two(self) -> None:
+ self.assertNotEqual(2, 1)
diff --git a/python_files/tests/unittestadapter/__init__.py b/python_files/tests/unittestadapter/__init__.py
new file mode 100644
index 000000000000..5b7f7a925cc0
--- /dev/null
+++ b/python_files/tests/unittestadapter/__init__.py
@@ -0,0 +1,2 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
diff --git a/python_files/tests/unittestadapter/conftest.py b/python_files/tests/unittestadapter/conftest.py
new file mode 100644
index 000000000000..19af85d1e095
--- /dev/null
+++ b/python_files/tests/unittestadapter/conftest.py
@@ -0,0 +1,8 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import sys
+
+# Ignore the contents of this folder for Python 2 tests.
+if sys.version_info[0] < 3:
+ collect_ignore_glob = ["*.py"]
diff --git a/python_files/tests/unittestadapter/expected_discovery_test_output.py b/python_files/tests/unittestadapter/expected_discovery_test_output.py
new file mode 100644
index 000000000000..9fca67a3a574
--- /dev/null
+++ b/python_files/tests/unittestadapter/expected_discovery_test_output.py
@@ -0,0 +1,137 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+from unittestadapter.pvsc_utils import TestNodeTypeEnum
+import pathlib
+
+TEST_DATA_PATH = pathlib.Path(__file__).parent / ".data"
+
+
+skip_unittest_folder_discovery_output = {
+ "path": os.fspath(TEST_DATA_PATH / "unittest_skip"),
+ "name": "unittest_skip",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [
+ {
+ "path": os.fspath(TEST_DATA_PATH / "unittest_skip" / "unittest_skip_file.py"),
+ "name": "unittest_skip_file.py",
+ "type_": TestNodeTypeEnum.file,
+ "children": [],
+ "id_": os.fspath(TEST_DATA_PATH / "unittest_skip" / "unittest_skip_file.py"),
+ },
+ {
+ "path": os.fspath(TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py"),
+ "name": "unittest_skip_function.py",
+ "type_": TestNodeTypeEnum.file,
+ "children": [
+ {
+ "path": os.fspath(
+ TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py"
+ ),
+ "name": "SimpleTest",
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "testadd1",
+ "path": os.fspath(
+ TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py"
+ ),
+ "lineno": "13",
+ "type_": TestNodeTypeEnum.test,
+ "id_": os.fspath(
+ TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py"
+ )
+ + "\\SimpleTest\\testadd1",
+ "runID": "unittest_skip_function.SimpleTest.testadd1",
+ }
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py")
+ + "\\SimpleTest",
+ }
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "unittest_skip" / "unittest_skip_function.py"),
+ },
+ ],
+ "id_": os.fspath(TEST_DATA_PATH / "unittest_skip"),
+}
+
+complex_tree_file_path = os.fsdecode(
+ pathlib.PurePath(
+ TEST_DATA_PATH,
+ "utils_complex_tree",
+ "test_outer_folder",
+ "test_inner_folder",
+ "test_utils_complex_tree.py",
+ )
+)
+complex_tree_expected_output = {
+ "name": "utils_complex_tree",
+ "type_": TestNodeTypeEnum.folder,
+ "path": os.fsdecode(pathlib.PurePath(TEST_DATA_PATH, "utils_complex_tree")),
+ "children": [
+ {
+ "name": "test_outer_folder",
+ "type_": TestNodeTypeEnum.folder,
+ "path": os.fsdecode(
+ pathlib.PurePath(TEST_DATA_PATH, "utils_complex_tree", "test_outer_folder")
+ ),
+ "children": [
+ {
+ "name": "test_inner_folder",
+ "type_": TestNodeTypeEnum.folder,
+ "path": os.fsdecode(
+ pathlib.PurePath(
+ TEST_DATA_PATH,
+ "utils_complex_tree",
+ "test_outer_folder",
+ "test_inner_folder",
+ )
+ ),
+ "children": [
+ {
+ "name": "test_utils_complex_tree.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": complex_tree_file_path,
+ "children": [
+ {
+ "name": "TreeOne",
+ "type_": TestNodeTypeEnum.class_,
+ "path": complex_tree_file_path,
+ "children": [
+ {
+ "name": "test_one",
+ "type_": TestNodeTypeEnum.test,
+ "path": complex_tree_file_path,
+ "lineno": "7",
+ "id_": complex_tree_file_path
+ + "\\"
+ + "TreeOne"
+ + "\\"
+ + "test_one",
+ "runID": "utils_complex_tree.test_outer_folder.test_inner_folder.test_utils_complex_tree.TreeOne.test_one",
+ },
+ ],
+ "id_": complex_tree_file_path + "\\" + "TreeOne",
+ }
+ ],
+ "id_": complex_tree_file_path,
+ }
+ ],
+ "id_": os.fsdecode(
+ pathlib.PurePath(
+ TEST_DATA_PATH,
+ "utils_complex_tree",
+ "test_outer_folder",
+ "test_inner_folder",
+ )
+ ),
+ },
+ ],
+ "id_": os.fsdecode(
+ pathlib.PurePath(TEST_DATA_PATH, "utils_complex_tree", "test_outer_folder")
+ ),
+ }
+ ],
+ "id_": os.fsdecode(pathlib.PurePath(TEST_DATA_PATH, "utils_complex_tree")),
+}
diff --git a/python_files/tests/unittestadapter/test_discovery.py b/python_files/tests/unittestadapter/test_discovery.py
new file mode 100644
index 000000000000..94d0bb89c62a
--- /dev/null
+++ b/python_files/tests/unittestadapter/test_discovery.py
@@ -0,0 +1,301 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import sys
+from typing import List
+
+import pytest
+
+from unittestadapter.discovery import discover_tests
+from unittestadapter.pvsc_utils import TestNodeTypeEnum, parse_unittest_args
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+
+
+from tests.tree_comparison_helper import is_same_tree # noqa: E402
+
+from . import expected_discovery_test_output # noqa: E402
+
+TEST_DATA_PATH = pathlib.Path(__file__).parent / ".data"
+
+
+@pytest.mark.parametrize(
+ "args, expected",
+ [
+ (
+ ["-s", "something", "-p", "other*", "-t", "else"],
+ ("something", "other*", "else", 1, None, None),
+ ),
+ (
+ [
+ "--start-directory",
+ "foo",
+ "--pattern",
+ "bar*",
+ "--top-level-directory",
+ "baz",
+ ],
+ ("foo", "bar*", "baz", 1, None, None),
+ ),
+ (
+ ["--foo", "something"],
+ (".", "test*.py", None, 1, None, None),
+ ),
+ (
+ ["--foo", "something", "-v"],
+ (".", "test*.py", None, 2, None, None),
+ ),
+ (
+ ["--foo", "something", "-f"],
+ (".", "test*.py", None, 1, True, None),
+ ),
+ (
+ ["--foo", "something", "--verbose", "-f"],
+ (".", "test*.py", None, 2, True, None),
+ ),
+ (
+ ["--foo", "something", "-q", "--failfast"],
+ (".", "test*.py", None, 0, True, None),
+ ),
+ (
+ ["--foo", "something", "--quiet"],
+ (".", "test*.py", None, 0, None, None),
+ ),
+ (
+ ["--foo", "something", "--quiet", "--locals"],
+ (".", "test*.py", None, 0, None, True),
+ ),
+ ],
+)
+def test_parse_unittest_args(args: List[str], expected: List[str]) -> None:
+ """The parse_unittest_args function should return values for the start_dir, pattern, and top_level_dir arguments
+ when passed as command-line options, and ignore unrecognized arguments.
+ """
+ actual = parse_unittest_args(args)
+
+ assert actual == expected
+
+
+def test_simple_discovery() -> None:
+ """The discover_tests function should return a dictionary with a "success" status, no errors, and a test tree
+ if unittest discovery was performed successfully.
+ """
+ start_dir = os.fsdecode(TEST_DATA_PATH)
+ pattern = "discovery_simple*"
+ file_path = os.fsdecode(pathlib.PurePath(TEST_DATA_PATH / "discovery_simple.py"))
+
+ expected = {
+ "path": start_dir,
+ "type_": TestNodeTypeEnum.folder,
+ "name": ".data",
+ "children": [
+ {
+ "name": "discovery_simple.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": file_path,
+ "children": [
+ {
+ "name": "DiscoverySimple",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "test_one",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "14",
+ "id_": file_path + "\\" + "DiscoverySimple" + "\\" + "test_one",
+ },
+ {
+ "name": "test_two",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "17",
+ "id_": file_path + "\\" + "DiscoverySimple" + "\\" + "test_two",
+ },
+ ],
+ "id_": file_path + "\\" + "DiscoverySimple",
+ }
+ ],
+ "id_": file_path,
+ }
+ ],
+ "id_": start_dir,
+ }
+
+ actual = discover_tests(start_dir, pattern, None)
+
+ assert actual["status"] == "success"
+ assert is_same_tree(actual.get("tests"), expected, ["id_", "lineno", "name"])
+ assert "error" not in actual
+
+
+def test_simple_discovery_with_top_dir_calculated() -> None:
+ """The discover_tests function should return a dictionary with a "success" status, no errors, and a test tree
+ if unittest discovery was performed successfully.
+ """
+ start_dir = "."
+ pattern = "discovery_simple*"
+ file_path = os.fsdecode(pathlib.PurePath(TEST_DATA_PATH / "discovery_simple.py"))
+
+ expected = {
+ "path": os.fsdecode(pathlib.PurePath(TEST_DATA_PATH)),
+ "type_": TestNodeTypeEnum.folder,
+ "name": ".data",
+ "children": [
+ {
+ "name": "discovery_simple.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": file_path,
+ "children": [
+ {
+ "name": "DiscoverySimple",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "test_one",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "14",
+ "id_": file_path + "\\" + "DiscoverySimple" + "\\" + "test_one",
+ },
+ {
+ "name": "test_two",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "17",
+ "id_": file_path + "\\" + "DiscoverySimple" + "\\" + "test_two",
+ },
+ ],
+ "id_": file_path + "\\" + "DiscoverySimple",
+ }
+ ],
+ "id_": file_path,
+ }
+ ],
+ "id_": os.fsdecode(pathlib.PurePath(TEST_DATA_PATH)),
+ }
+
+ # Define the CWD to be the root of the test data folder.
+ os.chdir(os.fsdecode(pathlib.PurePath(TEST_DATA_PATH)))
+ actual = discover_tests(start_dir, pattern, None)
+
+ assert actual["status"] == "success"
+ assert is_same_tree(actual.get("tests"), expected, ["id_", "lineno", "name"])
+ assert "error" not in actual
+
+
+def test_empty_discovery() -> None:
+ """The discover_tests function should return a dictionary with a "success" status, no errors, and no test tree
+ if unittest discovery was performed successfully but no tests were found.
+ """
+ start_dir = os.fsdecode(TEST_DATA_PATH)
+ pattern = "discovery_empty*"
+
+ actual = discover_tests(start_dir, pattern, None)
+
+ assert actual["status"] == "success"
+ assert "tests" in actual
+ assert "error" not in actual
+
+
+def test_error_discovery() -> None:
+ """The discover_tests function should return a dictionary with an "error" status, the discovered tests, and a list of errors
+ if unittest discovery failed at some point.
+ """
+ # Discover tests in .data/discovery_error/.
+ start_path = pathlib.PurePath(TEST_DATA_PATH / "discovery_error")
+ start_dir = os.fsdecode(start_path)
+ pattern = "file*"
+
+ file_path = os.fsdecode(start_path / "file_two.py")
+
+ expected = {
+ "path": start_dir,
+ "type_": TestNodeTypeEnum.folder,
+ "name": "discovery_error",
+ "children": [
+ {
+ "name": "file_two.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": file_path,
+ "children": [
+ {
+ "name": "DiscoveryErrorTwo",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "test_one",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "14",
+ "id_": file_path + "\\" + "DiscoveryErrorTwo" + "\\" + "test_one",
+ },
+ {
+ "name": "test_two",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "17",
+ "id_": file_path + "\\" + "DiscoveryErrorTwo" + "\\" + "test_two",
+ },
+ ],
+ "id_": file_path + "\\" + "DiscoveryErrorTwo",
+ }
+ ],
+ "id_": file_path,
+ }
+ ],
+ "id_": start_dir,
+ }
+
+ actual = discover_tests(start_dir, pattern, None)
+
+ assert actual["status"] == "error"
+ assert is_same_tree(expected, actual.get("tests"), ["id_", "lineno", "name"])
+ assert len(actual.get("error", [])) == 1
+
+
+def test_unit_skip() -> None:
+ """The discover_tests function should return a dictionary with a "success" status, no errors, and test tree.
+ if unittest discovery was performed and found a test in one file marked as skipped and another file marked as skipped.
+ """
+ start_dir = os.fsdecode(TEST_DATA_PATH / "unittest_skip")
+ pattern = "unittest_*"
+
+ actual = discover_tests(start_dir, pattern, None)
+
+ assert actual["status"] == "success"
+ assert "tests" in actual
+ assert is_same_tree(
+ actual.get("tests"),
+ expected_discovery_test_output.skip_unittest_folder_discovery_output,
+ ["id_", "lineno", "name"],
+ )
+ assert "error" not in actual
+
+
+def test_complex_tree() -> None:
+ """This test specifically tests when different start_dir and top_level_dir are provided."""
+ start_dir = os.fsdecode(
+ pathlib.PurePath(
+ TEST_DATA_PATH,
+ "utils_complex_tree",
+ "test_outer_folder",
+ "test_inner_folder",
+ )
+ )
+ pattern = "test_*.py"
+ top_level_dir = os.fsdecode(pathlib.PurePath(TEST_DATA_PATH, "utils_complex_tree"))
+ actual = discover_tests(start_dir, pattern, top_level_dir)
+ assert actual["status"] == "success"
+ assert "error" not in actual
+ assert is_same_tree(
+ actual.get("tests"),
+ expected_discovery_test_output.complex_tree_expected_output,
+ ["id_", "lineno", "name"],
+ )
diff --git a/python_files/tests/unittestadapter/test_execution.py b/python_files/tests/unittestadapter/test_execution.py
new file mode 100644
index 000000000000..44610d5bf6fa
--- /dev/null
+++ b/python_files/tests/unittestadapter/test_execution.py
@@ -0,0 +1,303 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import sys
+from unittest.mock import patch
+from typing import Dict, Optional
+
+import pytest
+
+script_dir = pathlib.Path(__file__).parent.parent.parent
+sys.path.insert(0, os.fspath(script_dir / "lib" / "python"))
+
+from unittestadapter.pvsc_utils import ExecutionPayloadDict # noqa: E402
+from unittestadapter.execution import run_tests # noqa: E402
+
+TEST_DATA_PATH = pathlib.Path(__file__).parent / ".data"
+
+
+def test_no_ids_run() -> None:
+ """This test runs on an empty array of test_ids, therefore it should return
+ an empty dict for the result.
+ """
+ start_dir: str = os.fspath(TEST_DATA_PATH)
+ testids = []
+ pattern = "discovery_simple*"
+ actual = run_tests(start_dir, testids, pattern, None, 1, None)
+ assert actual
+ assert all(item in actual for item in ("cwd", "status"))
+ assert actual["status"] == "success"
+ assert actual["cwd"] == os.fspath(TEST_DATA_PATH)
+ if actual["result"] is not None:
+ assert len(actual["result"]) == 0
+ else:
+ raise AssertionError("actual['result'] is None")
+
+
+@pytest.fixture
+def mock_send_run_data():
+ with patch("unittestadapter.execution.send_run_data") as mock:
+ yield mock
+
+
+def test_single_ids_run(mock_send_run_data):
+ """This test runs on a single test_id, therefore it should return
+ a dict with a single key-value pair for the result.
+
+ This single test passes so the outcome should be 'success'.
+ """
+ id = "discovery_simple.DiscoverySimple.test_one"
+ os.environ["TEST_RUN_PIPE"] = "fake"
+ actual: ExecutionPayloadDict = run_tests(
+ os.fspath(TEST_DATA_PATH),
+ [id],
+ "discovery_simple*",
+ None,
+ 1,
+ None,
+ )
+
+ # Access the arguments
+ args, _ = mock_send_run_data.call_args
+ test_actual = args[0] # first argument is the result
+
+ assert test_actual
+ actual_result: Optional[Dict[str, Dict[str, Optional[str]]]] = actual["result"]
+ if actual_result is None:
+ raise AssertionError("actual_result is None")
+ else:
+ if not isinstance(actual_result, Dict):
+ raise AssertionError("actual_result is not a Dict")
+ assert len(actual_result) == 1
+ assert id in actual_result
+ id_result = actual_result[id]
+ assert id_result is not None
+ assert "outcome" in id_result
+ assert id_result["outcome"] == "success"
+
+
+def test_subtest_run(mock_send_run_data) -> None:
+ """This test runs on a the test_subtest which has a single method, test_even,
+ that uses unittest subtest.
+
+ The actual result of run should return a dict payload with 6 entry for the 6 subtests.
+ """
+ id = "test_subtest.NumbersTest.test_even"
+ os.environ["TEST_RUN_PIPE"] = "fake"
+ actual = run_tests(
+ os.fspath(TEST_DATA_PATH),
+ [id],
+ "test_subtest.py",
+ None,
+ 1,
+ None,
+ )
+ subtests_ids = [
+ "test_subtest.NumbersTest.test_even (i=0)",
+ "test_subtest.NumbersTest.test_even (i=1)",
+ "test_subtest.NumbersTest.test_even (i=2)",
+ "test_subtest.NumbersTest.test_even (i=3)",
+ "test_subtest.NumbersTest.test_even (i=4)",
+ "test_subtest.NumbersTest.test_even (i=5)",
+ ]
+ assert actual
+ assert all(item in actual for item in ("cwd", "status"))
+ assert actual["status"] == "success"
+ assert actual["cwd"] == os.fspath(TEST_DATA_PATH)
+ assert actual["result"] is not None
+ result = actual["result"]
+ assert len(result) == 6
+ for id in subtests_ids:
+ assert id in result
+
+
+@pytest.mark.parametrize(
+ "test_ids, pattern, cwd, expected_outcome",
+ [
+ (
+ [
+ "test_add.TestAddFunction.test_add_negative_numbers",
+ "test_add.TestAddFunction.test_add_positive_numbers",
+ ],
+ "test_add.py",
+ os.fspath(TEST_DATA_PATH / "unittest_folder"),
+ "success",
+ ),
+ (
+ [
+ "test_add.TestAddFunction.test_add_negative_numbers",
+ "test_add.TestAddFunction.test_add_positive_numbers",
+ "test_subtract.TestSubtractFunction.test_subtract_negative_numbers",
+ "test_subtract.TestSubtractFunction.test_subtract_positive_numbers",
+ ],
+ "test*",
+ os.fspath(TEST_DATA_PATH / "unittest_folder"),
+ "success",
+ ),
+ (
+ [
+ "pattern_a_test.DiscoveryA.test_one_a",
+ "pattern_a_test.DiscoveryA.test_two_a",
+ ],
+ "*test.py",
+ os.fspath(TEST_DATA_PATH / "two_patterns"),
+ "success",
+ ),
+ (
+ [
+ "test_pattern_b.DiscoveryB.test_one_b",
+ "test_pattern_b.DiscoveryB.test_two_b",
+ ],
+ "test_*",
+ os.fspath(TEST_DATA_PATH / "two_patterns"),
+ "success",
+ ),
+ (
+ [
+ "file_one.CaseTwoFileOne.test_one",
+ "file_one.CaseTwoFileOne.test_two",
+ "folder.file_two.CaseTwoFileTwo.test_one",
+ "folder.file_two.CaseTwoFileTwo.test_two",
+ ],
+ "*",
+ os.fspath(TEST_DATA_PATH / "utils_nested_cases"),
+ "success",
+ ),
+ (
+ [
+ "test_two_classes.ClassOne.test_one",
+ "test_two_classes.ClassTwo.test_two",
+ ],
+ "test_two_classes.py",
+ os.fspath(TEST_DATA_PATH),
+ "success",
+ ),
+ (
+ [
+ "test_scene.TestMathOperations.test_operations(add)",
+ "test_scene.TestMathOperations.test_operations(subtract)",
+ "test_scene.TestMathOperations.test_operations(multiply)",
+ ],
+ "*",
+ os.fspath(TEST_DATA_PATH / "test_scenarios" / "tests"),
+ "success",
+ ),
+ ],
+)
+def test_multiple_ids_run(mock_send_run_data, test_ids, pattern, cwd, expected_outcome) -> None:
+ """
+ The following are all successful tests of different formats.
+
+ # 1. Two tests with the `pattern` specified as a file
+ # 2. Two test files in the same folder called `unittest_folder`
+ # 3. A folder with two different test file patterns, this test gathers pattern `*test`
+ # 4. A folder with two different test file patterns, this test gathers pattern `test_*`
+ # 5. A nested structure where a test file is on the same level as a folder containing a test file
+ # 6. Test file with two test classes
+
+ All tests should have the outcome of `success`.
+ """
+ os.environ["TEST_RUN_PIPE"] = "fake"
+ actual = run_tests(cwd, test_ids, pattern, None, 1, None)
+ assert actual
+ assert all(item in actual for item in ("cwd", "status"))
+ assert actual["status"] == "success"
+ assert actual["cwd"] == cwd
+ assert actual["result"] is not None
+ result = actual["result"]
+ assert len(result) == len(test_ids)
+ for test_id in test_ids:
+ assert test_id in result
+ id_result = result[test_id]
+ assert id_result is not None
+ assert "outcome" in id_result
+ assert id_result["outcome"] == expected_outcome
+ assert True
+
+
+def test_failed_tests(mock_send_run_data):
+ """This test runs on a single file `test_fail` with two tests that fail."""
+
+ os.environ["TEST_RUN_PIPE"] = "fake"
+ test_ids = [
+ "test_fail_simple.RunFailSimple.test_one_fail",
+ "test_fail_simple.RunFailSimple.test_two_fail",
+ ]
+ actual = run_tests(
+ os.fspath(TEST_DATA_PATH),
+ test_ids,
+ "test_fail_simple*",
+ None,
+ 1,
+ None,
+ )
+ assert actual
+ assert all(item in actual for item in ("cwd", "status"))
+ assert actual["status"] == "success"
+ assert actual["cwd"] == os.fspath(TEST_DATA_PATH)
+ assert actual["result"] is not None
+ result = actual["result"]
+ assert len(result) == len(test_ids)
+ for test_id in test_ids:
+ assert test_id in result
+ id_result = result[test_id]
+ assert id_result is not None
+ assert "outcome" in id_result
+ assert id_result["outcome"] == "failure"
+ assert "message" and "traceback" in id_result
+ assert "2 not greater than 3" in str(id_result["message"]) or "1 == 1" in str(
+ id_result["traceback"]
+ )
+ assert True
+
+
+def test_unknown_id(mock_send_run_data):
+ """This test runs on a unknown test_id, therefore it should return
+ an error as the outcome as it attempts to find the given test.
+ """
+ os.environ["TEST_RUN_PIPE"] = "fake"
+ test_ids = ["unknown_id"]
+ actual = run_tests(
+ os.fspath(TEST_DATA_PATH),
+ test_ids,
+ "test_fail_simple*",
+ None,
+ 1,
+ None,
+ )
+ assert actual
+ assert all(item in actual for item in ("cwd", "status"))
+ assert actual["status"] == "success"
+ assert actual["cwd"] == os.fspath(TEST_DATA_PATH)
+ assert actual["result"] is not None
+ result = actual["result"]
+ assert len(result) == len(test_ids)
+ assert "unittest.loader._FailedTest.unknown_id" in result
+ id_result = result["unittest.loader._FailedTest.unknown_id"]
+ assert id_result is not None
+ assert "outcome" in id_result
+ assert id_result["outcome"] == "error"
+ assert "message" and "traceback" in id_result
+
+
+def test_incorrect_path():
+ """This test runs on a non existent path, therefore it should return
+ an error as the outcome as it attempts to find the given folder.
+ """
+ test_ids = ["unknown_id"]
+ os.environ["TEST_RUN_PIPE"] = "fake"
+
+ actual = run_tests(
+ os.fspath(TEST_DATA_PATH / "unknown_folder"),
+ test_ids,
+ "test_fail_simple*",
+ None,
+ 1,
+ None,
+ )
+ assert actual
+ assert all(item in actual for item in ("cwd", "status", "error"))
+ assert actual["status"] == "error"
+ assert actual["cwd"] == os.fspath(TEST_DATA_PATH / "unknown_folder")
diff --git a/python_files/tests/unittestadapter/test_utils.py b/python_files/tests/unittestadapter/test_utils.py
new file mode 100644
index 000000000000..1cb9a4686399
--- /dev/null
+++ b/python_files/tests/unittestadapter/test_utils.py
@@ -0,0 +1,307 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import sys
+import unittest
+
+import pytest
+
+from unittestadapter.pvsc_utils import (
+ TestNode,
+ TestNodeTypeEnum,
+ build_test_tree,
+ get_child_node,
+ get_test_case,
+)
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+
+from tests.tree_comparison_helper import is_same_tree # noqa: E402
+
+TEST_DATA_PATH = pathlib.Path(__file__).parent / ".data"
+
+
+@pytest.mark.parametrize(
+ "directory, pattern, expected",
+ [
+ (
+ ".",
+ "utils_simple_cases*",
+ [
+ "utils_simple_cases.CaseOne.test_one",
+ "utils_simple_cases.CaseOne.test_two",
+ ],
+ ),
+ (
+ "utils_nested_cases",
+ "file*",
+ [
+ "file_one.CaseTwoFileOne.test_one",
+ "file_one.CaseTwoFileOne.test_two",
+ "folder.file_two.CaseTwoFileTwo.test_one",
+ "folder.file_two.CaseTwoFileTwo.test_two",
+ ],
+ ),
+ ],
+)
+def test_simple_test_cases(directory, pattern, expected) -> None:
+ """The get_test_case fuction should return tests from all test suites."""
+
+ actual = []
+
+ # Discover tests in .data/.
+ start_dir = os.fsdecode(TEST_DATA_PATH / directory)
+
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern)
+
+ # Iterate on get_test_case and save the test id.
+ for test in get_test_case(suite):
+ actual.append(test.id())
+
+ assert expected == actual
+
+
+def test_get_existing_child_node() -> None:
+ """The get_child_node fuction should return the child node of a test tree if it exists."""
+
+ tree: TestNode = {
+ "name": "root",
+ "path": "foo",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [
+ {
+ "name": "childOne",
+ "path": "child/one",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [
+ {
+ "name": "nestedOne",
+ "path": "nested/one",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "nested/one",
+ },
+ {
+ "name": "nestedTwo",
+ "path": "nested/two",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "nested/two",
+ },
+ ],
+ "id_": "child/one",
+ },
+ {
+ "name": "childTwo",
+ "path": "child/two",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "child/two",
+ },
+ ],
+ "id_": "foo",
+ }
+
+ get_child_node("childTwo", "child/two", TestNodeTypeEnum.folder, tree)
+ tree_copy = tree.copy()
+
+ # Check that the tree didn't get mutated by get_child_node.
+ assert is_same_tree(tree, tree_copy, ["id_", "lineno", "name"])
+
+
+def test_no_existing_child_node() -> None:
+ """The get_child_node fuction should add a child node to a test tree and return it if it does not exist."""
+
+ tree: TestNode = {
+ "name": "root",
+ "path": "foo",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [
+ {
+ "name": "childOne",
+ "path": "child/one",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [
+ {
+ "name": "nestedOne",
+ "path": "nested/one",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "nested/one",
+ },
+ {
+ "name": "nestedTwo",
+ "path": "nested/two",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "nested/two",
+ },
+ ],
+ "id_": "child/one",
+ },
+ {
+ "name": "childTwo",
+ "path": "child/two",
+ "type_": TestNodeTypeEnum.folder,
+ "children": [],
+ "id_": "child/two",
+ },
+ ],
+ "id_": "foo",
+ }
+
+ # Make a separate copy of tree["children"].
+ tree_before = tree.copy()
+ tree_before["children"] = tree["children"][:]
+
+ get_child_node("childThree", "child/three", TestNodeTypeEnum.folder, tree)
+
+ tree_after = tree.copy()
+ tree_after["children"] = tree_after["children"][:-1]
+
+ # Check that all pre-existing items in the tree didn't get mutated by get_child_node.
+ assert is_same_tree(tree_before, tree_after, ["id_", "lineno", "name"])
+
+ # Check for the added node.
+ last_child = tree["children"][-1]
+ assert last_child["name"] == "childThree"
+
+
+def test_build_simple_tree() -> None:
+ """The build_test_tree function should build and return a test tree from discovered test suites,
+ and an empty list of errors if there are none in the discovered data.
+ """
+
+ # Discovery tests in utils_simple_tree.py.
+ start_dir = os.fsdecode(TEST_DATA_PATH)
+ pattern = "utils_simple_tree*"
+ file_path = os.fsdecode(pathlib.PurePath(TEST_DATA_PATH, "utils_simple_tree.py"))
+
+ expected: TestNode = {
+ "path": start_dir,
+ "type_": TestNodeTypeEnum.folder,
+ "name": ".data",
+ "children": [
+ {
+ "name": "utils_simple_tree.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": file_path,
+ "children": [
+ {
+ "name": "TreeOne",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "test_one",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "13",
+ "id_": file_path + "\\" + "TreeOne" + "\\" + "test_one",
+ "runID": "utils_simple_tree.TreeOne.test_one",
+ },
+ {
+ "name": "test_two",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "16",
+ "id_": file_path + "\\" + "TreeOne" + "\\" + "test_two",
+ "runID": "utils_simple_tree.TreeOne.test_two",
+ },
+ ],
+ "id_": file_path + "\\" + "TreeOne",
+ }
+ ],
+ "id_": file_path,
+ }
+ ],
+ "id_": start_dir,
+ }
+
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern)
+ tests, errors = build_test_tree(suite, start_dir)
+
+ assert is_same_tree(expected, tests, ["id_", "lineno", "name"])
+ assert not errors
+
+
+def test_build_decorated_tree() -> None:
+ """The build_test_tree function should build and return a test tree from discovered test suites,
+ with correct line numbers for decorated test,
+ and an empty list of errors if there are none in the discovered data.
+ """
+
+ # Discovery tests in utils_decorated_tree.py.
+ start_dir = os.fsdecode(TEST_DATA_PATH)
+ pattern = "utils_decorated_tree*"
+ file_path = os.fsdecode(pathlib.PurePath(TEST_DATA_PATH, "utils_decorated_tree.py"))
+
+ expected: TestNode = {
+ "path": start_dir,
+ "type_": TestNodeTypeEnum.folder,
+ "name": ".data",
+ "children": [
+ {
+ "name": "utils_decorated_tree.py",
+ "type_": TestNodeTypeEnum.file,
+ "path": file_path,
+ "children": [
+ {
+ "name": "TreeOne",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.class_,
+ "children": [
+ {
+ "name": "test_one",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "24",
+ "id_": file_path + "\\" + "TreeOne" + "\\" + "test_one",
+ "runID": "utils_decorated_tree.TreeOne.test_one",
+ },
+ {
+ "name": "test_two",
+ "path": file_path,
+ "type_": TestNodeTypeEnum.test,
+ "lineno": "28",
+ "id_": file_path + "\\" + "TreeOne" + "\\" + "test_two",
+ "runID": "utils_decorated_tree.TreeOne.test_two",
+ },
+ ],
+ "id_": file_path + "\\" + "TreeOne",
+ }
+ ],
+ "id_": file_path,
+ }
+ ],
+ "id_": start_dir,
+ }
+
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern)
+ tests, errors = build_test_tree(suite, start_dir)
+
+ assert is_same_tree(expected, tests, ["id_", "lineno", "name"])
+ assert not errors
+
+
+def test_build_empty_tree() -> None:
+ """The build_test_tree function should return None if there are no discovered test suites,
+ and an empty list of errors if there are none in the discovered data."""
+
+ start_dir = os.fsdecode(TEST_DATA_PATH)
+ pattern = "does_not_exist*"
+
+ expected = None
+
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern)
+ tests, errors = build_test_tree(suite, start_dir)
+
+ assert expected == tests
+ assert not errors
diff --git a/pythonFiles/tests/util.py b/python_files/tests/util.py
similarity index 100%
rename from pythonFiles/tests/util.py
rename to python_files/tests/util.py
diff --git a/python_files/unittestadapter/__init__.py b/python_files/unittestadapter/__init__.py
new file mode 100644
index 000000000000..5b7f7a925cc0
--- /dev/null
+++ b/python_files/unittestadapter/__init__.py
@@ -0,0 +1,2 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
diff --git a/python_files/unittestadapter/discovery.py b/python_files/unittestadapter/discovery.py
new file mode 100644
index 000000000000..58ab8ca1a651
--- /dev/null
+++ b/python_files/unittestadapter/discovery.py
@@ -0,0 +1,127 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import os
+import pathlib
+import sys
+import traceback
+import unittest
+from typing import List, Optional
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+
+# If I use from utils then there will be an import error in test_discovery.py.
+from unittestadapter.pvsc_utils import ( # noqa: E402
+ VSCodeUnittestError,
+ build_test_tree,
+ parse_unittest_args,
+ send_post_request,
+ DiscoveryPayloadDict,
+ EOTPayloadDict,
+)
+
+
+def discover_tests(
+ start_dir: str,
+ pattern: str,
+ top_level_dir: Optional[str],
+) -> DiscoveryPayloadDict:
+ """Returns a dictionary containing details of the discovered tests.
+
+ The returned dict has the following keys:
+
+ - cwd: Absolute path to the test start directory;
+ - status: Test discovery status, can be "success" or "error";
+ - tests: Discoverered tests if any, not present otherwise. Note that the status can be "error" but the payload can still contain tests;
+ - error: Discovery error if any, not present otherwise.
+
+ Payload format for a successful discovery:
+ {
+ "status": "success",
+ "cwd": ,
+ "tests":
+ }
+
+ Payload format for a successful discovery with no tests:
+ {
+ "status": "success",
+ "cwd": ,
+ }
+
+ Payload format when there are errors:
+ {
+ "cwd":
+ "": [list of errors]
+ "status": "error",
+ }
+ """
+ cwd = os.path.abspath(start_dir)
+ if "/" in start_dir: # is a subdir
+ parent_dir = os.path.dirname(start_dir)
+ sys.path.insert(0, parent_dir)
+ else:
+ sys.path.insert(0, cwd)
+ payload: DiscoveryPayloadDict = {"cwd": cwd, "status": "success", "tests": None}
+ tests = None
+ error: List[str] = []
+
+ try:
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern, top_level_dir)
+
+ # If the top level directory is not provided, then use the start directory.
+ if top_level_dir is None:
+ top_level_dir = start_dir
+
+ # Get abspath of top level directory for build_test_tree.
+ top_level_dir = os.path.abspath(top_level_dir)
+
+ tests, error = build_test_tree(suite, top_level_dir) # test tree built successfully here.
+
+ except Exception:
+ error.append(traceback.format_exc())
+
+ # Still include the tests in the payload even if there are errors so that the TS
+ # side can determine if it is from run or discovery.
+ payload["tests"] = tests if tests is not None else None
+
+ if len(error):
+ payload["status"] = "error"
+ payload["error"] = error
+
+ return payload
+
+
+if __name__ == "__main__":
+ # Get unittest discovery arguments.
+ argv = sys.argv[1:]
+ index = argv.index("--udiscovery")
+
+ (
+ start_dir,
+ pattern,
+ top_level_dir,
+ _verbosity,
+ _failfast,
+ _locals,
+ ) = parse_unittest_args(argv[index + 1 :])
+
+ test_run_pipe = os.getenv("TEST_RUN_PIPE")
+ if not test_run_pipe:
+ error_msg = (
+ "UNITTEST ERROR: TEST_RUN_PIPE is not set at the time of unittest trying to send data. "
+ "Please confirm this environment variable is not being changed or removed "
+ "as it is required for successful test discovery and execution."
+ f"TEST_RUN_PIPE = {test_run_pipe}\n"
+ )
+ print(error_msg, file=sys.stderr)
+ raise VSCodeUnittestError(error_msg)
+
+ # Perform test discovery.
+ payload = discover_tests(start_dir, pattern, top_level_dir)
+ # Post this discovery payload.
+ send_post_request(payload, test_run_pipe)
+ # Post EOT token.
+ eot_payload: EOTPayloadDict = {"command_type": "discovery", "eot": True}
+ send_post_request(eot_payload, test_run_pipe)
diff --git a/python_files/unittestadapter/execution.py b/python_files/unittestadapter/execution.py
new file mode 100644
index 000000000000..84cc10c4fb1f
--- /dev/null
+++ b/python_files/unittestadapter/execution.py
@@ -0,0 +1,357 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import atexit
+import enum
+import json
+import os
+import pathlib
+import socket
+import sys
+import traceback
+import sysconfig
+import unittest
+from types import TracebackType
+from typing import Dict, List, Optional, Tuple, Type, Union
+
+# Adds the scripts directory to the PATH as a workaround for enabling shell for test execution.
+path_var_name = "PATH" if "PATH" in os.environ else "Path"
+os.environ[path_var_name] = (
+ sysconfig.get_paths()["scripts"] + os.pathsep + os.environ[path_var_name]
+)
+
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+sys.path.insert(0, os.fspath(script_dir / "lib" / "python"))
+
+from testing_tools import process_json_util, socket_manager # noqa: E402
+from unittestadapter.pvsc_utils import ( # noqa: E402
+ VSCodeUnittestError,
+ parse_unittest_args,
+ send_post_request,
+ ExecutionPayloadDict,
+ EOTPayloadDict,
+ TestExecutionStatus,
+)
+
+ErrorType = Union[Tuple[Type[BaseException], BaseException, TracebackType], Tuple[None, None, None]]
+test_run_pipe = ""
+START_DIR = ""
+
+
+class TestOutcomeEnum(str, enum.Enum):
+ error = "error"
+ failure = "failure"
+ success = "success"
+ skipped = "skipped"
+ expected_failure = "expected-failure"
+ unexpected_success = "unexpected-success"
+ subtest_success = "subtest-success"
+ subtest_failure = "subtest-failure"
+
+
+class UnittestTestResult(unittest.TextTestResult):
+ def __init__(self, *args, **kwargs):
+ self.formatted: Dict[str, Dict[str, Union[str, None]]] = dict()
+ super(UnittestTestResult, self).__init__(*args, **kwargs)
+
+ def startTest(self, test: unittest.TestCase):
+ super(UnittestTestResult, self).startTest(test)
+
+ def addError(
+ self,
+ test: unittest.TestCase,
+ err: ErrorType,
+ ):
+ super(UnittestTestResult, self).addError(test, err)
+ self.formatResult(test, TestOutcomeEnum.error, err)
+
+ def addFailure(
+ self,
+ test: unittest.TestCase,
+ err: ErrorType,
+ ):
+ super(UnittestTestResult, self).addFailure(test, err)
+ self.formatResult(test, TestOutcomeEnum.failure, err)
+
+ def addSuccess(self, test: unittest.TestCase):
+ super(UnittestTestResult, self).addSuccess(test)
+ self.formatResult(test, TestOutcomeEnum.success)
+
+ def addSkip(self, test: unittest.TestCase, reason: str):
+ super(UnittestTestResult, self).addSkip(test, reason)
+ self.formatResult(test, TestOutcomeEnum.skipped)
+
+ def addExpectedFailure(self, test: unittest.TestCase, err: ErrorType):
+ super(UnittestTestResult, self).addExpectedFailure(test, err)
+ self.formatResult(test, TestOutcomeEnum.expected_failure, err)
+
+ def addUnexpectedSuccess(self, test: unittest.TestCase):
+ super(UnittestTestResult, self).addUnexpectedSuccess(test)
+ self.formatResult(test, TestOutcomeEnum.unexpected_success)
+
+ def addSubTest(
+ self,
+ test: unittest.TestCase,
+ subtest: unittest.TestCase,
+ err: Union[ErrorType, None],
+ ):
+ super(UnittestTestResult, self).addSubTest(test, subtest, err)
+ self.formatResult(
+ test,
+ TestOutcomeEnum.subtest_failure if err else TestOutcomeEnum.subtest_success,
+ err,
+ subtest,
+ )
+
+ def formatResult(
+ self,
+ test: unittest.TestCase,
+ outcome: str,
+ error: Union[ErrorType, None] = None,
+ subtest: Union[unittest.TestCase, None] = None,
+ ):
+ tb = None
+
+ message = ""
+ # error is a tuple of the form returned by sys.exc_info(): (type, value, traceback).
+ if error is not None:
+ try:
+ message = f"{error[0]} {error[1]}"
+ except Exception:
+ message = "Error occurred, unknown type or value"
+ formatted = traceback.format_exception(*error)
+ tb = "".join(formatted)
+ # Remove the 'Traceback (most recent call last)'
+ formatted = formatted[1:]
+ if subtest:
+ test_id = subtest.id()
+ else:
+ test_id = test.id()
+
+ result = {
+ "test": test.id(),
+ "outcome": outcome,
+ "message": message,
+ "traceback": tb,
+ "subtest": subtest.id() if subtest else None,
+ }
+ self.formatted[test_id] = result
+ test_run_pipe = os.getenv("TEST_RUN_PIPE")
+ if not test_run_pipe:
+ print(
+ "UNITTEST ERROR: TEST_RUN_PIPE is not set at the time of unittest trying to send data. "
+ f"TEST_RUN_PIPE = {test_run_pipe}\n",
+ file=sys.stderr,
+ )
+ raise VSCodeUnittestError(
+ "UNITTEST ERROR: TEST_RUN_PIPE is not set at the time of unittest trying to send data. "
+ )
+ send_run_data(result, test_run_pipe)
+
+
+def filter_tests(suite: unittest.TestSuite, test_ids: List[str]) -> unittest.TestSuite:
+ """Filter the tests in the suite to only run the ones with the given ids."""
+ filtered_suite = unittest.TestSuite()
+ for test in suite:
+ if isinstance(test, unittest.TestCase):
+ if test.id() in test_ids:
+ filtered_suite.addTest(test)
+ else:
+ filtered_suite.addTest(filter_tests(test, test_ids))
+ return filtered_suite
+
+
+def get_all_test_ids(suite: unittest.TestSuite) -> List[str]:
+ """Return a list of all test ids in the suite."""
+ test_ids = []
+ for test in suite:
+ if isinstance(test, unittest.TestCase):
+ test_ids.append(test.id())
+ else:
+ test_ids.extend(get_all_test_ids(test))
+ return test_ids
+
+
+def find_missing_tests(test_ids: List[str], suite: unittest.TestSuite) -> List[str]:
+ """Return a list of test ids that are not in the suite."""
+ all_test_ids = get_all_test_ids(suite)
+ return [test_id for test_id in test_ids if test_id not in all_test_ids]
+
+
+# Args: start_path path to a directory or a file, list of ids that may be empty.
+# Edge cases:
+# - if tests got deleted since the VS Code side last ran discovery and the current test run,
+# return these test ids in the "not_found" entry, and the VS Code side can process them as "unknown";
+# - if tests got added since the VS Code side last ran discovery and the current test run, ignore them.
+def run_tests(
+ start_dir: str,
+ test_ids: List[str],
+ pattern: str,
+ top_level_dir: Optional[str],
+ verbosity: int,
+ failfast: Optional[bool],
+ locals: Optional[bool] = None,
+) -> ExecutionPayloadDict:
+ cwd = os.path.abspath(start_dir)
+ if "/" in start_dir: # is a subdir
+ parent_dir = os.path.dirname(start_dir)
+ sys.path.insert(0, parent_dir)
+ else:
+ sys.path.insert(0, cwd)
+ status = TestExecutionStatus.error
+ error = None
+ payload: ExecutionPayloadDict = {"cwd": cwd, "status": status, "result": None}
+
+ try:
+ # If it's a file, split path and file name.
+ start_dir = cwd
+ if cwd.endswith(".py"):
+ start_dir = os.path.dirname(cwd)
+ pattern = os.path.basename(cwd)
+
+ if failfast is None:
+ failfast = False
+ if locals is None:
+ locals = False
+ if verbosity is None:
+ verbosity = 1
+ runner = unittest.TextTestRunner(
+ resultclass=UnittestTestResult,
+ tb_locals=locals,
+ failfast=failfast,
+ verbosity=verbosity,
+ )
+
+ # Discover tests at path with the file name as a pattern (if any).
+ loader = unittest.TestLoader()
+ suite = loader.discover(start_dir, pattern, top_level_dir)
+
+ # lets try to tailer our own suite so we can figure out running only the ones we want
+ tailor: unittest.TestSuite = filter_tests(suite, test_ids)
+
+ # If any tests are missing, add them to the payload.
+ not_found = find_missing_tests(test_ids, tailor)
+ if not_found:
+ missing_suite = loader.loadTestsFromNames(not_found)
+ tailor.addTests(missing_suite)
+
+ result: UnittestTestResult = runner.run(tailor) # type: ignore
+
+ payload["result"] = result.formatted
+
+ except Exception:
+ status = TestExecutionStatus.error
+ error = traceback.format_exc()
+
+ if error is not None:
+ payload["error"] = error
+ else:
+ status = TestExecutionStatus.success
+
+ payload["status"] = status
+
+ return payload
+
+
+__socket = None
+atexit.register(lambda: __socket.close() if __socket else None)
+
+
+def send_run_data(raw_data, test_run_pipe):
+ status = raw_data["outcome"]
+ cwd = os.path.abspath(START_DIR)
+ if raw_data["subtest"]:
+ test_id = raw_data["subtest"]
+ else:
+ test_id = raw_data["test"]
+ test_dict = {}
+ test_dict[test_id] = raw_data
+ payload: ExecutionPayloadDict = {"cwd": cwd, "status": status, "result": test_dict}
+ send_post_request(payload, test_run_pipe)
+
+
+if __name__ == "__main__":
+ # Get unittest test execution arguments.
+ argv = sys.argv[1:]
+ index = argv.index("--udiscovery")
+
+ (
+ start_dir,
+ pattern,
+ top_level_dir,
+ verbosity,
+ failfast,
+ locals,
+ ) = parse_unittest_args(argv[index + 1 :])
+
+ run_test_ids_pipe = os.environ.get("RUN_TEST_IDS_PIPE")
+ test_run_pipe = os.getenv("TEST_RUN_PIPE")
+
+ if not run_test_ids_pipe:
+ print("Error[vscode-unittest]: RUN_TEST_IDS_PIPE env var is not set.")
+ raise VSCodeUnittestError("Error[vscode-unittest]: RUN_TEST_IDS_PIPE env var is not set.")
+ if not test_run_pipe:
+ print("Error[vscode-unittest]: TEST_RUN_PIPE env var is not set.")
+ raise VSCodeUnittestError("Error[vscode-unittest]: TEST_RUN_PIPE env var is not set.")
+ test_ids_from_buffer = []
+ raw_json = None
+ try:
+ with socket_manager.PipeManager(run_test_ids_pipe) as sock:
+ buffer: str = ""
+ while True:
+ # Receive the data from the client
+ data: str = sock.read()
+ if not data:
+ break
+
+ # Append the received data to the buffer
+ buffer += data
+
+ try:
+ # Try to parse the buffer as JSON
+ raw_json = process_json_util.process_rpc_json(buffer)
+ # Clear the buffer as complete JSON object is received
+ buffer = ""
+ print("Received JSON data in run")
+ break
+ except json.JSONDecodeError:
+ # JSON decoding error, the complete JSON object is not yet received
+ continue
+ except socket.error as e:
+ msg = f"Error: Could not connect to RUN_TEST_IDS_PIPE: {e}"
+ print(msg)
+ raise VSCodeUnittestError(msg)
+
+ try:
+ if raw_json and "params" in raw_json:
+ test_ids_from_buffer = raw_json["params"]
+ if test_ids_from_buffer:
+ # Perform test execution.
+ payload = run_tests(
+ start_dir,
+ test_ids_from_buffer,
+ pattern,
+ top_level_dir,
+ verbosity,
+ failfast,
+ locals,
+ )
+ else:
+ # No test ids received from buffer
+ cwd = os.path.abspath(start_dir)
+ status = TestExecutionStatus.error
+ payload: ExecutionPayloadDict = {
+ "cwd": cwd,
+ "status": status,
+ "error": "No test ids received from buffer",
+ "result": None,
+ }
+ send_post_request(payload, test_run_pipe)
+ except json.JSONDecodeError:
+ msg = "Error: Could not parse test ids from stdin"
+ print(msg)
+ raise VSCodeUnittestError(msg)
+ eot_payload: EOTPayloadDict = {"command_type": "execution", "eot": True}
+ send_post_request(eot_payload, test_run_pipe)
diff --git a/python_files/unittestadapter/pvsc_utils.py b/python_files/unittestadapter/pvsc_utils.py
new file mode 100644
index 000000000000..2eba987603c0
--- /dev/null
+++ b/python_files/unittestadapter/pvsc_utils.py
@@ -0,0 +1,351 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import argparse
+import atexit
+import enum
+import inspect
+import json
+import os
+import pathlib
+import sys
+import unittest
+from typing import List, Optional, Tuple, Union, Dict, Literal, TypedDict
+
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+sys.path.append(os.fspath(script_dir / "lib" / "python"))
+
+from testing_tools import socket_manager # noqa: E402
+from typing_extensions import NotRequired # noqa: E402
+
+# Types
+
+
+# Inherit from str so it's JSON serializable.
+class TestNodeTypeEnum(str, enum.Enum):
+ class_ = "class"
+ file = "file"
+ folder = "folder"
+ test = "test"
+
+
+class TestData(TypedDict):
+ name: str
+ path: str
+ type_: TestNodeTypeEnum
+ id_: str
+
+
+class TestItem(TestData):
+ lineno: str
+ runID: str
+
+
+class TestNode(TestData):
+ children: "List[TestNode | TestItem]"
+
+
+class TestExecutionStatus(str, enum.Enum):
+ error = "error"
+ success = "success"
+
+
+class VSCodeUnittestError(Exception):
+ """A custom exception class for unittest errors."""
+
+ def __init__(self, message):
+ super().__init__(message)
+
+
+class DiscoveryPayloadDict(TypedDict):
+ cwd: str
+ status: Literal["success", "error"]
+ tests: Optional[TestNode]
+ error: NotRequired[List[str]]
+
+
+class ExecutionPayloadDict(TypedDict):
+ cwd: str
+ status: TestExecutionStatus
+ result: Optional[Dict[str, Dict[str, Optional[str]]]]
+ not_found: NotRequired[List[str]]
+ error: NotRequired[str]
+
+
+class EOTPayloadDict(TypedDict):
+ """A dictionary that is used to send a end of transmission post request to the server."""
+
+ command_type: Union[Literal["discovery"], Literal["execution"]]
+ eot: bool
+
+
+# Helper functions for data retrieval.
+
+
+def get_test_case(suite):
+ """Iterate through a unittest test suite and return all test cases."""
+ for test in suite:
+ if isinstance(test, unittest.TestCase):
+ yield test
+ else:
+ for test_case in get_test_case(test):
+ yield test_case
+
+
+def get_source_line(obj) -> str:
+ """Get the line number of a test case start line."""
+ try:
+ sourcelines, lineno = inspect.getsourcelines(obj)
+ except Exception:
+ try:
+ # tornado-specific, see https://github.com/microsoft/vscode-python/issues/17285.
+ sourcelines, lineno = inspect.getsourcelines(obj.orig_method)
+ except Exception:
+ return "*"
+
+ # Return the line number of the first line of the test case definition.
+ for i, v in enumerate(sourcelines):
+ if v.strip().startswith(("def", "async def")):
+ return str(lineno + i)
+
+ return "*"
+
+
+# Helper functions for test tree building.
+
+
+def build_test_node(path: str, name: str, type_: TestNodeTypeEnum) -> TestNode:
+ """Build a test node with no children. A test node can be a folder, a file or a class."""
+ ## figure out if we are folder, file, or class
+ id_gen = path
+ if type_ == TestNodeTypeEnum.folder or type_ == TestNodeTypeEnum.file:
+ id_gen = path
+ else:
+ # means we have to build test node for class
+ id_gen = path + "\\" + name
+
+ return {"path": path, "name": name, "type_": type_, "children": [], "id_": id_gen}
+
+
+def get_child_node(name: str, path: str, type_: TestNodeTypeEnum, root: TestNode) -> TestNode:
+ """Find a child node in a test tree given its name, type and path. If the node doesn't exist, create it.
+ Path is required to distinguish between nodes with the same name and type."""
+ try:
+ result = next(
+ node
+ for node in root["children"]
+ if node["name"] == name and node["type_"] == type_ and node["path"] == path
+ )
+ except StopIteration:
+ result = build_test_node(path, name, type_)
+ root["children"].append(result)
+
+ return result # type:ignore
+
+
+def build_test_tree(
+ suite: unittest.TestSuite, top_level_directory: str
+) -> Tuple[Union[TestNode, None], List[str]]:
+ """Build a test tree from a unittest test suite.
+
+ This function returns the test tree, and any errors found by unittest.
+ If no tests were discovered, return `None` and a list of errors (if any).
+
+ Test tree structure:
+ {
+ "path": ,
+ "type": "folder",
+ "name": ,
+ "children": [
+ { files and folders }
+ ...
+ {
+ "path": ,
+ "name": filename.py,
+ "type_": "file",
+ "children": [
+ {
+ "path": ,
+ "name": ,
+ "type_": "class",
+ "children": [
+ {
+ "path": ,
+ "name": ,
+ "type_": "test",
+ "lineno":
+ "id_": ,
+ }
+ ],
+ "id_":
+ }
+ ],
+ "id_":
+ }
+ ],
+ "id_":
+ }
+ """
+ error = []
+ directory_path = pathlib.PurePath(top_level_directory)
+ root = build_test_node(top_level_directory, directory_path.name, TestNodeTypeEnum.folder)
+
+ for test_case in get_test_case(suite):
+ test_id = test_case.id()
+ if test_id.startswith("unittest.loader._FailedTest"):
+ error.append(str(test_case._exception)) # type: ignore
+ elif test_id.startswith("unittest.loader.ModuleSkipped"):
+ components = test_id.split(".")
+ class_name = f"{components[-1]}.py"
+ # Find/build class node.
+ file_path = os.fsdecode(os.path.join(directory_path, class_name))
+ current_node = get_child_node(class_name, file_path, TestNodeTypeEnum.file, root)
+ else:
+ # Get the static test path components: filename, class name and function name.
+ components = test_id.split(".")
+ *folders, filename, class_name, function_name = components
+ py_filename = f"{filename}.py"
+
+ current_node = root
+
+ # Find/build nodes for the intermediate folders in the test path.
+ for folder in folders:
+ current_node = get_child_node(
+ folder,
+ os.fsdecode(pathlib.PurePath(current_node["path"], folder)),
+ TestNodeTypeEnum.folder,
+ current_node,
+ )
+
+ # Find/build file node.
+ path_components = [top_level_directory] + folders + [py_filename]
+ file_path = os.fsdecode(pathlib.PurePath("/".join(path_components)))
+ current_node = get_child_node(
+ py_filename, file_path, TestNodeTypeEnum.file, current_node
+ )
+
+ # Find/build class node.
+ current_node = get_child_node(
+ class_name, file_path, TestNodeTypeEnum.class_, current_node
+ )
+
+ # Get test line number.
+ test_method = getattr(test_case, test_case._testMethodName)
+ lineno = get_source_line(test_method)
+
+ # Add test node.
+ test_node: TestItem = {
+ "name": function_name,
+ "path": file_path,
+ "lineno": lineno,
+ "type_": TestNodeTypeEnum.test,
+ "id_": file_path + "\\" + class_name + "\\" + function_name,
+ "runID": test_id,
+ } # concatenate class name and function test name
+ current_node["children"].append(test_node)
+
+ if not root["children"]:
+ root = None
+
+ return root, error
+
+
+def parse_unittest_args(
+ args: List[str],
+) -> Tuple[str, str, Union[str, None], int, Union[bool, None], Union[bool, None]]:
+ """Parse command-line arguments that should be forwarded to unittest to perform discovery.
+
+ Valid unittest arguments are: -v, -s, -p, -t and their long-form counterparts,
+ however we only care about the last three.
+
+ The returned tuple contains the following items
+ - start_directory: The directory where to start discovery, defaults to .
+ - pattern: The pattern to match test files, defaults to test*.py
+ - top_level_directory: The top-level directory of the project, defaults to None,
+ and unittest will use start_directory behind the scenes.
+ """
+
+ arg_parser = argparse.ArgumentParser()
+ arg_parser.add_argument("--start-directory", "-s", default=".")
+ arg_parser.add_argument("--pattern", "-p", default="test*.py")
+ arg_parser.add_argument("--top-level-directory", "-t", default=None)
+ arg_parser.add_argument("--failfast", "-f", action="store_true", default=None)
+ arg_parser.add_argument("--verbose", "-v", action="store_true", default=None)
+ arg_parser.add_argument("-q", "--quiet", action="store_true", default=None)
+ arg_parser.add_argument("--locals", action="store_true", default=None)
+
+ parsed_args, _ = arg_parser.parse_known_args(args)
+
+ verbosity: int = 1
+ if parsed_args.quiet:
+ verbosity = 0
+ elif parsed_args.verbose:
+ verbosity = 2
+
+ return (
+ parsed_args.start_directory,
+ parsed_args.pattern,
+ parsed_args.top_level_directory,
+ verbosity,
+ parsed_args.failfast,
+ parsed_args.locals,
+ )
+
+
+__writer = None
+atexit.register(lambda: __writer.close() if __writer else None)
+
+
+def send_post_request(
+ payload: Union[ExecutionPayloadDict, DiscoveryPayloadDict, EOTPayloadDict],
+ test_run_pipe: str,
+):
+ """
+ Sends a post request to the server.
+
+ Keyword arguments:
+ payload -- the payload data to be sent.
+ test_run_pipe -- the name of the pipe to send the data to.
+ """
+ if not test_run_pipe:
+ error_msg = (
+ "UNITTEST ERROR: TEST_RUN_PIPE is not set at the time of unittest trying to send data. "
+ "Please confirm this environment variable is not being changed or removed "
+ "as it is required for successful test discovery and execution."
+ f"TEST_RUN_PIPE = {test_run_pipe}\n"
+ )
+ print(error_msg, file=sys.stderr)
+ raise VSCodeUnittestError(error_msg)
+
+ global __writer
+
+ if __writer is None:
+ try:
+ __writer = socket_manager.PipeManager(test_run_pipe)
+ __writer.connect()
+ except Exception as error:
+ error_msg = f"Error attempting to connect to extension named pipe {test_run_pipe}[vscode-unittest]: {error}"
+ __writer = None
+ raise VSCodeUnittestError(error_msg)
+
+ rpc = {
+ "jsonrpc": "2.0",
+ "params": payload,
+ }
+ data = json.dumps(rpc)
+
+ try:
+ if __writer:
+ __writer.write(data)
+ else:
+ print(
+ f"Connection error[vscode-unittest], writer is None \n[vscode-unittest] data: \n{data} \n",
+ file=sys.stderr,
+ )
+ except Exception as error:
+ print(
+ f"Exception thrown while attempting to send data[vscode-unittest]: {error} \n[vscode-unittest] data: \n{data}\n",
+ file=sys.stderr,
+ )
diff --git a/pythonFiles/visualstudio_py_testlauncher.py b/python_files/visualstudio_py_testlauncher.py
similarity index 83%
rename from pythonFiles/visualstudio_py_testlauncher.py
rename to python_files/visualstudio_py_testlauncher.py
index 3a43c1e1be34..b085d5ce4e6f 100644
--- a/pythonFiles/visualstudio_py_testlauncher.py
+++ b/python_files/visualstudio_py_testlauncher.py
@@ -17,18 +17,18 @@
__author__ = "Microsoft Corporation "
__version__ = "3.0.0.0"
-import os
-import sys
+import contextlib
import json
-import unittest
+import os
+import signal
import socket
+import sys
import traceback
-from types import CodeType, FunctionType
-import signal
+import unittest
try:
import thread
-except:
+except ModuleNotFoundError:
import _thread as thread
@@ -116,7 +116,7 @@ def close(self):
def readSocket(self):
try:
- data = self.socket.recv(1024)
+ self.socket.recv(1024)
self.callback()
except OSError:
if not self._closed:
@@ -162,13 +162,17 @@ def addSkip(self, test, reason):
def addExpectedFailure(self, test, err):
super(VsTestResult, self).addExpectedFailure(test, err)
- self.sendResult(test, "failed", err)
+ self.sendResult(test, "failed-expected", err)
def addUnexpectedSuccess(self, test):
super(VsTestResult, self).addUnexpectedSuccess(test)
- self.sendResult(test, "passed")
+ self.sendResult(test, "passed-unexpected")
- def sendResult(self, test, outcome, trace=None):
+ def addSubTest(self, test, subtest, err):
+ super(VsTestResult, self).addSubTest(test, subtest, err)
+ self.sendResult(test, "subtest-passed" if err is None else "subtest-failed", err, subtest)
+
+ def sendResult(self, test, outcome, trace=None, subtest=None):
if _channel is not None:
tb = None
message = None
@@ -179,23 +183,23 @@ def sendResult(self, test, outcome, trace=None):
formatted = formatted[1:]
tb = "".join(formatted)
message = str(trace[1])
- _channel.send_event(
- name="result",
- outcome=outcome,
- traceback=tb,
- message=message,
- test=test.id(),
- )
+
+ result = {
+ "outcome": outcome,
+ "traceback": tb,
+ "message": message,
+ "test": test.id(),
+ }
+ if subtest is not None:
+ result["subtest"] = subtest.id()
+ _channel.send_event("result", **result)
def stopTests():
try:
os.kill(os.getpid(), signal.SIGUSR1)
- except:
- try:
- os.kill(os.getpid(), signal.SIGTERM)
- except:
- pass
+ except Exception:
+ os.kill(os.getpid(), signal.SIGTERM)
class ExitCommand(Exception):
@@ -218,9 +222,7 @@ def main():
prog="visualstudio_py_testlauncher",
usage="Usage: %prog [] ... ",
)
- parser.add_option(
- "--debug", action="store_true", help="Whether debugging the unit tests"
- )
+ parser.add_option("--debug", action="store_true", help="Whether debugging the unit tests")
parser.add_option(
"-x",
"--mixed-mode",
@@ -235,9 +237,7 @@ def main():
action="append",
help="specifies a test to run",
)
- parser.add_option(
- "--testFile", type="str", help="Fully qualitified path to file name"
- )
+ parser.add_option("--testFile", type="str", help="Fully qualitified path to file name")
parser.add_option(
"-c", "--coverage", type="str", help="enable code coverage and specify filename"
)
@@ -263,31 +263,25 @@ def main():
help="Verbose output (0 none, 1 (no -v) simple, 2 (-v) full)",
)
parser.add_option("--uf", "--failfast", type="str", help="Stop on first failure")
- parser.add_option(
- "--uc", "--catch", type="str", help="Catch control-C and display results"
- )
+ parser.add_option("--uc", "--catch", type="str", help="Catch control-C and display results")
(opts, _) = parser.parse_args()
sys.path[0] = os.getcwd()
if opts.result_port:
try:
signal.signal(signal.SIGUSR1, signal_handler)
- except:
- try:
+ except Exception:
+ with contextlib.suppress(Exception):
signal.signal(signal.SIGTERM, signal_handler)
- except:
- pass
- _channel = _IpcChannel(
- socket.create_connection(("127.0.0.1", opts.result_port)), stopTests
- )
+ _channel = _IpcChannel(socket.create_connection(("127.0.0.1", opts.result_port)), stopTests)
sys.stdout = _TestOutput(sys.stdout, is_stdout=True)
sys.stderr = _TestOutput(sys.stderr, is_stdout=False)
if opts.mixed_mode:
# For mixed-mode attach, there's no ptvsd and hence no wait_for_attach(),
# so we have to use Win32 API in a loop to do the same thing.
+ from ctypes import c_char, windll
from time import sleep
- from ctypes import windll, c_char
while True:
if windll.kernel32.IsDebuggerPresent() != 0:
@@ -306,14 +300,12 @@ def main():
cov = None
try:
if opts.coverage:
- try:
+ with contextlib.suppress(Exception):
import coverage
cov = coverage.coverage(opts.coverage)
cov.load()
cov.start()
- except:
- pass
if opts.tests is None and opts.testFile is None:
if opts.us is None:
opts.us = "."
@@ -325,7 +317,9 @@ def main():
# Easier approach is find the test suite and use that for running
loader = unittest.TestLoader()
# opts.us will be passed in
- suites = loader.discover(opts.us, pattern=os.path.basename(opts.testFile))
+ suites = loader.discover(
+ opts.us, pattern=os.path.basename(opts.testFile), top_level_dir=opts.ut
+ )
suite = None
tests = None
if opts.tests is None:
@@ -335,16 +329,16 @@ def main():
# Run a specific test class or test method
for test_suite in suites._tests:
for cls in test_suite._tests:
- try:
+ with contextlib.suppress(Exception):
for m in cls._tests:
testId = m.id()
if testId.startswith(opts.tests[0]):
suite = cls
- if testId == opts.tests[0]:
- tests = unittest.TestSuite([m])
- break
- except Exception as err:
- errorMessage = traceback.format_exc()
+ if testId in opts.tests:
+ if tests is None:
+ tests = unittest.TestSuite([m])
+ else:
+ tests.addTest(m)
if tests is None:
tests = suite
if tests is None and suite is None:
@@ -362,9 +356,7 @@ def main():
verbosity=opts.uvInt, resultclass=VsTestResult, failfast=True
)
else:
- runner = unittest.TextTestRunner(
- verbosity=opts.uvInt, resultclass=VsTestResult
- )
+ runner = unittest.TextTestRunner(verbosity=opts.uvInt, resultclass=VsTestResult)
result = runner.run(tests)
if _channel is not None:
_channel.close()
@@ -378,14 +370,10 @@ def main():
_channel.send_event(name="done")
_channel.socket.close()
# prevent generation of the error 'Error in sys.exitfunc:'
- try:
+ with contextlib.suppress(Exception):
sys.stdout.close()
- except:
- pass
- try:
+ with contextlib.suppress(Exception):
sys.stderr.close()
- except:
- pass
if __name__ == "__main__":
diff --git a/pythonFiles/vscode_datascience_helpers/tests/logParser.py b/python_files/vscode_datascience_helpers/tests/logParser.py
similarity index 91%
rename from pythonFiles/vscode_datascience_helpers/tests/logParser.py
rename to python_files/vscode_datascience_helpers/tests/logParser.py
index 767f837c5136..e07a38e9d4d3 100644
--- a/pythonFiles/vscode_datascience_helpers/tests/logParser.py
+++ b/python_files/vscode_datascience_helpers/tests/logParser.py
@@ -1,17 +1,15 @@
-from io import TextIOWrapper
-import sys
import argparse
import os
+import re
+from io import TextIOWrapper
+from pathlib import Path
os.system("color")
-from pathlib import Path
-import re
+
parser = argparse.ArgumentParser(description="Parse a test log into its parts")
parser.add_argument("testlog", type=str, nargs=1, help="Log to parse")
-parser.add_argument(
- "--testoutput", action="store_true", help="Show all failures and passes"
-)
+parser.add_argument("--testoutput", action="store_true", help="Show all failures and passes")
parser.add_argument(
"--split",
action="store_true",
@@ -39,7 +37,7 @@ def printTestOutput(testlog):
with p.open() as f:
for line in readStripLines(f):
stripped = line.strip()
- if len(stripped) > 2 and stripped[0] == "\x1B" and stripped[1] == "[":
+ if len(stripped) > 2 and stripped[0] == "\x1b" and stripped[1] == "[":
print(line.rstrip()) # Should be a test line as it has color encoding
@@ -63,14 +61,14 @@ def splitByPid(testlog):
pid = int(match.group(1))
# See if we've created a log for this pid or not
- if not pid in pids:
+ if pid not in pids:
pids.add(pid)
logFile = "{}_{}.log".format(baseFile, pid)
print("Writing to new log: " + logFile)
logs[pid] = Path(logFile).open(mode="w")
# Add this line to the log
- if pid != None:
+ if pid is not None:
logs[pid].write(line)
# Close all of the open logs
for key in logs:
diff --git a/python_files/vscode_pytest/__init__.py b/python_files/vscode_pytest/__init__.py
new file mode 100644
index 000000000000..a7b197ca26a5
--- /dev/null
+++ b/python_files/vscode_pytest/__init__.py
@@ -0,0 +1,904 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import atexit
+import json
+import os
+import pathlib
+import sys
+import traceback
+
+
+import pytest
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+sys.path.append(os.fspath(script_dir / "lib" / "python"))
+from testing_tools import socket_manager # noqa: E402
+from typing import ( # noqa: E402
+ Any,
+ Dict,
+ List,
+ Optional,
+ Union,
+ TypedDict,
+ Literal,
+ Generator,
+)
+
+
+class TestData(TypedDict):
+ """A general class that all test objects inherit from."""
+
+ name: str
+ path: pathlib.Path
+ type_: Literal["class", "function", "file", "folder", "test", "error"]
+ id_: str
+
+
+class TestItem(TestData):
+ """A class defining test items."""
+
+ lineno: str
+ runID: str
+
+
+class TestNode(TestData):
+ """A general class that handles all test data which contains children."""
+
+ children: "list[Union[TestNode, TestItem, None]]"
+
+
+class VSCodePytestError(Exception):
+ """A custom exception class for pytest errors."""
+
+ def __init__(self, message):
+ super().__init__(message)
+
+
+ERRORS = []
+IS_DISCOVERY = False
+map_id_to_path = dict()
+collected_tests_so_far = list()
+TEST_RUN_PIPE = os.getenv("TEST_RUN_PIPE")
+SYMLINK_PATH = None
+
+
+def pytest_load_initial_conftests(early_config, parser, args):
+ global TEST_RUN_PIPE
+ TEST_RUN_PIPE = os.getenv("TEST_RUN_PIPE")
+ error_string = (
+ "PYTEST ERROR: TEST_RUN_PIPE is not set at the time of pytest starting. "
+ "Please confirm this environment variable is not being changed or removed "
+ "as it is required for successful test discovery and execution."
+ f"TEST_RUN_PIPE = {TEST_RUN_PIPE}\n"
+ )
+ if not TEST_RUN_PIPE:
+ print(error_string, file=sys.stderr)
+ if "--collect-only" in args:
+ global IS_DISCOVERY
+ IS_DISCOVERY = True
+
+ # check if --rootdir is in the args
+ for arg in args:
+ if "--rootdir=" in arg:
+ rootdir = arg.split("--rootdir=")[1]
+ if not os.path.exists(rootdir):
+ raise VSCodePytestError(
+ f"The path set in the argument --rootdir={rootdir} does not exist."
+ )
+
+ # Check if the rootdir is a symlink or a child of a symlink to the current cwd.
+ isSymlink = False
+
+ if os.path.islink(rootdir):
+ isSymlink = True
+ print(
+ f"Plugin info[vscode-pytest]: rootdir argument, {rootdir}, is identified as a symlink."
+ )
+ elif pathlib.Path(os.path.realpath(rootdir)) != rootdir:
+ print("Plugin info[vscode-pytest]: Checking if rootdir is a child of a symlink.")
+ isSymlink = has_symlink_parent(rootdir)
+ if isSymlink:
+ print(
+ f"Plugin info[vscode-pytest]: rootdir argument, {rootdir}, is identified as a symlink or child of a symlink, adjusting pytest paths accordingly.",
+ )
+ global SYMLINK_PATH
+ SYMLINK_PATH = pathlib.Path(rootdir)
+
+
+def pytest_internalerror(excrepr, excinfo):
+ """A pytest hook that is called when an internal error occurs.
+
+ Keyword arguments:
+ excrepr -- the exception representation.
+ excinfo -- the exception information of type ExceptionInfo.
+ """
+ # call.excinfo.exconly() returns the exception as a string.
+ ERRORS.append(excinfo.exconly() + "\n Check Python Test Logs for more details.")
+
+
+def pytest_exception_interact(node, call, report):
+ """A pytest hook that is called when an exception is raised which could be handled.
+
+ Keyword arguments:
+ node -- the node that raised the exception.
+ call -- the call object.
+ report -- the report object of either type CollectReport or TestReport.
+ """
+ # call.excinfo is the captured exception of the call, if it raised as type ExceptionInfo.
+ # call.excinfo.exconly() returns the exception as a string.
+ # If it is during discovery, then add the error to error logs.
+ if IS_DISCOVERY:
+ if call.excinfo and call.excinfo.typename != "AssertionError":
+ if report.outcome == "skipped" and "SkipTest" in str(call):
+ return
+ ERRORS.append(call.excinfo.exconly() + "\n Check Python Test Logs for more details.")
+ else:
+ ERRORS.append(report.longreprtext + "\n Check Python Test Logs for more details.")
+ else:
+ # If during execution, send this data that the given node failed.
+ report_value = "error"
+ if call.excinfo.typename == "AssertionError":
+ report_value = "failure"
+ node_id = get_absolute_test_id(node.nodeid, get_node_path(node))
+ if node_id not in collected_tests_so_far:
+ collected_tests_so_far.append(node_id)
+ item_result = create_test_outcome(
+ node_id,
+ report_value,
+ "Test failed with exception",
+ report.longreprtext,
+ )
+ collected_test = testRunResultDict()
+ collected_test[node_id] = item_result
+ cwd = pathlib.Path.cwd()
+ execution_post(
+ os.fsdecode(cwd),
+ "success",
+ collected_test if collected_test else None,
+ )
+
+
+def has_symlink_parent(current_path):
+ """Recursively checks if any parent directories of the given path are symbolic links."""
+ # Convert the current path to an absolute Path object
+ curr_path = pathlib.Path(current_path)
+ print("Checking for symlink parent starting at current path: ", curr_path)
+
+ # Iterate over all parent directories
+ for parent in curr_path.parents:
+ # Check if the parent directory is a symlink
+ if os.path.islink(parent):
+ print(f"Symlink found at: {parent}")
+ return True
+ return False
+
+
+def get_absolute_test_id(test_id: str, testPath: pathlib.Path) -> str:
+ """A function that returns the absolute test id. This is necessary because testIds are relative to the rootdir.
+ This does not work for our case since testIds when referenced during run time are relative to the instantiation
+ location. Absolute paths for testIds are necessary for the test tree ensures configurations that change the rootdir
+ of pytest are handled correctly.
+
+ Keyword arguments:
+ test_id -- the pytest id of the test which is relative to the rootdir.
+ testPath -- the path to the file the test is located in, as a pathlib.Path object.
+ """
+ split_id = test_id.split("::")[1:]
+ absolute_test_id = "::".join([str(testPath), *split_id])
+ return absolute_test_id
+
+
+def pytest_keyboard_interrupt(excinfo):
+ """A pytest hook that is called when a keyboard interrupt is raised.
+
+ Keyword arguments:
+ excinfo -- the exception information of type ExceptionInfo.
+ """
+ # The function execonly() returns the exception as a string.
+ ERRORS.append(excinfo.exconly() + "\n Check Python Test Logs for more details.")
+
+
+class TestOutcome(Dict):
+ """A class that handles outcome for a single test.
+
+ for pytest the outcome for a test is only 'passed', 'skipped' or 'failed'
+ """
+
+ test: str
+ outcome: Literal["success", "failure", "skipped", "error"]
+ message: Union[str, None]
+ traceback: Union[str, None]
+ subtest: Optional[str]
+
+
+def create_test_outcome(
+ testid: str,
+ outcome: str,
+ message: Union[str, None],
+ traceback: Union[str, None],
+ subtype: Optional[str] = None,
+) -> TestOutcome:
+ """A function that creates a TestOutcome object."""
+ return TestOutcome(
+ test=testid,
+ outcome=outcome,
+ message=message,
+ traceback=traceback, # TODO: traceback
+ subtest=None,
+ )
+
+
+class testRunResultDict(Dict[str, Dict[str, TestOutcome]]):
+ """A class that stores all test run results."""
+
+ outcome: str
+ tests: Dict[str, TestOutcome]
+
+
+@pytest.hookimpl(hookwrapper=True, trylast=True)
+def pytest_report_teststatus(report, config):
+ """
+ A pytest hook that is called when a test is called. It is called 3 times per test,
+ during setup, call, and teardown.
+ Keyword arguments:
+ report -- the report on the test setup, call, and teardown.
+ config -- configuration object.
+ """
+ cwd = pathlib.Path.cwd()
+ if SYMLINK_PATH:
+ cwd = SYMLINK_PATH
+
+ if report.when == "call":
+ traceback = None
+ message = None
+ report_value = "skipped"
+ if report.passed:
+ report_value = "success"
+ elif report.failed:
+ report_value = "failure"
+ message = report.longreprtext
+ try:
+ node_path = map_id_to_path[report.nodeid]
+ except KeyError:
+ node_path = cwd
+ # Calculate the absolute test id and use this as the ID moving forward.
+ absolute_node_id = get_absolute_test_id(report.nodeid, node_path)
+ if absolute_node_id not in collected_tests_so_far:
+ collected_tests_so_far.append(absolute_node_id)
+ item_result = create_test_outcome(
+ absolute_node_id,
+ report_value,
+ message,
+ traceback,
+ )
+ collected_test = testRunResultDict()
+ collected_test[absolute_node_id] = item_result
+ execution_post(
+ os.fsdecode(cwd),
+ "success",
+ collected_test if collected_test else None,
+ )
+ yield
+
+
+ERROR_MESSAGE_CONST = {
+ 2: "Pytest was unable to start or run any tests due to issues with test discovery or test collection.",
+ 3: "Pytest was interrupted by the user, for example by pressing Ctrl+C during test execution.",
+ 4: "Pytest encountered an internal error or exception during test execution.",
+ 5: "Pytest was unable to find any tests to run.",
+}
+
+
+@pytest.hookimpl(hookwrapper=True, trylast=True)
+def pytest_runtest_protocol(item, nextitem):
+ map_id_to_path[item.nodeid] = get_node_path(item)
+ skipped = check_skipped_wrapper(item)
+ if skipped:
+ absolute_node_id = get_absolute_test_id(item.nodeid, get_node_path(item))
+ report_value = "skipped"
+ cwd = pathlib.Path.cwd()
+ if absolute_node_id not in collected_tests_so_far:
+ collected_tests_so_far.append(absolute_node_id)
+ item_result = create_test_outcome(
+ absolute_node_id,
+ report_value,
+ None,
+ None,
+ )
+ collected_test = testRunResultDict()
+ collected_test[absolute_node_id] = item_result
+ execution_post(
+ os.fsdecode(cwd),
+ "success",
+ collected_test if collected_test else None,
+ )
+ yield
+
+
+def check_skipped_wrapper(item):
+ """A function that checks if a test is skipped or not by check its markers and its parent markers.
+
+ Returns True if the test is marked as skipped at any level, False otherwise.
+
+ Keyword arguments:
+ item -- the pytest item object.
+ """
+ if item.own_markers:
+ if check_skipped_condition(item):
+ return True
+ parent = item.parent
+ while isinstance(parent, pytest.Class):
+ if parent.own_markers:
+ if check_skipped_condition(parent):
+ return True
+ parent = parent.parent
+ return False
+
+
+def check_skipped_condition(item):
+ """A helper function that checks if a item has a skip or a true skip condition.
+
+ Keyword arguments:
+ item -- the pytest item object.
+ """
+
+ for marker in item.own_markers:
+ # If the test is marked with skip then it will not hit the pytest_report_teststatus hook,
+ # therefore we need to handle it as skipped here.
+ skip_condition = False
+ if marker.name == "skipif":
+ skip_condition = any(marker.args)
+ if marker.name == "skip" or skip_condition:
+ return True
+ return False
+
+
+def pytest_sessionfinish(session, exitstatus):
+ """A pytest hook that is called after pytest has fulled finished.
+
+ Keyword arguments:
+ session -- the pytest session object.
+ exitstatus -- the status code of the session.
+
+ Exit code 0: All tests were collected and passed successfully
+ Exit code 1: Tests were collected and run but some of the tests failed
+ Exit code 2: Test execution was interrupted by the user
+ Exit code 3: Internal error happened while executing tests
+ Exit code 4: pytest command line usage error
+ Exit code 5: No tests were collected
+ """
+ cwd = pathlib.Path.cwd()
+ if SYMLINK_PATH:
+ print("Plugin warning[vscode-pytest]: SYMLINK set, adjusting cwd.")
+ cwd = pathlib.Path(SYMLINK_PATH)
+
+ if IS_DISCOVERY:
+ if not (exitstatus == 0 or exitstatus == 1 or exitstatus == 5):
+ errorNode: TestNode = {
+ "name": "",
+ "path": cwd,
+ "type_": "error",
+ "children": [],
+ "id_": "",
+ }
+ post_response(os.fsdecode(cwd), errorNode)
+ try:
+ session_node: Union[TestNode, None] = build_test_tree(session)
+ if not session_node:
+ raise VSCodePytestError(
+ "Something went wrong following pytest finish, \
+ no session node was created"
+ )
+ post_response(os.fsdecode(cwd), session_node)
+ except Exception as e:
+ ERRORS.append(
+ f"Error Occurred, traceback: {(traceback.format_exc() if e.__traceback__ else '')}"
+ )
+ errorNode: TestNode = {
+ "name": "",
+ "path": cwd,
+ "type_": "error",
+ "children": [],
+ "id_": "",
+ }
+ post_response(os.fsdecode(cwd), errorNode)
+ else:
+ if exitstatus == 0 or exitstatus == 1:
+ exitstatus_bool = "success"
+ else:
+ ERRORS.append(
+ f"Pytest exited with error status: {exitstatus}, {ERROR_MESSAGE_CONST[exitstatus]}"
+ )
+ exitstatus_bool = "error"
+
+ execution_post(
+ os.fsdecode(cwd),
+ exitstatus_bool,
+ None,
+ )
+ # send end of transmission token
+ command_type = "discovery" if IS_DISCOVERY else "execution"
+ payload: EOTPayloadDict = {"command_type": command_type, "eot": True}
+ send_post_request(payload)
+
+
+def build_test_tree(session: pytest.Session) -> TestNode:
+ """Builds a tree made up of testing nodes from the pytest session.
+
+ Keyword arguments:
+ session -- the pytest session object.
+ """
+ session_node = create_session_node(session)
+ session_children_dict: Dict[str, TestNode] = {}
+ file_nodes_dict: Dict[Any, TestNode] = {}
+ class_nodes_dict: Dict[str, TestNode] = {}
+ function_nodes_dict: Dict[str, TestNode] = {}
+
+ # Check to see if the global variable for symlink path is set
+ if SYMLINK_PATH:
+ session_node["path"] = SYMLINK_PATH
+ session_node["id_"] = os.fspath(SYMLINK_PATH)
+
+ for test_case in session.items:
+ test_node = create_test_node(test_case)
+ if hasattr(test_case, "callspec"): # This means it is a parameterized test.
+ function_name: str = ""
+ # parameterized test cases cut the repetitive part of the name off.
+ parent_part, parameterized_section = test_node["name"].split("[", 1)
+ test_node["name"] = "[" + parameterized_section
+
+ first_split = test_case.nodeid.rsplit(
+ "::", 1
+ ) # splits the parameterized test name from the rest of the nodeid
+ second_split = first_split[0].rsplit(
+ ".py", 1
+ ) # splits the file path from the rest of the nodeid
+
+ class_and_method = second_split[1] + "::" # This has "::" separator at both ends
+ # construct the parent id, so it is absolute path :: any class and method :: parent_part
+ parent_id = os.fspath(get_node_path(test_case)) + class_and_method + parent_part
+ # file, middle, param = test_case.nodeid.rsplit("::", 2)
+ # parent_id = test_case.nodeid.rsplit("::", 1)[0] + "::" + parent_part
+ # parent_path = os.fspath(get_node_path(test_case)) + "::" + parent_part
+ try:
+ function_name = test_case.originalname # type: ignore
+ function_test_node = function_nodes_dict[parent_id]
+ except AttributeError: # actual error has occurred
+ ERRORS.append(
+ f"unable to find original name for {test_case.name} with parameterization detected."
+ )
+ raise VSCodePytestError("Unable to find original name for parameterized test case")
+ except KeyError:
+ function_test_node: TestNode = create_parameterized_function_node(
+ function_name, get_node_path(test_case), parent_id
+ )
+ function_nodes_dict[parent_id] = function_test_node
+ if test_node not in function_test_node["children"]:
+ function_test_node["children"].append(test_node)
+ # Check if the parent node of the function is file, if so create/add to this file node.
+ if isinstance(test_case.parent, pytest.File):
+ try:
+ parent_test_case = file_nodes_dict[test_case.parent]
+ except KeyError:
+ parent_test_case = create_file_node(test_case.parent)
+ file_nodes_dict[test_case.parent] = parent_test_case
+ if function_test_node not in parent_test_case["children"]:
+ parent_test_case["children"].append(function_test_node)
+ # If the parent is not a file, it is a class, add the function node as the test node to handle subsequent nesting.
+ test_node = function_test_node
+ if isinstance(test_case.parent, pytest.Class):
+ case_iter = test_case.parent
+ node_child_iter = test_node
+ test_class_node: Union[TestNode, None] = None
+ while isinstance(case_iter, pytest.Class):
+ # While the given node is a class, create a class and nest the previous node as a child.
+ try:
+ test_class_node = class_nodes_dict[case_iter.nodeid]
+ except KeyError:
+ test_class_node = create_class_node(case_iter)
+ class_nodes_dict[case_iter.nodeid] = test_class_node
+ # Check if the class already has the child node. This will occur if the test is parameterized.
+ if node_child_iter not in test_class_node["children"]:
+ test_class_node["children"].append(node_child_iter)
+ # Iterate up.
+ node_child_iter = test_class_node
+ case_iter = case_iter.parent
+ # Now the parent node is not a class node, it is a file node.
+ if case_iter:
+ parent_module = case_iter
+ else:
+ ERRORS.append(f"Test class {case_iter} has no parent")
+ break
+ # Create a file node that has the last class as a child.
+ try:
+ test_file_node: TestNode = file_nodes_dict[parent_module]
+ except KeyError:
+ test_file_node = create_file_node(parent_module)
+ file_nodes_dict[parent_module] = test_file_node
+ # Check if the class is already a child of the file node.
+ if test_class_node is not None and test_class_node not in test_file_node["children"]:
+ test_file_node["children"].append(test_class_node)
+ elif not hasattr(test_case, "callspec"):
+ # This includes test cases that are pytest functions or a doctests.
+ try:
+ parent_test_case = file_nodes_dict[test_case.parent]
+ except KeyError:
+ parent_test_case = create_file_node(test_case.parent)
+ file_nodes_dict[test_case.parent] = parent_test_case
+ parent_test_case["children"].append(test_node)
+ created_files_folders_dict: Dict[str, TestNode] = {}
+ for _, file_node in file_nodes_dict.items():
+ # Iterate through all the files that exist and construct them into nested folders.
+ root_folder_node: TestNode
+ try:
+ root_folder_node: TestNode = build_nested_folders(
+ file_node, created_files_folders_dict, session_node
+ )
+ except ValueError:
+ # This exception is raised when the session node is not a parent of the file node.
+ print(
+ "[vscode-pytest]: Session path not a parent of test paths, adjusting session node to common parent."
+ )
+ common_parent = os.path.commonpath([file_node["path"], get_node_path(session)])
+ common_parent_path = pathlib.Path(common_parent)
+ print("[vscode-pytest]: Session node now set to: ", common_parent)
+ session_node["path"] = common_parent_path # pathlib.Path
+ session_node["id_"] = common_parent # str
+ session_node["name"] = common_parent_path.name # str
+ root_folder_node = build_nested_folders(
+ file_node, created_files_folders_dict, session_node
+ )
+ # The final folder we get to is the highest folder in the path
+ # and therefore we add this as a child to the session.
+ root_id = root_folder_node.get("id_")
+ if root_id and root_id not in session_children_dict:
+ session_children_dict[root_id] = root_folder_node
+ session_node["children"] = list(session_children_dict.values())
+ return session_node
+
+
+def build_nested_folders(
+ file_node: TestNode,
+ created_files_folders_dict: Dict[str, TestNode],
+ session_node: TestNode,
+) -> TestNode:
+ """Takes a file or folder and builds the nested folder structure for it.
+
+ Keyword arguments:
+ file_module -- the created module for the file we are nesting.
+ file_node -- the file node that we are building the nested folders for.
+ created_files_folders_dict -- Dictionary of all the folders and files that have been created where the key is the path.
+ session -- the pytest session object.
+ """
+ # check if session node is a parent of the file node, throw error if not.
+ session_node_path = session_node["path"]
+ is_relative = False
+ try:
+ is_relative = file_node["path"].is_relative_to(session_node_path)
+ except AttributeError:
+ is_relative = file_node["path"].relative_to(session_node_path)
+ if not is_relative:
+ # If the session node is not a parent of the file node, we need to find their common parent.
+ raise ValueError("session and file not relative to each other, fixing now....")
+
+ # Begin the iterator_path one level above the current file.
+ prev_folder_node = file_node
+ iterator_path = file_node["path"].parent
+ counter = 0
+ max_iter = 100
+ while iterator_path != session_node_path:
+ curr_folder_name = iterator_path.name
+ try:
+ curr_folder_node: TestNode = created_files_folders_dict[os.fspath(iterator_path)]
+ except KeyError:
+ curr_folder_node: TestNode = create_folder_node(curr_folder_name, iterator_path)
+ created_files_folders_dict[os.fspath(iterator_path)] = curr_folder_node
+ if prev_folder_node not in curr_folder_node["children"]:
+ curr_folder_node["children"].append(prev_folder_node)
+ iterator_path = iterator_path.parent
+ prev_folder_node = curr_folder_node
+ # Handles error where infinite loop occurs.
+ counter += 1
+ if counter > max_iter:
+ raise ValueError(
+ "[vscode-pytest]: Infinite loop occurred in build_nested_folders. iterator_path: ",
+ iterator_path,
+ "session_node_path: ",
+ session_node_path,
+ )
+ return prev_folder_node
+
+
+def create_test_node(
+ test_case: pytest.Item,
+) -> TestItem:
+ """Creates a test node from a pytest test case.
+
+ Keyword arguments:
+ test_case -- the pytest test case.
+ """
+ test_case_loc: str = (
+ str(test_case.location[1] + 1) if (test_case.location[1] is not None) else ""
+ )
+ absolute_test_id = get_absolute_test_id(test_case.nodeid, get_node_path(test_case))
+ return {
+ "name": test_case.name,
+ "path": get_node_path(test_case),
+ "lineno": test_case_loc,
+ "type_": "test",
+ "id_": absolute_test_id,
+ "runID": absolute_test_id,
+ }
+
+
+def create_session_node(session: pytest.Session) -> TestNode:
+ """Creates a session node from a pytest session.
+
+ Keyword arguments:
+ session -- the pytest session.
+ """
+ node_path = get_node_path(session)
+ return {
+ "name": node_path.name,
+ "path": node_path,
+ "type_": "folder",
+ "children": [],
+ "id_": os.fspath(node_path),
+ }
+
+
+def create_class_node(class_module: pytest.Class) -> TestNode:
+ """Creates a class node from a pytest class object.
+
+ Keyword arguments:
+ class_module -- the pytest object representing a class module.
+ """
+ return {
+ "name": class_module.name,
+ "path": get_node_path(class_module),
+ "type_": "class",
+ "children": [],
+ "id_": class_module.nodeid,
+ }
+
+
+def create_parameterized_function_node(
+ function_name: str, test_path: pathlib.Path, function_id: str
+) -> TestNode:
+ """Creates a function node to be the parent for the parameterized test nodes.
+
+ Keyword arguments:
+ function_name -- the name of the function.
+ test_path -- the path to the test file.
+ function_id -- the previously constructed function id that fits the pattern- absolute path :: any class and method :: parent_part
+ must be edited to get a unique id for the function node.
+ """
+ return {
+ "name": function_name,
+ "path": test_path,
+ "type_": "function",
+ "children": [],
+ "id_": function_id,
+ }
+
+
+def create_file_node(file_module: Any) -> TestNode:
+ """Creates a file node from a pytest file module.
+
+ Keyword arguments:
+ file_module -- the pytest file module.
+ """
+ node_path = get_node_path(file_module)
+ return {
+ "name": node_path.name,
+ "path": node_path,
+ "type_": "file",
+ "id_": os.fspath(node_path),
+ "children": [],
+ }
+
+
+def create_folder_node(folder_name: str, path_iterator: pathlib.Path) -> TestNode:
+ """Creates a folder node from a pytest folder name and its path.
+
+ Keyword arguments:
+ folderName -- the name of the folder.
+ path_iterator -- the path of the folder.
+ """
+ return {
+ "name": folder_name,
+ "path": path_iterator,
+ "type_": "folder",
+ "id_": os.fspath(path_iterator),
+ "children": [],
+ }
+
+
+class DiscoveryPayloadDict(TypedDict):
+ """A dictionary that is used to send a post request to the server."""
+
+ cwd: str
+ status: Literal["success", "error"]
+ tests: Optional[TestNode]
+ error: Optional[List[str]]
+
+
+class ExecutionPayloadDict(Dict):
+ """
+ A dictionary that is used to send a execution post request to the server.
+ """
+
+ cwd: str
+ status: Literal["success", "error"]
+ result: Union[testRunResultDict, None]
+ not_found: Union[List[str], None] # Currently unused need to check
+ error: Union[str, None] # Currently unused need to check
+
+
+class EOTPayloadDict(TypedDict):
+ """A dictionary that is used to send a end of transmission post request to the server."""
+
+ command_type: Union[Literal["discovery"], Literal["execution"]]
+ eot: bool
+
+
+def get_node_path(node: Any) -> pathlib.Path:
+ """
+ A function that returns the path of a node given the switch to pathlib.Path.
+ It also evaluates if the node is a symlink and returns the equivalent path.
+ """
+ node_path = getattr(node, "path", None) or pathlib.Path(node.fspath)
+
+ if not node_path:
+ raise VSCodePytestError(
+ f"Unable to find path for node: {node}, node.path: {node.path}, node.fspath: {node.fspath}"
+ )
+
+ # Check for the session node since it has the symlink already.
+ if SYMLINK_PATH and not isinstance(node, pytest.Session):
+ # Get relative between the cwd (resolved path) and the node path.
+ try:
+ # check to see if the node path contains the symlink root already
+ common_path = os.path.commonpath([SYMLINK_PATH, node_path])
+ if common_path == os.fsdecode(SYMLINK_PATH):
+ # node path is already relative to the SYMLINK_PATH root therefore return
+ return node_path
+ else:
+ # if the node path is not a symlink, then we need to calculate the equivalent symlink path
+ # get the relative path between the cwd and the node path (as the node path is not a symlink)
+ rel_path = node_path.relative_to(pathlib.Path.cwd())
+ # combine the difference between the cwd and the node path with the symlink path
+ sym_path = pathlib.Path(os.path.join(SYMLINK_PATH, rel_path))
+ return sym_path
+ except Exception as e:
+ raise VSCodePytestError(
+ f"Error occurred while calculating symlink equivalent from node path: {e}"
+ f"\n SYMLINK_PATH: {SYMLINK_PATH}, \n node path: {node_path}, \n cwd: {pathlib.Path.cwd()}"
+ )
+ return node_path
+
+
+__writer = None
+atexit.register(lambda: __writer.close() if __writer else None)
+
+
+def execution_post(
+ cwd: str, status: Literal["success", "error"], tests: Union[testRunResultDict, None]
+):
+ """
+ Sends a POST request with execution payload details.
+
+ Args:
+ cwd (str): Current working directory.
+ status (Literal["success", "error"]): Execution status indicating success or error.
+ tests (Union[testRunResultDict, None]): Test run results, if available.
+ """
+
+ payload: ExecutionPayloadDict = ExecutionPayloadDict(
+ cwd=cwd, status=status, result=tests, not_found=None, error=None
+ )
+ if ERRORS:
+ payload["error"] = ERRORS
+ send_post_request(payload)
+
+
+def post_response(cwd: str, session_node: TestNode) -> None:
+ """
+ Sends a POST request with test session details in payload.
+
+ Args:
+ cwd (str): Current working directory.
+ session_node (TestNode): Node information of the test session.
+ """
+ payload: DiscoveryPayloadDict = {
+ "cwd": cwd,
+ "status": "success" if not ERRORS else "error",
+ "tests": session_node,
+ "error": [],
+ }
+ if ERRORS is not None:
+ payload["error"] = ERRORS
+ send_post_request(payload, cls_encoder=PathEncoder)
+
+
+class PathEncoder(json.JSONEncoder):
+ """A custom JSON encoder that encodes pathlib.Path objects as strings."""
+
+ def default(self, obj):
+ if isinstance(obj, pathlib.Path):
+ return os.fspath(obj)
+ return super().default(obj)
+
+
+def send_post_request(
+ payload: Union[ExecutionPayloadDict, DiscoveryPayloadDict, EOTPayloadDict],
+ cls_encoder=None,
+):
+ """
+ Sends a post request to the server.
+
+ Keyword arguments:
+ payload -- the payload data to be sent.
+ cls_encoder -- a custom encoder if needed.
+ """
+ if not TEST_RUN_PIPE:
+ error_msg = (
+ "PYTEST ERROR: TEST_RUN_PIPE is not set at the time of pytest starting. "
+ "Please confirm this environment variable is not being changed or removed "
+ "as it is required for successful test discovery and execution."
+ f"TEST_RUN_PIPE = {TEST_RUN_PIPE}\n"
+ )
+ print(error_msg, file=sys.stderr)
+ raise VSCodePytestError(error_msg)
+
+ global __writer
+
+ if __writer is None:
+ try:
+ __writer = socket_manager.PipeManager(TEST_RUN_PIPE)
+ __writer.connect()
+ except Exception as error:
+ error_msg = f"Error attempting to connect to extension named pipe {TEST_RUN_PIPE}[vscode-pytest]: {error}"
+ print(error_msg, file=sys.stderr)
+ print(
+ "If you are on a Windows machine, this error may be occurring if any of your tests clear environment variables"
+ " as they are required to communicate with the extension. Please reference https://docs.pytest.org/en/stable/how-to/monkeypatch.html#monkeypatching-environment-variables"
+ "for the correct way to clear environment variables during testing.\n",
+ file=sys.stderr,
+ )
+ __writer = None
+ raise VSCodePytestError(error_msg)
+
+ rpc = {
+ "jsonrpc": "2.0",
+ "params": payload,
+ }
+ data = json.dumps(rpc, cls=cls_encoder)
+
+ try:
+ if __writer:
+ __writer.write(data)
+ else:
+ print(
+ f"Plugin error connection error[vscode-pytest], writer is None \n[vscode-pytest] data: \n{data} \n",
+ file=sys.stderr,
+ )
+ except Exception as error:
+ print(
+ f"Plugin error, exception thrown while attempting to send data[vscode-pytest]: {error} \n[vscode-pytest] data: \n{data}\n",
+ file=sys.stderr,
+ )
+
+
+class DeferPlugin:
+ @pytest.hookimpl(wrapper=True)
+ def pytest_xdist_auto_num_workers(self, config: pytest.Config) -> Generator[None, int, int]:
+ """determine how many workers to use based on how many tests were selected in the test explorer"""
+ return min((yield), len(config.option.file_or_dir))
+
+
+def pytest_plugin_registered(plugin: object, manager: pytest.PytestPluginManager):
+ if manager.hasplugin("xdist") and not isinstance(plugin, DeferPlugin):
+ manager.register(DeferPlugin())
diff --git a/python_files/vscode_pytest/run_pytest_script.py b/python_files/vscode_pytest/run_pytest_script.py
new file mode 100644
index 000000000000..fae9b5e4af18
--- /dev/null
+++ b/python_files/vscode_pytest/run_pytest_script.py
@@ -0,0 +1,84 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+import json
+import os
+import pathlib
+import socket
+import sys
+import sysconfig
+import pytest
+
+# Adds the scripts directory to the PATH as a workaround for enabling shell for test execution.
+path_var_name = "PATH" if "PATH" in os.environ else "Path"
+os.environ[path_var_name] = (
+ sysconfig.get_paths()["scripts"] + os.pathsep + os.environ[path_var_name]
+)
+
+script_dir = pathlib.Path(__file__).parent.parent
+sys.path.append(os.fspath(script_dir))
+sys.path.append(os.fspath(script_dir / "lib" / "python"))
+from testing_tools import process_json_util # noqa: E402
+from testing_tools import socket_manager # noqa: E402
+
+
+# This script handles running pytest via pytest.main(). It is called via run in the
+# pytest execution adapter and gets the test_ids to run via stdin and the rest of the
+# args through sys.argv. It then runs pytest.main() with the args and test_ids.
+
+if __name__ == "__main__":
+ # Add the root directory to the path so that we can import the plugin.
+ directory_path = pathlib.Path(__file__).parent.parent
+ sys.path.append(os.fspath(directory_path))
+ sys.path.insert(0, os.getcwd())
+ # Get the rest of the args to run with pytest.
+ args = sys.argv[1:]
+ run_test_ids_pipe = os.environ.get("RUN_TEST_IDS_PIPE")
+ if not run_test_ids_pipe:
+ print("Error[vscode-pytest]: RUN_TEST_IDS_PIPE env var is not set.")
+ raw_json = {}
+ try:
+ socket_name = os.environ.get("RUN_TEST_IDS_PIPE")
+ with socket_manager.PipeManager(socket_name) as sock:
+ buffer = ""
+ while True:
+ # Receive the data from the client as a string
+ data = sock.read(3000)
+ if not data:
+ break
+
+ # Append the received data to the buffer
+ buffer += data
+
+ try:
+ # Try to parse the buffer as JSON
+ raw_json = process_json_util.process_rpc_json(buffer)
+ # Clear the buffer as complete JSON object is received
+ buffer = ""
+ print("Received JSON data in run script")
+ break
+ except json.JSONDecodeError:
+ # JSON decoding error, the complete JSON object is not yet received
+ continue
+ except UnicodeDecodeError:
+ continue
+ except socket.error as e:
+ print(f"Error: Could not connect to runTestIdsPort: {e}")
+ print("Error: Could not connect to runTestIdsPort")
+ try:
+ test_ids_from_buffer = raw_json.get("params")
+ if test_ids_from_buffer:
+ arg_array = ["-p", "vscode_pytest"] + args + test_ids_from_buffer
+ print("Running pytest with args: " + str(arg_array))
+ pytest.main(arg_array)
+ else:
+ print(
+ "Error: No test ids received from stdin, could be an error or a run request without ids provided.",
+ )
+ print("Running pytest with no test ids as args. Args being used: ", args)
+ arg_array = ["-p", "vscode_pytest"] + args
+ pytest.main(arg_array)
+ except json.JSONDecodeError:
+ print(
+ "Error: Could not parse test ids from stdin. Raw json received from socket: \n",
+ raw_json,
+ )
diff --git a/requirements.in b/requirements.in
index c6b52697690c..9a490ea1b599 100644
--- a/requirements.in
+++ b/requirements.in
@@ -3,7 +3,13 @@
# 1) pip install pip-tools
# 2) pip-compile --generate-hashes requirements.in
-# IntelliSense via Jedi
-jedi<0.18 # For Python 2.7 support
-# Sort Imports
-isort==5.8.0; python_version >= '3.6'
+# Unittest test adapter
+typing-extensions==4.12.2
+
+# Fallback env creator for debian
+microvenv
+
+# Checker for installed packages
+importlib_metadata
+packaging
+tomli
diff --git a/requirements.txt b/requirements.txt
index c4cdd1a4f6a0..a3fdcad8f9aa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,18 +1,30 @@
#
-# This file is autogenerated by pip-compile
-# To update, run:
+# This file is autogenerated by pip-compile with Python 3.8
+# by the following command:
#
# pip-compile --generate-hashes requirements.in
#
-isort==5.8.0 ; python_version >= "3.6" \
- --hash=sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6 \
- --hash=sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d
+importlib-metadata==8.0.0 \
+ --hash=sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f \
+ --hash=sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812
# via -r requirements.in
-jedi==0.17.2 \
- --hash=sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20 \
- --hash=sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5
+microvenv==2023.5.post1 \
+ --hash=sha256:32c46afea874e300f69f1add0806eb0795fd02b5fb251092fba0b73c059a7d1f \
+ --hash=sha256:fd79b3dfea7860e2e84c87dd0aa8a135075f7fa2284174842b7bdeb077a0d8ac
# via -r requirements.in
-parso==0.7.1 \
- --hash=sha256:97218d9159b2520ff45eb78028ba8b50d2bc61dcc062a9682666f2dc4bd331ea \
- --hash=sha256:caba44724b994a8a5e086460bb212abc5a8bc46951bf4a9a1210745953622eb9
- # via jedi
+packaging==24.1 \
+ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
+ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
+ # via -r requirements.in
+tomli==2.0.1 \
+ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
+ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
+ # via -r requirements.in
+typing-extensions==4.12.2 \
+ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
+ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
+ # via -r requirements.in
+zipp==3.19.2 \
+ --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \
+ --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c
+ # via importlib-metadata
diff --git a/resources/ctagOptions b/resources/ctagOptions
deleted file mode 100644
index 3b656ac370fe..000000000000
--- a/resources/ctagOptions
+++ /dev/null
@@ -1,23 +0,0 @@
---recurse=yes
---tag-relative=yes
---exclude=.git
---exclude=log
---exclude=tmp
---exclude=doc
---exclude=deps
---exclude=node_modules
---exclude=.vscode
---exclude=public/assets
---exclude=*.git*
---exclude=*.pyc
---exclude=*.pyo
---exclude=.DS_Store
---exclude=**/*.jar
---exclude=**/*.class
---exclude=**/.idea/
---exclude=build
---exclude=Builds
---exclude=doc
---fields=Knz
---extra=+f
---append=no
\ No newline at end of file
diff --git a/resources/report_issue_template.md b/resources/report_issue_template.md
index 11cb49166ea5..a95af90ff7fe 100644
--- a/resources/report_issue_template.md
+++ b/resources/report_issue_template.md
@@ -1,46 +1,28 @@
-
-
+
# Behaviour
-[**NOTE**: If you suspect that your issue is related to the Microsoft Python Language Server (`python.languageServer: 'Microsoft'`), please download our new language server [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) from the VS Code marketplace to see if that fixes your issue]
-
-
-## Expected
-
-XXX
-
-## Actual
-
XXX
## Steps to reproduce:
-[**NOTE**: Self-contained, minimal reproducing code samples are **extremely** helpful and will expedite addressing your issue]
-
-1.
+1. XXX
+
# Diagnostic data
-- Python version (& distribution if applicable, e.g. Anaconda): {0}
-- Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): {1}
-- Value of the `python.languageServer` setting: {2}
-
-"Python" channel in the OUTPUT panel
+Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
+
-
```
-{3}
+XXX
```
diff --git a/resources/report_issue_user_data_template.md b/resources/report_issue_user_data_template.md
new file mode 100644
index 000000000000..037b844511d3
--- /dev/null
+++ b/resources/report_issue_user_data_template.md
@@ -0,0 +1,21 @@
+- Python version (& distribution if applicable, e.g. Anaconda): {0}
+- Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): {1}
+- Value of the `python.languageServer` setting: {2}
+
+
+User Settings
+
+
+```
+{3}{4}
+```
+
+
+
+
+Installed Extensions
+
+|Extension Name|Extension Id|Version|
+|---|---|---|
+{5}
+
diff --git a/resources/report_issue_user_settings.json b/resources/report_issue_user_settings.json
new file mode 100644
index 000000000000..ef85267c0e65
--- /dev/null
+++ b/resources/report_issue_user_settings.json
@@ -0,0 +1,98 @@
+{
+ "initialize": false,
+ "pythonPath": "placeholder",
+ "onDidChange": false,
+ "defaultInterpreterPath": "placeholder",
+ "defaultLS": false,
+ "envFile": "placeholder",
+ "venvPath": "placeholder",
+ "venvFolders": "placeholder",
+ "activeStateToolPath": "placeholder",
+ "condaPath": "placeholder",
+ "pipenvPath": "placeholder",
+ "poetryPath": "placeholder",
+ "pixiToolPath": "placeholder",
+ "devOptions": false,
+ "globalModuleInstallation": false,
+ "languageServer": true,
+ "languageServerIsDefault": false,
+ "logging": true,
+ "useIsolation": false,
+ "changed": false,
+ "_pythonPath": false,
+ "_defaultInterpreterPath": false,
+ "workspace": false,
+ "workspaceRoot": false,
+ "linting": {
+ "enabled": true,
+ "cwd": "placeholder",
+ "flake8Args": "placeholder",
+ "flake8CategorySeverity": false,
+ "flake8Enabled": true,
+ "flake8Path": "placeholder",
+ "ignorePatterns": false,
+ "lintOnSave": true,
+ "maxNumberOfProblems": false,
+ "banditArgs": "placeholder",
+ "banditEnabled": true,
+ "banditPath": "placeholder",
+ "mypyArgs": "placeholder",
+ "mypyCategorySeverity": false,
+ "mypyEnabled": true,
+ "mypyPath": "placeholder",
+ "pycodestyleArgs": "placeholder",
+ "pycodestyleCategorySeverity": false,
+ "pycodestyleEnabled": true,
+ "pycodestylePath": "placeholder",
+ "prospectorArgs": "placeholder",
+ "prospectorEnabled": true,
+ "prospectorPath": "placeholder",
+ "pydocstyleArgs": "placeholder",
+ "pydocstyleEnabled": true,
+ "pydocstylePath": "placeholder",
+ "pylamaArgs": "placeholder",
+ "pylamaEnabled": true,
+ "pylamaPath": "placeholder",
+ "pylintArgs": "placeholder",
+ "pylintCategorySeverity": false,
+ "pylintEnabled": false,
+ "pylintPath": "placeholder"
+ },
+ "analysis": {
+ "completeFunctionParens": true,
+ "autoImportCompletions": true,
+ "autoSearchPaths": "placeholder",
+ "stubPath": "placeholder",
+ "diagnosticMode": true,
+ "extraPaths": "placeholder",
+ "useLibraryCodeForTypes": true,
+ "typeCheckingMode": true,
+ "memory": true,
+ "symbolsHierarchyDepthLimit": false
+ },
+ "testing": {
+ "cwd": "placeholder",
+ "debugPort": true,
+ "promptToConfigure": true,
+ "pytestArgs": "placeholder",
+ "pytestEnabled": true,
+ "pytestPath": "placeholder",
+ "unittestArgs": "placeholder",
+ "unittestEnabled": true,
+ "autoTestDiscoverOnSaveEnabled": true
+ },
+ "terminal": {
+ "activateEnvironment": true,
+ "executeInFileDir": "placeholder",
+ "launchArgs": "placeholder",
+ "activateEnvInCurrentTerminal": false
+ },
+ "tensorBoard": {
+ "logDirectory": "placeholder"
+ },
+ "experiments": {
+ "enabled": true,
+ "optInto": true,
+ "optOutFrom": true
+ }
+}
diff --git a/resources/walkthrough/create-environment.svg b/resources/walkthrough/create-environment.svg
new file mode 100644
index 000000000000..bb48e1b16711
--- /dev/null
+++ b/resources/walkthrough/create-environment.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/create-notebook.svg b/resources/walkthrough/create-notebook.svg
new file mode 100644
index 000000000000..05dadc0cc6de
--- /dev/null
+++ b/resources/walkthrough/create-notebook.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/data-science.svg b/resources/walkthrough/data-science.svg
new file mode 100644
index 000000000000..506bed2161b1
--- /dev/null
+++ b/resources/walkthrough/data-science.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/environments-info.md b/resources/walkthrough/environments-info.md
new file mode 100644
index 000000000000..7bdc61a96e2e
--- /dev/null
+++ b/resources/walkthrough/environments-info.md
@@ -0,0 +1,10 @@
+## Python Environments
+
+
+
+Python virtual environments are considered a best practice in Python development. A virtual environment includes a Python interpreter and any packages you have installed into it, such as numpy or Flask.
+
+After you create a virtual environment using the **Python: Create Environment** command, you can install packages into the environment.
+For example, type `python -m pip install numpy` in an activated terminal to install `numpy` into the environment.
+
+🔍 Check out our [docs](https://aka.ms/pythonenvs) to learn more.
diff --git a/resources/walkthrough/install-python-linux.md b/resources/walkthrough/install-python-linux.md
new file mode 100644
index 000000000000..78a12870799f
--- /dev/null
+++ b/resources/walkthrough/install-python-linux.md
@@ -0,0 +1,22 @@
+# Install Python on Linux
+
+To install the latest version of Python on [Debian-based Linux distributions](https://www.debian.org/), you can create a new terminal (Ctrl + Shift + ` ) and run the following commands:
+
+
+```
+sudo apt-get update
+sudo apt-get install python3 python3-venv python3-pip
+```
+
+For [Fedora-based Linux distributions](https://getfedora.org/), you can run the following:
+
+```
+sudo dnf install python3
+```
+
+To verify if Python was successfully installed, run the following command in the terminal:
+
+
+```
+python3 --version
+```
diff --git a/resources/walkthrough/install-python-macos.md b/resources/walkthrough/install-python-macos.md
new file mode 100644
index 000000000000..470d682d4eb2
--- /dev/null
+++ b/resources/walkthrough/install-python-macos.md
@@ -0,0 +1,15 @@
+# Install Python on macOS
+
+If you have [Homebrew](https://brew.sh/) installed, you can install Python by running the following command in the terminal (Ctrl + Shift + ` ):
+
+```
+brew install python3
+```
+
+If you don't have Homebrew, you can download a Python installer for macOS from [python.org](https://www.python.org/downloads/mac-osx/).
+
+To verify if Python was successfully installed, run the following command in the terminal:
+
+```
+python3 --version
+```
diff --git a/resources/walkthrough/install-python-windows-8.md b/resources/walkthrough/install-python-windows-8.md
new file mode 100644
index 000000000000..f25f2f7d024d
--- /dev/null
+++ b/resources/walkthrough/install-python-windows-8.md
@@ -0,0 +1,15 @@
+## Install Python on Windows
+
+If you don't have Python installed on your Windows machine, you can install it [from python.org](https://www.python.org/downloads).
+
+To verify it's installed, create a new terminal (Ctrl + Shift + ` ) and try running the following command:
+
+```
+python --version
+```
+
+You should see something similar to the following:
+```
+Python 3.9.5
+```
+For additional information about using Python on Windows, see [Using Python on Windows at Python.org](https://docs.python.org/3.10/using/windows.html).
diff --git a/resources/walkthrough/interactive-window.svg b/resources/walkthrough/interactive-window.svg
new file mode 100644
index 000000000000..83446ed8e66a
--- /dev/null
+++ b/resources/walkthrough/interactive-window.svg
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/learnmore.svg b/resources/walkthrough/learnmore.svg
new file mode 100644
index 000000000000..c5fd67e75471
--- /dev/null
+++ b/resources/walkthrough/learnmore.svg
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/walkthrough/open-folder.svg b/resources/walkthrough/open-folder.svg
new file mode 100644
index 000000000000..1615718a83dd
--- /dev/null
+++ b/resources/walkthrough/open-folder.svg
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/play-button-dark.png b/resources/walkthrough/play-button-dark.png
new file mode 100644
index 000000000000..113ad62b87c2
Binary files /dev/null and b/resources/walkthrough/play-button-dark.png differ
diff --git a/resources/walkthrough/python-interpreter.svg b/resources/walkthrough/python-interpreter.svg
new file mode 100644
index 000000000000..0f6e262321ec
--- /dev/null
+++ b/resources/walkthrough/python-interpreter.svg
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/walkthrough/rundebug2.svg b/resources/walkthrough/rundebug2.svg
new file mode 100644
index 000000000000..6d1fe753cc4f
--- /dev/null
+++ b/resources/walkthrough/rundebug2.svg
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scripts/onCreateCommand.sh b/scripts/onCreateCommand.sh
new file mode 100644
index 000000000000..3d473d1ee172
--- /dev/null
+++ b/scripts/onCreateCommand.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# Install pyenv and Python versions here to avoid using shim.
+curl https://pyenv.run | bash
+echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
+echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
+# echo 'eval "$(pyenv init -)"' >> ~/.bashrc
+
+export PYENV_ROOT="$HOME/.pyenv"
+command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
+# eval "$(pyenv init -)" Comment this out and DO NOT use shim.
+source ~/.bashrc
+
+# Install Python via pyenv .
+pyenv install 3.8.18 3.9:latest 3.10:latest 3.11:latest
+
+# Set default Python version to 3.8 .
+pyenv global 3.8.18
+
+npm ci
+
+# Create Virutal environment.
+pyenv exec python -m venv .venv
+
+# Activate Virtual environment.
+source /workspaces/vscode-python/.venv/bin/activate
+
+# Install required Python libraries.
+/workspaces/vscode-python/.venv/bin/python -m pip install nox
+nox --session install_python_libs
+
+/workspaces/vscode-python/.venv/bin/python -m pip install -r build/test-requirements.txt
+/workspaces/vscode-python/.venv/bin/python -m pip install -r build/functional-test-requirements.txt
+
+# Below will crash codespace
+# npm run compile
diff --git a/sprint-planning.github-issues b/sprint-planning.github-issues
old mode 100755
new mode 100644
index 73c40eae0253..1fbd09a790e8
--- a/sprint-planning.github-issues
+++ b/sprint-planning.github-issues
@@ -2,97 +2,71 @@
{
"kind": 1,
"language": "markdown",
- "value": "# Query constants",
- "editable": true
+ "value": "# Query constants"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc=repo:microsoft/vscode-python\n$not_DS=-label:\"data science\"\n$open=is:open",
- "editable": true
+ "value": "$pvsc=repo:microsoft/vscode-python\n$open=is:open\n$upvotes=sort:reactions-+1-desc"
},
{
"kind": 1,
"language": "markdown",
- "value": "# Priority issues 🚨",
- "editable": true
+ "value": "# Priority issues 🚨"
},
{
"kind": 1,
"language": "markdown",
- "value": "## P0",
- "editable": true
+ "value": "## Important/P1"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc $not_DS $open label:\"P0\"",
- "editable": true
+ "value": "$pvsc $open label:\"important\""
},
{
"kind": 1,
"language": "markdown",
- "value": "## P1",
- "editable": true
+ "value": "# Regressions 🔙"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc $not_DS $open label:\"P1\"",
- "editable": true
+ "value": "$pvsc $open label:\"regression\""
},
{
"kind": 1,
"language": "markdown",
- "value": "# Regressions 🔙",
- "editable": true
+ "value": "# Partner asks"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc $not_DS $open label:\"reason-regression\"",
- "editable": true
+ "value": "$pvsc $open label:\"partner ask\""
},
{
"kind": 1,
"language": "markdown",
- "value": "# Partner asks",
- "editable": true
- },
- {
- "kind": 2,
- "language": "github-issues",
- "value": "$pvsc $not_DS $open label:\"partner ask\"",
- "editable": true
- },
- {
- "kind": 1,
- "language": "markdown",
- "value": "# Upvotes 👍",
- "editable": true
+ "value": "# Upvotes 👍"
},
{
"kind": 1,
"language": "markdown",
- "value": "## Enhancements 💪",
- "editable": true
+ "value": "## Enhancements 💪"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc $not_DS $open sort:reactions-+1-desc label:\"type-enhancement\" ",
- "editable": true
+ "value": "$pvsc $open $upvotes label:\"feature-request\" "
},
{
"kind": 1,
"language": "markdown",
- "value": "## Bugs 🐜",
- "editable": true
+ "value": "## Bugs 🐜"
},
{
"kind": 2,
"language": "github-issues",
- "value": "$pvsc $not_DS $open sort:reactions-+1-desc label:\"type-bug\"",
- "editable": true
+ "value": "$pvsc $open $upvotes label:\"bug\""
}
-]
\ No newline at end of file
+]
diff --git a/src/client/activation/activationManager.ts b/src/client/activation/activationManager.ts
index bd7fc45f6517..9e97c5c48857 100644
--- a/src/client/activation/activationManager.ts
+++ b/src/client/activation/activationManager.ts
@@ -8,13 +8,12 @@ import { TextDocument } from 'vscode';
import { IApplicationDiagnostics } from '../application/types';
import { IActiveResourceService, IDocumentManager, IWorkspaceService } from '../common/application/types';
import { PYTHON_LANGUAGE } from '../common/constants';
-import { DeprecatePythonPath } from '../common/experiments/groups';
-import { traceDecorators } from '../common/logger';
import { IFileSystem } from '../common/platform/types';
-import { IDisposable, IExperimentService, IInterpreterPathService, Resource } from '../common/types';
+import { IDisposable, IInterpreterPathService, Resource } from '../common/types';
import { Deferred } from '../common/utils/async';
+import { StopWatch } from '../common/utils/stopWatch';
import { IInterpreterAutoSelectionService } from '../interpreter/autoSelection/types';
-import { IInterpreterService } from '../interpreter/contracts';
+import { traceDecoratorError } from '../logging';
import { sendActivationTelemetry } from '../telemetry/envFileTelemetry';
import { IExtensionActivationManager, IExtensionActivationService, IExtensionSingleActivationService } from './types';
@@ -29,20 +28,37 @@ export class ExtensionActivationManager implements IExtensionActivationManager {
private docOpenedHandler?: IDisposable;
constructor(
- @multiInject(IExtensionActivationService) private readonly activationServices: IExtensionActivationService[],
+ @multiInject(IExtensionActivationService) private activationServices: IExtensionActivationService[],
@multiInject(IExtensionSingleActivationService)
- private readonly singleActivationServices: IExtensionSingleActivationService[],
+ private singleActivationServices: IExtensionSingleActivationService[],
@inject(IDocumentManager) private readonly documentManager: IDocumentManager,
- @inject(IInterpreterService) private readonly interpreterService: IInterpreterService,
@inject(IInterpreterAutoSelectionService) private readonly autoSelection: IInterpreterAutoSelectionService,
@inject(IApplicationDiagnostics) private readonly appDiagnostics: IApplicationDiagnostics,
@inject(IWorkspaceService) private readonly workspaceService: IWorkspaceService,
@inject(IFileSystem) private readonly fileSystem: IFileSystem,
@inject(IActiveResourceService) private readonly activeResourceService: IActiveResourceService,
- @inject(IExperimentService) private readonly experiments: IExperimentService,
@inject(IInterpreterPathService) private readonly interpreterPathService: IInterpreterPathService,
) {}
+ private filterServices() {
+ if (!this.workspaceService.isTrusted) {
+ this.activationServices = this.activationServices.filter(
+ (service) => service.supportedWorkspaceTypes.untrustedWorkspace,
+ );
+ this.singleActivationServices = this.singleActivationServices.filter(
+ (service) => service.supportedWorkspaceTypes.untrustedWorkspace,
+ );
+ }
+ if (this.workspaceService.isVirtualWorkspace) {
+ this.activationServices = this.activationServices.filter(
+ (service) => service.supportedWorkspaceTypes.virtualWorkspace,
+ );
+ this.singleActivationServices = this.singleActivationServices.filter(
+ (service) => service.supportedWorkspaceTypes.virtualWorkspace,
+ );
+ }
+ }
+
public dispose(): void {
while (this.disposables.length > 0) {
const disposable = this.disposables.shift()!;
@@ -54,35 +70,35 @@ export class ExtensionActivationManager implements IExtensionActivationManager {
}
}
- public async activate(): Promise {
+ public async activate(startupStopWatch: StopWatch): Promise {
+ this.filterServices();
await this.initialize();
+
// Activate all activation services together.
+
await Promise.all([
- Promise.all(this.singleActivationServices.map((item) => item.activate())),
- this.activateWorkspace(this.activeResourceService.getActiveResource()),
+ ...this.singleActivationServices.map((item) => item.activate()),
+ this.activateWorkspace(this.activeResourceService.getActiveResource(), startupStopWatch),
]);
- await this.autoSelection.autoSelectInterpreter(undefined);
}
- @traceDecorators.error('Failed to activate a workspace')
- public async activateWorkspace(resource: Resource): Promise {
+ @traceDecoratorError('Failed to activate a workspace')
+ public async activateWorkspace(resource: Resource, startupStopWatch?: StopWatch): Promise {
+ const folder = this.workspaceService.getWorkspaceFolder(resource);
+ resource = folder ? folder.uri : undefined;
const key = this.getWorkspaceKey(resource);
if (this.activatedWorkspaces.has(key)) {
return;
}
this.activatedWorkspaces.add(key);
- if (this.experiments.inExperimentSync(DeprecatePythonPath.experiment)) {
+ if (this.workspaceService.isTrusted) {
+ // Do not interact with interpreters in a untrusted workspace.
+ await this.autoSelection.autoSelectInterpreter(resource);
await this.interpreterPathService.copyOldInterpreterStorageValuesToNew(resource);
}
-
- // Get latest interpreter list in the background.
- this.interpreterService.getInterpreters(resource).ignoreErrors();
-
await sendActivationTelemetry(this.fileSystem, this.workspaceService, resource);
-
- await this.autoSelection.autoSelectInterpreter(resource);
- await Promise.all(this.activationServices.map((item) => item.activate(resource)));
+ await Promise.all(this.activationServices.map((item) => item.activate(resource, startupStopWatch)));
await this.appDiagnostics.performPreStartupHealthCheck(resource);
}
@@ -96,15 +112,15 @@ export class ExtensionActivationManager implements IExtensionActivationManager {
return;
}
const key = this.getWorkspaceKey(doc.uri);
+ const hasWorkspaceFolders = (this.workspaceService.workspaceFolders?.length || 0) > 0;
// If we have opened a doc that does not belong to workspace, then do nothing.
- if (key === '' && this.workspaceService.hasWorkspaceFolders) {
+ if (key === '' && hasWorkspaceFolders) {
return;
}
if (this.activatedWorkspaces.has(key)) {
return;
}
- const folder = this.workspaceService.getWorkspaceFolder(doc.uri);
- this.activateWorkspace(folder ? folder.uri : undefined).ignoreErrors();
+ this.activateWorkspace(doc.uri).ignoreErrors();
}
protected addHandlers(): void {
@@ -140,7 +156,7 @@ export class ExtensionActivationManager implements IExtensionActivationManager {
}
protected hasMultipleWorkspaces(): boolean {
- return this.workspaceService.hasWorkspaceFolders && this.workspaceService.workspaceFolders!.length > 1;
+ return (this.workspaceService.workspaceFolders?.length || 0) > 1;
}
protected getWorkspaceKey(resource: Resource): string {
diff --git a/src/client/activation/activationService.ts b/src/client/activation/activationService.ts
deleted file mode 100644
index 82705898e514..000000000000
--- a/src/client/activation/activationService.ts
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-import '../common/extensions';
-
-import { inject, injectable } from 'inversify';
-import { ConfigurationChangeEvent, Disposable, OutputChannel, Uri } from 'vscode';
-
-import { LSNotSupportedDiagnosticServiceId } from '../application/diagnostics/checks/lsNotSupported';
-import { IDiagnosticsService } from '../application/diagnostics/types';
-import { IApplicationShell, ICommandManager, IWorkspaceService } from '../common/application/types';
-import { STANDARD_OUTPUT_CHANNEL } from '../common/constants';
-import { traceError } from '../common/logger';
-import {
- IConfigurationService,
- IDisposableRegistry,
- IExtensions,
- IOutputChannel,
- IPersistentStateFactory,
- IPythonSettings,
- Resource,
-} from '../common/types';
-import { swallowExceptions } from '../common/utils/decorators';
-import { LanguageService } from '../common/utils/localize';
-import { noop } from '../common/utils/misc';
-import { IInterpreterService } from '../interpreter/contracts';
-import { IServiceContainer } from '../ioc/types';
-import { PythonEnvironment } from '../pythonEnvironments/info';
-import { sendTelemetryEvent } from '../telemetry';
-import { EventName } from '../telemetry/constants';
-import { Commands } from './commands';
-import { LanguageServerChangeHandler } from './common/languageServerChangeHandler';
-import { RefCountedLanguageServer } from './refCountedLanguageServer';
-import {
- IExtensionActivationService,
- ILanguageServerActivator,
- ILanguageServerCache,
- LanguageServerType,
-} from './types';
-import { StopWatch } from '../common/utils/stopWatch';
-
-const languageServerSetting: keyof IPythonSettings = 'languageServer';
-const workspacePathNameForGlobalWorkspaces = '';
-
-interface IActivatedServer {
- key: string;
- server: ILanguageServerActivator;
- jedi: boolean;
-}
-
-@injectable()
-export class LanguageServerExtensionActivationService
- implements IExtensionActivationService, ILanguageServerCache, Disposable {
- private cache = new Map>();
-
- private activatedServer?: IActivatedServer;
-
- private readonly workspaceService: IWorkspaceService;
-
- private readonly output: OutputChannel;
-
- private readonly interpreterService: IInterpreterService;
-
- private readonly languageServerChangeHandler: LanguageServerChangeHandler;
-
- private resource!: Resource;
-
- constructor(
- @inject(IServiceContainer) private serviceContainer: IServiceContainer,
- @inject(IPersistentStateFactory) private stateFactory: IPersistentStateFactory,
- ) {
- this.workspaceService = this.serviceContainer.get(IWorkspaceService);
- this.interpreterService = this.serviceContainer.get(IInterpreterService);
- this.output = this.serviceContainer.get(IOutputChannel, STANDARD_OUTPUT_CHANNEL);
-
- const commandManager = this.serviceContainer.get(ICommandManager);
- const disposables = serviceContainer.get(IDisposableRegistry);
- disposables.push(this);
- disposables.push(this.workspaceService.onDidChangeConfiguration(this.onDidChangeConfiguration.bind(this)));
- disposables.push(this.workspaceService.onDidChangeWorkspaceFolders(this.onWorkspaceFoldersChanged, this));
- disposables.push(this.interpreterService.onDidChangeInterpreter(this.onDidChangeInterpreter.bind(this)));
- disposables.push(
- commandManager.registerCommand(Commands.ClearAnalyisCache, this.onClearAnalysisCaches.bind(this)),
- );
-
- this.languageServerChangeHandler = new LanguageServerChangeHandler(
- this.getCurrentLanguageServerType(),
- this.serviceContainer.get(IExtensions),
- this.serviceContainer.get(IApplicationShell),
- this.serviceContainer.get(ICommandManager),
- this.serviceContainer.get(IWorkspaceService),
- this.serviceContainer.get(IConfigurationService),
- );
- disposables.push(this.languageServerChangeHandler);
- }
-
- public async activate(resource: Resource): Promise {
- const stopWatch = new StopWatch();
- // Get a new server and dispose of the old one (might be the same one)
- this.resource = resource;
- const interpreter = await this.interpreterService.getActiveInterpreter(resource);
- const key = await this.getKey(resource, interpreter);
-
- // If we have an old server with a different key, then deactivate it as the
- // creation of the new server may fail if this server is still connected
- if (this.activatedServer && this.activatedServer.key !== key) {
- this.activatedServer.server.deactivate();
- }
-
- // Get the new item
- const result = await this.get(resource, interpreter);
-
- // Now we dispose. This ensures the object stays alive if it's the same object because
- // we dispose after we increment the ref count.
- if (this.activatedServer) {
- this.activatedServer.server.dispose();
- }
-
- // Save our active server.
- this.activatedServer = { key, server: result, jedi: result.type === LanguageServerType.Jedi };
-
- // Force this server to reconnect (if disconnected) as it should be the active
- // language server for all of VS code.
- this.activatedServer.server.activate();
- sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_STARTUP_DURATION, stopWatch.elapsedTime, {
- languageServerType: result.type,
- });
- }
-
- public async get(resource: Resource, interpreter?: PythonEnvironment): Promise {
- // See if we already have it or not
- const key = await this.getKey(resource, interpreter);
- let result: Promise | undefined = this.cache.get(key);
- if (!result) {
- // Create a special ref counted result so we don't dispose of the
- // server too soon.
- result = this.createRefCountedServer(resource, interpreter, key);
- this.cache.set(key, result);
- } else {
- // Increment ref count if already exists.
- result = result.then((r) => {
- r.increment();
- return r;
- });
- }
- return result;
- }
-
- public dispose(): void {
- if (this.activatedServer) {
- this.activatedServer.server.dispose();
- }
- }
-
- @swallowExceptions('Send telemetry for language server current selection')
- public async sendTelemetryForChosenLanguageServer(languageServer: LanguageServerType): Promise {
- const state = this.stateFactory.createGlobalPersistentState(
- 'SWITCH_LS',
- undefined,
- );
- if (typeof state.value !== 'string') {
- await state.updateValue(languageServer);
- }
- if (state.value !== languageServer) {
- await state.updateValue(languageServer);
- sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_CURRENT_SELECTION, undefined, {
- switchTo: languageServer,
- });
- } else {
- sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_CURRENT_SELECTION, undefined, {
- lsStartup: languageServer,
- });
- }
- }
-
- /**
- * Checks if user does not have any `languageServer` setting set.
- * @param resource
- * @returns `true` if user is using default configuration, `false` if user has `languageServer` setting added.
- */
- public isJediUsingDefaultConfiguration(resource: Resource): boolean {
- const settings = this.workspaceService
- .getConfiguration('python', resource)
- .inspect('languageServer');
- if (!settings) {
- traceError('WorkspaceConfiguration.inspect returns `undefined` for setting `python.languageServer`');
- return false;
- }
- return (
- settings.globalValue === undefined &&
- settings.workspaceValue === undefined &&
- settings.workspaceFolderValue === undefined
- );
- }
-
- protected async onWorkspaceFoldersChanged(): Promise {
- // If an activated workspace folder was removed, dispose its activator
- const workspaceKeys = await Promise.all(
- this.workspaceService.workspaceFolders!.map((workspaceFolder) => this.getKey(workspaceFolder.uri)),
- );
- const activatedWkspcKeys = Array.from(this.cache.keys());
- const activatedWkspcFoldersRemoved = activatedWkspcKeys.filter((item) => workspaceKeys.indexOf(item) < 0);
- if (activatedWkspcFoldersRemoved.length > 0) {
- for (const folder of activatedWkspcFoldersRemoved) {
- const server = await this.cache.get(folder);
- server?.dispose(); // This should remove it from the cache if this is the last instance.
- }
- }
- }
-
- private async onDidChangeInterpreter() {
- // Reactivate the resource. It should destroy the old one if it's different.
- return this.activate(this.resource);
- }
-
- private getCurrentLanguageServerType(): LanguageServerType {
- const configurationService = this.serviceContainer.get(IConfigurationService);
- return configurationService.getSettings(this.resource).languageServer;
- }
-
- private getCurrentLanguageServerTypeIsDefault(): boolean {
- const configurationService = this.serviceContainer.get(IConfigurationService);
- return configurationService.getSettings(this.resource).languageServerIsDefault;
- }
-
- private async createRefCountedServer(
- resource: Resource,
- interpreter: PythonEnvironment | undefined,
- key: string,
- ): Promise {
- let serverType = this.getCurrentLanguageServerType();
- if (serverType === LanguageServerType.Microsoft) {
- const lsNotSupportedDiagnosticService = this.serviceContainer.get(
- IDiagnosticsService,
- LSNotSupportedDiagnosticServiceId,
- );
- const diagnostic = await lsNotSupportedDiagnosticService.diagnose(undefined);
- lsNotSupportedDiagnosticService.handle(diagnostic).ignoreErrors();
- if (diagnostic.length) {
- sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_PLATFORM_SUPPORTED, undefined, {
- supported: false,
- });
- serverType = LanguageServerType.Jedi;
- }
- }
-
- if (serverType === LanguageServerType.JediLSP && interpreter && interpreter.version) {
- if (interpreter.version.major < 3 || (interpreter.version.major === 3 && interpreter.version.minor < 6)) {
- sendTelemetryEvent(EventName.JEDI_FALLBACK);
- serverType = LanguageServerType.Jedi;
- }
- }
-
- // If Pylance was chosen via the default and the interpreter is Python 2, fall back to
- // Jedi. If Pylance was explicitly chosen, continue anyway, even if Pylance won't work
- // as expected, matching pre-default behavior.
- if (this.getCurrentLanguageServerTypeIsDefault()) {
- if (serverType === LanguageServerType.Node && interpreter && interpreter.version) {
- if (interpreter.version.major < 3) {
- sendTelemetryEvent(EventName.JEDI_FALLBACK);
- serverType = LanguageServerType.Jedi;
- }
- }
- }
-
- this.sendTelemetryForChosenLanguageServer(serverType).ignoreErrors();
-
- await this.logStartup(serverType);
- let server = this.serviceContainer.get(ILanguageServerActivator, serverType);
- try {
- await server.start(resource, interpreter);
- } catch (ex) {
- if (serverType === LanguageServerType.Jedi) {
- throw ex;
- }
- traceError(ex);
- this.output.appendLine(LanguageService.lsFailedToStart());
- serverType = LanguageServerType.Jedi;
- server = this.serviceContainer.get(ILanguageServerActivator, serverType);
- await server.start(resource, interpreter);
- }
-
- // Wrap the returned server in something that ref counts it.
- return new RefCountedLanguageServer(server, serverType, () => {
- // When we finally remove the last ref count, remove from the cache
- this.cache.delete(key);
-
- // Dispose of the actual server.
- server.dispose();
- });
- }
-
- private async logStartup(serverType: LanguageServerType): Promise {
- let outputLine;
- switch (serverType) {
- case LanguageServerType.Jedi:
- outputLine = LanguageService.startingJedi();
- break;
- case LanguageServerType.JediLSP:
- outputLine = LanguageService.startingJediLSP();
- break;
- case LanguageServerType.Microsoft:
- outputLine = LanguageService.startingMicrosoft();
- break;
- case LanguageServerType.Node:
- outputLine = LanguageService.startingPylance();
- break;
- case LanguageServerType.None:
- outputLine = LanguageService.startingNone();
- break;
- default:
- throw new Error('Unknown language server type in activator.');
- }
- this.output.appendLine(outputLine);
- }
-
- private async onDidChangeConfiguration(event: ConfigurationChangeEvent): Promise {
- const workspacesUris: (Uri | undefined)[] = this.workspaceService.hasWorkspaceFolders
- ? this.workspaceService.workspaceFolders!.map((workspace) => workspace.uri)
- : [undefined];
- if (
- workspacesUris.findIndex((uri) => event.affectsConfiguration(`python.${languageServerSetting}`, uri)) === -1
- ) {
- return;
- }
- const lsType = this.getCurrentLanguageServerType();
- if (this.activatedServer?.key !== lsType) {
- await this.languageServerChangeHandler.handleLanguageServerChange(lsType);
- }
- }
-
- private async getKey(resource: Resource, interpreter?: PythonEnvironment): Promise {
- const configurationService = this.serviceContainer.get(IConfigurationService);
- const serverType = configurationService.getSettings(this.resource).languageServer;
- if (serverType === LanguageServerType.Node) {
- return LanguageServerType.Node;
- }
-
- const resourcePortion = this.workspaceService.getWorkspaceFolderIdentifier(
- resource,
- workspacePathNameForGlobalWorkspaces,
- );
- interpreter = interpreter || (await this.interpreterService.getActiveInterpreter(resource));
- const interperterPortion = interpreter ? `${interpreter.path}-${interpreter.envName}` : '';
- return `${resourcePortion}-${interperterPortion}`;
- }
-
- private async onClearAnalysisCaches() {
- const values = await Promise.all([...this.cache.values()]);
- values.forEach((v) => (v.clearAnalysisCache ? v.clearAnalysisCache() : noop()));
- }
-}
diff --git a/src/client/activation/commands.ts b/src/client/activation/commands.ts
index 6a6628e6d4a3..158d9662ec46 100644
--- a/src/client/activation/commands.ts
+++ b/src/client/activation/commands.ts
@@ -3,6 +3,5 @@
'use strict';
export namespace Commands {
- export const ClearAnalyisCache = 'python.analysis.clearCache';
export const RestartLS = 'python.analysis.restartLanguageServer';
}
diff --git a/src/client/activation/common/activatorBase.ts b/src/client/activation/common/activatorBase.ts
deleted file mode 100644
index 620f017256b2..000000000000
--- a/src/client/activation/common/activatorBase.ts
+++ /dev/null
@@ -1,324 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-import {
- CancellationToken,
- CodeLens,
- CompletionContext,
- CompletionItem,
- CompletionList,
- DocumentSymbol,
- Hover,
- Location,
- LocationLink,
- Position,
- ProviderResult,
- ReferenceContext,
- SignatureHelp,
- SignatureHelpContext,
- SymbolInformation,
- TextDocument,
- WorkspaceEdit,
-} from 'vscode';
-import * as vscodeLanguageClient from 'vscode-languageclient/node';
-
-import { injectable } from 'inversify';
-import { IWorkspaceService } from '../../common/application/types';
-import { traceDecorators } from '../../common/logger';
-import { IFileSystem } from '../../common/platform/types';
-import { IConfigurationService, Resource } from '../../common/types';
-import { PythonEnvironment } from '../../pythonEnvironments/info';
-import { ILanguageServerActivator, ILanguageServerManager } from '../types';
-
-/**
- * Starts the language server managers per workspaces (currently one for first workspace).
- *
- * @export
- * @class LanguageServerActivatorBase
- * @implements {ILanguageServerActivator}
- */
-@injectable()
-export abstract class LanguageServerActivatorBase implements ILanguageServerActivator {
- protected resource?: Resource;
- constructor(
- protected readonly manager: ILanguageServerManager,
- protected readonly workspace: IWorkspaceService,
- protected readonly fs: IFileSystem,
- protected readonly configurationService: IConfigurationService,
- ) {}
-
- @traceDecorators.error('Failed to activate language server')
- public async start(resource: Resource, interpreter?: PythonEnvironment): Promise {
- if (!resource) {
- resource = this.workspace.hasWorkspaceFolders ? this.workspace.workspaceFolders![0].uri : undefined;
- }
- this.resource = resource;
- await this.ensureLanguageServerIsAvailable(resource);
- await this.manager.start(resource, interpreter);
- }
-
- public dispose(): void {
- this.manager.dispose();
- }
-
- public abstract ensureLanguageServerIsAvailable(resource: Resource): Promise;
-
- public activate(): void {
- this.manager.connect();
- }
-
- public deactivate(): void {
- this.manager.disconnect();
- }
-
- public get connection() {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- // Return an object that looks like a connection
- return {
- sendNotification: languageClient.sendNotification.bind(languageClient),
- sendRequest: languageClient.sendRequest.bind(languageClient),
- sendProgress: languageClient.sendProgress.bind(languageClient),
- onRequest: languageClient.onRequest.bind(languageClient),
- onNotification: languageClient.onNotification.bind(languageClient),
- onProgress: languageClient.onProgress.bind(languageClient),
- };
- }
- }
-
- public get capabilities() {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- return languageClient.initializeResult?.capabilities;
- }
- }
-
- public provideRenameEdits(
- document: TextDocument,
- position: Position,
- newName: string,
- token: CancellationToken,
- ): ProviderResult {
- return this.handleProvideRenameEdits(document, position, newName, token);
- }
-
- public provideDefinition(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- ): ProviderResult {
- return this.handleProvideDefinition(document, position, token);
- }
-
- public provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult {
- return this.handleProvideHover(document, position, token);
- }
-
- public provideReferences(
- document: TextDocument,
- position: Position,
- context: ReferenceContext,
- token: CancellationToken,
- ): ProviderResult {
- return this.handleProvideReferences(document, position, context, token);
- }
-
- public provideCompletionItems(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- context: CompletionContext,
- ): ProviderResult {
- return this.handleProvideCompletionItems(document, position, token, context);
- }
-
- public provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult {
- return this.handleProvideCodeLenses(document, token);
- }
-
- public provideDocumentSymbols(
- document: TextDocument,
- token: CancellationToken,
- ): ProviderResult {
- return this.handleProvideDocumentSymbols(document, token);
- }
-
- public provideSignatureHelp(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- context: SignatureHelpContext,
- ): ProviderResult {
- return this.handleProvideSignatureHelp(document, position, token, context);
- }
-
- protected getLanguageClient(): vscodeLanguageClient.LanguageClient | undefined {
- const proxy = this.manager.languageProxy;
- if (proxy) {
- return proxy.languageClient;
- }
- }
-
- private async handleProvideRenameEdits(
- document: TextDocument,
- position: Position,
- newName: string,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.RenameParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- position: languageClient.code2ProtocolConverter.asPosition(position),
- newName,
- };
- const result = await languageClient.sendRequest(vscodeLanguageClient.RenameRequest.type, args, token);
- if (result) {
- return languageClient.protocol2CodeConverter.asWorkspaceEdit(result);
- }
- }
- }
-
- private async handleProvideDefinition(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.TextDocumentPositionParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- position: languageClient.code2ProtocolConverter.asPosition(position),
- };
- const result = await languageClient.sendRequest(vscodeLanguageClient.DefinitionRequest.type, args, token);
- if (result) {
- return languageClient.protocol2CodeConverter.asDefinitionResult(result);
- }
- }
- }
-
- private async handleProvideHover(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.TextDocumentPositionParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- position: languageClient.code2ProtocolConverter.asPosition(position),
- };
- const result = await languageClient.sendRequest(vscodeLanguageClient.HoverRequest.type, args, token);
- if (result) {
- return languageClient.protocol2CodeConverter.asHover(result);
- }
- }
- }
-
- private async handleProvideReferences(
- document: TextDocument,
- position: Position,
- context: ReferenceContext,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.ReferenceParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- position: languageClient.code2ProtocolConverter.asPosition(position),
- context,
- };
- const result = await languageClient.sendRequest(vscodeLanguageClient.ReferencesRequest.type, args, token);
- if (result) {
- // Remove undefined part.
- return result.map((l) => {
- const r = languageClient!.protocol2CodeConverter.asLocation(l);
- return r!;
- });
- }
- }
- }
-
- private async handleProvideCodeLenses(
- document: TextDocument,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.CodeLensParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- };
- const result = await languageClient.sendRequest(vscodeLanguageClient.CodeLensRequest.type, args, token);
- if (result) {
- return languageClient.protocol2CodeConverter.asCodeLenses(result);
- }
- }
- }
-
- private async handleProvideCompletionItems(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- context: CompletionContext,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args = languageClient.code2ProtocolConverter.asCompletionParams(document, position, context);
- const result = await languageClient.sendRequest(vscodeLanguageClient.CompletionRequest.type, args, token);
- if (result) {
- return languageClient.protocol2CodeConverter.asCompletionResult(result);
- }
- }
- }
-
- private async handleProvideDocumentSymbols(
- document: TextDocument,
- token: CancellationToken,
- ): Promise {
- const languageClient = this.getLanguageClient();
- if (languageClient) {
- const args: vscodeLanguageClient.DocumentSymbolParams = {
- textDocument: languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document),
- };
- const result = await languageClient.sendRequest(
- vscodeLanguageClient.DocumentSymbolRequest.type,
- args,
- token,
- );
- if (result && result.length) {
- if ((result[0] as any).range) {
- // Document symbols
- const docSymbols = result as vscodeLanguageClient.DocumentSymbol[];
- return languageClient.protocol2CodeConverter.asDocumentSymbols(docSymbols);
- } else {
- // Document symbols
- const symbols = result as vscodeLanguageClient.SymbolInformation[];
- return languageClient.protocol2CodeConverter.asSymbolInformations(symbols);
- }
- }
- }
- }
-
- private async handleProvideSignatureHelp(
- document: TextDocument,
- position: Position,
- token: CancellationToken,
- _context: SignatureHelpContext,
- ): Promise