Compare commits

..

4 Commits
main ... v4.0.1

Author SHA1 Message Date
Joe Previte 7fe23daf00
chore: update CHANGELOG for 4.0.1 2022-01-05 10:35:09 -07:00
Joe Previte 4d900a307b
chore: bump helm-chart to 2.0.0 2022-01-05 09:32:45 -07:00
Joe Previte 503dfdece5
fix: ignore pre-commit hook for release-prep script 2022-01-05 09:32:45 -07:00
Joe Previte 9b001c52fe
chore(release): bump version to 4.0.1 2022-01-05 09:32:45 -07:00
70 changed files with 2445 additions and 1995 deletions

79
.github/ISSUE_TEMPLATE/bug-report.md vendored Normal file
View File

@ -0,0 +1,79 @@
---
name: Bug report
about: Report a bug and help us improve
title: ""
labels: ""
assignees: ""
---
<!--
Hi there! 👋
Thanks for reporting a bug.
Please search for existing issues before filing, as they may contain additional
information about the problem and descriptions of workarounds. Provide as much
information as you can, so that we can reproduce the issue. Otherwise, we may
not be able to help diagnose the problem, and may close the issue as
unreproducible or incomplete. For visual defects, please include screenshots to
help us understand the issue.
-->
## OS/Web Information
- Web Browser:
- Local OS:
- Remote OS:
- Remote Architecture:
- `code-server --version`:
## Steps to Reproduce
1.
2.
3.
## Expected
<!-- What should happen? -->
## Actual
<!-- What actually happens? -->
## Logs
<!--
First run code-server with at least debug logging (or trace to be really
thorough) by setting the --log flag or the LOG_LEVEL environment variable. -vvv
and --verbose are aliases for --log trace. For example:
code-server --log debug
Once this is done, replicate the issue you're having then collect logging
information from the following places:
1. The most recent files from ~/.local/share/code-server/coder-logs.
2. The browser console.
3. The browser network tab.
Additionally, collecting core dumps (you may need to enable them first) if
code-server crashes can be helpful.
-->
<!--
If you're having issues with installation please include the installation logs
i.e. the output of `yarn global add code-server` if you installed with `yarn`
-->
## Screenshot
<!-- Ideally provide a screenshot, gif, video or screen recording. -->
## Notes
<!-- If you can reproduce the issue on vanilla VS Code,
please file the issue at the VS Code repository instead. -->
This issue can be reproduced in VS Code: Yes/No

View File

@ -1,86 +0,0 @@
name: Bug report
description: File a bug report
title: "[Bug]: "
labels: ["bug", "triage"]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: OS/Web Information
description: |
examples:
- **Web Browser**: Chrome
- **Local OS**: macOS
- **Remote OS**: Ubuntu
- **Remote Architecture**: amd64
- **`code-server --version`**: 4.0.1
value: |
- Web Browser:
- Local OS:
- Remote OS:
- Remote Architecture:
- `code-server --version`:
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: |
1. open code-server
2. install extension
3. run command
value: |
1.
2.
3.
validations:
required: true
- type: textarea
attributes:
label: Expected
description: What should happen?
validations:
required: true
- type: textarea
attributes:
label: Actual
description: What actually happens?
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs
description: Run code-server with the --verbose flag and then paste any relevant logs from the server, from the browser console and/or the browser network tab. For issues with installation, include installation logs (i.e. output of `yarn global add code-server`).
- type: textarea
attributes:
label: Screenshot/Video
description: Please include a screenshot, gif or screen recording of your issue.
validations:
required: false
- type: checkboxes
attributes:
label: Does this issue happen in VS Code?
description: Please try reproducing this issue in VS Code
options:
- label: I cannot reproduce this in VS Code.
required: true
- type: checkboxes
attributes:
label: Are you accessing code-server over HTTPS?
description: code-server relies on service workers for many features. Double-check that you are using HTTPS.
options:
- label: I am using HTTPS.
required: true
- type: textarea
attributes:
label: Notes
description: Please include any addition notes that will help us resolve this issue.
validations:
required: false

View File

@ -1,8 +1,8 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Question? - name: Question
url: https://github.com/coder/code-server/discussions/new?category_id=22503114 url: https://github.com/cdr/code-server/discussions/new?category_id=22503114
about: Ask the community for help on our GitHub Discussions board about: Ask the community for help on our GitHub Discussions board
- name: code-server Slack Community - name: Chat
about: Need immediate help or just want to talk? Hop in our Slack. Note - this Slack is not actively monitored by code-server maintainers. about: Need immediate help or just want to talk? Hop in our Slack
url: https://cdr.co/join-community url: https://cdr.co/join-community

View File

@ -1,13 +1,7 @@
--- ---
name: Documentation improvement name: Documentation improvement
about: Suggest a documentation improvement about: Suggest a documentation improvement
title: "[Docs]: " title: ""
labels: "docs" labels: "docs"
assignees: "@jsjoeio" assignees: ""
--- ---
## What is your suggestion?
## How will this improve the docs?
## Are you interested in submitting a PR for this?

View File

@ -1,15 +1,13 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea to improve code-server about: Suggest an idea
title: "[Feat]: " title: ""
labels: enhancement labels: feature
assignees: "" assignees: ""
--- ---
## What is your suggestion? <!--
Please search for existing issues before filing.
## Why do you want this feature? Please describe the feature as clearly as possible!
-->
## Are there any workarounds to get this functionality today?
## Are you interested in submitting a PR for this?

16
.github/ISSUE_TEMPLATE/release.md vendored Normal file
View File

@ -0,0 +1,16 @@
---
name: Release
about: "*For maintainers only*"
title: "release: 0.0.0"
labels: ""
assignees: "@cdr/code-server-reviewers"
---
<!-- Maintainer: fill out the checklist -->
## Checklist
- [ ] Assign to next release manager
- [ ] Close previous release milestone
- [ ] Create next release milestone
- [ ] Associate issue with next release milestone

63
.github/semantic.yaml vendored
View File

@ -1,63 +0,0 @@
###############################################################################
# This file configures "Semantic Pull Requests", which is documented here:
# https://github.com/zeke/semantic-pull-requests
###############################################################################
# Scopes are optionally supplied after a 'type'. For example, in
#
# feat(docs): autostart ui
#
# '(docs)' is the scope. Scopes are used to signify where the change occurred.
scopes:
# docs: changes to the code-server documentation.
- docs
# vendor: changes to vendored dependencies.
- vendor
# deps: changes to code-server's dependencies.
- deps
# cs: changes to code specific to code-server.
- cs
# cli: changes to the command-line interface.
- cli
# We only check that the PR title is semantic. The PR title is automatically
# applied to the "Squash & Merge" flow as the suggested commit message, so this
# should suffice unless someone drastically alters the message in that flow.
titleOnly: true
# Types are the 'tag' types in a commit or PR title. For example, in
#
# chore: fix thing
#
# 'chore' is the type.
types:
# A build of any kind.
- build
# A user-facing change that corrects a defect in code-server.
- fix
# Any code task that is ignored for changelog purposes. Examples include
# devbin scripts and internal-only configurations.
- chore
# Any work performed on CI.
- ci
# Work that directly implements or supports the implementation of a feature.
- feat
# A refactor changes code structure without any behavioral change.
- refactor
# A git revert for any style of commit.
- revert
# Adding tests of any kind. Should be separate from feature or fix
# implementations. For example, if a commit adds a fix + test, it's a fix
# commit. If a commit is simply bumping coverage, it's a test commit.
- test

View File

@ -34,7 +34,7 @@ jobs:
# NOTE@jsjoeio # NOTE@jsjoeio
# disabling this until we can audit the build process # disabling this until we can audit the build process
# and the usefulness of this step # and the usefulness of this step
# See: https://github.com/coder/code-server/issues/4287 # See: https://github.com/cdr/code-server/issues/4287
# - name: Fetch dependencies from cache # - name: Fetch dependencies from cache
# id: cache-yarn # id: cache-yarn
# uses: actions/cache@v2 # uses: actions/cache@v2
@ -177,33 +177,6 @@ jobs:
name: npm-package name: npm-package
path: ./package.tar.gz path: ./package.tar.gz
npm:
# the npm-package gets uploaded as an artifact in Build
# so we need that to complete before this runs
needs: build
# This environment "npm" requires someone from
# coder/code-server-reviewers to approve the PR before this job runs.
environment: npm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
id: download
with:
name: "npm-package"
path: release-npm-package
- name: Run ./ci/steps/publish-npm.sh
run: yarn publish:npm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# NOTE@jsjoeio
# NPM_ENVIRONMENT intentionally not set here.
# Instead, itis determined in publish-npm.sh script
# using GITHUB environment variables
# TODO: cache building yarn --production # TODO: cache building yarn --production
# possibly 2m30s of savings(?) # possibly 2m30s of savings(?)
# this requires refactoring our release scripts # this requires refactoring our release scripts
@ -455,7 +428,7 @@ jobs:
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Run Trivy vulnerability scanner in repo mode - name: Run Trivy vulnerability scanner in repo mode
#Commit SHA for v0.0.17 #Commit SHA for v0.0.17
uses: aquasecurity/trivy-action@a7a829a4345428ddd92ca57b18257440f6a18c90 uses: aquasecurity/trivy-action@8f4c7160b470bafe4299efdc1c8a1fb495f8325a
with: with:
scan-type: "fs" scan-type: "fs"
scan-ref: "." scan-ref: "."

View File

@ -6,15 +6,13 @@ on:
workflow_dispatch: workflow_dispatch:
release: release:
types: types: [released]
- released
jobs: jobs:
docker-images: docker-images:
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- name: Checkout - uses: actions/checkout@v2
uses: actions/checkout@v2
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v1
@ -22,13 +20,9 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Run ./ci/steps/docker-buildx-push.sh - name: Run ./ci/steps/docker-buildx-push.sh
run: ./ci/steps/docker-buildx-push.sh run: ./ci/steps/docker-buildx-push.sh
env: env:
GITHUB_TOKEN: ${{ github.token }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

View File

@ -16,18 +16,11 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/download-artifact@v2 - name: Run ./ci/steps/publish-npm.sh
id: download run: ./ci/steps/publish-npm.sh
with:
name: "npm-package"
path: release-npm-package
- name: Publish npm package and tag with "latest"
run: yarn publish:npm
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_ENVIRONMENT: "production"
homebrew: homebrew:
# The newest version of code-server needs to be available on npm when this runs # The newest version of code-server needs to be available on npm when this runs

1
.nvmrc Symbolic link
View File

@ -0,0 +1 @@
.node-version

View File

@ -50,7 +50,7 @@
{ {
"file": "src/node/heart.ts", "file": "src/node/heart.ts",
"line": 7, "line": 7,
"description": "code-server's heart beats to indicate recent activity.\n\nAlso documented here: [https://github.com/coder/code-server/blob/master/docs/FAQ.md#heartbeat-file](https://github.com/coder/code-server/blob/master/docs/FAQ.md#heartbeat-file)" "description": "code-server's heart beats to indicate recent activity.\n\nAlso documented here: [https://github.com/cdr/code-server/blob/master/docs/FAQ.md#heartbeat-file](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#heartbeat-file)"
}, },
{ {
"file": "src/node/socket.ts", "file": "src/node/socket.ts",
@ -80,12 +80,12 @@
{ {
"file": "src/node/routes/domainProxy.ts", "file": "src/node/routes/domainProxy.ts",
"line": 18, "line": 18,
"description": "code-server provides a built-in proxy to help in developing web-based applications. This is the code for the domain-based proxy.\n\nAlso documented here: [https://github.com/coder/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services](https://github.com/coder/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services)" "description": "code-server provides a built-in proxy to help in developing web-based applications. This is the code for the domain-based proxy.\n\nAlso documented here: [https://github.com/cdr/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services)"
}, },
{ {
"file": "src/node/routes/pathProxy.ts", "file": "src/node/routes/pathProxy.ts",
"line": 19, "line": 19,
"description": "Here is the path-based version of the proxy.\n\nAlso documented here: [https://github.com/coder/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services](https://github.com/coder/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services)" "description": "Here is the path-based version of the proxy.\n\nAlso documented here: [https://github.com/cdr/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#how-do-i-securely-access-web-services)"
}, },
{ {
"file": "src/node/proxy.ts", "file": "src/node/proxy.ts",
@ -95,7 +95,7 @@
{ {
"file": "src/node/routes/health.ts", "file": "src/node/routes/health.ts",
"line": 5, "line": 5,
"description": "A simple endpoint that lets you see if code-server is up.\n\nAlso documented here: [https://github.com/coder/code-server/blob/master/docs/FAQ.md#healthz-endpoint](https://github.com/coder/code-server/blob/master/docs/FAQ.md#healthz-endpoint)" "description": "A simple endpoint that lets you see if code-server is up.\n\nAlso documented here: [https://github.com/cdr/code-server/blob/master/docs/FAQ.md#healthz-endpoint](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#healthz-endpoint)"
}, },
{ {
"file": "src/node/routes/login.ts", "file": "src/node/routes/login.ts",
@ -145,7 +145,7 @@
{ {
"directory": "vendor/modules/code-oss-dev", "directory": "vendor/modules/code-oss-dev",
"line": 1, "line": 1,
"description": "code-server makes use of VS Code's frontend web/remote support. Most of the modifications implement the remote server since that portion of the code is closed source and not released with VS Code.\n\nWe also have a few bug fixes and have added some features (like client-side extensions). See [https://github.com/coder/code-server/blob/master/docs/CONTRIBUTING.md#modifications-to-vs-code](https://github.com/coder/code-server/blob/master/docs/CONTRIBUTING.md#modifications-to-vs-code) for a list.\n\nWe make an effort to keep the modifications as few as possible." "description": "code-server makes use of VS Code's frontend web/remote support. Most of the modifications implement the remote server since that portion of the code is closed source and not released with VS Code.\n\nWe also have a few bug fixes and have added some features (like client-side extensions). See [https://github.com/cdr/code-server/blob/master/docs/CONTRIBUTING.md#modifications-to-vs-code](https://github.com/cdr/code-server/blob/master/docs/CONTRIBUTING.md#modifications-to-vs-code) for a list.\n\nWe make an effort to keep the modifications as few as possible."
} }
] ]
} }

View File

@ -20,7 +20,7 @@
{ {
"file": "src/node/app.ts", "file": "src/node/app.ts",
"line": 62, "line": 62,
"description": "## That's it!\n\n\nThat's all there is to it! When this tour ends, your terminal session may stop, but just use `yarn watch` to start developing from here on out!\n\n\nIf you haven't already, be sure to check out these resources:\n- [Tour: Contributing](command:codetour.startTourByTitle?[\"Contributing\")\n- [Docs: FAQ.md](https://github.com/coder/code-server/blob/master/docs/FAQ.md)\n- [Docs: CONTRIBUTING.md](https://github.com/coder/code-server/blob/master/docs/CONTRIBUTING.md)\n- [Community: GitHub Discussions](https://github.com/coder/code-server/discussions)\n- [Community: Slack](https://community.coder.com)" "description": "## That's it!\n\n\nThat's all there is to it! When this tour ends, your terminal session may stop, but just use `yarn watch` to start developing from here on out!\n\n\nIf you haven't already, be sure to check out these resources:\n- [Tour: Contributing](command:codetour.startTourByTitle?[\"Contributing\")\n- [Docs: FAQ.md](https://github.com/cdr/code-server/blob/master/docs/FAQ.md)\n- [Docs: CONTRIBUTING.md](https://github.com/cdr/code-server/blob/master/docs/CONTRIBUTING.md)\n- [Community: GitHub Discussions](https://github.com/cdr/code-server/discussions)\n- [Community: Slack](https://community.coder.com)"
} }
] ]
} }

