diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index f0de7786c..462aada43 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -7,22 +7,43 @@ assignees: "" --- +## OS/Web Information + - Web Browser: - Local OS: - Remote OS: - Remote Architecture: - `code-server --version`: + +## Steps to Reproduce + +1. +2. +3. + +## Expected + + + +## Actual + + + +## Screenshot + + + +## Notes + + + +This issue can be reproduced in VS Code: Yes/No diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bd36fd256..26b2d997d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,10 +5,6 @@ updates: schedule: interval: "daily" time: "11:00" - assignees: - - "jawnsy" - reviewers: - - "jawnsy" ignore: # GitHub always delivers the latest versions for each major # release tag, so handle updates manually @@ -19,7 +15,3 @@ updates: schedule: interval: "daily" time: "11:00" - assignees: - - "jawnsy" - reviewers: - - "jawnsy" diff --git a/.github/ranger.yml b/.github/ranger.yml new file mode 100644 index 000000000..a756c6662 --- /dev/null +++ b/.github/ranger.yml @@ -0,0 +1,25 @@ +# Configuration for the repo ranger bot +# See docs: https://www.notion.so/Documentation-8d7627bb1f3c42b7b1820e8d6f157a57#9879d1374fab4d1f9c607c230fd5123d +default: + close: + # Default time to wait before closing the label. Can either be a number in milliseconds + # or a string specified by the `ms` package (https://www.npmjs.com/package/ms) + delay: "3 days" + + # Default comment to post when an issue is first marked with a closing label + comment: "⚠️ This issue has been marked $LABEL and will be closed in $DELAY." + +labels: + duplicate: close + wontfix: close + "squash when passing": merge + "rebase when passing": merge + "merge when passing": merge + stale: + action: close + delay: 7 days + comment: "⚠️ This issue has been marked stale and will automatically be closed in $DELAY." + "new contributor": + action: comment + delay: 5s + message: "Thanks for making your first contribution! :slightly_smiling_face:" diff --git a/README.md b/README.md index bf98aa6bf..7050250c2 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Consider running code-server with the beta flag `--link` if you don't want to wo ```bash $ code-server --link -Proxying code-server to Coder Cloud, you can access your IDE at https://valmar-jon.cdr.co +Proxying code-server, you can access your IDE at https://valmar-jon.cdr.co ``` ## FAQ diff --git a/ci/build/build-packages.sh b/ci/build/build-packages.sh index a5ef794e5..06f78afff 100755 --- a/ci/build/build-packages.sh +++ b/ci/build/build-packages.sh @@ -40,7 +40,7 @@ release_gcp() { # Generates deb and rpm packages. release_nfpm() { local nfpm_config - nfpm_config="$(envsubst < ./ci/build/nfpm.yaml)" + nfpm_config="$(envsubst <./ci/build/nfpm.yaml)" # The underscores are convention for .deb. nfpm pkg -f <(echo "$nfpm_config") --target "release-packages/code-server_${VERSION}_$ARCH.deb" diff --git a/ci/build/build-release.sh b/ci/build/build-release.sh index a806dc98f..c31367128 100755 --- a/ci/build/build-release.sh +++ b/ci/build/build-release.sh @@ -49,7 +49,7 @@ bundle_code_server() { # Adds the commit to package.json jq --slurp '.[0] * .[1]' package.json <( - cat << EOF + cat < "$RELEASE_PATH/package.json" + ) >"$RELEASE_PATH/package.json" rsync yarn.lock "$RELEASE_PATH" rsync ci/build/npm-postinstall.sh "$RELEASE_PATH/postinstall.sh" @@ -89,18 +89,18 @@ bundle_vscode() { # Adds the commit and date to product.json jq --slurp '.[0] * .[1]' "$VSCODE_SRC_PATH/product.json" <( - cat << EOF + cat < "$VSCODE_OUT_PATH/product.json" + ) >"$VSCODE_OUT_PATH/product.json" # We remove the scripts field so that later on we can run # yarn to fetch node_modules if necessary without build scripts running. # We cannot use --no-scripts because we still want dependent package scripts to run. - jq 'del(.scripts)' < "$VSCODE_SRC_PATH/package.json" > "$VSCODE_OUT_PATH/package.json" + jq 'del(.scripts)' <"$VSCODE_SRC_PATH/package.json" >"$VSCODE_OUT_PATH/package.json" pushd "$VSCODE_OUT_PATH" symlink_asar diff --git a/ci/build/build-standalone-release.sh b/ci/build/build-standalone-release.sh index df6cdc56f..e85678a29 100755 --- a/ci/build/build-standalone-release.sh +++ b/ci/build/build-standalone-release.sh @@ -12,7 +12,7 @@ main() { # we use the same version it's using so we instead run a script with yarn that # will print the path to node. local node_path - node_path="$(yarn -s node <<< 'console.info(process.execPath)')" + node_path="$(yarn -s node <<<'console.info(process.execPath)')" mkdir -p "$RELEASE_PATH/bin" rsync ./ci/build/code-server.sh "$RELEASE_PATH/bin/code-server" diff --git a/ci/build/code-server.sh b/ci/build/code-server.sh index deb36ac31..cb71c1827 100755 --- a/ci/build/code-server.sh +++ b/ci/build/code-server.sh @@ -11,9 +11,9 @@ _realpath() { cd "$(dirname "$script")" while [ -L "$(basename "$script")" ]; do - if [ -L "./node" ] && [ -L "./code-server" ] && - [ -f "package.json" ] && - cat package.json | grep -q '^ "name": "code-server",$'; then + if [ -L "./node" ] && [ -L "./code-server" ] \ + && [ -f "package.json" ] \ + && cat package.json | grep -q '^ "name": "code-server",$'; then echo "***** Please use the script in bin/code-server instead!" >&2 echo "***** This script will soon be removed!" >&2 echo "***** See the release notes at https://github.com/cdr/code-server/releases/tag/v3.4.0" >&2 diff --git a/ci/build/release-github-draft.sh b/ci/build/release-github-draft.sh index 28bbb3015..fb4e9720e 100755 --- a/ci/build/release-github-draft.sh +++ b/ci/build/release-github-draft.sh @@ -10,7 +10,7 @@ main() { hub release create \ --file - \ -t "$(git rev-parse HEAD)" \ - --draft "v$VERSION" << EOF + --draft "v$VERSION" < /dev/null - doctoc --title '# Setup Guide' docs/guide.md > /dev/null - doctoc --title '# Install' docs/install.md > /dev/null - doctoc --title '# npm Install Requirements' docs/npm.md > /dev/null - doctoc --title '# Contributing' docs/CONTRIBUTING.md > /dev/null - doctoc --title '# Contributor Covenant Code of Conduct' docs/CODE_OF_CONDUCT.md > /dev/null - doctoc --title '# iPad' docs/ipad.md > /dev/null + doctoc --title '# FAQ' docs/FAQ.md >/dev/null + doctoc --title '# Setup Guide' docs/guide.md >/dev/null + doctoc --title '# Install' docs/install.md >/dev/null + doctoc --title '# npm Install Requirements' docs/npm.md >/dev/null + doctoc --title '# Contributing' docs/CONTRIBUTING.md >/dev/null + doctoc --title '# Contributor Covenant Code of Conduct' docs/CODE_OF_CONDUCT.md >/dev/null + doctoc --title '# iPad' docs/ipad.md >/dev/null if [[ ${CI-} && $(git ls-files --other --modified --exclude-standard) ]]; then echo "Files need generation or are formatted incorrectly:" diff --git a/ci/dev/gen_icons.sh b/ci/dev/gen_icons.sh index 9d27486dc..7617d5e6d 100755 --- a/ci/dev/gen_icons.sh +++ b/ci/dev/gen_icons.sh @@ -35,10 +35,10 @@ main() { # This escapes all newlines so that sed will accept them. favicon_dark_style="$(printf "%s\n" "$favicon_dark_style" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\n/g')" sed "$( - cat -n << EOF + cat -n < favicon-dark-support.svg + )" favicon.svg >favicon-dark-support.svg } main "$@" diff --git a/ci/dev/lint.sh b/ci/dev/lint.sh index 9ba576e00..1a0c7d208 100755 --- a/ci/dev/lint.sh +++ b/ci/dev/lint.sh @@ -8,7 +8,7 @@ main() { stylelint $(git ls-files "*.css" | grep -v "lib/vscode") tsc --noEmit --skipLibCheck shellcheck -e SC2046,SC2164,SC2154,SC1091,SC1090,SC2002 $(git ls-files "*.sh" | grep -v "lib/vscode") - if command -v helm && helm kubeval --help > /dev/null; then + if command -v helm && helm kubeval --help >/dev/null; then helm kubeval ci/helm-chart fi diff --git a/ci/dev/update-vscode.sh b/ci/dev/update-vscode.sh index 3afec387d..169b122ae 100755 --- a/ci/dev/update-vscode.sh +++ b/ci/dev/update-vscode.sh @@ -33,7 +33,7 @@ main() { # Check if the remote exists # if it doesn't, we add it - if ! git config remote.vscode.url > /dev/null; then + if ! git config remote.vscode.url >/dev/null; then echo "Could not find 'vscode' as a remote" echo "Adding with: git remote add vscode https://github.com/microsoft/vscode.git" git remote add vscode https://github.com/microsoft/vscode.git @@ -52,7 +52,7 @@ main() { fi # Check that they have jq installed - if ! command -v jq &> /dev/null; then + if ! command -v jq &>/dev/null; then echo "jq could not be found." echo "We use this when looking up the exact version to update to in the package.json in VS Code." echo -e "See docs here: https://stedolan.github.io/jq/download/" @@ -71,7 +71,7 @@ main() { git fetch vscode # Check if GitHub CLI is installed - if ! command -v gh &> /dev/null; then + if ! command -v gh &>/dev/null; then echo "GitHub CLI could not be found." echo "If you install it before you run this script next time, we'll open a draft PR for you!" echo -e "See docs here: https://github.com/cli/cli#installation\n" diff --git a/ci/images/centos7/Dockerfile b/ci/images/centos7/Dockerfile index a37e590bb..3a82dcf7b 100644 --- a/ci/images/centos7/Dockerfile +++ b/ci/images/centos7/Dockerfile @@ -26,7 +26,6 @@ ENV PATH=/usr/local/go/bin:$GOPATH/bin:$PATH # Install Go dependencies ENV GO111MODULE=on -RUN go get mvdan.cc/sh/v3/cmd/shfmt RUN go get github.com/goreleaser/nfpm/cmd/nfpm@v1.9.0 RUN curl -fsSL https://get.docker.com | sh diff --git a/ci/images/debian10/Dockerfile b/ci/images/debian10/Dockerfile index 5e4a5f859..209776410 100644 --- a/ci/images/debian10/Dockerfile +++ b/ci/images/debian10/Dockerfile @@ -42,7 +42,6 @@ ENV PATH=/usr/local/go/bin:$GOPATH/bin:$PATH # Install Go dependencies ENV GO111MODULE=on -RUN go get mvdan.cc/sh/v3/cmd/shfmt RUN go get github.com/goreleaser/nfpm/cmd/nfpm@v1.9.0 RUN VERSION="$(curl -fsSL https://storage.googleapis.com/kubernetes-release/release/stable.txt)" && \ diff --git a/ci/lib.sh b/ci/lib.sh index 96a413f1c..cebc3d753 100755 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -2,11 +2,11 @@ set -euo pipefail pushd() { - builtin pushd "$@" > /dev/null + builtin pushd "$@" >/dev/null } popd() { - builtin popd > /dev/null + builtin popd >/dev/null } pkg_json_version() { @@ -75,7 +75,7 @@ download_artifact() { local tmp_file tmp_file="$(mktemp)" - curl -fsSL "$(get_artifact_url "$artifact_name")" > "$tmp_file" + curl -fsSL "$(get_artifact_url "$artifact_name")" >"$tmp_file" unzip -q -o "$tmp_file" -d "$dst" rm "$tmp_file" } diff --git a/ci/release-image/entrypoint.sh b/ci/release-image/entrypoint.sh index 48a17a312..1c8c8bfff 100755 --- a/ci/release-image/entrypoint.sh +++ b/ci/release-image/entrypoint.sh @@ -6,7 +6,7 @@ set -eu eval "$(fixuid -q)" if [ "${DOCKER_USER-}" ] && [ "$DOCKER_USER" != "$USER" ]; then - echo "$DOCKER_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null + echo "$DOCKER_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd >/dev/null # Unfortunately we cannot change $HOME as we cannot move any bind mounts # nor can we bind mount $HOME into a new home as that requires a privileged container. sudo usermod --login "$DOCKER_USER" coder diff --git a/ci/steps/build-docker-image.sh b/ci/steps/build-docker-image.sh index 16653a0e9..8ae5855bd 100755 --- a/ci/steps/build-docker-image.sh +++ b/ci/steps/build-docker-image.sh @@ -8,7 +8,7 @@ main() { ./ci/release-image/build.sh mkdir -p release-images - docker save "codercom/code-server-$ARCH:$VERSION" > "release-images/code-server-$ARCH-$VERSION.tar" + docker save "codercom/code-server-$ARCH:$VERSION" >"release-images/code-server-$ARCH-$VERSION.tar" } main "$@" diff --git a/ci/steps/publish-npm.sh b/ci/steps/publish-npm.sh index 7bd497d00..934a5decd 100755 --- a/ci/steps/publish-npm.sh +++ b/ci/steps/publish-npm.sh @@ -6,7 +6,7 @@ main() { source ./ci/lib.sh if [[ ${CI-} ]]; then - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >~/.npmrc fi download_artifact npm-package ./release-npm-package diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 98c88d1b1..15c997fd6 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -36,7 +36,6 @@ There are several differences, however. You must: - Use Node.js version 12.x (or greater) - Have [yarn](https://classic.yarnpkg.com/en/) installed (which is used to install JS packages and run development scripts) - Have [nfpm](https://github.com/goreleaser/nfpm) (which is used to build `.deb` and `.rpm` packages and [jq](https://stedolan.github.io/jq/) (used to build code-server releases) installed -- Have [shfmt](https://pkg.go.dev/mvdan.cc/sh/v3) installed to run `yarn fmt` (requires Go is installed on your system) The [CI container](../ci/images/debian10/Dockerfile) is a useful reference for all of the dependencies code-server uses. diff --git a/install.sh b/install.sh index 0b37747c4..6da274a38 100755 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ usage() { " fi - cath << EOF + cath < /dev/null + command -v "$@" >/dev/null } sh_c() { @@ -571,7 +571,7 @@ prefix() { fifo="$(mktemp -d)/fifo" mkfifo "$fifo" sed -e "s#^#$PREFIX: #" "$fifo" & - "$@" > "$fifo" 2>&1 + "$@" >"$fifo" 2>&1 } main "$@" diff --git a/package.json b/package.json index 65c757883..1c19f78d0 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "_____": "", "fmt": "./ci/dev/fmt.sh", "lint": "./ci/dev/lint.sh", - "test": "./ci/dev/test.sh", + "test": "echo 'Run yarn test:unit or yarn test:e2e' && exit 1", "ci": "./ci/dev/ci.sh", "watch": "VSCODE_IPC_HOOK_CLI= NODE_OPTIONS=--max_old_space_size=32384 ts-node ./ci/dev/watch.ts", "icons": "./ci/dev/gen_icons.sh", @@ -38,7 +38,6 @@ "@types/compression": "^1.7.0", "@types/cookie-parser": "^1.4.2", "@types/express": "^4.17.8", - "@types/fs-extra": "^8.0.1", "@types/http-proxy": "^1.17.4", "@types/js-yaml": "^3.12.3", "@types/node": "^12.12.7", @@ -63,9 +62,10 @@ "istanbul-badges-readme": "^1.2.0", "leaked-handles": "^5.2.0", "parcel-bundler": "^1.12.4", - "prettier": "^2.0.5", + "prettier": "^2.2.1", + "prettier-plugin-sh": "^0.6.0", "stylelint": "^13.0.0", - "stylelint-config-recommended": "^3.0.0", + "stylelint-config-recommended": "^4.0.0", "ts-node": "^9.0.0", "typescript": "^4.1.3", "wtfnode": "^0.8.4" @@ -73,8 +73,7 @@ "resolutions": { "@types/node": "^12.12.7", "safe-buffer": "^5.1.1", - "vfile-message": "^2.0.2", - "node-forge": "^0.10.0" + "vfile-message": "^2.0.2" }, "dependencies": { "@coder/logger": "1.1.16", @@ -83,7 +82,6 @@ "cookie-parser": "^1.4.5", "env-paths": "^2.2.0", "express": "^5.0.0-alpha.8", - "fs-extra": "^9.0.1", "http-proxy": "^1.18.0", "httpolyglot": "^0.1.2", "js-yaml": "^3.13.1", @@ -98,8 +96,8 @@ "safe-compare": "^1.1.4", "semver": "^7.1.3", "split2": "^3.2.2", - "tar": "^6.0.1", "tar-fs": "^2.0.0", + "tar-stream": "^2.2.0", "ws": "^7.2.0", "xdg-basedir": "^4.0.0", "yarn": "^1.22.4" diff --git a/src/node/cli.ts b/src/node/cli.ts index efe3e69e5..7d5b4978e 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -1,5 +1,5 @@ import { field, Level, logger } from "@coder/logger" -import * as fs from "fs-extra" +import { promises as fs } from "fs" import yaml from "js-yaml" import * as os from "os" import * as path from "path" @@ -194,8 +194,8 @@ const options: Options> = { link: { type: OptionalString, description: ` - Securely bind code-server via Coder Cloud with the passed name. You'll get a URL like - https://myname.coder-cloud.com at which you can easily access your code-server instance. + Securely bind code-server via our cloud service with the passed name. You'll get a URL like + https://hostname-username.cdr.co at which you can easily access your code-server instance. Authorization is done via GitHub. `, beta: true, @@ -380,7 +380,6 @@ export async function setDefaults(cliArgs: Args, configArgs?: ConfigArgs): Promi const args = Object.assign({}, configArgs || {}, cliArgs) if (!args["user-data-dir"]) { - await copyOldMacOSDataDir() args["user-data-dir"] = paths.data } @@ -505,13 +504,22 @@ export async function readConfigFile(configPath?: string): Promise { } } - if (!(await fs.pathExists(configPath))) { - await fs.outputFile(configPath, await defaultConfigFile()) + await fs.mkdir(path.dirname(configPath), { recursive: true }) + + try { + await fs.writeFile(configPath, await defaultConfigFile(), { + flag: "wx", // wx means to fail if the path exists. + }) logger.info(`Wrote default config file to ${humanPath(configPath)}`) + } catch (error) { + // EEXIST is fine; we don't want to overwrite existing configurations. + if (error.code !== "EEXIST") { + throw error + } } - const configFile = await fs.readFile(configPath) - return parseConfigFile(configFile.toString(), configPath) + const configFile = await fs.readFile(configPath, "utf8") + return parseConfigFile(configFile, configPath) } /** @@ -594,21 +602,6 @@ function bindAddrFromAllSources(...argsConfig: Args[]): Addr { return addr } -async function copyOldMacOSDataDir(): Promise { - if (os.platform() !== "darwin") { - return - } - if (await fs.pathExists(paths.data)) { - return - } - - // If the old data directory exists, we copy it in. - const oldDataDir = path.join(os.homedir(), "Library/Application Support", "code-server") - if (await fs.pathExists(oldDataDir)) { - await fs.copy(oldDataDir, paths.data) - } -} - export const shouldRunVsCodeCli = (args: Args): boolean => { return !!args["list-extensions"] || !!args["install-extension"] || !!args["uninstall-extension"] } diff --git a/src/node/coder_cloud.ts b/src/node/coder_cloud.ts index 6727d3317..7bca6342a 100644 --- a/src/node/coder_cloud.ts +++ b/src/node/coder_cloud.ts @@ -24,7 +24,7 @@ function runAgent(...args: string[]): Promise { agent.on("close", (code) => { if (code !== 0) { rej({ - message: `coder cloud agent exited with ${code}`, + message: `--link agent exited with ${code}`, }) return } diff --git a/src/node/settings.ts b/src/node/settings.ts index 5f9427aa1..ee955aad9 100644 --- a/src/node/settings.ts +++ b/src/node/settings.ts @@ -1,6 +1,6 @@ import { logger } from "@coder/logger" import { Query } from "express-serve-static-core" -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as path from "path" import { paths } from "./util" diff --git a/src/node/socket.ts b/src/node/socket.ts index ada024831..5885f7fde 100644 --- a/src/node/socket.ts +++ b/src/node/socket.ts @@ -1,4 +1,4 @@ -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as net from "net" import * as path from "path" import * as tls from "tls" @@ -75,7 +75,7 @@ export class SocketProxyProvider { this._proxyServer = this.findFreeSocketPath(this.proxyPipe) .then((pipe) => { this.proxyPipe = pipe - return Promise.all([fs.mkdirp(tmpdir), fs.remove(this.proxyPipe)]) + return Promise.all([fs.mkdir(tmpdir, { recursive: true }), fs.rmdir(this.proxyPipe, { recursive: true })]) }) .then(() => { return new Promise((resolve) => { diff --git a/src/node/util.ts b/src/node/util.ts index 7c4609581..e8ec311ed 100644 --- a/src/node/util.ts +++ b/src/node/util.ts @@ -1,7 +1,7 @@ import * as cp from "child_process" import * as crypto from "crypto" import envPaths from "env-paths" -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as net from "net" import * as os from "os" import * as path from "path" @@ -58,8 +58,11 @@ export const generateCertificate = async (hostname: string): Promise<{ cert: str const certPath = path.join(paths.data, `${hostname.replace(/\./g, "_")}.crt`) const certKeyPath = path.join(paths.data, `${hostname.replace(/\./g, "_")}.key`) - const checks = await Promise.all([fs.pathExists(certPath), fs.pathExists(certKeyPath)]) - if (!checks[0] || !checks[1]) { + // Try generating the certificates if we can't access them (which probably + // means they don't exist). + try { + await Promise.all([fs.access(certPath), fs.access(certKeyPath)]) + } catch (error) { // Require on demand so openssl isn't required if you aren't going to // generate certificates. const pem = require("pem") as typeof import("pem") @@ -86,9 +89,10 @@ DNS.1 = ${hostname} }, ) }) - await fs.mkdirp(paths.data) + await fs.mkdir(paths.data, { recursive: true }) await Promise.all([fs.writeFile(certPath, certs.certificate), fs.writeFile(certKeyPath, certs.serviceKey)]) } + return { cert: certPath, certKey: certKeyPath, diff --git a/test/unit/cli.test.ts b/test/unit/cli.test.ts index a0cd461a4..27498cf00 100644 --- a/test/unit/cli.test.ts +++ b/test/unit/cli.test.ts @@ -1,5 +1,5 @@ import { Level, logger } from "@coder/logger" -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as net from "net" import * as os from "os" import * as path from "path" @@ -337,14 +337,14 @@ describe("cli", () => { const vscodeIpcPath = path.join(os.tmpdir(), "vscode-ipc") beforeAll(async () => { - await fs.remove(testDir) - await fs.mkdirp(testDir) + await fs.rmdir(testDir, { recursive: true }) + await fs.mkdir(testDir, { recursive: true }) }) beforeEach(async () => { delete process.env.VSCODE_IPC_HOOK_CLI args = { _: [] } - await fs.remove(vscodeIpcPath) + await fs.rmdir(vscodeIpcPath, { recursive: true }) }) it("should use existing if inside code-server", async () => { @@ -358,7 +358,7 @@ describe("cli", () => { it("should use existing if --reuse-window is set", async () => { args["reuse-window"] = true - await expect(await shouldOpenInExistingInstance(args)).toStrictEqual(undefined) + await expect(shouldOpenInExistingInstance(args)).resolves.toStrictEqual(undefined) await fs.writeFile(vscodeIpcPath, "test") await expect(shouldOpenInExistingInstance(args)).resolves.toStrictEqual("test") diff --git a/test/unit/socket.test.ts b/test/unit/socket.test.ts index da0b404ac..4fedf5a84 100644 --- a/test/unit/socket.test.ts +++ b/test/unit/socket.test.ts @@ -1,5 +1,5 @@ import { field, logger } from "@coder/logger" -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as net from "net" import * as path from "path" import * as tls from "tls" @@ -45,14 +45,14 @@ describe("SocketProxyProvider", () => { beforeAll(async () => { const cert = await generateCertificate("localhost") const options = { - cert: fs.readFileSync(cert.cert), - key: fs.readFileSync(cert.certKey), + cert: await fs.readFile(cert.cert), + key: await fs.readFile(cert.certKey), rejectUnauthorized: false, } - await fs.mkdirp(path.join(tmpdir, "tests")) + await fs.mkdir(path.join(tmpdir, "tests"), { recursive: true }) const socketPath = await provider.findFreeSocketPath(path.join(tmpdir, "tests/tls-socket-proxy")) - await fs.remove(socketPath) + await fs.rmdir(socketPath, { recursive: true }) return new Promise((_resolve) => { const resolved: { [key: string]: boolean } = { client: false, server: false } @@ -110,10 +110,10 @@ describe("SocketProxyProvider", () => { provider.stop() // We don't need more proxies. proxy.write("server proxy->client") - const dataFromServerToClient = await (await getData(fromServerToClient)).toString() + const dataFromServerToClient = (await getData(fromServerToClient)).toString() expect(dataFromServerToClient).toBe("server proxy->client") client.write("client->server proxy") - const dataFromClientToProxy = await (await getData(fromClientToProxy)).toString() + const dataFromClientToProxy = (await getData(fromClientToProxy)).toString() expect(dataFromClientToProxy).toBe("client->server proxy") expect(errors).toEqual(0) }) diff --git a/test/unit/update.test.ts b/test/unit/update.test.ts index 0f5d55a6c..2f73f80df 100644 --- a/test/unit/update.test.ts +++ b/test/unit/update.test.ts @@ -1,4 +1,4 @@ -import * as fs from "fs-extra" +import { promises as fs } from "fs" import * as http from "http" import * as path from "path" import { SettingsProvider, UpdateSettings } from "../../src/node/settings" @@ -53,8 +53,8 @@ describe.skip("update", () => { host: "localhost", }) }) - await fs.remove(path.join(tmpdir, "tests/updates")) - await fs.mkdirp(path.join(tmpdir, "tests/updates")) + await fs.rmdir(path.join(tmpdir, "tests/updates"), { recursive: true }) + await fs.mkdir(path.join(tmpdir, "tests/updates"), { recursive: true }) }) afterAll(() => { diff --git a/yarn.lock b/yarn.lock index 3b6246e37..99534ec83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== @@ -26,7 +26,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== -"@babel/core@>=7.9.0": +"@babel/core@>=7.9.0", "@babel/core@^7.4.4": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== @@ -48,29 +48,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.4.4": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.0.tgz#e42e07a086e978cdd4c61f4078d8230fb817cc86" - integrity sha512-iV7Gwg0DePKvdDZZWRTkj4MW+6/AbVWd4ZCg+zk8H1RVt5xBpUZS6vLQWwb3pyLg4BFTaGiQCPoJ4Ibmbne4fA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.0" - "@babel/helper-module-transforms" "^7.12.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.12.0" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.0" - "@babel/types" "^7.12.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.0", "@babel/generator@^7.13.0", "@babel/generator@^7.13.9": +"@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.4.4": version "7.13.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== @@ -79,15 +57,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.4.4": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.0.tgz#91a45f1c18ca8d895a35a04da1a4cf7ea3f37f98" - integrity sha512-8lnf4QcyiQMf5XQp47BltuMTocsOh6P0z/vueEh8GzhmWWlDbdvOoI5Ziddg0XYhmnx35HyByUW51/9NprF8cA== - dependencies: - "@babel/types" "^7.12.0" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -346,7 +315,7 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.13.10": +"@babel/helpers@^7.13.10": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== @@ -364,16 +333,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10": +"@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.4.4": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.10.tgz#8f8f9bf7b3afa3eabd061f7a5bcdf4fec3c48409" integrity sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ== -"@babel/parser@^7.4.4": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.0.tgz#2ad388f3960045b22f9b7d4bf85e80b15a1c9e3a" - integrity sha512-dYmySMYnlus2jwl7JnnajAj11obRStZoW9cG04wh4ZuhozDn11tDUrhHcUZ9iuNHqALAhh60XqNaYXpvuuE/Gg== - "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -940,7 +904,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.12.13": +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -949,16 +913,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/template@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.0", "@babel/traverse@^7.13.0": +"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== @@ -973,22 +928,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.4.4": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.0.tgz#ed31953d6e708cdd34443de2fcdb55f72cdfb266" - integrity sha512-ZU9e79xpOukCNPkQ1UzR4gJKCruGckr6edd8v8lmKpSk8iakgUIvb+5ZtaKKV9f7O+x5r+xbMDDIbzVpUoiIuw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.0" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.0" - "@babel/types" "^7.12.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0": +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== @@ -997,15 +937,6 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.10.5", "@babel/types@^7.4.4": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.0.tgz#b6b49f425ee59043fbc89c61b11a13d5eae7b5c6" - integrity sha512-ggIyFmT2zMaYRheOfPDQ4gz7QqV3B+t2rjqjbttDJxMcb7/LukvWCmlIl1sWcOxrvwpTDd+z0OytzqsbGeb3/g== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - "@coder/logger@1.1.16": version "1.1.16" resolved "https://registry.yarnpkg.com/@coder/logger/-/logger-1.1.16.tgz#ee5b1b188f680733f35c11b065bbd139d618c1e1" @@ -1197,13 +1128,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^8.0.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" - integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w== - dependencies: - "@types/node" "*" - "@types/http-proxy@^1.17.4": version "1.17.5" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" @@ -1328,9 +1252,9 @@ "@types/tar-stream" "*" "@types/tar-stream@*", "@types/tar-stream@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/tar-stream/-/tar-stream-2.1.0.tgz#884b1cbe6c35ff459c05a5eba86b406805943ef6" - integrity sha512-s1UQxQUVMHbSkCC0X4qdoiWgHF8DoyY1JjQouFsnk/8ysoTdBaiCHud/exoAZzKDbzAXVc+ah6sczxGVMAohFw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/tar-stream/-/tar-stream-2.2.0.tgz#2778ef8e328a520959a39681c15c83c53553426f" + integrity sha512-sRTpT180sVigzD4SiCWJQQrqcdkWnmscWvx+cXvAoPtXbLFC5+QmKi2xwRcPe4iRu0GcVl1qTeJKUTS5hULfrw== dependencies: "@types/node" "*" @@ -1340,9 +1264,9 @@ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/ws@^7.2.6": - version "7.2.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.7.tgz#362ad1a1d62721bdb725e72c8cccf357078cf5a3" - integrity sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA== + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.0.tgz#499690ea08736e05a8186113dac37769ab251a0e" + integrity sha512-Y29uQ3Uy+58bZrFLhX36hcI3Np37nqWE7ky5tjiDoy1GDZnIwVxS0CgF+s+1bXMzjKBFy+fqaRfb708iNzdinw== dependencies: "@types/node" "*" @@ -1378,13 +1302,13 @@ eslint-utils "^2.0.0" "@typescript-eslint/parser@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.7.0.tgz#44bdab0f788b478178368baa65d3365fdc63da1c" - integrity sha512-+meGV8bMP1sJHBI2AFq1GeTwofcGiur8LoIr6v+rEmD9knyCqDlrQcFHR0KDDfldHIFDU/enZ53fla6ReF4wRw== + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.18.0.tgz#a211edb14a69fc5177054bec04c95b185b4dde21" + integrity sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA== dependencies: - "@typescript-eslint/scope-manager" "4.7.0" - "@typescript-eslint/types" "4.7.0" - "@typescript-eslint/typescript-estree" "4.7.0" + "@typescript-eslint/scope-manager" "4.18.0" + "@typescript-eslint/types" "4.18.0" + "@typescript-eslint/typescript-estree" "4.18.0" debug "^4.1.1" "@typescript-eslint/scope-manager@4.18.0": @@ -1395,24 +1319,11 @@ "@typescript-eslint/types" "4.18.0" "@typescript-eslint/visitor-keys" "4.18.0" -"@typescript-eslint/scope-manager@4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.7.0.tgz#2115526085fb72723ccdc1eeae75dec7126220ed" - integrity sha512-ILITvqwDJYbcDCROj6+Ob0oCKNg3SH46iWcNcTIT9B5aiVssoTYkhKjxOMNzR1F7WSJkik4zmuqve5MdnA0DyA== - dependencies: - "@typescript-eslint/types" "4.7.0" - "@typescript-eslint/visitor-keys" "4.7.0" - "@typescript-eslint/types@4.18.0": version "4.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.18.0.tgz#bebe323f81f2a7e2e320fac9415e60856267584a" integrity sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A== -"@typescript-eslint/types@4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.7.0.tgz#5e95ef5c740f43d942542b35811f87b62fccca69" - integrity sha512-uLszFe0wExJc+I7q0Z/+BnP7wao/kzX0hB5vJn4LIgrfrMLgnB2UXoReV19lkJQS1a1mHWGGODSxnBx6JQC3Sg== - "@typescript-eslint/typescript-estree@4.18.0": version "4.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz#756d3e61da8c16ab99185532c44872f4cd5538cb" @@ -1426,20 +1337,6 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.7.0.tgz#539531167f05ba20eb0b6785567076679e29d393" - integrity sha512-5XZRQznD1MfUmxu1t8/j2Af4OxbA7EFU2rbo0No7meb46eHgGkSieFdfV6omiC/DGIBhH9H9gXn7okBbVOm8jw== - dependencies: - "@typescript-eslint/types" "4.7.0" - "@typescript-eslint/visitor-keys" "4.7.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - "@typescript-eslint/visitor-keys@4.18.0": version "4.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz#4e6fe2a175ee33418318a029610845a81e2ff7b6" @@ -1448,14 +1345,6 @@ "@typescript-eslint/types" "4.18.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.7.0.tgz#6783824f22acfc49e754970ed21b88ac03b80e6f" - integrity sha512-aDJDWuCRsf1lXOtignlfiPODkzSxxop7D0rZ91L6ZuMlcMCSh0YyK+gAfo5zN/ih6WxMwhoXgJWC3cWQdaKC+A== - dependencies: - "@typescript-eslint/types" "4.7.0" - eslint-visitor-keys "^2.0.0" - abab@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -1721,11 +1610,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1798,10 +1682,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -1836,9 +1720,9 @@ bindings@^1.5.0: file-uri-to-path "1.0.0" bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -1992,17 +1876,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.8.5: - version "4.14.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" - integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== - dependencies: - caniuse-lite "^1.0.30001135" - electron-to-chromium "^1.3.571" - escalade "^3.1.0" - node-releases "^1.1.61" - -browserslist@^4.12.0, browserslist@^4.14.5: +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.8.5: version "4.16.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== @@ -2056,12 +1930,12 @@ buffer@^4.3.0: isarray "^1.0.0" buffer@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" builtin-status-codes@^3.0.0: version "3.0.0" @@ -2151,7 +2025,7 @@ caniuse-lite@^1.0.0: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz#dc97c7ed918ab33bf8706ddd5e387287e015d637" integrity sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw== -caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135, caniuse-lite@^1.0.30001181: +caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181: version "1.0.30001198" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001198.tgz#ed2d9b5f060322ba2efa42afdc56dee3255473f4" integrity sha512-r5GGgESqOPZzwvdLVER374FpQu2WluCF1Z2DSiFJ89KSmGjT0LVKjgv4NcAqHmGWF9ihNpqRI9KXO9Ex4sKsgA== @@ -2233,11 +2107,6 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3047,7 +2916,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.571, electron-to-chromium@^1.3.649: +electron-to-chromium@^1.3.649: version "1.3.685" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.685.tgz#f636d17c9c232c925f8bbfbff4f86303da091ff9" integrity sha512-C3oFZNkJ8lz85ADqr3hzpjBc2ciejMRN2SCd/D0hwcqpr6MGxfdN/j89VN6l+ERTuCUvhg0VYsf40Q4qTz4bhQ== @@ -3170,7 +3039,7 @@ es6-promisify@^6.0.0: resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.1.tgz#46837651b7b06bf6fff893d03f29393668d01621" integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg== -escalade@^3.1.0, escalade@^3.1.1: +escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -3257,9 +3126,9 @@ eslint-plugin-import@^2.18.2: tsconfig-paths "^3.9.0" eslint-plugin-prettier@^3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -3726,23 +3595,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3774,7 +3626,7 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -4195,10 +4047,10 @@ icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" @@ -4610,9 +4462,9 @@ isstream@~0.1.2: integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-badges-readme@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-badges-readme/-/istanbul-badges-readme-1.2.0.tgz#f6dc226fb2ef498b1743ca15ae2dd82ccd3b0c28" - integrity sha512-7yU9tFbl7IsqlgfFF52G1fj7w2Z2k+UykVrCCIAQ8pnezZIIwxtAD079cIcqsbyCH7gCAALhiW3waHv9C24vrg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-badges-readme/-/istanbul-badges-readme-1.2.1.tgz#aea1891f4515ddfe7f62704cba87bd25cccfcce0" + integrity sha512-/rXtmpI0bzdmgaeZrutA5vL6c0NikSRRfBmjVxS0yJgU1o5elQARXiFQTiakkxGCrI2vS/k4X6zjGrV+32FJFQ== js-tokens@^4.0.0: version "4.0.0" @@ -4730,15 +4582,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== - dependencies: - universalify "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5147,21 +4990,6 @@ minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5182,11 +5010,6 @@ mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5202,6 +5025,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mvdan-sh@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mvdan-sh/-/mvdan-sh-0.5.0.tgz#fa76f611a103595ad0f04f5d18e582892c46e87c" + integrity sha512-UWbdl4LHd2fUnaEcOUFVWRdWGLkNoV12cKVIPiirYd8qM5VkCoCTXErlDubevrkEG7kGohvjRxAlTQmOqG80tw== + nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" @@ -5254,7 +5082,7 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-forge@^0.10.0, node-forge@^0.7.1: +node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== @@ -5288,7 +5116,7 @@ node-libs-browser@^2.0.0: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.61, node-releases@^1.1.70: +node-releases@^1.1.70: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== @@ -5590,9 +5418,9 @@ pako@~1.0.5: integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parcel-bundler@^1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.12.4.tgz#31223f4ab4d00323a109fce28d5e46775409a9ee" - integrity sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ== + version "1.12.5" + resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.12.5.tgz#91f7de1c1fbfe5111616d3211c749c85c4d8acf0" + integrity sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.4.4" @@ -5637,7 +5465,7 @@ parcel-bundler@^1.12.4: json5 "^1.0.1" micromatch "^3.0.4" mkdirp "^0.5.1" - node-forge "^0.7.1" + node-forge "^0.10.0" node-libs-browser "^2.0.0" opn "^5.1.0" postcss "^7.0.11" @@ -6306,7 +6134,14 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.0.5: +prettier-plugin-sh@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-sh/-/prettier-plugin-sh-0.6.0.tgz#021c22597a5a866c346095cd7f6c662a49dea249" + integrity sha512-y+SSThg/8mrGGkcAolWpociiTZlH7nlIUtqZl1dueyhngof8rD48tUHVQqvIaCx21T/0+9TyzsTEsVviPjR5og== + dependencies: + mvdan-sh "^0.5.0" + +prettier@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== @@ -6340,9 +6175,9 @@ proxy-addr@~2.0.5: ipaddr.js "1.9.1" proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.0.tgz#a92976af3fbc7d846f2e850e2ac5ac6ca3fb74c7" - integrity sha512-8P0Y2SkwvKjiGU1IkEfYuTteioMIDFxPL4/j49zzt5Mz3pG1KO+mIrDG1qH0PQUHTTczjwGcYl+EzfXiFj5vUQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c" + integrity sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA== dependencies: agent-base "^6.0.0" debug "4" @@ -6787,14 +6622,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.5, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.4.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.3.2: +resolve@^1.1.5, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.4.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -6929,9 +6757,11 @@ semver@^6.3.0: integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" send@0.17.1: version "0.17.1" @@ -7383,10 +7213,10 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylelint-config-recommended@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" - integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== +stylelint-config-recommended@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-4.0.0.tgz#665a0034065e6704d5032ba51bf4efa37d328ef9" + integrity sha512-sgna89Ng+25Hr9kmmaIxpGWt2LStVm1xf1807PdcWasiPDaOTkOHRL61sINw0twky7QMzafCGToGDnHT/kTHtQ== stylelint@^13.0.0: version "13.12.0" @@ -7522,19 +7352,19 @@ table@^6.0.4, table@^6.0.7: string-width "^4.2.0" tar-fs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" - integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" pump "^3.0.0" - tar-stream "^2.0.0" + tar-stream "^2.1.4" -tar-stream@^2.0.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" - integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== +tar-stream@^2.1.4, tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" end-of-stream "^1.4.1" @@ -7542,18 +7372,6 @@ tar-stream@^2.0.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^6.0.1: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - terser@^3.7.3: version "3.17.0" resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" @@ -7966,11 +7784,6 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -8241,9 +8054,9 @@ ws@^6.1.2: async-limiter "~1.0.0" ws@^7.2.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== wtfnode@^0.8.4: version "0.8.4"