View File

@ -20,7 +20,7 @@ VS Code v99.99.999
--> -->
## [Unreleased](https://github.com/coder/code-server/releases) ## [Unreleased](https://github.com/cdr/code-server/releases)
VS Code v0.00.0 VS Code v0.00.0
@ -28,18 +28,7 @@ VS Code v0.00.0
- Add here - Add here
## [4.0.2](https://github.com/coder/code-server/releases/tag/v4.0.2) - 2022-01-27 ## [4.0.1](https://github.com/cdr/code-server/releases/tag/v4.0.1) - 2022-01-04
VS Code v1.63.0
### Fixed
- Unset the `BROWSER` environment variable. This fixes applications that hard
exit when trying to spawn the helper script `BROWSER` points to because the
file is missing. While we do include the script now we are leaving the
variable omitted because the script does not work yet.
## [4.0.1](https://github.com/coder/code-server/releases/tag/v4.0.1) - 2022-01-04
VS Code v1.63.0 VS Code v1.63.0
@ -55,9 +44,6 @@ implementation (#4414).
- OpenVSX has been made the default marketplace. - OpenVSX has been made the default marketplace.
- The last opened folder/workspace is no longer stored separately in the - The last opened folder/workspace is no longer stored separately in the
settings file (we rely on the already-existing query object instead). settings file (we rely on the already-existing query object instead).
- The marketplace override environment variables `SERVICE_URL` and `ITEM_URL`
have been replaced with a single `EXTENSIONS_GALLERY` variable that
corresponds to `extensionsGallery` in VS Code's `product.json`.
### Added ### Added
@ -77,7 +63,7 @@ implementation (#4414).
- We fixed a XSS vulnerability by escaping HTML from messages in the error page (#4430). - We fixed a XSS vulnerability by escaping HTML from messages in the error page (#4430).
## [3.12.0](https://github.com/coder/code-server/releases/tag/v3.12.0) - 2021-09-15 ## [3.12.0](https://github.com/cdr/code-server/releases/tag/v3.12.0) - 2021-09-15
VS Code v1.60.0 VS Code v1.60.0
@ -89,15 +75,15 @@ VS Code v1.60.0
- Fix logout when using a base path (#3608). - Fix logout when using a base path (#3608).
## [3.11.1](https://github.com/coder/code-server/releases/tag/v3.11.1) - 2021-08-06 ## [3.11.1](https://github.com/cdr/code-server/releases/tag/v3.11.1) - 2021-08-06
Undocumented (see releases page). Undocumented (see releases page).
## [3.11.0](https://github.com/coder/code-server/releases/tag/v3.11.0) - 2021-06-14 ## [3.11.0](https://github.com/cdr/code-server/releases/tag/v3.11.0) - 2021-06-14
Undocumented (see releases page). Undocumented (see releases page).
## [3.10.2](https://github.com/coder/code-server/releases/tag/v3.10.2) - 2021-05-21 ## [3.10.2](https://github.com/cdr/code-server/releases/tag/v3.10.2) - 2021-05-21
VS Code v1.56.1 VS Code v1.56.1
@ -113,7 +99,7 @@ VS Code v1.56.1
- Fix "Open Folder" on welcome page (#3437). - Fix "Open Folder" on welcome page (#3437).
## [3.10.1](https://github.com/coder/code-server/releases/tag/v3.10.1) - 2021-05-17 ## [3.10.1](https://github.com/cdr/code-server/releases/tag/v3.10.1) - 2021-05-17
VS Code v1.56.1 VS Code v1.56.1
@ -127,7 +113,7 @@ VS Code v1.56.1
- Use xdgBasedir.runtime instead of tmp (#3304). - Use xdgBasedir.runtime instead of tmp (#3304).
## [3.10.0](https://github.com/coder/code-server/releases/tag/v3.10.0) - 2021-05-10 ## [3.10.0](https://github.com/cdr/code-server/releases/tag/v3.10.0) - 2021-05-10
VS Code v1.56.0 VS Code v1.56.0
@ -158,4 +144,4 @@ VS Code v1.56.0
This was added with `3.10.0`, which means any previous versions are not This was added with `3.10.0`, which means any previous versions are not
documented in the changelog. documented in the changelog.
To see those, please visit the [Releases page](https://github.com/coder/code-server/releases). To see those, please visit the [Releases page](https://github.com/cdr/code-server/releases).

View File

@ -26,7 +26,7 @@ main() {
echo "Downloading the cloud agent..." echo "Downloading the cloud agent..."
set +e set +e
curl -fsSL "https://github.com/coder/cloud-agent/releases/latest/download/cloud-agent-$OS-$ARCH" -o ./lib/coder-cloud-agent curl -fsSL "https://github.com/cdr/cloud-agent/releases/latest/download/cloud-agent-$OS-$ARCH" -o ./lib/coder-cloud-agent
chmod +x ./lib/coder-cloud-agent chmod +x ./lib/coder-cloud-agent
set -e set -e
fi fi

View File

@ -82,13 +82,6 @@ bundle_vscode() {
mkdir -p "$VSCODE_OUT_PATH/resources/" mkdir -p "$VSCODE_OUT_PATH/resources/"
rsync "$VSCODE_SRC_PATH/resources/" "$VSCODE_OUT_PATH/resources/" rsync "$VSCODE_SRC_PATH/resources/" "$VSCODE_OUT_PATH/resources/"
# TODO: We should look into using VS Code's packaging task (see
# gulpfile.reh.js). For now copy this directory into the right spot (for some
# reason VS Code uses a different path in production).
mkdir -p "$VSCODE_OUT_PATH/bin/helpers"
rsync "$VSCODE_SRC_PATH/resources/server/bin/helpers/" "$VSCODE_OUT_PATH/bin/helpers"
chmod +x "$VSCODE_OUT_PATH/bin/helpers/browser.sh"
# Add the commit and date and enable telemetry. This just makes telemetry # Add the commit and date and enable telemetry. This just makes telemetry
# available; telemetry can still be disabled by flag or setting. # available; telemetry can still be disabled by flag or setting.
jq --slurp '.[0] * .[1]' "$VSCODE_SRC_PATH/product.json" <( jq --slurp '.[0] * .[1]' "$VSCODE_SRC_PATH/product.json" <(

View File

@ -5,7 +5,7 @@ set -eu
# Runs code-server with the bundled node binary. # Runs code-server with the bundled node binary.
_realpath() { _realpath() {
# See https://github.com/coder/code-server/issues/1537 on why no realpath or readlink -f. # See https://github.com/cdr/code-server/issues/1537 on why no realpath or readlink -f.
script="$1" script="$1"
cd "$(dirname "$script")" cd "$(dirname "$script")"
@ -16,7 +16,7 @@ _realpath() {
&& cat package.json | grep -q '^ "name": "code-server",$'; then && cat package.json | grep -q '^ "name": "code-server",$'; then
echo "***** Please use the script in bin/code-server instead!" >&2 echo "***** Please use the script in bin/code-server instead!" >&2
echo "***** This script will soon be removed!" >&2 echo "***** This script will soon be removed!" >&2
echo "***** See the release notes at https://github.com/coder/code-server/releases/tag/v3.4.0" >&2 echo "***** See the release notes at https://github.com/cdr/code-server/releases/tag/v3.4.0" >&2
fi fi
script="$(readlink "$(basename "$script")")" script="$(readlink "$(basename "$script")")"

View File

@ -8,7 +8,7 @@ maintainer: "Anmol Sethi <hi@nhooyr.io>"
description: | description: |
Run VS Code in the browser. Run VS Code in the browser.
vendor: "Coder" vendor: "Coder"
homepage: "https://github.com/coder/code-server" homepage: "https://github.com/cdr/code-server"
license: "MIT" license: "MIT"
contents: contents:

View File

@ -60,7 +60,7 @@ main() {
mkdir -p ./lib mkdir -p ./lib
if curl -fsSL "https://github.com/coder/cloud-agent/releases/latest/download/cloud-agent-$OS-$ARCH" -o ./lib/coder-cloud-agent; then if curl -fsSL "https://github.com/cdr/cloud-agent/releases/latest/download/cloud-agent-$OS-$ARCH" -o ./lib/coder-cloud-agent; then
chmod +x ./lib/coder-cloud-agent chmod +x ./lib/coder-cloud-agent
else else
echo "Failed to download cloud agent; --link will not work" echo "Failed to download cloud agent; --link will not work"
@ -68,7 +68,7 @@ main() {
if ! vscode_yarn; then if ! vscode_yarn; then
echo "You may not have the required dependencies to build the native modules." echo "You may not have the required dependencies to build the native modules."
echo "Please see https://github.com/coder/code-server/blob/master/docs/npm.md" echo "Please see https://github.com/cdr/code-server/blob/master/docs/npm.md"
exit 1 exit 1
fi fi

View File

@ -90,7 +90,7 @@ main() {
echo -e "\nOpening a draft PR on GitHub" echo -e "\nOpening a draft PR on GitHub"
# To read about these flags, visit the docs: https://cli.github.com/manual/gh_pr_create # To read about these flags, visit the docs: https://cli.github.com/manual/gh_pr_create
$CMD gh pr create --base main --title "release: $CODE_SERVER_VERSION_TO_UPDATE" --body "$RELEASE_TEMPLATE_STRING" --reviewer @coder/code-server-reviewers --repo coder/code-server --draft --assignee "@me" $CMD gh pr create --base main --title "release: $CODE_SERVER_VERSION_TO_UPDATE" --body "$RELEASE_TEMPLATE_STRING" --reviewer @cdr/code-server-reviewers --repo cdr/code-server --draft --assignee "@me"
# Open PR in browser # Open PR in browser
$CMD gh pr view --web $CMD gh pr view --web

View File

@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: code-server name: code-server
description: A Helm chart for coder/code-server description: A Helm chart for cdr/code-server
# A chart can be either an 'application' or a 'library' chart. # A chart can be either an 'application' or a 'library' chart.
# #
@ -15,9 +15,9 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 2.1.0 version: 2.0.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 4.0.2 appVersion: 4.0.1

View File

@ -21,7 +21,6 @@ spec:
app.kubernetes.io/name: {{ include "code-server.name" . }} app.kubernetes.io/name: {{ include "code-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
spec: spec:
imagePullSecrets: {{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- if .Values.hostnameOverride }} {{- if .Values.hostnameOverride }}
hostname: {{ .Values.hostnameOverride }} hostname: {{ .Values.hostnameOverride }}
{{- end }} {{- end }}

View File

@ -18,9 +18,6 @@ metadata:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
spec: spec:
{{- if .Values.ingress.ingressClassName }}
ingressClassName: {{ .Values.ingress.ingressClassName }}
{{- end }}
{{- if .Values.ingress.tls }} {{- if .Values.ingress.tls }}
tls: tls:
{{- range .Values.ingress.tls }} {{- range .Values.ingress.tls }}

View File

@ -6,15 +6,10 @@ replicaCount: 1
image: image:
repository: codercom/code-server repository: codercom/code-server
tag: '4.0.2' tag: '4.0.1'
pullPolicy: Always pullPolicy: Always
# Specifies one or more secrets to be used when pulling images from a
# private container repository
# https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry
imagePullSecrets: [] imagePullSecrets: []
# - name: registry-creds
nameOverride: "" nameOverride: ""
fullnameOverride: "" fullnameOverride: ""
hostnameOverride: "" hostnameOverride: ""
@ -40,12 +35,13 @@ service:
ingress: ingress:
enabled: false enabled: false
#annotations: #annotations:
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true" # kubernetes.io/tls-acme: "true"
#hosts: #hosts:
# - host: code-server.example.loc # - host: code-server.example.loc
# paths: # paths:
# - / # - /
ingressClassName: ""
#tls: #tls:
# - secretName: code-server # - secretName: code-server
# hosts: # hosts:

View File

@ -18,4 +18,4 @@ if [ "${DOCKER_USER-}" ]; then
fi fi
fi fi
exec dumb-init /usr/bin/code-server "$@" dumb-init /usr/bin/code-server "$@"

View File

@ -10,23 +10,23 @@ main() {
echo "Checking environment variables" echo "Checking environment variables"
# We need VERSION to bump the brew formula # We need VERSION to bump the brew formula
if ! is_env_var_set "VERSION"; then if is_env_var_set "VERSION"; then
echo "VERSION is not set" echo "VERSION is not set"
exit 1 exit 1
fi fi
# We need HOMEBREW_GITHUB_API_TOKEN to push up commits # We need HOMEBREW_GITHUB_API_TOKEN to push up commits
if ! is_env_var_set "HOMEBREW_GITHUB_API_TOKEN"; then if is_env_var_set "HOMEBREW_GITHUB_API_TOKEN"; then
echo "HOMEBREW_GITHUB_API_TOKEN is not set" echo "HOMEBREW_GITHUB_API_TOKEN is not set"
exit 1 exit 1
fi fi
# NOTE: we need to make sure coderci/homebrew-core # NOTE: we need to make sure cdrci/homebrew-core
# is up-to-date # is up-to-date
# otherwise, brew bump-formula-pr will use an # otherwise, brew bump-formula-pr will use an
# outdated base # outdated base
echo "Cloning coderci/homebrew-core" echo "Cloning cdrci/homebrew-core"
git clone https://github.com/coderci/homebrew-core.git git clone https://github.com/cdrci/homebrew-core.git
# Make sure the git clone step is successful # Make sure the git clone step is successful
if directory_exists "homebrew-core"; then if directory_exists "homebrew-core"; then
@ -57,7 +57,7 @@ main() {
echo "Merging in latest Homebrew/homebrew-core changes" echo "Merging in latest Homebrew/homebrew-core changes"
git merge upstream/master git merge upstream/master
echo "Pushing changes to coderci/homebrew-core fork on GitHub" echo "Pushing changes to cdrci/homebrew-core fork on GitHub"
# GIT_ASKPASS lets us use the password when pushing without revealing it in the process list # GIT_ASKPASS lets us use the password when pushing without revealing it in the process list
# See: https://serverfault.com/a/912788 # See: https://serverfault.com/a/912788
@ -86,7 +86,7 @@ main() {
# Export the variables so git sees them # Export the variables so git sees them
export HOMEBREW_GITHUB_API_TOKEN="$HOMEBREW_GITHUB_API_TOKEN" export HOMEBREW_GITHUB_API_TOKEN="$HOMEBREW_GITHUB_API_TOKEN"
export GIT_ASKPASS="$PATH_TO_ASKPASS" export GIT_ASKPASS="$PATH_TO_ASKPASS"
git push https://coder-oss@github.com/coder-oss/homebrew-core.git --all git push https://cdr-oss@github.com/cdr-oss/homebrew-core.git --all
# Find the docs for bump-formula-pr here # Find the docs for bump-formula-pr here
# https://github.com/Homebrew/brew/blob/master/Library/Homebrew/dev-cmd/bump-formula-pr.rb#L18 # https://github.com/Homebrew/brew/blob/master/Library/Homebrew/dev-cmd/bump-formula-pr.rb#L18

View File

@ -1,15 +1,36 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
# See if this version already exists on Docker Hub.
function version_exists() {
local output
output=$(curl --silent "https://index.docker.io/v1/repositories/codercom/code-server/tags/$VERSION")
if [[ $output == "Tag not found" ]]; then
return 1
else
return 0
fi
}
main() { main() {
cd "$(dirname "$0")/../.." cd "$(dirname "$0")/../.."
# ci/lib.sh sets VERSION and provides download_artifact here # ci/lib.sh sets VERSION and provides download_artifact here
source ./ci/lib.sh source ./ci/lib.sh
if version_exists; then
echo "$VERSION is already pushed"
return
fi
# Download the release-packages artifact # Download the release-packages artifact
download_artifact release-packages ./release-packages download_artifact release-packages ./release-packages
# Login to Docker
if [[ ${CI-} ]]; then
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
fi
docker buildx bake -f ci/release-image/docker-bake.hcl --push docker buildx bake -f ci/release-image/docker-bake.hcl --push
} }

View File

@ -4,144 +4,27 @@ set -euo pipefail
main() { main() {
cd "$(dirname "$0")/../.." cd "$(dirname "$0")/../.."
source ./ci/lib.sh source ./ci/lib.sh
source ./ci/steps/steps-lib.sh
## Authentication tokens # npm view won't exit with non-zero so we have to check the output.
# Needed to publish on NPM local hasVersion
if ! is_env_var_set "NPM_TOKEN"; then hasVersion=$(npm view "code-server@$VERSION" version)
echo "NPM_TOKEN is not set. Cannot publish to npm without credentials." if [[ $hasVersion == "$VERSION" ]]; then
exit 1 echo "$VERSION is already published"
return
fi fi
# NOTE@jsjoeio - only needed if we use the download_artifact
# because we talk to the GitHub API.
# Needed to use GitHub API
if ! is_env_var_set "GITHUB_TOKEN"; then
echo "GITHUB_TOKEN is not set. Cannot download npm release artifact without GitHub credentials."
exit 1
fi
## Publishing Information
# All the variables below are used to determine how we should publish
# the npm package. We also use this information for bumping the version.
# This is because npm won't publish your package unless it's a new version.
# i.e. for development, we bump the version to <current version>-<pr number>-<commit sha>
# example: "version": "4.0.1-4769-ad7b23cfe6ffd72914e34781ef7721b129a23040"
# We need the current package.json VERSION
if ! is_env_var_set "VERSION"; then
echo "VERSION is not set. Cannot publish to npm without VERSION."
exit 1
fi
# We use this to grab the PR_NUMBER
if ! is_env_var_set "GITHUB_REF"; then
echo "GITHUB_REF is not set. Are you running this locally? We rely on values provided by GitHub."
exit 1
fi
# We use this when setting NPM_VERSION
if ! is_env_var_set "GITHUB_SHA"; then
echo "GITHUB_SHA is not set. Are you running this locally? We rely on values provided by GitHub."
exit 1
fi
# We use this to determine the NPM_ENVIRONMENT
if ! is_env_var_set "GITHUB_EVENT_NAME"; then
echo "GITHUB_EVENT_NAME is not set. Are you running this locally? We rely on values provided by GitHub."
exit 1
fi
# This allows us to publish to npm in CI workflows
if [[ ${CI-} ]]; then if [[ ${CI-} ]]; then
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
fi fi
## Environment download_artifact npm-package ./release-npm-package
# This string is used to determine how we should tag the npm release.
# Environment can be one of three choices:
# "development" - this means we tag with the PR number, allowing
# a developer to install this version with `yarn add code-server@<pr-number>`
# "staging" - this means we tag with `beta`, allowing
# a developer to install this version with `yarn add code-server@beta`
# "production" - this means we tag with `latest` (default), allowing
# a developer to install this version with `yarn add code-server@latest`
if ! is_env_var_set "NPM_ENVIRONMENT"; then
echo "NPM_ENVIRONMENT is not set. Determining in script based on GITHUB environment variables."
if [[ "$GITHUB_EVENT_NAME" == 'push' && "$GITHUB_REF" == 'refs/heads/main' ]]; then
NPM_ENVIRONMENT="staging"
else
NPM_ENVIRONMENT="development"
fi
echo "Using npm environment: $NPM_ENVIRONMENT"
fi
# NOTE@jsjoeio - this script assumes we have the artifact downloaded on disk
# That happens in CI as a step before we run this.
# https://github.com/actions/upload-artifact/issues/38 # https://github.com/actions/upload-artifact/issues/38
tar -xzf release-npm-package/package.tar.gz tar -xzf release-npm-package/package.tar.gz
# Ignore symlink when publishing npm package # Ignore symlink when publishing npm package
# See: https://github.com/coder/code-server/pull/3935 # See: https://github.com/cdr/code-server/pull/3935
echo "node_modules.asar" > release/.npmignore echo "node_modules.asar" > release/.npmignore
yarn publish --non-interactive release
# NOTES:@jsjoeio
# We only need to run npm version for "development" and "staging".
# This is because our release:prep script automatically bumps the version
# in the package.json and we commit it as part of the release PR.
if [[ "$NPM_ENVIRONMENT" == "production" ]]; then
NPM_VERSION="$VERSION"
# This means the npm version will be published as "stable"
# and installed when a user runs `yarn install code-server`
NPM_TAG="latest"
else
COMMIT_SHA="$GITHUB_SHA"
echo "Not a production environment"
echo "Found environment: $NPM_ENVIRONMENT"
echo "Manually bumping npm version..."
if [[ "$NPM_ENVIRONMENT" == "staging" ]]; then
NPM_VERSION="$VERSION-beta-$COMMIT_SHA"
# This means the npm version will be tagged with "beta"
# and installed when a user runs `yarn install code-server@beta`
NPM_TAG="beta"
fi
if [[ "$NPM_ENVIRONMENT" == "development" ]]; then
# Source: https://github.com/actions/checkout/issues/58#issuecomment-614041550
PR_NUMBER=$(echo "$GITHUB_REF" | awk 'BEGIN { FS = "/" } ; { print $3 }')
NPM_VERSION="$VERSION-$PR_NUMBER-$COMMIT_SHA"
# This means the npm version will be tagged with "<pr number>"
# and installed when a user runs `yarn install code-server@<pr number>`
NPM_TAG="$PR_NUMBER"
fi
echo "using tag: $NPM_TAG"
# We modify the version in the package.json
# to be the current version + the PR number + commit SHA
# or we use current version + beta + commit SHA
# Example: "version": "4.0.1-4769-ad7b23cfe6ffd72914e34781ef7721b129a23040"
# Example: "version": "4.0.1-beta-ad7b23cfe6ffd72914e34781ef7721b129a23040"
pushd release
# NOTE:@jsjoeio
# I originally tried to use `yarn version` but ran into issues and abandoned it.
npm version "$NPM_VERSION"
popd
fi
# We need to make sure we haven't already published the version.
# This is because npm view won't exit with non-zero so we have
# to check the output.
local hasVersion
hasVersion=$(npm view "code-server@$NPM_VERSION" version)
if [[ $hasVersion == "$NPM_VERSION" ]]; then
echo "$NPM_VERSION is already published"
return
fi
yarn publish --non-interactive release --tag "$NPM_TAG"
} }
main "$@" main "$@"

View File

@ -61,7 +61,7 @@ These are required by VS Code. See [their Wiki](https://github.com/microsoft/vsc
## Creating pull requests ## Creating pull requests
Please create a [GitHub Issue](https://github.com/coder/code-server/issues) that Please create a [GitHub Issue](https://github.com/cdr/code-server/issues) that
includes context for issues that you see. You can skip this if the proposed fix includes context for issues that you see. You can skip this if the proposed fix
is minor. is minor.
@ -78,12 +78,12 @@ we'll guide you.
## Development workflow ## Development workflow
The current development workflow is a bit tricky because we have this repo and we use our `coder/vscode` fork inside it with [`yarn link`](https://classic.yarnpkg.com/lang/en/docs/cli/link/). The current development workflow is a bit tricky because we have this repo and we use our `cdr/vscode` fork inside it with [`yarn link`](https://classic.yarnpkg.com/lang/en/docs/cli/link/).
Here are these steps you should follow to get your dev environment setup: Here are these steps you should follow to get your dev environment setup:
1. `git clone https://github.com/coder/code-server.git` - Clone `code-server` 1. `git clone https://github.com/cdr/code-server.git` - Clone `code-server`
2. `git clone https://github.com/coder/vscode.git` - Clone `vscode` 2. `git clone https://github.com/cdr/vscode.git` - Clone `vscode`
3. `cd vscode && yarn install` - install the dependencies in the `vscode` repo 3. `cd vscode && yarn install` - install the dependencies in the `vscode` repo
4. `cd code-server && yarn install` - install the dependencies in the `code-server` repo 4. `cd code-server && yarn install` - install the dependencies in the `code-server` repo
5. `cd vscode && yarn link` - use `yarn` to create a symlink to the `vscode` repo (`code-oss-dev` package) 5. `cd vscode && yarn link` - use `yarn` to create a symlink to the `vscode` repo (`code-oss-dev` package)
@ -92,14 +92,14 @@ Here are these steps you should follow to get your dev environment setup:
### Updates to VS Code ### Updates to VS Code
If changes are made and merged into `main` in the [`coder/vscode`](https://github.com/coder/vscode) repo, then you'll need to update the version in the `code-server` repo by following these steps: If changes are made and merged into `main` in the [`cdr/vscode`](https://github.com/cdr/vscode) repo, then you'll need to update the version in the `code-server` repo by following these steps:
1. Update the package tag listed in `vendor/package.json`: 1. Update the package tag listed in `vendor/package.json`:
```json ```json
{ {
"devDependencies": { "devDependencies": {
"vscode": "coder/vscode#<latest-commit-sha>" "vscode": "cdr/vscode#<latest-commit-sha>"
} }
} }
``` ```
@ -148,7 +148,7 @@ yarn package
### Help ### Help
If you get stuck or need help, you can always start a new GitHub Discussion [here](https://github.com/coder/code-server/discussions). One of the maintainers will respond and help you out. If you get stuck or need help, you can always start a new GitHub Discussion [here](https://github.com/cdr/code-server/discussions). One of the maintainers will respond and help you out.
## Test ## Test

View File

@ -37,7 +37,7 @@
## Questions? ## Questions?
Please file all questions and support requests at Please file all questions and support requests at
<https://github.com/coder/code-server/discussions>. <https://github.com/cdr/code-server/discussions>.
## How should I expose code-server to the internet? ## How should I expose code-server to the internet?
@ -111,11 +111,11 @@ These are the closed-source extensions that are presently unavailable:
1. [Live Share](https://visualstudio.microsoft.com/services/live-share). We may 1. [Live Share](https://visualstudio.microsoft.com/services/live-share). We may
implement something similar (see implement something similar (see
[#33](https://github.com/coder/code-server/issues/33)) [#33](https://github.com/cdr/code-server/issues/33))
1. [Remote Extensions (SSH, Containers, 1. [Remote Extensions (SSH, Containers,
WSL)](https://github.com/microsoft/vscode-remote-release). We may implement WSL)](https://github.com/microsoft/vscode-remote-release). We may implement
these again at some point, see these again at some point, see
([#1315](https://github.com/coder/code-server/issues/1315)). ([#1315](https://github.com/cdr/code-server/issues/1315)).
For more about the closed source portions of VS Code, see [vscodium/vscodium](https://github.com/VSCodium/vscodium#why-does-this-exist). For more about the closed source portions of VS Code, see [vscodium/vscodium](https://github.com/VSCodium/vscodium#why-does-this-exist).
@ -222,7 +222,7 @@ You may have to give Node.js full disk access, since it doesn't implement any of
Privacy** > **Privacy** > **Full Disk Access**. Then, click the 🔒 to unlock, Privacy** > **Privacy** > **Full Disk Access**. Then, click the 🔒 to unlock,
click **+**, and select the Node.js binary you located in the previous step. click **+**, and select the Node.js binary you located in the previous step.
See [#2794](https://github.com/coder/code-server/issues/2794) for additional context. See [#2794](https://github.com/cdr/code-server/issues/2794) for additional context.
## How do I direct server-side requests through a proxy? ## How do I direct server-side requests through a proxy?
@ -302,7 +302,7 @@ after a predetermined amount of time, you can do so by checking continuously for
the last modified time on the heartbeat file. If it is older than X minutes (or the last modified time on the heartbeat file. If it is older than X minutes (or
whatever amount of time you'd like), you can kill code-server. whatever amount of time you'd like), you can kill code-server.
Eventually, [#1636](https://github.com/coder/code-server/issues/1636) will make Eventually, [#1636](https://github.com/cdr/code-server/issues/1636) will make
this process better. this process better.
## How do I change the password? ## How do I change the password?
@ -376,7 +376,7 @@ Theia doesn't allow you to reuse your existing VS Code config.
## What's the difference between code-server and OpenVSCode-Server? ## What's the difference between code-server and OpenVSCode-Server?
code-server and OpenVSCode-Server both allow you to access VS Code via a code-server and OpenVSCode-Server both allow you to access VS Code via a
browser. The two projects also use their own [forks of VS Code](https://github.com/coder/vscode) to browser. The two projects also use their own [forks of VS Code](https://github.com/cdr/vscode) to
leverage modern VS Code APIs and stay up to date with the upsteam version. leverage modern VS Code APIs and stay up to date with the upsteam version.
However, OpenVSCode-Server is scoped at only making VS Code available in the web browser. However, OpenVSCode-Server is scoped at only making VS Code available in the web browser.
@ -388,7 +388,7 @@ code-server includes some other features:
- plugin API - plugin API
- settings sync (coming soon) - settings sync (coming soon)
For more details, see [this discussion post](https://github.com/coder/code-server/discussions/4267#discussioncomment-1411583). For more details, see [this discussion post](https://github.com/cdr/code-server/discussions/4267#discussioncomment-1411583).
## What's the difference between code-server and GitHub Codespaces? ## What's the difference between code-server and GitHub Codespaces?
@ -406,7 +406,7 @@ minute plus an additional twelve per hour.
## Are there community projects involving code-server? ## Are there community projects involving code-server?
Visit the [awesome-code-server](https://github.com/coder/awesome-code-server) Visit the [awesome-code-server](https://github.com/cdr/awesome-code-server)
repository to view community projects and guides with code-server! Feel free to repository to view community projects and guides with code-server! Feel free to
add your own! add your own!

View File

@ -37,23 +37,23 @@ Current maintainers:
- @TeffenEllis - @TeffenEllis
- @jsjoeio - @jsjoeio
Occasionally, other Coder employees may step in time to time to assist with code-server. Occassionally, other Coder employees may step in time to time to assist with code-server.
### Onboarding ### Onboarding
To onboard a new maintainer to the project, please make sure to do the following: To onboard a new maintainer to the project, please make sure to do the following:
- [ ] Add to [coder/code-server-reviewers](https://github.com/orgs/coder/teams/code-server-reviewers) - [ ] Add to [cdr/code-server-reviewers](https://github.com/orgs/cdr/teams/code-server-reviewers)
- [ ] Add as Admin under [Repository Settings > Access](https://github.com/coder/code-server/settings/access) - [ ] Add as Admin under [Repository Settings > Access](https://github.com/cdr/code-server/settings/access)
- [ ] Add to [npm Coder org](https://www.npmjs.com/org/coder) - [ ] Add to [npm Coder org](https://www.npmjs.com/org/coder)
- [ ] Add as [AUR maintainer](https://aur.archlinux.org/packages/code-server/) (talk to Colin) - [ ] Add as [AUR maintainer](https://aur.archlinux.org/packages/code-server/) (talk to Colin)
- [ ] Introduce to community via Discussion (see [example](https://github.com/coder/code-server/discussions/3955)) - [ ] Introduce to community via Discussion (see [example](https://github.com/cdr/code-server/discussions/3955))
### Offboarding ### Offboarding
Very similar to Onboarding but Remove maintainer from all teams and revoke access. Please also do the following: Very similar to Onboarding but Remove maintainer from all teams and revoke access. Please also do the following:
- [ ] Write farewell post via Discussion (see [example](https://github.com/coder/code-server/discussions/3933)) - [ ] Write farewell post via Discussion (see [example](https://github.com/cdr/code-server/discussions/3933))
## Workflow ## Workflow
@ -64,7 +64,7 @@ contributing on day one.
### Milestones ### Milestones
We operate mainly using We operate mainly using
[milestones](https://github.com/coder/code-server/milestones). This was heavily [milestones](https://github.com/cdr/code-server/milestones). This was heavily
inspired by our friends over at [vscode](https://github.com/microsoft/vscode). inspired by our friends over at [vscode](https://github.com/microsoft/vscode).
Here are the milestones we use and how we use them: Here are the milestones we use and how we use them:
@ -185,12 +185,12 @@ If you're the current release manager, follow these steps:
artifacts, publish the NPM package from `npm-package`, and publish the Docker artifacts, publish the NPM package from `npm-package`, and publish the Docker
Hub image from `release-images`. Hub image from `release-images`.
1. Update the AUR package. Instructions for updating the AUR package are at 1. Update the AUR package. Instructions for updating the AUR package are at
[coder/code-server-aur](https://github.com/coder/code-server-aur). [cdr/code-server-aur](https://github.com/cdr/code-server-aur).
1. Wait for the npm package to be published. 1. Wait for the npm package to be published.
#### AUR #### AUR
We publish to AUR as a package [here](https://aur.archlinux.org/packages/code-server/). This process is manual and can be done by following the steps in [this repo](https://github.com/coder/code-server-aur). We publish to AUR as a package [here](https://aur.archlinux.org/packages/code-server/). This process is manual and can be done by following the steps in [this repo](https://github.com/cdr/code-server-aur).
#### Docker #### Docker
@ -202,7 +202,7 @@ This is currently automated with the release process.
We publish code-server on Homebrew [here](https://github.com/Homebrew/homebrew-core/blob/master/Formula/code-server.rb). We publish code-server on Homebrew [here](https://github.com/Homebrew/homebrew-core/blob/master/Formula/code-server.rb).
This is currently automated with the release process (but may fail occasionally). If it does, run this locally: This is currently automated with the release process (but may fail occassionally). If it does, run this locally:
```shell ```shell
# Replace VERSION with version # Replace VERSION with version
@ -217,22 +217,21 @@ This is currently automated with the release process.
## Syncing with Upstream VS Code ## Syncing with Upstream VS Code
The VS Code portion of code-server lives under [`coder/vscode`](https://github.com/coder/vscode). To update VS Code for code-server, follow these steps: The VS Code portion of code-server lives under [`cdr/vscode`](https://github.com/cdr/vscode). To update VS Code for code-server, follow these steps:
1. `git checkout -b vscode-update` - Create a new branch locally based off `main` 1. `git checkout -b vscode-update` - Create a new branch locally based off `main`
2. `git fetch upstream` - Fetch upstream (VS Code)'s latest branches 2. `git fetch upstream` - Fetch upstream (VS Code)'s latest `main` branch
3. `git merge upstream/release/1.64` - Merge it locally 3. `git merge upstream/main` - Merge it locally
1. replace `1.64` with the version you're upgrading to 1. If there are merge conflicts, fix them locally
1. If there are merge conflicts, commit first, then fix them locally.
4. Open a PR merging your branch (`vscode-update`) into `main` and add the code-server review team 4. Open a PR merging your branch (`vscode-update`) into `main` and add the code-server review team
Ideally, our fork stays as close to upstream as possible. See the differences between our fork and upstream [here](https://github.com/microsoft/vscode/compare/main...coder:main). Ideally, our fork stays as close to upstream as possible. See the differences between our fork and upstream [here](https://github.com/microsoft/vscode/compare/main...cdr:main).
## Testing ## Testing
Our testing structure is laid out under our [Contributing docs](https://coder.com/docs/code-server/latest/CONTRIBUTING#test). Our testing structure is laid out under our [Contributing docs](https://coder.com/docs/code-server/latest/CONTRIBUTING#test).
We hope to eventually hit 100% test coverage with our unit tests, and maybe one day our scripts (coverage not tracked currently). We hope to eventually hit 100% test converage with our unit tests, and maybe one day our scripts (coverage not tracked currently).
If you're ever looking to add more tests, here are a few ways to get started: If you're ever looking to add more tests, here are a few ways to get started:
@ -248,7 +247,7 @@ Otherwise, talk to a current maintainer and ask which part of the codebase is la
Our docs are hosted on [Vercel](https://vercel.com/). Vercel only shows logs in realtime, which means you need to have the logs open in one tab and reproduce your error in another tab. Since our logs are private to Coder the organization, you can only follow these steps if you're a Coder employee. Ask a maintainer for help if you need it. Our docs are hosted on [Vercel](https://vercel.com/). Vercel only shows logs in realtime, which means you need to have the logs open in one tab and reproduce your error in another tab. Since our logs are private to Coder the organization, you can only follow these steps if you're a Coder employee. Ask a maintainer for help if you need it.
Taking a real scenario, let's say you wanted to troubleshoot [this docs change](https://github.com/coder/code-server/pull/4042). Here is how you would do it: Taking a real scenario, let's say you wanted to troubleshoot [this docs change](https://github.com/cdr/code-server/pull/4042). Here is how you would do it:
1. Go to https://vercel.com/codercom/codercom 1. Go to https://vercel.com/codercom/codercom
2. Click "View Function Logs" 2. Click "View Function Logs"

View File

@ -1,6 +1,6 @@
# code-server # code-server
[!["GitHub Discussions"](https://img.shields.io/badge/%20GitHub-%20Discussions-gray.svg?longCache=true&logo=github&colorB=purple)](https://github.com/coder/code-server/discussions) [!["Join us on Slack"](https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=brightgreen)](https://coder.com/community) [![Twitter Follow](https://img.shields.io/twitter/follow/CoderHQ?label=%40CoderHQ&style=social)](https://twitter.com/coderhq) [![codecov](https://codecov.io/gh/coder/code-server/branch/main/graph/badge.svg?token=5iM9farjnC)](https://codecov.io/gh/coder/code-server) [![See v4.0.2 docs](https://img.shields.io/static/v1?label=Docs&message=see%20v4.0.2%20&color=blue)](https://github.com/coder/code-server/tree/v4.0.2/docs) [!["GitHub Discussions"](https://img.shields.io/badge/%20GitHub-%20Discussions-gray.svg?longCache=true&logo=github&colorB=purple)](https://github.com/cdr/code-server/discussions) [!["Join us on Slack"](https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=brightgreen)](https://cdr.co/join-community) [![Twitter Follow](https://img.shields.io/twitter/follow/CoderHQ?label=%40CoderHQ&style=social)](https://twitter.com/coderhq) [![codecov](https://codecov.io/gh/cdr/code-server/branch/main/graph/badge.svg?token=5iM9farjnC)](https://codecov.io/gh/cdr/code-server) [![See v4.0.1 docs](https://img.shields.io/static/v1?label=Docs&message=see%20v4.0.1%20&color=blue)](https://github.com/cdr/code-server/tree/v4.0.1/docs)
Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and
access it in the browser. access it in the browser.
@ -14,7 +14,7 @@ access it in the browser.
- Preserve battery life when you're on the go; all intensive tasks run on your - Preserve battery life when you're on the go; all intensive tasks run on your
server server
| 🔔 code-server is a free browser-based IDE while [Coder](https://coder.com/) is our enterprise developer workspace platform. For more information, visit [Coder.com](https://coder.com/docs/comparison) | 🔔 code-server is a free browser-based IDE while [Coder](https://coder.com/), is our enterprise developer workspace platform. For more information, visit [Coder.com](https://coder.com/docs/comparison)
| --- | ---
## Requirements ## Requirements
@ -29,13 +29,13 @@ on how to set up a Google VM on which you can install code-server.
There are three ways to get started: There are three ways to get started:
1. Using the [install 1. Using the [install
script](https://github.com/coder/code-server/blob/main/install.sh), which script](https://github.com/cdr/code-server/blob/main/install.sh), which
automates most of the process. The script uses the system package manager if automates most of the process. The script uses the system package manager if
possible. possible.
2. Manually [installing 2. Manually [installing
code-server](https://coder.com/docs/code-server/latest/install) code-server](https://coder.com/docs/code-server/latest/install)
3. Using our one-click buttons and guides to [deploy code-server to a cloud 3. Using our one-click buttons and guides to [deploy code-server to a cloud
provider](https://github.com/coder/deploy-code-server) ⚡ provider](https://github.com/cdr/deploy-code-server) ⚡
If you use the install script, you can preview what occurs during the install If you use the install script, you can preview what occurs during the install
process: process:

View File

@ -27,8 +27,8 @@ We use the following tools to help us stay on top of vulnerability mitigation.
Coder sponsors the development and maintenance of the code-server project. We will fix security issues within 90 days of receiving a report and publish the fix in a subsequent release. The code-server project does not provide backports or patch releases for security issues at this time. Coder sponsors the development and maintenance of the code-server project. We will fix security issues within 90 days of receiving a report and publish the fix in a subsequent release. The code-server project does not provide backports or patch releases for security issues at this time.
| Version | Supported | | Version | Supported |
| ------------------------------------------------------- | ------------------ | | ----------------------------------------------------- | ------------------ |
| [Latest](https://github.com/coder/code-server/releases) | :white_check_mark: | | [Latest](https://github.com/cdr/code-server/releases) | :white_check_mark: |
## Reporting a Vulnerability ## Reporting a Vulnerability

View File

@ -60,6 +60,6 @@ As `code-server` is based on VS Code, you can follow the steps described on Duck
code-server --enable-proposed-api genuitecllc.codetogether code-server --enable-proposed-api genuitecllc.codetogether
``` ```
Another option would be to add a value in code-server's [config file](https://coder.com/docs/code-server/v4.0.2/FAQ#how-does-the-config-file-work). Another option would be to add a value in code-server's [config file](https://coder.com/docs/code-server/v4.0.1/FAQ#how-does-the-config-file-work).
3. Refresh code-server and navigate to the CodeTogether icon in the sidebar to host or join a coding session. 3. Refresh code-server and navigate to the CodeTogether icon in the sidebar to host or join a coding session.

View File

@ -115,7 +115,7 @@ we recommend using another method, such as [Let's Encrypt](#let-encrypt) instead
Using [Let's Encrypt](https://letsencrypt.org) is an option if you want to Using [Let's Encrypt](https://letsencrypt.org) is an option if you want to
access code-server on an iPad or do not want to use SSH port forwarding. access code-server on an iPad or do not want to use SSH port forwarding.
1. This option requires that the remote machine be exposed to the internet. Make sure that your instance allows HTTP/HTTPS traffic. 1. This option requires that the remote machine be exposed to the internet. Make sure that your instance allows HTTP/HTTP traffic.
1. You'll need a domain name (if you don't have one, you can purchase one from 1. You'll need a domain name (if you don't have one, you can purchase one from
[Google Domains](https://domains.google.com) or the domain service of your [Google Domains](https://domains.google.com) or the domain service of your
@ -162,7 +162,7 @@ At this point, you should be able to access code-server via
### Using Let's Encrypt with NGINX ### Using Let's Encrypt with NGINX
1. This option requires that the remote machine be exposed to the internet. Make sure that your instance allows HTTP/HTTPS traffic. 1. This option requires that the remote machine be exposed to the internet. Make sure that your instance allows HTTP/HTTP traffic.
1. You'll need a domain name (if you don't have one, you can purchase one from 1. You'll need a domain name (if you don't have one, you can purchase one from
[Google Domains](https://domains.google.com) or the domain service of your [Google Domains](https://domains.google.com) or the domain service of your
@ -229,7 +229,7 @@ code-server. You should only proceed with this option if:
To use a self-signed certificate: To use a self-signed certificate:
1. This option requires that the remote machine be exposed to the internet. Make 1. This option requires that the remote machine be exposed to the internet. Make
sure that your instance allows HTTP/HTTPS traffic. sure that your instance allows HTTP/HTTP traffic.
1. SSH into your instance and edit your code-server config file to use a 1. SSH into your instance and edit your code-server config file to use a
randomly generated self-signed certificate: randomly generated self-signed certificate:
@ -294,7 +294,7 @@ Note: if you set `proxy_set_header Host $host;` in your reverse proxy config, it
## Accessing web services ## Accessing web services
If you're working on web services and want to access them locally, code-server If you're working on web services and want to access it locally, code-server
can proxy to any port using either a subdomain or a subpath, allowing you to can proxy to any port using either a subdomain or a subpath, allowing you to
securely access these services using code-server's built-in authentication. securely access these services using code-server's built-in authentication.
@ -345,8 +345,8 @@ instead and the path will be passed as is (e.g., `/absproxy/3000/my-app-path`).
### Proxying to create a React app ### Proxying to create a React app
You must use `/absproxy/<port>` with `create-react-app` (see You must use `/absproxy/<port>` with `create-react-app` (see
[#2565](https://github.com/coder/code-server/issues/2565) and [#2565](https://github.com/cdr/code-server/issues/2565) and
[#2222](https://github.com/coder/code-server/issues/2222) for more information). [#2222](https://github.com/cdr/code-server/issues/2222) for more information).
You will need to inform `create-react-app` of the path at which you are serving You will need to inform `create-react-app` of the path at which you are serving
via `$PUBLIC_URL` and webpack via `$WDS_SOCKET_PATH`: via `$PUBLIC_URL` and webpack via `$WDS_SOCKET_PATH`:
@ -396,7 +396,7 @@ sudo apt update
sudo apt install wget unzip openssh-server sudo apt install wget unzip openssh-server
``` ```
2. Start the SSH server and set the password for your user, if you haven't already. If you use [deploy-code-server](https://github.com/coder/deploy-code-server), 2. Start the SSH server and set the password for your user, if you haven't already. If you use [deploy-code-server](https://github.com/cdr/deploy-code-server),
```bash ```bash
sudo service ssh start sudo service ssh start

View File

@ -1,8 +1,8 @@
# code-server Helm Chart # code-server Helm Chart
[![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square)](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) [![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)](https://img.shields.io/badge/Type-application-informational?style=flat-square) [![AppVersion: 4.0.2](https://img.shields.io/badge/AppVersion-4.0.2-informational?style=flat-square)](https://img.shields.io/badge/AppVersion-4.0.2-informational?style=flat-square) [![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square)](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) [![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)](https://img.shields.io/badge/Type-application-informational?style=flat-square) [![AppVersion: 4.0.1](https://img.shields.io/badge/AppVersion-4.0.1-informational?style=flat-square)](https://img.shields.io/badge/AppVersion-4.0.1-informational?style=flat-square)
[code-server](https://github.com/coder/code-server) code-server is VS Code running [code-server](https://github.com/cdr/code-server) code-server is VS Code running
on a remote server, accessible through the browser. on a remote server, accessible through the browser.
This chart is community maintained by [@Matthew-Beckett](https://github.com/Matthew-Beckett) and [@alexgorbatchev](https://github.com/alexgorbatchev) This chart is community maintained by [@Matthew-Beckett](https://github.com/Matthew-Beckett) and [@alexgorbatchev](https://github.com/alexgorbatchev)
@ -10,7 +10,7 @@ This chart is community maintained by [@Matthew-Beckett](https://github.com/Matt
## Quickstart ## Quickstart
```console ```console
$ git clone https://github.com/coder/code-server $ git clone https://github.com/cdr/code-server
$ cd code-server $ cd code-server
$ helm upgrade --install code-server ci/helm-chart $ helm upgrade --install code-server ci/helm-chart
``` ```
@ -30,7 +30,7 @@ package manager.
To install the chart with the release name `code-server`: To install the chart with the release name `code-server`:
```console ```console
$ git clone https://github.com/coder/code-server $ git clone https://github.com/cdr/code-server
$ cd code-server $ cd code-server
$ helm upgrade --install code-server ci/helm-chart $ helm upgrade --install code-server ci/helm-chart
``` ```
@ -73,7 +73,7 @@ and their default values.
| hostnameOverride | string | `""` | | hostnameOverride | string | `""` |
| image.pullPolicy | string | `"Always"` | | image.pullPolicy | string | `"Always"` |
| image.repository | string | `"codercom/code-server"` | | image.repository | string | `"codercom/code-server"` |
| image.tag | string | `"4.0.2"` | | image.tag | string | `"4.0.1"` |
| imagePullSecrets | list | `[]` | | imagePullSecrets | list | `[]` |
| ingress.enabled | bool | `false` | | ingress.enabled | bool | `false` |
| nameOverride | string | `""` | | nameOverride | string | `""` |

View File

@ -30,7 +30,7 @@ operating systems.
## install.sh ## install.sh
The easiest way to install code-server is to use our [install The easiest way to install code-server is to use our [install
script](https://github.com/coder/code-server/blob/main/install.sh) for Linux, macOS and FreeBSD. The install script script](https://github.com/cdr/code-server/blob/main/install.sh) for Linux, macOS and FreeBSD. The install script
[attempts to use the system package manager](#detection-reference) if possible. [attempts to use the system package manager](#detection-reference) if possible.
You can preview what occurs during the install process: You can preview what occurs during the install process:
@ -67,7 +67,7 @@ code-server.
If you prefer to install code-server manually, despite the [detection If you prefer to install code-server manually, despite the [detection
references](#detection-reference) and `--dry-run` feature, then continue on for references](#detection-reference) and `--dry-run` feature, then continue on for
information on how to do this. The [`install.sh`](https://github.com/coder/code-server/blob/main/install.sh) script runs the information on how to do this. The [`install.sh`](https://github.com/cdr/code-server/blob/main/install.sh) script runs the
_exact_ same commands presented in the rest of this document. _exact_ same commands presented in the rest of this document.
### Detection reference ### Detection reference
@ -104,7 +104,7 @@ We recommend installing with `yarn` or `npm` when:
1. You're on Linux with `glibc` < v2.17, `glibcxx` < v3.4.18 on `amd64`, `glibc` 1. You're on Linux with `glibc` < v2.17, `glibcxx` < v3.4.18 on `amd64`, `glibc`
< v2.23, or `glibcxx` < v3.4.21 on `arm64`. < v2.23, or `glibcxx` < v3.4.21 on `arm64`.
1. You're running Alpine Linux or are using a non-glibc libc. See 1. You're running Alpine Linux or are using a non-glibc libc. See
[#1430](https://github.com/coder/code-server/issues/1430#issuecomment-629883198) [#1430](https://github.com/cdr/code-server/issues/1430#issuecomment-629883198)
for more information. for more information.
Installing code-server with `yarn` or `npm` builds native modules on install. Installing code-server with `yarn` or `npm` builds native modules on install.
@ -114,7 +114,7 @@ This process requires C dependencies; see our guide on [installing with yarn and
## Standalone releases ## Standalone releases
We publish self-contained `.tar.gz` archives for every release on We publish self-contained `.tar.gz` archives for every release on
[GitHub](https://github.com/coder/code-server/releases). The archives bundle the [GitHub](https://github.com/cdr/code-server/releases). The archives bundle the
node binary and node modules. node binary and node modules.
We create the standalone releases using the [npm package](#yarn-npm), and we We create the standalone releases using the [npm package](#yarn-npm), and we
@ -127,7 +127,7 @@ requirement).
To use a standalone release: To use a standalone release:
1. Download the latest release archive for your system from 1. Download the latest release archive for your system from
[GitHub](https://github.com/coder/code-server/releases). [GitHub](https://github.com/cdr/code-server/releases).
2. Unpack the release. 2. Unpack the release.
3. Run code-server by executing `./bin/code-server`. 3. Run code-server by executing `./bin/code-server`.
@ -139,7 +139,7 @@ release on Linux:
```bash ```bash
mkdir -p ~/.local/lib ~/.local/bin mkdir -p ~/.local/lib ~/.local/bin
curl -fL https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-linux-amd64.tar.gz \ curl -fL https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-linux-amd64.tar.gz \
| tar -C ~/.local/lib -xz | tar -C ~/.local/lib -xz
mv ~/.local/lib/code-server-$VERSION-linux-amd64 ~/.local/lib/code-server-$VERSION mv ~/.local/lib/code-server-$VERSION-linux-amd64 ~/.local/lib/code-server-$VERSION
ln -s ~/.local/lib/code-server-$VERSION/bin/code-server ~/.local/bin/code-server ln -s ~/.local/lib/code-server-$VERSION/bin/code-server ~/.local/bin/code-server
@ -154,7 +154,7 @@ code-server
> upgrade or [build with yarn](#yarn-npm). > upgrade or [build with yarn](#yarn-npm).
```bash ```bash
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server_$VERSION_amd64.deb curl -fOL https://github.com/cdr/code-server/releases/download/v$VERSION/code-server_$VERSION_amd64.deb
sudo dpkg -i code-server_$VERSION_amd64.deb sudo dpkg -i code-server_$VERSION_amd64.deb
sudo systemctl enable --now code-server@$USER sudo systemctl enable --now code-server@$USER
# Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
@ -166,7 +166,7 @@ sudo systemctl enable --now code-server@$USER
> with yarn](#yarn-npm). > with yarn](#yarn-npm).
```bash ```bash
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-amd64.rpm curl -fOL https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-amd64.rpm
sudo rpm -i code-server-$VERSION-amd64.rpm sudo rpm -i code-server-$VERSION-amd64.rpm
sudo systemctl enable --now code-server@$USER sudo systemctl enable --now code-server@$USER
# Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
@ -228,9 +228,9 @@ You can install code-server using the [Helm package manager](https://coder.com/d
## Windows ## Windows
We currently [do not publish Windows releases](https://github.com/coder/code-server/issues/1397). We recommend installing code-server onto Windows with [`yarn` or `npm`](#yarn-npm). We currently [do not publish Windows releases](https://github.com/cdr/code-server/issues/1397). We recommend installing code-server onto Windows with [`yarn` or `npm`](#yarn-npm).
> Note: You will also need to [build coder/cloud-agent manually](https://github.com/coder/cloud-agent/issues/17) if you would like to use `code-server --link` on Windows. > Note: You will also need to [build cdr/cloud-agent manually](https://github.com/cdr/cloud-agent/issues/17) if you would like to use `code-server --link` on Windows.
## Raspberry Pi ## Raspberry Pi
@ -245,7 +245,7 @@ information.
## Cloud providers ## Cloud providers
We maintain [one-click apps and install scripts for cloud We maintain [one-click apps and install scripts for cloud
providers](https://github.com/coder/deploy-code-server) such as DigitalOcean, providers](https://github.com/cdr/deploy-code-server) such as DigitalOcean,
Railway, Heroku, and Azure. Railway, Heroku, and Azure.
## Uninstall ## Uninstall

View File

@ -104,7 +104,7 @@ and tricks helpful:
process](#access-code-server-with-a-self-signed-certificate-on-an-ipad) process](#access-code-server-with-a-self-signed-certificate-on-an-ipad)
- Keyboard issues: - Keyboard issues:
- The keyboard disappear sometimes - The keyboard disappear sometimes
[#979](https://github.com/coder/code-server/issues/979) [#979](https://github.com/cdr/code-server/issues/979)
- Some expectations regarding shortcuts may not be met: - Some expectations regarding shortcuts may not be met:
- `cmd + n` opens new browser window instead of new file, and it's difficult - `cmd + n` opens new browser window instead of new file, and it's difficult
to set alternative as a workaround to set alternative as a workaround
@ -112,18 +112,18 @@ and tricks helpful:
- There's no escape key by default on the Magic Keyboard, so most users set - There's no escape key by default on the Magic Keyboard, so most users set
the globe key to be an escape key the globe key to be an escape key
- Trackpad scrolling does not work on iPadOS < 14.5 - Trackpad scrolling does not work on iPadOS < 14.5
([#1455](https://github.com/coder/code-server/issues/1455)) ([#1455](https://github.com/cdr/code-server/issues/1455))
- [WebKit fix](https://bugs.webkit.org/show_bug.cgi?id=210071#c13) - [WebKit fix](https://bugs.webkit.org/show_bug.cgi?id=210071#c13)
- Keyboard may lose focus in Safari / split view [#4182](https://github.com/coder/code-server/issues/4182) - Keyboard may lose focus in Safari / split view [#4182](https://github.com/cdr/code-server/issues/4182)
- Terminal text does not appear by default [#3824](https://github.com/coder/code-server/issues/3824) - Terminal text does not appear by default [#3824](https://github.com/cdr/code-server/issues/3824)
- Copy & paste in terminal does not work well with keyboard shortcuts [#3491](https://github.com/coder/code-server/issues/3491) - Copy & paste in terminal does not work well with keyboard shortcuts [#3491](https://github.com/cdr/code-server/issues/3491)
- `ctrl+c` does not stop a long-running process in the browser - `ctrl+c` does not stop a long-running process in the browser
- Tracking upstream issue here: - Tracking upstream issue here:
[#114009](https://github.com/microsoft/vscode/issues/114009) [#114009](https://github.com/microsoft/vscode/issues/114009)
- See [workaround](#ctrl-c-workaround) - See [workaround](#ctrl-c-workaround)
Additionally, see [issues in the code-server repo that are tagged with the `os-ios` Additionally, see [issues in the code-server repo that are tagged with the `os-ios`
label](https://github.com/coder/code-server/issues?q=is%3Aopen+is%3Aissue+label%3Aos-ios) label](https://github.com/cdr/code-server/issues?q=is%3Aopen+is%3Aissue+label%3Aos-ios)
for more information. for more information.
### Workaround for issue with `ctrl+c` not stopping a running process in the terminal ### Workaround for issue with `ctrl+c` not stopping a running process in the terminal

View File

@ -7,5 +7,5 @@ for accessing your IDE out of the box.
```console ```console
$ code-server --link $ code-server --link
Proxying code-server, you can access your IDE at https://example.coder.co Proxying code-server, you can access your IDE at https://example.cdr.co
``` ```

View File

@ -1,5 +1,5 @@
{ {
"versions": ["v4.0.2"], "versions": ["v4.0.1"],
"routes": [ "routes": [
{ {
"title": "Home", "title": "Home",

View File

@ -27,7 +27,7 @@ which is currently `14.x`. VS Code also [lists Node.js
requirements](https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites). requirements](https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites).
Using other versions of Node.js [may lead to unexpected Using other versions of Node.js [may lead to unexpected
behavior](https://github.com/coder/code-server/issues/1633). behavior](https://github.com/cdr/code-server/issues/1633).
## Ubuntu, Debian ## Ubuntu, Debian
@ -100,7 +100,7 @@ yarn global bin
# Or: npm config get prefix # Or: npm config get prefix
``` ```
For help and additional troubleshooting, see [#1397](https://github.com/coder/code-server/issues/1397). For help and additional troubleshooting, see [#1397](https://github.com/cdr/code-server/issues/1397).
## Installing ## Installing
@ -116,7 +116,7 @@ code-server
## Troubleshooting ## Troubleshooting
If you need further assistance, post on our [GitHub Discussions If you need further assistance, post on our [GitHub Discussions
page](https://github.com/coder/code-server/discussions). page](https://github.com/cdr/code-server/discussions).
### Issues with Node.js after version upgrades ### Issues with Node.js after version upgrades

View File

@ -33,7 +33,7 @@ new Compute Engine VM instance:
4. Choose the **region** that's closest to you based on [GCP 4. Choose the **region** that's closest to you based on [GCP
ping](https://gcping.com/). ping](https://gcping.com/).
5. Choose a **zone** (any option is fine). 5. Choose a **zone** (any option is fine).
6. We recommend choosing an **E2 series instance** from the [general-purpose 6. We recommend choose an **E2 series instance** from the [general-purpose
family](https://cloud.google.com/compute/docs/machine-types#general_purpose). family](https://cloud.google.com/compute/docs/machine-types#general_purpose).
7. Change the instance type to **custom** and set at least **2 cores** and **2 7. Change the instance type to **custom** and set at least **2 cores** and **2
GB of RAM**. You can add more resources if desired, though you can also edit GB of RAM**. You can add more resources if desired, though you can also edit

View File

@ -28,8 +28,8 @@ This will show issues that:
1. If more information is required, please ask the submitter and tag as 1. If more information is required, please ask the submitter and tag as
`waiting-for-info` and wait. `waiting-for-info` and wait.
1. Finally, the issue should be moved into the 1. Finally, the issue should be moved into the
[code-server](https://github.com/coder/code-server/projects/1) project where we [code-server](https://github.com/cdr/code-server/projects/1) project where we
pick out issues to fix and track their progress. pick out issues to fix and track their progress.
We also use [milestones](https://github.com/coder/code-server/milestones) to track We also use [milestones](https://github.com/cdr/code-server/milestones) to track
what issues are planned/or were closed for what release. what issues are planned/or were closed for what release.

View File

@ -1,13 +1,13 @@
{ {
"name": "code-server", "name": "code-server",
"license": "MIT", "license": "MIT",
"version": "4.0.2", "version": "4.0.1",
"description": "Run VS Code on a remote server.", "description": "Run VS Code on a remote server.",
"homepage": "https://github.com/coder/code-server", "homepage": "https://github.com/cdr/code-server",
"bugs": { "bugs": {
"url": "https://github.com/coder/code-server/issues" "url": "https://github.com/cdr/code-server/issues"
}, },
"repository": "https://github.com/coder/code-server", "repository": "https://github.com/cdr/code-server",
"scripts": { "scripts": {
"clean": "./ci/build/clean.sh", "clean": "./ci/build/clean.sh",
"build": "./ci/build/build-code-server.sh", "build": "./ci/build/build-code-server.sh",
@ -17,13 +17,12 @@
"release:github-draft": "./ci/build/release-github-draft.sh", "release:github-draft": "./ci/build/release-github-draft.sh",
"release:github-assets": "./ci/build/release-github-assets.sh", "release:github-assets": "./ci/build/release-github-assets.sh",
"release:prep": "./ci/build/release-prep.sh", "release:prep": "./ci/build/release-prep.sh",
"test:e2e": "VSCODE_IPC_HOOK_CLI= ./ci/dev/test-e2e.sh", "test:e2e": "./ci/dev/test-e2e.sh",
"test:standalone-release": "./ci/build/test-standalone-release.sh", "test:standalone-release": "./ci/build/test-standalone-release.sh",
"test:unit": "./ci/dev/test-unit.sh --forceExit --detectOpenHandles", "test:unit": "./ci/dev/test-unit.sh --forceExit --detectOpenHandles",
"test:scripts": "./ci/dev/test-scripts.sh", "test:scripts": "./ci/dev/test-scripts.sh",
"package": "./ci/build/build-packages.sh", "package": "./ci/build/build-packages.sh",
"postinstall": "./ci/dev/postinstall.sh", "postinstall": "./ci/dev/postinstall.sh",
"publish:npm": "./ci/steps/publish-npm.sh",
"_audit": "./ci/dev/audit.sh", "_audit": "./ci/dev/audit.sh",
"fmt": "./ci/dev/fmt.sh", "fmt": "./ci/dev/fmt.sh",
"lint": "./ci/dev/lint.sh", "lint": "./ci/dev/lint.sh",
@ -78,10 +77,7 @@
"vfile-message": "^2.0.2", "vfile-message": "^2.0.2",
"tar": "^6.1.9", "tar": "^6.1.9",
"path-parse": "^1.0.7", "path-parse": "^1.0.7",
"vm2": "^3.9.6", "vm2": "^3.9.4"
"follow-redirects": "^1.14.8",
"node-fetch": "^2.6.7",
"nanoid": "^3.1.31"
}, },
"dependencies": { "dependencies": {
"@coder/logger": "1.1.16", "@coder/logger": "1.1.16",
@ -96,7 +92,7 @@
"limiter": "^1.1.5", "limiter": "^1.1.5",
"pem": "^1.14.2", "pem": "^1.14.2",
"proxy-agent": "^5.0.0", "proxy-agent": "^5.0.0",
"qs": "6.10.3", "qs": "6.10.2",
"rotating-file-stream": "^3.0.0", "rotating-file-stream": "^3.0.0",
"safe-buffer": "^5.1.1", "safe-buffer": "^5.1.1",
"safe-compare": "^1.1.4", "safe-compare": "^1.1.4",

View File

@ -229,7 +229,7 @@ const options: Options<Required<UserProvidedArgs>> = {
type: OptionalString, type: OptionalString,
description: ` description: `
Securely bind code-server via our cloud service with the passed name. You'll get a URL like Securely bind code-server via our cloud service with the passed name. You'll get a URL like
https://hostname-username.coder.co at which you can easily access your code-server instance. https://hostname-username.cdr.co at which you can easily access your code-server instance.
Authorization is done via GitHub. Authorization is done via GitHub.
`, `,
deprecated: true, deprecated: true,

View File

@ -3,7 +3,7 @@ import { spawn } from "child_process"
import path from "path" import path from "path"
import split2 from "split2" import split2 from "split2"
// https://github.com/coder/coder-cloud // https://github.com/cdr/coder-cloud
const coderCloudAgent = path.resolve(__dirname, "../../lib/coder-cloud-agent") const coderCloudAgent = path.resolve(__dirname, "../../lib/coder-cloud-agent")
function runAgent(...args: string[]): Promise<void> { function runAgent(...args: string[]): Promise<void> {

View File

@ -5,7 +5,6 @@ import { logError } from "../../common/util"
import { toVsCodeArgs } from "../cli" import { toVsCodeArgs } from "../cli"
import { isDevMode } from "../constants" import { isDevMode } from "../constants"
import { authenticated, ensureAuthenticated, redirect, self } from "../http" import { authenticated, ensureAuthenticated, redirect, self } from "../http"
import { SocketProxyProvider } from "../socket"
import { loadAMDModule } from "../util" import { loadAMDModule } from "../util"
import { Router as WsRouter } from "../wsRouter" import { Router as WsRouter } from "../wsRouter"
import { errorHandler } from "./errors" import { errorHandler } from "./errors"
@ -14,7 +13,6 @@ export class CodeServerRouteWrapper {
/** Assigned in `ensureCodeServerLoaded` */ /** Assigned in `ensureCodeServerLoaded` */
private _codeServerMain!: CodeServerLib.IServerAPI private _codeServerMain!: CodeServerLib.IServerAPI
private _wsRouterWrapper = WsRouter() private _wsRouterWrapper = WsRouter()
private _socketProxyProvider = new SocketProxyProvider()
public router = express.Router() public router = express.Router()
public get wsRouter() { public get wsRouter() {
@ -79,10 +77,9 @@ export class CodeServerRouteWrapper {
} }
private $proxyWebsocket = async (req: WebsocketRequest) => { private $proxyWebsocket = async (req: WebsocketRequest) => {
const wrappedSocket = await this._socketProxyProvider.createProxy(req.ws) this._codeServerMain.handleUpgrade(req, req.socket)
this._codeServerMain.handleUpgrade(req, wrappedSocket)
req.ws.resume() req.socket.resume()
} }
//#endregion //#endregion
@ -109,11 +106,7 @@ export class CodeServerRouteWrapper {
) )
try { try {
this._codeServerMain = await createVSServer(null, { this._codeServerMain = await createVSServer(null, await toVsCodeArgs(args))
...(await toVsCodeArgs(args)),
// TODO: Make the browser helper script work.
"without-browser-env-var": true,
})
} catch (error) { } catch (error) {
logError(logger, "CodeServerRouteWrapper", error) logError(logger, "CodeServerRouteWrapper", error)
if (isDevMode) { if (isDevMode) {
@ -133,6 +126,5 @@ export class CodeServerRouteWrapper {
dispose() { dispose() {
this._codeServerMain?.dispose() this._codeServerMain?.dispose()
this._socketProxyProvider.stop()
} }
} }

View File

@ -1,3 +1,4 @@
import { logger } from "@coder/logger"
import * as argon2 from "argon2" import * as argon2 from "argon2"
import * as cp from "child_process" import * as cp from "child_process"
import * as crypto from "crypto" import * as crypto from "crypto"
@ -57,10 +58,10 @@ export const paths = getEnvPaths()
* On MacOS this function gets the standard XDG directories instead of using the native macOS * On MacOS this function gets the standard XDG directories instead of using the native macOS
* ones. Most CLIs do this as in practice only GUI apps use the standard macOS directories. * ones. Most CLIs do this as in practice only GUI apps use the standard macOS directories.
*/ */
export function getEnvPaths(platform = process.platform): Paths { export function getEnvPaths(): Paths {
const paths = envPaths("code-server", { suffix: "" }) const paths = envPaths("code-server", { suffix: "" })
const append = (p: string): string => path.join(p, "code-server") const append = (p: string): string => path.join(p, "code-server")
switch (platform) { switch (process.platform) {
case "darwin": case "darwin":
return { return {
// envPaths uses native directories so force Darwin to use the XDG spec // envPaths uses native directories so force Darwin to use the XDG spec
@ -156,7 +157,12 @@ export const generatePassword = async (length = 24): Promise<string> => {
* Used to hash the password. * Used to hash the password.
*/ */
export const hash = async (password: string): Promise<string> => { export const hash = async (password: string): Promise<string> => {
try {
return await argon2.hash(password) return await argon2.hash(password)
} catch (error: any) {
logger.error(error)
return ""
}
} }
/** /**
@ -166,7 +172,11 @@ export const isHashMatch = async (password: string, hash: string) => {
if (password === "" || hash === "" || !hash.startsWith("$")) { if (password === "" || hash === "" || !hash.startsWith("$")) {
return false return false
} }
try {
return await argon2.verify(hash, password) return await argon2.verify(hash, password)
} catch (error: any) {
throw new Error(error)
}
} }
/** /**

View File

@ -9,15 +9,10 @@ import { CodeServer, CodeServerPage } from "./models/CodeServer"
* *
* If `includeCredentials` is `true` page requests will be authenticated. * If `includeCredentials` is `true` page requests will be authenticated.
*/ */
export const describe = ( export const describe = (name: string, includeCredentials: boolean, fn: (codeServer: CodeServer) => void) => {
name: string,
includeCredentials: boolean,
codeServerArgs: string[],
fn: (codeServer: CodeServer) => void,
) => {
test.describe(name, () => { test.describe(name, () => {
// This will spawn on demand so nothing is necessary on before. // This will spawn on demand so nothing is necessary on before.
const codeServer = new CodeServer(name, codeServerArgs) const codeServer = new CodeServer(name)
// Kill code-server after the suite has ended. This may happen even without // Kill code-server after the suite has ended. This may happen even without
// doing it explicitly but it seems prudent to be sure. // doing it explicitly but it seems prudent to be sure.
@ -41,9 +36,6 @@ export const describe = (
authenticated: includeCredentials, authenticated: includeCredentials,
// This provides a cookie that authenticates with code-server. // This provides a cookie that authenticates with code-server.
storageState: includeCredentials ? storageState : {}, storageState: includeCredentials ? storageState : {},
// NOTE@jsjoeio some tests use --cert which uses a self-signed certificate
// without this option, those tests will fail.
ignoreHTTPSErrors: true,
}) })
fn(codeServer) fn(codeServer)

View File

@ -1,6 +1,6 @@
import { describe, test, expect } from "./baseFixture" import { describe, test, expect } from "./baseFixture"
describe("CodeServer", true, [], () => { describe("CodeServer", true, () => {
test("should navigate to home page", async ({ codeServerPage }) => { test("should navigate to home page", async ({ codeServerPage }) => {
// We navigate codeServer before each test // We navigate codeServer before each test
// and we start the test with a storage state // and we start the test with a storage state

View File

@ -1,20 +1,12 @@
import { describe, test } from "./baseFixture" import { describe, test } from "./baseFixture"
function runTestExtensionTests() { describe("Extensions", true, () => {
// This will only work if the test extension is loaded into code-server. // This will only work if the test extension is loaded into code-server.
test("should have access to VSCODE_PROXY_URI", async ({ codeServerPage }) => { test("should have access to VSCODE_PROXY_URI", async ({ codeServerPage }) => {
const address = await codeServerPage.address() const address = await codeServerPage.address()
await codeServerPage.executeCommandViaMenus("code-server: Get proxy URI") await codeServerPage.executeCommandViaMenus("code-server: Get proxy URI")
await codeServerPage.page.waitForSelector(`text=${address}/proxy/{{port}}`) await codeServerPage.page.waitForSelector(`text=${address}/proxy/{port}`)
}) })
}
describe("Extensions", true, [], () => {
runTestExtensionTests()
})
describe("Extensions with --cert", true, ["--cert"], () => {
runTestExtensionTests()
}) })

View File

@ -2,7 +2,7 @@
"name": "code-server-extension", "name": "code-server-extension",
"description": "code-server test extension", "description": "code-server test extension",
"version": "0.0.1", "version": "0.0.1",
"publisher": "coder", "publisher": "cdr",
"activationEvents": [ "activationEvents": [
"onCommand:codeServerTest.proxyUri" "onCommand:codeServerTest.proxyUri"
], ],
@ -24,6 +24,6 @@
"typescript": "^4.0.5" "typescript": "^4.0.5"
}, },
"scripts": { "scripts": {
"build": "tsc" "build": "tsc extension.ts"
} }
} }

View File

@ -4,9 +4,7 @@
"module": "commonjs", "module": "commonjs",
"outDir": ".", "outDir": ".",
"strict": true, "strict": true,
"baseUrl": "./", "baseUrl": "./"
"skipLibCheck": true
}, },
"include": ["./extension.ts"], "include": ["./extension.ts"]
"exclude": ["node_modules"]
} }

View File

@ -2,7 +2,7 @@ import { describe, test, expect } from "./baseFixture"
// This test is to make sure the globalSetup works as expected // This test is to make sure the globalSetup works as expected
// meaning globalSetup ran and stored the storageState // meaning globalSetup ran and stored the storageState
describe("globalSetup", true, [], () => { describe("globalSetup", true, () => {
test("should keep us logged in using the storageState", async ({ codeServerPage }) => { test("should keep us logged in using the storageState", async ({ codeServerPage }) => {
// Make sure the editor actually loaded // Make sure the editor actually loaded
expect(await codeServerPage.isEditorVisible()).toBe(true) expect(await codeServerPage.isEditorVisible()).toBe(true)

View File

@ -1,7 +1,7 @@
import { PASSWORD } from "../utils/constants" import { PASSWORD } from "../utils/constants"
import { describe, test, expect } from "./baseFixture" import { describe, test, expect } from "./baseFixture"
describe("login", false, [], () => { describe("login", false, () => {
test("should see the login page", async ({ codeServerPage }) => { test("should see the login page", async ({ codeServerPage }) => {
// It should send us to the login page // It should send us to the login page
expect(await codeServerPage.page.title()).toBe("code-server login") expect(await codeServerPage.page.title()).toBe("code-server login")

View File

@ -1,7 +1,7 @@
// NOTE@jsjoeio commenting out until we can figure out what's wrong // NOTE@jsjoeio commenting out until we can figure out what's wrong
// import { describe, test, expect } from "./baseFixture" // import { describe, test, expect } from "./baseFixture"
// describe("logout", true, [], () => { // describe("logout", true, () => {
// test("should be able logout", async ({ codeServerPage }) => { // test("should be able logout", async ({ codeServerPage }) => {
// // Recommended by Playwright for async navigation // // Recommended by Playwright for async navigation
// // https://github.com/microsoft/playwright/issues/1987#issuecomment-620182151 // // https://github.com/microsoft/playwright/issues/1987#issuecomment-620182151

View File

@ -31,7 +31,7 @@ export class CodeServer {
public readonly logger: Logger public readonly logger: Logger
private closed = false private closed = false
constructor(name: string, private readonly codeServerArgs: string[]) { constructor(name: string) {
this.logger = logger.named(name) this.logger = logger.named(name)
} }
@ -78,7 +78,6 @@ export class CodeServer {
"node", "node",
[ [
process.env.CODE_SERVER_TEST_ENTRY || ".", process.env.CODE_SERVER_TEST_ENTRY || ".",
...this.codeServerArgs,
// Using port zero will spawn on a random port. // Using port zero will spawn on a random port.
"--bind-addr", "--bind-addr",
"127.0.0.1:0", "127.0.0.1:0",

View File

@ -1,6 +1,6 @@
import { describe, test, expect } from "./baseFixture" import { describe, test, expect } from "./baseFixture"
describe("Open Help > About", true, [], () => { describe("Open Help > About", true, () => {
test("should see code-server version in about dialog", async ({ codeServerPage }) => { test("should see code-server version in about dialog", async ({ codeServerPage }) => {
// Open using the menu. // Open using the menu.
await codeServerPage.navigateMenus(["Help", "About"]) await codeServerPage.navigateMenus(["Help", "About"])

View File

@ -4,7 +4,7 @@ import util from "util"
import { clean, tmpdir } from "../utils/helpers" import { clean, tmpdir } from "../utils/helpers"
import { describe, expect, test } from "./baseFixture" import { describe, expect, test } from "./baseFixture"
describe("Integrated Terminal", true, [], () => { describe("Integrated Terminal", true, () => {
const testName = "integrated-terminal" const testName = "integrated-terminal"
test.beforeAll(async () => { test.beforeAll(async () => {
await clean(testName) await clean(testName)

View File

@ -361,16 +361,6 @@ describe("parser", () => {
"$argon2i$v=19$m=4096,t=3,p=1$0qr/o+0t00hsbjfqcksfdq$ofcm4rl6o+b7oxpua4qlxubypbbpsf+8l531u7p9hyy", "$argon2i$v=19$m=4096,t=3,p=1$0qr/o+0t00hsbjfqcksfdq$ofcm4rl6o+b7oxpua4qlxubypbbpsf+8l531u7p9hyy",
}) })
}) })
it("should throw an error for invalid config values", async () => {
const fakePath = "/fake-config-path"
const expectedErrMsg = `error reading ${fakePath}: `
expect(() =>
parse(["--foo"], {
configFile: fakePath,
}),
).toThrowError(expectedErrMsg)
})
}) })
describe("cli", () => { describe("cli", () => {

View File

@ -8,7 +8,7 @@ describe("constants", () => {
const mockPackageJson = { const mockPackageJson = {
name: "mock-code-server", name: "mock-code-server",
description: "Run VS Code on a remote server.", description: "Run VS Code on a remote server.",
repository: "https://github.com/coder/code-server", repository: "https://github.com/cdr/code-server",
version: "1.0.0", version: "1.0.0",
commit: "f6b2be2838f4afb217c2fd8f03eafedd8d55ef9b", commit: "f6b2be2838f4afb217c2fd8f03eafedd8d55ef9b",
} }

View File

@ -1,62 +0,0 @@
import { logger } from "@coder/logger"
import { promises as fs } from "fs"
import path from "path"
import { SettingsProvider, CoderSettings } from "../../../src/node/settings"
import { clean, mockLogger, tmpdir } from "../../utils/helpers"
describe("settings", () => {
const testName = "settingsTests"
let testDir = ""
beforeAll(async () => {
mockLogger()
await clean(testName)
testDir = await tmpdir(testName)
})
describe("with invalid JSON in settings file", () => {
const mockSettingsFile = "coder.json"
let pathToMockSettingsFile = ""
beforeEach(async () => {
pathToMockSettingsFile = path.join(testDir, mockSettingsFile)
// Missing a quote, which makes it invalid intentionally
await fs.writeFile(pathToMockSettingsFile, '{"fakeKey":true,"helloWorld:"test"}')
})
afterEach(async () => {
jest.clearAllMocks()
})
it("should log a warning", async () => {
const settings = new SettingsProvider<CoderSettings>(pathToMockSettingsFile)
await settings.read()
// This happens when we can't parse a JSON (usually error in file)
expect(logger.warn).toHaveBeenCalledWith("Unexpected token t in JSON at position 29")
})
})
describe("with invalid settings file path", () => {
const mockSettingsFile = "nonExistent.json"
let pathToMockSettingsFile = ""
beforeEach(async () => {
// Add hello so it's a directory that doesn't exist
// NOTE: if we don't have that, it fails the test
// That's because it will write a file if it doesn't exist
// but it throws if there's a directory in the path that
// doesn't exist.
pathToMockSettingsFile = path.join(testDir, "hello", mockSettingsFile)
})
afterEach(async () => {
jest.clearAllMocks()
})
it("should log a warning", async () => {
const settings = new SettingsProvider<CoderSettings>(pathToMockSettingsFile)
await settings.write({
update: {
checked: 2,
version: "4.0.1",
},
})
// This happens if it tries to writeFile to a nonexistent path
expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining("ENOENT: no such file or directory"))
})
})
})

View File

@ -1,10 +1,8 @@
import { logger } from "@coder/logger"
import * as http from "http" import * as http from "http"
import { AddressInfo } from "net"
import * as path from "path" import * as path from "path"
import { SettingsProvider, UpdateSettings } from "../../../src/node/settings" import { SettingsProvider, UpdateSettings } from "../../../src/node/settings"
import { LatestResponse, UpdateProvider } from "../../../src/node/update" import { LatestResponse, UpdateProvider } from "../../../src/node/update"
import { clean, isAddressInfo, mockLogger, tmpdir } from "../../utils/helpers" import { clean, mockLogger, tmpdir } from "../../utils/helpers"
describe("update", () => { describe("update", () => {
let version = "1.0.0" let version = "1.0.0"
@ -25,46 +23,6 @@ describe("update", () => {
return response.end(JSON.stringify(latest)) return response.end(JSON.stringify(latest))
} }
if (request.url === "/reject-status-code") {
response.writeHead(500)
return response.end("rejected status code test")
}
if (request.url === "/no-location-header") {
response.writeHead(301, "testing", {
location: "",
})
return response.end("rejected status code test")
}
if (request.url === "/with-location-header") {
response.writeHead(301, "testing", {
location: "/latest",
})
return response.end()
}
// Checks if url matches /redirect/${number}
// with optional trailing slash
const match = request.url.match(/\/redirect\/([0-9]+)\/?$/)
if (match) {
if (request.url === "/redirect/0") {
response.writeHead(200)
return response.end("done")
}
// Subtract 1 from the current redirect number
// i.e. /redirect/10 -> /redirect/9 -> /redirect/8
const currentRedirectNumber = parseInt(match[1])
const newRedirectNumber = currentRedirectNumber - 1
response.writeHead(302, "testing", {
location: `/redirect/${String(newRedirectNumber)}`,
})
return response.end("")
}
// Anything else is a 404. // Anything else is a 404.
response.writeHead(404) response.writeHead(404)
response.end("not found") response.end("not found")
@ -79,7 +37,6 @@ describe("update", () => {
} }
let _provider: UpdateProvider | undefined let _provider: UpdateProvider | undefined
let _address: string | AddressInfo | null
const provider = (): UpdateProvider => { const provider = (): UpdateProvider => {
if (!_provider) { if (!_provider) {
throw new Error("Update provider has not been created") throw new Error("Update provider has not been created")
@ -105,12 +62,12 @@ describe("update", () => {
}) })
}) })
_address = server.address() const address = server.address()
if (!isAddressInfo(_address)) { if (!address || typeof address === "string" || !address.port) {
throw new Error("unexpected address") throw new Error("unexpected address")
} }
_provider = new UpdateProvider(`http://${_address?.address}:${_address?.port}/latest`, _settings) _provider = new UpdateProvider(`http://${address.address}:${address.port}/latest`, _settings)
}) })
afterAll(() => { afterAll(() => {
@ -118,7 +75,6 @@ describe("update", () => {
}) })
beforeEach(() => { beforeEach(() => {
jest.clearAllMocks()
spy = [] spy = []
}) })
@ -214,61 +170,4 @@ describe("update", () => {
expect(update.checked < Date.now() && update.checked >= now).toEqual(true) expect(update.checked < Date.now() && update.checked >= now).toEqual(true)
expect(update.version).toStrictEqual("unknown") expect(update.version).toStrictEqual("unknown")
}) })
it("should reject if response has status code 500", async () => {
if (isAddressInfo(_address)) {
const mockURL = `http://${_address.address}:${_address.port}/reject-status-code`
const provider = new UpdateProvider(mockURL, settings())
const update = await provider.getUpdate(true)
expect(update.version).toBe("unknown")
expect(logger.error).toHaveBeenCalled()
expect(logger.error).toHaveBeenCalledWith("Failed to get latest version", {
identifier: "error",
value: `${mockURL}: 500`,
})
}
})
it("should reject if no location header provided", async () => {
if (isAddressInfo(_address)) {
const mockURL = `http://${_address.address}:${_address.port}/no-location-header`
const provider = new UpdateProvider(mockURL, settings())
const update = await provider.getUpdate(true)
expect(update.version).toBe("unknown")
expect(logger.error).toHaveBeenCalled()
expect(logger.error).toHaveBeenCalledWith("Failed to get latest version", {
identifier: "error",
value: `received redirect with no location header`,
})
}
})
it("should resolve the request with response.headers.location", async () => {
version = "4.1.1"
if (isAddressInfo(_address)) {
const mockURL = `http://${_address.address}:${_address.port}/with-location-header`
const provider = new UpdateProvider(mockURL, settings())
const update = await provider.getUpdate(true)
expect(logger.error).not.toHaveBeenCalled()
expect(update.version).toBe("4.1.1")
}
})
it("should reject if more than 10 redirects", async () => {
if (isAddressInfo(_address)) {
const mockURL = `http://${_address.address}:${_address.port}/redirect/11`
const provider = new UpdateProvider(mockURL, settings())
const update = await provider.getUpdate(true)
expect(update.version).toBe("unknown")
expect(logger.error).toHaveBeenCalled()
expect(logger.error).toHaveBeenCalledWith("Failed to get latest version", {
identifier: "error",
value: `reached max redirects`,
})
}
})
}) })

View File

@ -7,6 +7,16 @@ import * as util from "../../../src/node/util"
describe("getEnvPaths", () => { describe("getEnvPaths", () => {
describe("on darwin", () => { describe("on darwin", () => {
let ORIGINAL_PLATFORM = ""
beforeAll(() => {
ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "darwin",
})
})
beforeEach(() => { beforeEach(() => {
jest.resetModules() jest.resetModules()
jest.mock("env-paths", () => { jest.mock("env-paths", () => {
@ -17,6 +27,15 @@ describe("getEnvPaths", () => {
}) })
}) })
}) })
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the env paths using xdgBasedir", () => { it("should return the env paths using xdgBasedir", () => {
jest.mock("xdg-basedir", () => ({ jest.mock("xdg-basedir", () => ({
data: "/home/usr/.local/share", data: "/home/usr/.local/share",
@ -24,7 +43,7 @@ describe("getEnvPaths", () => {
runtime: "/tmp/runtime", runtime: "/tmp/runtime",
})) }))
const getEnvPaths = require("../../../src/node/util").getEnvPaths const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths("darwin") const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/home/usr/.local/share/code-server") expect(envPaths.data).toEqual("/home/usr/.local/share/code-server")
expect(envPaths.config).toEqual("/home/usr/.config/code-server") expect(envPaths.config).toEqual("/home/usr/.config/code-server")
@ -34,7 +53,7 @@ describe("getEnvPaths", () => {
it("should return the env paths using envPaths when xdgBasedir is undefined", () => { it("should return the env paths using envPaths when xdgBasedir is undefined", () => {
jest.mock("xdg-basedir", () => ({})) jest.mock("xdg-basedir", () => ({}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths("darwin") const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/home/envPath/.local/share") expect(envPaths.data).toEqual("/home/envPath/.local/share")
expect(envPaths.config).toEqual("/home/envPath/.config") expect(envPaths.config).toEqual("/home/envPath/.config")
@ -42,6 +61,16 @@ describe("getEnvPaths", () => {
}) })
}) })
describe("on win32", () => { describe("on win32", () => {
let ORIGINAL_PLATFORM = ""
beforeAll(() => {
ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "win32",
})
})
beforeEach(() => { beforeEach(() => {
jest.resetModules() jest.resetModules()
jest.mock("env-paths", () => { jest.mock("env-paths", () => {
@ -53,9 +82,17 @@ describe("getEnvPaths", () => {
}) })
}) })
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the env paths using envPaths", () => { it("should return the env paths using envPaths", () => {
const getEnvPaths = require("../../../src/node/util").getEnvPaths const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths("win32") const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/windows/envPath/.local/share") expect(envPaths.data).toEqual("/windows/envPath/.local/share")
expect(envPaths.config).toEqual("/windows/envPath/.config") expect(envPaths.config).toEqual("/windows/envPath/.config")
@ -63,6 +100,16 @@ describe("getEnvPaths", () => {
}) })
}) })
describe("on other platforms", () => { describe("on other platforms", () => {
let ORIGINAL_PLATFORM = ""
beforeAll(() => {
ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "linux",
})
})
beforeEach(() => { beforeEach(() => {
jest.resetModules() jest.resetModules()
jest.mock("env-paths", () => { jest.mock("env-paths", () => {
@ -74,12 +121,20 @@ describe("getEnvPaths", () => {
}) })
}) })
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the runtime using xdgBasedir if it exists", () => { it("should return the runtime using xdgBasedir if it exists", () => {
jest.mock("xdg-basedir", () => ({ jest.mock("xdg-basedir", () => ({
runtime: "/tmp/runtime", runtime: "/tmp/runtime",
})) }))
const getEnvPaths = require("../../../src/node/util").getEnvPaths const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths("linux") const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/linux/envPath/.local/share") expect(envPaths.data).toEqual("/linux/envPath/.local/share")
expect(envPaths.config).toEqual("/linux/envPath/.config") expect(envPaths.config).toEqual("/linux/envPath/.config")
@ -89,7 +144,7 @@ describe("getEnvPaths", () => {
it("should return the env paths using envPaths when xdgBasedir is undefined", () => { it("should return the env paths using envPaths when xdgBasedir is undefined", () => {
jest.mock("xdg-basedir", () => ({})) jest.mock("xdg-basedir", () => ({}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths("linux") const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/linux/envPath/.local/share") expect(envPaths.data).toEqual("/linux/envPath/.local/share")
expect(envPaths.config).toEqual("/linux/envPath/.config") expect(envPaths.config).toEqual("/linux/envPath/.config")
@ -104,10 +159,6 @@ describe("hash", () => {
const hashed = await util.hash(plainTextPassword) const hashed = await util.hash(plainTextPassword)
expect(hashed).not.toBe(plainTextPassword) expect(hashed).not.toBe(plainTextPassword)
}) })
it("should return a hash for an empty string", async () => {
const hashed = await util.hash("")
expect(hashed).not.toBe("")
})
}) })
describe("isHashMatch", () => { describe("isHashMatch", () => {

View File

@ -105,17 +105,3 @@ export function idleTimer(message: string, reject: (error: Error) => void, delay
}, },
} }
} }
/**
* A helper function which returns a boolean indicating whether
* the given address is AddressInfo and has .address
* and a .port property.
*/
export function isAddressInfo(address: unknown): address is net.AddressInfo {
return (
address !== null &&
typeof address !== "string" &&
(address as net.AddressInfo).port !== undefined &&
(address as net.AddressInfo).address !== undefined
)
}

File diff suppressed because it is too large Load Diff

View File

@ -72,7 +72,7 @@ import Websocket from "ws"
* "plugin": { * "plugin": {
* "name": "test-plugin", * "name": "test-plugin",
* "version": "1.0.0", * "version": "1.0.0",
* "modulePath": "/Users/nhooyr/src/coder/code-server/test/test-plugin", * "modulePath": "/Users/nhooyr/src/cdr/code-server/test/test-plugin",
* "displayName": "Test Plugin", * "displayName": "Test Plugin",
* "description": "Plugin used in code-server tests.", * "description": "Plugin used in code-server tests.",
* "routerPath": "/test-plugin", * "routerPath": "/test-plugin",

2
vendor/package.json vendored
View File

@ -7,6 +7,6 @@
"postinstall": "./postinstall.sh" "postinstall": "./postinstall.sh"
}, },
"devDependencies": { "devDependencies": {
"code-oss-dev": "coder/vscode#96e241330d9c44b64897c1e5031e00aa894103db" "code-oss-dev": "cdr/vscode#d4f09b4df0d23ead4389b4a69c6fad86ac358892"
} }
} }

4
vendor/yarn.lock vendored
View File

@ -274,9 +274,9 @@ clone-response@^1.0.2:
dependencies: dependencies:
mimic-response "^1.0.0" mimic-response "^1.0.0"
code-oss-dev@coder/vscode#96e241330d9c44b64897c1e5031e00aa894103db: code-oss-dev@cdr/vscode#d4f09b4df0d23ead4389b4a69c6fad86ac358892:
version "1.63.0" version "1.63.0"
resolved "https://codeload.github.com/coder/vscode/tar.gz/96e241330d9c44b64897c1e5031e00aa894103db" resolved "https://codeload.github.com/cdr/vscode/tar.gz/d4f09b4df0d23ead4389b4a69c6fad86ac358892"
dependencies: dependencies:
"@microsoft/applicationinsights-web" "^2.6.4" "@microsoft/applicationinsights-web" "^2.6.4"
"@parcel/watcher" "2.0.3" "@parcel/watcher" "2.0.3"

301
yarn.lock
View File

@ -235,20 +235,20 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
"@mapbox/node-pre-gyp@^1.0.8": "@mapbox/node-pre-gyp@^1.0.1":
version "1.0.8" version "1.0.5"
resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950"
integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==
dependencies: dependencies:
detect-libc "^1.0.3" detect-libc "^1.0.3"
https-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0"
make-dir "^3.1.0" make-dir "^3.1.0"
node-fetch "^2.6.5" node-fetch "^2.6.1"
nopt "^5.0.0" nopt "^5.0.0"
npmlog "^5.0.1" npmlog "^4.1.2"
rimraf "^3.0.2" rimraf "^3.0.2"
semver "^7.3.5" semver "^7.3.4"
tar "^6.1.11" tar "^6.1.0"
"@nodelib/fs.scandir@2.1.4": "@nodelib/fs.scandir@2.1.4":
version "2.1.4" version "2.1.4"
@ -603,21 +603,11 @@ acorn-jsx@^5.3.1:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
acorn-walk@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^7.4.0: acorn@^7.4.0:
version "7.4.1" version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.7.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2:
version "6.0.2" version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@ -657,7 +647,7 @@ ansi-colors@^4.1.1:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
ansi-regex@^5.0.0, ansi-regex@^5.0.1: ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^5.0.0, ansi-regex@^5.0.1:
version "5.0.1" version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
@ -676,18 +666,18 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies: dependencies:
color-convert "^2.0.1" color-convert "^2.0.1"
"aproba@^1.0.3 || ^2.0.0": aproba@^1.0.3:
version "2.0.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
are-we-there-yet@^2.0.0: are-we-there-yet@~1.1.2:
version "2.0.0" version "1.1.5"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
dependencies: dependencies:
delegates "^1.0.0" delegates "^1.0.0"
readable-stream "^3.6.0" readable-stream "^2.0.6"
arg@^4.1.0: arg@^4.1.0:
version "4.1.3" version "4.1.3"
@ -695,13 +685,13 @@ arg@^4.1.0:
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
argon2@^0.28.0: argon2@^0.28.0:
version "0.28.4" version "0.28.2"
resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.28.4.tgz#af6df523b839a78b3cfbfdbfa789ffa2c6672d9f" resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.28.2.tgz#b583e4ef5b052a83bfe146752844b9fa526dba29"
integrity sha512-WsfqiDp/tf5+eieLc1+S7RtO7Y3cAiZQ1F6GIaskENoJy/6xuCN5WGBIc8dG7QVPDavy6jUSads8zwZTtrHVag== integrity sha512-8oRk3kPlL0lLletENzhpbF9zoZJqvIHwTkjBseMrg1uD4gBMqhqnjJz1z3lEtwT0oqQAEkEwsEpsjaQBBRHcWw==
dependencies: dependencies:
"@mapbox/node-pre-gyp" "^1.0.8" "@mapbox/node-pre-gyp" "^1.0.1"
"@phc/format" "^1.0.0" "@phc/format" "^1.0.0"
node-addon-api "^4.3.0" node-addon-api "^3.0.2"
opencollective-postinstall "^2.0.3" opencollective-postinstall "^2.0.3"
argparse@^1.0.7: argparse@^1.0.7:
@ -1000,6 +990,11 @@ clone-regexp@^2.1.0:
dependencies: dependencies:
is-regexp "^2.0.0" is-regexp "^2.0.0"
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
codecov@^3.8.3: codecov@^3.8.3:
version "3.8.3" version "3.8.3"
resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.3.tgz#9c3e364b8a700c597346ae98418d09880a3fdbe7" resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.3.tgz#9c3e364b8a700c597346ae98418d09880a3fdbe7"
@ -1040,11 +1035,6 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-support@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
colorette@^1.2.1, colorette@^1.2.2: colorette@^1.2.1, colorette@^1.2.2:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
@ -1075,7 +1065,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
console-control-strings@^1.0.0, console-control-strings@^1.1.0: console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
@ -1889,10 +1879,10 @@ flatted@^3.1.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
follow-redirects@^1.0.0, follow-redirects@^1.14.8: follow-redirects@^1.0.0:
version "1.14.8" version "1.13.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
format@^0.2.0: format@^0.2.0:
version "0.2.2" version "0.2.2"
@ -1953,20 +1943,19 @@ 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" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
gauge@^3.0.0: gauge@~2.7.3:
version "3.0.2" version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
dependencies: dependencies:
aproba "^1.0.3 || ^2.0.0" aproba "^1.0.3"
color-support "^1.1.2"
console-control-strings "^1.0.0" console-control-strings "^1.0.0"
has-unicode "^2.0.1" has-unicode "^2.0.0"
object-assign "^4.1.1" object-assign "^4.1.0"
signal-exit "^3.0.0" signal-exit "^3.0.0"
string-width "^4.2.3" string-width "^1.0.1"
strip-ansi "^6.0.1" strip-ansi "^3.0.1"
wide-align "^1.1.2" wide-align "^1.1.0"
gensync@^1.0.0-beta.2: gensync@^1.0.0-beta.2:
version "1.0.0-beta.2" version "1.0.0-beta.2"
@ -2149,7 +2138,7 @@ has-tostringtag@^1.0.0:
dependencies: dependencies:
has-symbols "^1.0.2" has-symbols "^1.0.2"
has-unicode@^2.0.1: has-unicode@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
@ -2314,7 +2303,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1: inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -2420,6 +2409,18 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
dependencies:
number-is-nan "^1.0.0"
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
is-fullwidth-code-point@^3.0.0: is-fullwidth-code-point@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
@ -2546,6 +2547,11 @@ isarray@0.0.1:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isexe@^2.0.0: isexe@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@ -2956,10 +2962,10 @@ mvdan-sh@^0.5.0:
resolved "https://registry.yarnpkg.com/mvdan-sh/-/mvdan-sh-0.5.0.tgz#fa76f611a103595ad0f04f5d18e582892c46e87c" resolved "https://registry.yarnpkg.com/mvdan-sh/-/mvdan-sh-0.5.0.tgz#fa76f611a103595ad0f04f5d18e582892c46e87c"
integrity sha512-UWbdl4LHd2fUnaEcOUFVWRdWGLkNoV12cKVIPiirYd8qM5VkCoCTXErlDubevrkEG7kGohvjRxAlTQmOqG80tw== integrity sha512-UWbdl4LHd2fUnaEcOUFVWRdWGLkNoV12cKVIPiirYd8qM5VkCoCTXErlDubevrkEG7kGohvjRxAlTQmOqG80tw==
nanoid@^3.1.23, nanoid@^3.1.31: nanoid@^3.1.23:
version "3.2.0" version "3.1.23"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
@ -2976,17 +2982,15 @@ netmask@^2.0.1:
resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
node-addon-api@^4.3.0: node-addon-api@^3.0.2:
version "4.3.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: node-fetch@^2.6.1:
version "2.6.7" version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
dependencies:
whatwg-url "^5.0.0"
node-releases@^1.1.71: node-releases@^1.1.71:
version "1.1.71" version "1.1.71"
@ -3020,22 +3024,27 @@ normalize-selector@^0.2.0:
resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03"
integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=
npmlog@^5.0.1: npmlog@^4.1.2:
version "5.0.1" version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
dependencies: dependencies:
are-we-there-yet "^2.0.0" are-we-there-yet "~1.1.2"
console-control-strings "^1.1.0" console-control-strings "~1.1.0"
gauge "^3.0.0" gauge "~2.7.3"
set-blocking "^2.0.0" set-blocking "~2.0.0"
num2fraction@^1.2.2: num2fraction@^1.2.2:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
object-assign@^4.1.1: number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
object-assign@^4.1.0:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@ -3434,6 +3443,11 @@ prettier@^2.2.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
progress@^2.0.0: progress@^2.0.0:
version "2.0.3" version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@ -3476,10 +3490,10 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qs@6.10.3: qs@6.10.2:
version "6.10.3" version "6.10.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe"
integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==
dependencies: dependencies:
side-channel "^1.0.4" side-channel "^1.0.4"
@ -3569,7 +3583,20 @@ readable-stream@1.1.x:
isarray "0.0.1" isarray "0.0.1"
string_decoder "~0.10.x" string_decoder "~0.10.x"
readable-stream@^3.1.1, readable-stream@^3.6.0: readable-stream@^2.0.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
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"
readable-stream@^3.1.1:
version "3.6.0" version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@ -3733,7 +3760,7 @@ run-parallel@^1.1.9:
dependencies: dependencies:
queue-microtask "^1.2.2" queue-microtask "^1.2.2"
safe-buffer@5.1.2, safe-buffer@^5.1.1, safe-buffer@~5.1.1, safe-buffer@~5.2.0: safe-buffer@5.1.2, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.2.0:
version "5.2.1" version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@ -3755,7 +3782,7 @@ semver@^6.0.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.5" version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@ -3791,7 +3818,7 @@ serve-static@1.14.1:
parseurl "~1.3.3" parseurl "~1.3.3"
send "0.17.1" send "0.17.1"
set-blocking@^2.0.0: set-blocking@~2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@ -3837,12 +3864,7 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2" get-intrinsic "^1.0.2"
object-inspect "^1.9.0" object-inspect "^1.9.0"
signal-exit@^3.0.0: signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
signal-exit@^3.0.2:
version "3.0.3" version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
@ -3974,14 +3996,22 @@ stream-events@^1.0.5:
dependencies: dependencies:
stubs "^3.0.0" stubs "^3.0.0"
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: string-width@^1.0.1:
version "4.2.3" version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
dependencies: dependencies:
emoji-regex "^8.0.0" code-point-at "^1.0.0"
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^1.0.0"
strip-ansi "^6.0.1" strip-ansi "^3.0.0"
"string-width@^1.0.2 || 2":
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2:
version "4.2.2" version "4.2.2"
@ -4020,6 +4050,27 @@ string_decoder@~0.10.x:
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
dependencies:
ansi-regex "^2.0.0"
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
dependencies:
ansi-regex "^3.0.0"
strip-ansi@^6.0.0: strip-ansi@^6.0.0:
version "6.0.0" version "6.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
@ -4027,13 +4078,6 @@ strip-ansi@^6.0.0:
dependencies: dependencies:
ansi-regex "^5.0.0" ansi-regex "^5.0.0"
strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-bom@^3.0.0: strip-bom@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
@ -4165,7 +4209,7 @@ table@^6.0.9, table@^6.6.0:
string-width "^4.2.0" string-width "^4.2.0"
strip-ansi "^6.0.0" strip-ansi "^6.0.0"
tar@^6.1.11, tar@^6.1.9: tar@^6.1.0, tar@^6.1.9:
version "6.1.11" version "6.1.11"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
@ -4220,11 +4264,6 @@ toidentifier@1.0.1:
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
traverse@^0.6.6: traverse@^0.6.6:
version "0.6.6" version "0.6.6"
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
@ -4473,7 +4512,7 @@ urlgrey@1.0.0:
dependencies: dependencies:
fast-url-parser "^1.1.3" fast-url-parser "^1.1.3"
util-deprecate@^1.0.1, util-deprecate@^1.0.2: util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
@ -4539,26 +4578,10 @@ vfile@^4.0.0:
unist-util-stringify-position "^2.0.0" unist-util-stringify-position "^2.0.0"
vfile-message "^2.0.0" vfile-message "^2.0.0"
vm2@^3.9.3, vm2@^3.9.6: vm2@^3.9.3, vm2@^3.9.4:
version "3.9.7" version "3.9.5"
resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496"
integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==
dependencies:
acorn "^8.7.0"
acorn-walk "^8.2.0"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
which-boxed-primitive@^1.0.2: which-boxed-primitive@^1.0.2:
version "1.0.2" version "1.0.2"
@ -4585,12 +4608,12 @@ which@^2.0.1, which@^2.0.2:
dependencies: dependencies:
isexe "^2.0.0" isexe "^2.0.0"
wide-align@^1.1.2: wide-align@^1.1.0:
version "1.1.5" version "1.1.3"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
dependencies: dependencies:
string-width "^1.0.2 || 2 || 3 || 4" string-width "^1.0.2 || 2"
word-wrap@^1.2.3, word-wrap@~1.2.3: word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3" version "1.2.3"