Merge pull request #1357
This commit is contained in:
commit
16bcf59cb0
|
@ -1,12 +0,0 @@
|
||||||
Dockerfile
|
|
||||||
build
|
|
||||||
deployment
|
|
||||||
doc
|
|
||||||
.github
|
|
||||||
.gitignore
|
|
||||||
.node-version
|
|
||||||
.travis.yml
|
|
||||||
LICENSE
|
|
||||||
README.md
|
|
||||||
node_modules
|
|
||||||
release
|
|
331
.drone.yml
331
.drone.yml
|
@ -1,331 +0,0 @@
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: amd64:linux
|
|
||||||
|
|
||||||
platform:
|
|
||||||
arch: amd64
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: cache:restore
|
|
||||||
image: codercom/nbin:centos
|
|
||||||
commands:
|
|
||||||
- yum install -y libxkbfile-devel libsecret-devel
|
|
||||||
- . /opt/rh/devtoolset-6/enable
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- yarn lint
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: codercom/nbin:centos
|
|
||||||
commands:
|
|
||||||
- yum install -y openssl
|
|
||||||
- yarn test
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: codercom/nbin:centos
|
|
||||||
commands:
|
|
||||||
- yum install -y libxkbfile-devel libsecret-devel
|
|
||||||
- . /opt/rh/devtoolset-6/enable
|
|
||||||
- timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'
|
|
||||||
|
|
||||||
- name: cache:package
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: cache:push
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: cache-upload/
|
|
||||||
target: codesrv-ci.cdr.sh
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: test:build
|
|
||||||
image: codercom/nbin:centos
|
|
||||||
commands:
|
|
||||||
- yarn test:build
|
|
||||||
|
|
||||||
- name: publish:github
|
|
||||||
image: plugins/github-release
|
|
||||||
settings:
|
|
||||||
api_key:
|
|
||||||
from_secret: github_token
|
|
||||||
files: release/*.tar.gz
|
|
||||||
draft: true
|
|
||||||
overwrite: true
|
|
||||||
title: ${DRONE_TAG}
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:docker
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_user
|
|
||||||
password:
|
|
||||||
from_secret: docker_pass
|
|
||||||
repo: codercom/code-server
|
|
||||||
dockerfile: scripts/ci.dockerfile
|
|
||||||
tags:
|
|
||||||
- ${DRONE_TAG}
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:gcs
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: binary-upload
|
|
||||||
target: codesrv-ci.cdr.sh/
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: amd64:alpine
|
|
||||||
|
|
||||||
platform:
|
|
||||||
arch: amd64
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: cache:restore
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add libxkbfile-dev libsecret-dev build-base git bash python
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- yarn lint
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add openssl
|
|
||||||
- yarn test
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add libxkbfile-dev libsecret-dev build-base git bash python
|
|
||||||
- timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'
|
|
||||||
|
|
||||||
- name: cache:package
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: cache:push
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: cache-upload/
|
|
||||||
target: codesrv-ci.cdr.sh
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: test:build
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- yarn test:build
|
|
||||||
|
|
||||||
- name: publish:github
|
|
||||||
image: plugins/github-release
|
|
||||||
settings:
|
|
||||||
api_key:
|
|
||||||
from_secret: github_token
|
|
||||||
files: release/*.tar.gz
|
|
||||||
draft: true
|
|
||||||
overwrite: true
|
|
||||||
title: ${DRONE_TAG}
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:gcs
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: binary-upload
|
|
||||||
target: codesrv-ci.cdr.sh/
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: arm64:linux
|
|
||||||
|
|
||||||
platform:
|
|
||||||
arch: arm64
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: cache:restore
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- apt update && apt install -y build-essential git libsecret-1-dev libx11-dev libxkbfile-dev
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- yarn lint
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- yarn test
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- apt update && apt install -y build-essential git libsecret-1-dev libx11-dev libxkbfile-dev
|
|
||||||
- timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'
|
|
||||||
|
|
||||||
- name: cache:package
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: cache:push
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: cache-upload/
|
|
||||||
target: codesrv-ci.cdr.sh
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: test:build
|
|
||||||
image: node:12
|
|
||||||
commands:
|
|
||||||
- yarn test:build
|
|
||||||
|
|
||||||
- name: publish:github
|
|
||||||
image: plugins/github-release
|
|
||||||
settings:
|
|
||||||
api_key:
|
|
||||||
from_secret: github_token
|
|
||||||
files: release/*.tar.gz
|
|
||||||
draft: true
|
|
||||||
overwrite: true
|
|
||||||
title: ${DRONE_TAG}
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:docker
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_user
|
|
||||||
password:
|
|
||||||
from_secret: docker_pass
|
|
||||||
repo: codercom/code-server
|
|
||||||
dockerfile: scripts/ci.dockerfile
|
|
||||||
tags:
|
|
||||||
- ${DRONE_TAG}-arm64
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:gcs
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: binary-upload
|
|
||||||
target: codesrv-ci.cdr.sh/
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: arm64:alpine
|
|
||||||
|
|
||||||
platform:
|
|
||||||
arch: arm64
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: cache:restore
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add libxkbfile-dev libsecret-dev build-base git bash python
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- yarn lint
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add openssl
|
|
||||||
- yarn test
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- apk add libxkbfile-dev libsecret-dev build-base git bash python
|
|
||||||
- timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'
|
|
||||||
|
|
||||||
- name: cache:package
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- ./scripts/cacher.sh
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: cache:push
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: cache-upload/
|
|
||||||
target: codesrv-ci.cdr.sh
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
|
|
||||||
- name: test:build
|
|
||||||
image: node:12-alpine
|
|
||||||
commands:
|
|
||||||
- yarn test:build
|
|
||||||
|
|
||||||
- name: publish:github
|
|
||||||
image: plugins/github-release
|
|
||||||
settings:
|
|
||||||
api_key:
|
|
||||||
from_secret: github_token
|
|
||||||
files: release/*.tar.gz
|
|
||||||
draft: true
|
|
||||||
overwrite: true
|
|
||||||
title: ${DRONE_TAG}
|
|
||||||
when:
|
|
||||||
event: tag
|
|
||||||
|
|
||||||
- name: publish:gcs
|
|
||||||
image: plugins/gcs
|
|
||||||
settings:
|
|
||||||
source: binary-upload
|
|
||||||
target: codesrv-ci.cdr.sh/
|
|
||||||
token:
|
|
||||||
from_secret: gcs-token
|
|
||||||
when:
|
|
||||||
event: tag
|
|
|
@ -1,6 +0,0 @@
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = space
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
indent_size = 2
|
|
|
@ -1,7 +1,7 @@
|
||||||
parser: "@typescript-eslint/parser"
|
parser: "@typescript-eslint/parser"
|
||||||
env:
|
env:
|
||||||
browser: true
|
browser: true
|
||||||
es6: true # Map, etc.
|
es6: true # Map, etc.
|
||||||
mocha: true
|
mocha: true
|
||||||
node: true
|
node: true
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
* @code-asher @kylecarbs
|
* @code-asher @nhooyr
|
||||||
Dockerfile @nhooyr
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
---
|
|
||||||
name: Bug Report
|
|
||||||
about: Report problems and unexpected behavior.
|
|
||||||
title: ''
|
|
||||||
labels: 'bug'
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Please search existing issues to avoid creating duplicates. -->
|
|
||||||
<!-- All extension-specific issues should be created with the `Extension Bug` template. -->
|
|
||||||
|
|
||||||
- `code-server` version: <!-- The version of code-server -->
|
|
||||||
- OS Version: <!-- OS version, cloud provider, -->
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
<!-- Describes the problem here -->
|
|
||||||
|
|
||||||
## Steps to Reproduce
|
|
||||||
|
|
||||||
1. <!-- step 1: click ... -->
|
|
||||||
1. <!-- step 2: ... -->
|
|
|
@ -1,22 +0,0 @@
|
||||||
---
|
|
||||||
name: Extension Bug
|
|
||||||
about: Report problems and unexpected behavior with extensions.
|
|
||||||
title: ''
|
|
||||||
labels: 'extension-specific'
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Please search existing issues to avoid creating duplicates. -->
|
|
||||||
|
|
||||||
- `code-server` version: <!-- The version of code-server -->
|
|
||||||
- OS Version: <!-- OS version, cloud provider, -->
|
|
||||||
- Extension: <!-- Link to extension -->
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
<!-- Describes the problem here -->
|
|
||||||
|
|
||||||
## Steps to Reproduce
|
|
||||||
|
|
||||||
1. <!-- step 1: click ... -->
|
|
||||||
1. <!-- step 2: ... -->
|
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
name: Feature Request
|
|
||||||
about: Suggest an idea for this project.
|
|
||||||
title: ''
|
|
||||||
labels: 'feature'
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Please search existing issues to avoid creating duplicates. -->
|
|
||||||
|
|
||||||
<!-- Describe the feature you'd like. -->
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!--
|
||||||
|
Please file all questions and support requests at https://www.reddit.com/r/codeserver/
|
||||||
|
The issue tracker is only for bugs.
|
||||||
|
-->
|
|
@ -1,6 +1,4 @@
|
||||||
<!-- Please answer these questions before submitting your PR. Thanks! -->
|
<!--
|
||||||
|
Please link to the issue this PR solves.
|
||||||
### Describe in detail the problem you had and how this PR fixes it
|
If there is no existing issue, please first create one unless the fix is minor.
|
||||||
|
-->
|
||||||
### Is there an open issue you can link to?
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
.cache
|
.cache
|
||||||
binaries
|
|
||||||
*-upload
|
|
||||||
build
|
build
|
||||||
dist*
|
dist*
|
||||||
node_modules
|
|
||||||
out*
|
out*
|
||||||
release
|
release
|
||||||
source
|
node_modules
|
||||||
yarn-cache
|
binaries
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
12.14.0
|
|
|
@ -1,7 +1,4 @@
|
||||||
printWidth: 120
|
printWidth: 120
|
||||||
semi: false
|
semi: false
|
||||||
tabWidth: 2
|
trailingComma: all
|
||||||
singleQuote: false
|
|
||||||
trailingComma: es5
|
|
||||||
useTabs: false
|
|
||||||
arrowParens: always
|
arrowParens: always
|
||||||
|
|
57
.travis.yml
57
.travis.yml
|
@ -1,37 +1,52 @@
|
||||||
language: node_js
|
language: minimal
|
||||||
node_js:
|
|
||||||
- 12.14.0
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
- name: "MacOS build"
|
- stage: Code
|
||||||
os: osx
|
name: Format
|
||||||
script: travis_wait 60 scripts/ci.bash
|
script: ./ci/image/run.sh "yarn && yarn vscode && yarn fmt"
|
||||||
|
- name: Lint
|
||||||
|
script: ./ci/image/run.sh "yarn && yarn vscode && yarn lint"
|
||||||
|
- name: Test
|
||||||
|
script: ./ci/image/run.sh "yarn && yarn vscode && yarn test"
|
||||||
|
|
||||||
git:
|
- stage: Release
|
||||||
depth: 3
|
name: Linux Release
|
||||||
|
script:
|
||||||
|
- travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh"
|
||||||
|
- ./ci/release-image/push.sh
|
||||||
|
- name: Linux ARM64 Release
|
||||||
|
script:
|
||||||
|
- travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh"
|
||||||
|
- ./ci/release-image/push.sh
|
||||||
|
arch: arm64
|
||||||
|
- name: MacOS Release
|
||||||
|
os: osx
|
||||||
|
language: node_js
|
||||||
|
node_js: 12
|
||||||
|
script: yarn && yarn vscode && travis_wait 60 ci/release.sh
|
||||||
|
- name: Docker Release
|
||||||
|
script: ./ci/release-image/push.sh
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- name: Code
|
||||||
|
- name: Release
|
||||||
|
if: env(TRAVIS_TAG) IS present
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
- provider: releases
|
- provider: releases
|
||||||
file_glob: true
|
edge: true
|
||||||
draft: true
|
draft: true
|
||||||
tag_name: "$TRAVIS_TAG"
|
tag_name: $TRAVIS_TAG
|
||||||
target_commitish: "$TRAVIS_COMMIT"
|
target_commitish: $TRAVIS_COMMIT
|
||||||
name: "$TRAVIS_TAG"
|
name: $TRAVIS_TAG
|
||||||
skip_cleanup: true
|
|
||||||
api_key:
|
|
||||||
secure: YL/x24KjYjgYXPcJWk3FV7FGxI79Mh6gBECQEcdlf3fkLEoKFVgzHBoUNWrFPzyR4tgLyWNAgcpD9Lkme1TRWTom7UPjXcwMNyLcLa+uec7ciSAnYD9ntLTpiCuPDD1u0LtRGclSi/EHQ+F8YVq+HZJpXTsJeAmOmihma3GVbGKSZr+BRum+0YZSG4w+o4TOlYzw/4bLWS52MogZcwpjd+hemBbgXLuGU2ziKv2vEKCZFbEeA16II4x1WLI4mutDdCeh7+3aLzGLwDa49NxtsVYNjyNFF75JhCTCNA55e2YMiLz9Uq69IXe/mi5F7xUaFfhIqqLNyKBnKeEOzu3dYnc+8n3LjnQ+00PmkF05nx9kBn3UfV1kwQGh6QbyDmTtBP07rtUMyI14aeQqHjxsaVRdMnwj9Q2DjXRr8UDqESZF0rmK3pHCXS2fBhIzLE8tLVW5Heiba2pQRFMHMZW+KBE97FzcFh7is90Ait3T8enfcd/PWFPYoBejDAdjwxwOkezh5N5ZkYquEfDYuWrFi6zRFCktsruaAcA+xGtTf9oilBBzUqu8Ie+YFWH5me83xakcblJWdaW/D2rLJAJH3m6LFm8lBqyUgDX5t/etob6CpDuYHu5D1J3XINOj/+aLAcadq6qlh70PMZS3zYffUu3JlzaD2amlSHIT8b5YXFc=
|
|
||||||
file:
|
file:
|
||||||
- release/*.tar.gz
|
- release/*.tar.gz
|
||||||
- release/*.zip
|
- release/*.zip
|
||||||
on:
|
on:
|
||||||
repo: cdr/code-server
|
|
||||||
tags: true
|
tags: true
|
||||||
|
condition: $TRAVIS_BUILD_STAGE_NAME == Release
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
timeout: 1000
|
timeout: 600
|
||||||
yarn: true
|
yarn: true
|
||||||
directories:
|
|
||||||
- source
|
|
||||||
|
|
57
Dockerfile
57
Dockerfile
|
@ -1,57 +0,0 @@
|
||||||
FROM node:12.14.0
|
|
||||||
ARG tag
|
|
||||||
ARG githubToken
|
|
||||||
|
|
||||||
# Install VS Code's deps. These are the only two it seems we need.
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
libxkbfile-dev \
|
|
||||||
libsecret-1-dev
|
|
||||||
|
|
||||||
WORKDIR /src
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
RUN yarn \
|
|
||||||
&& DRONE_TAG="$tag" MINIFY=true STRIP_BIN_TARGET=true GITHUB_TOKEN="$githubToken" ./scripts/ci.bash \
|
|
||||||
&& rm -r /src/build \
|
|
||||||
&& rm -r /src/source
|
|
||||||
|
|
||||||
# We deploy with Ubuntu so that devs have a familiar environment.
|
|
||||||
FROM ubuntu:18.04
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
openssl \
|
|
||||||
net-tools \
|
|
||||||
git \
|
|
||||||
locales \
|
|
||||||
sudo \
|
|
||||||
dumb-init \
|
|
||||||
vim \
|
|
||||||
curl \
|
|
||||||
wget \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN locale-gen en_US.UTF-8
|
|
||||||
# We cannot use update-locale because docker will not use the env variables
|
|
||||||
# configured in /etc/default/locale so we need to set it manually.
|
|
||||||
ENV LC_ALL=en_US.UTF-8 \
|
|
||||||
SHELL=/bin/bash
|
|
||||||
|
|
||||||
RUN adduser --gecos '' --disabled-password coder && \
|
|
||||||
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
|
|
||||||
|
|
||||||
USER coder
|
|
||||||
# Create first so these directories will be owned by coder instead of root
|
|
||||||
# (workdir and mounting appear to both default to root).
|
|
||||||
RUN mkdir -p /home/coder/project
|
|
||||||
RUN mkdir -p /home/coder/.local/share/code-server
|
|
||||||
|
|
||||||
WORKDIR /home/coder/project
|
|
||||||
|
|
||||||
# This ensures we have a volume mounted even if the user forgot to do bind
|
|
||||||
# mount. So that they do not lose their data if they delete the container.
|
|
||||||
VOLUME [ "/home/coder/project" ]
|
|
||||||
|
|
||||||
COPY --from=0 /src/binaries/code-server /usr/local/bin/code-server
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
ENTRYPOINT ["dumb-init", "code-server", "--host", "0.0.0.0"]
|
|
|
@ -74,6 +74,7 @@ reset VS Code then run `yarn patch:apply`.
|
||||||
## Security
|
## Security
|
||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|
||||||
By default `code-server` enables password authentication using a randomly
|
By default `code-server` enables password authentication using a randomly
|
||||||
generated password. You can set the `PASSWORD` environment variable to use your
|
generated password. You can set the `PASSWORD` environment variable to use your
|
||||||
own instead or use `--auth none` to disable password authentication.
|
own instead or use `--auth none` to disable password authentication.
|
||||||
|
@ -82,6 +83,7 @@ Do not expose `code-server` to the open internet without some form of
|
||||||
authentication.
|
authentication.
|
||||||
|
|
||||||
### Encrypting traffic with HTTPS
|
### Encrypting traffic with HTTPS
|
||||||
|
|
||||||
If you aren't doing SSL termination elsewhere you can directly give
|
If you aren't doing SSL termination elsewhere you can directly give
|
||||||
`code-server` a certificate with `code-server --cert` followed by the path to
|
`code-server` a certificate with `code-server --cert` followed by the path to
|
||||||
your certificate. Additionally, you can use certificate keys with `--cert-key`
|
your certificate. Additionally, you can use certificate keys with `--cert-key`
|
||||||
|
|
|
@ -26,7 +26,7 @@ class Builder {
|
||||||
this.ensureArgument("rootPath", this.rootPath)
|
this.ensureArgument("rootPath", this.rootPath)
|
||||||
this.codeServerVersion = this.ensureArgument(
|
this.codeServerVersion = this.ensureArgument(
|
||||||
"codeServerVersion",
|
"codeServerVersion",
|
||||||
process.env.VERSION || require(path.join(this.rootPath, "package.json")).version
|
process.env.VERSION || require(path.join(this.rootPath, "package.json")).version,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ class Builder {
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
fs.move(
|
fs.move(
|
||||||
path.join(this.vscodeSourcePath, `out-vscode${process.env.MINIFY ? "-min" : ""}`),
|
path.join(this.vscodeSourcePath, `out-vscode${process.env.MINIFY ? "-min" : ""}`),
|
||||||
path.join(vscodeBuildPath, "out")
|
path.join(vscodeBuildPath, "out"),
|
||||||
),
|
),
|
||||||
fs.copy(path.join(this.vscodeSourcePath, ".build/extensions"), path.join(vscodeBuildPath, "extensions")),
|
fs.copy(path.join(this.vscodeSourcePath, ".build/extensions"), path.join(vscodeBuildPath, "extensions")),
|
||||||
])
|
])
|
||||||
|
@ -225,7 +225,7 @@ class Builder {
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
["node_modules", "package.json", "yarn.lock"].map((fileName) => {
|
["node_modules", "package.json", "yarn.lock"].map((fileName) => {
|
||||||
return fs.copy(path.join(sourcePath, fileName), path.join(buildPath, fileName))
|
return fs.copy(path.join(sourcePath, fileName), path.join(buildPath, fileName))
|
||||||
})
|
}),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -240,17 +240,14 @@ class Builder {
|
||||||
...merge,
|
...merge,
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
2
|
2,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
if (process.env.MINIFY) {
|
if (process.env.MINIFY) {
|
||||||
await this.task(`restricting ${name} to production dependencies`, async () => {
|
await this.task(`restricting ${name} to production dependencies`, async () => {
|
||||||
await util.promisify(cp.exec)("yarn --production --ignore-scripts", { cwd: buildPath })
|
await util.promisify(cp.exec)("yarn --production --ignore-scripts", { cwd: buildPath })
|
||||||
if (name === "code-server") {
|
|
||||||
await util.promisify(cp.exec)("yarn postinstall", { cwd: buildPath })
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -290,7 +287,7 @@ class Builder {
|
||||||
await fs.copyFile(path.join(this.vscodeSourcePath, "LICENSE.txt"), path.join(archivePath, "LICENSE.txt"))
|
await fs.copyFile(path.join(this.vscodeSourcePath, "LICENSE.txt"), path.join(archivePath, "LICENSE.txt"))
|
||||||
await fs.copyFile(
|
await fs.copyFile(
|
||||||
path.join(this.vscodeSourcePath, "ThirdPartyNotices.txt"),
|
path.join(this.vscodeSourcePath, "ThirdPartyNotices.txt"),
|
||||||
path.join(archivePath, "ThirdPartyNotices.txt")
|
path.join(archivePath, "ThirdPartyNotices.txt"),
|
||||||
)
|
)
|
||||||
|
|
||||||
if ((await this.target()) === "darwin") {
|
if ((await this.target()) === "darwin") {
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
git clean -xffd
|
||||||
|
git submodule foreach --recursive git clean -xffd
|
||||||
|
git submodule foreach --recursive git reset --hard
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
shfmt -i 2 -w -s -sr $(git ls-files "*.sh")
|
||||||
|
|
||||||
|
local prettierExts
|
||||||
|
prettierExts=(
|
||||||
|
"*.js"
|
||||||
|
"*.ts"
|
||||||
|
"*.tsx"
|
||||||
|
"*.html"
|
||||||
|
"*.json"
|
||||||
|
"*.css"
|
||||||
|
"*.md"
|
||||||
|
"*.toml"
|
||||||
|
"*.yaml"
|
||||||
|
"*.yml"
|
||||||
|
)
|
||||||
|
prettier --write --loglevel=warn $(git ls-files "${prettierExts[@]}")
|
||||||
|
|
||||||
|
if [[ ${CI-} && $(git ls-files --other --modified --exclude-standard) ]]; then
|
||||||
|
echo "Files need generation or are formatted incorrectly:"
|
||||||
|
git -c color.ui=always status | grep --color=no '\[31m'
|
||||||
|
echo "Please run the following locally:"
|
||||||
|
echo " yarn fmt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -0,0 +1,10 @@
|
||||||
|
FROM node:12
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libxkbfile-dev \
|
||||||
|
libx11-dev \
|
||||||
|
libsecret-1-dev
|
||||||
|
|
||||||
|
RUN curl -L https://github.com/mvdan/sh/releases/download/v3.0.1/shfmt_v3.0.1_linux_amd64 > /usr/local/bin/shfmt && chmod +x /usr/local/bin/shfmt
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash", "-c"]
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "$0")/../.."
|
||||||
|
|
||||||
|
docker build ci/image
|
||||||
|
imageTag="$(docker build -q ci/image)"
|
||||||
|
docker run -t --rm -e CI -e GITHUB_TOKEN -v "$(yarn cache dir):/usr/local/share/.cache/yarn/v6" -v "$PWD:/repo" -w /repo "$imageTag" "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
eslint --max-warnings=0 --fix $(git ls-files "*.ts" "*.tsx" "*.js")
|
||||||
|
stylelint --fix $(git ls-files "*.css")
|
||||||
|
tsc --noEmit
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -0,0 +1,36 @@
|
||||||
|
FROM debian:10
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y curl
|
||||||
|
|
||||||
|
COPY release/code-server*.tar.gz /tmp
|
||||||
|
RUN cd /tmp && tar -xzf code-server*.tar.gz && \
|
||||||
|
cp code-server*/code-server /usr/local/bin/code-server
|
||||||
|
RUN rm -rf /tmp/*
|
||||||
|
|
||||||
|
# https://wiki.debian.org/Locale#Manually
|
||||||
|
RUN apt-get install -y locales
|
||||||
|
RUN sed -i "s/# en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen
|
||||||
|
RUN locale-gen
|
||||||
|
ENV LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
RUN chsh -s /bin/bash
|
||||||
|
ENV SHELL=/bin/bash
|
||||||
|
|
||||||
|
RUN apt-get install -y dumb-init sudo
|
||||||
|
RUN apt-get install -y man procps vim nano htop ssh git
|
||||||
|
|
||||||
|
RUN adduser --gecos '' --disabled-password coder && \
|
||||||
|
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
|
||||||
|
|
||||||
|
RUN curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.4/fixuid-0.4-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \
|
||||||
|
chown root:root /usr/local/bin/fixuid && \
|
||||||
|
chmod 4755 /usr/local/bin/fixuid && \
|
||||||
|
mkdir -p /etc/fixuid && \
|
||||||
|
printf "user: coder\ngroup: coder\n" > /etc/fixuid/config.yml
|
||||||
|
|
||||||
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
EXPOSE 8080
|
||||||
|
USER coder
|
||||||
|
WORKDIR /home/coder
|
||||||
|
ENTRYPOINT ["dumb-init", "fixuid", "-q", "code-server", "--host", "0.0.0.0"]
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "$0")/../.."
|
||||||
|
|
||||||
|
if [[ ${CI:-} ]]; then
|
||||||
|
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||||
|
fi
|
||||||
|
|
||||||
|
imageTag="codercom/code-server:$VERSION"
|
||||||
|
latest="codercom/code-server:latest"
|
||||||
|
if [[ $TRAVIS_CPU_ARCH == "arm64" ]]; then
|
||||||
|
imageTag+="-arm64"
|
||||||
|
latest="codercom/code-server:arm64"
|
||||||
|
fi
|
||||||
|
docker build -t "$imageTag" -t "$latest" -f ./ci/release-image/Dockerfile
|
||||||
|
docker push codercom/code-server
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -7,43 +7,40 @@ set -euo pipefail
|
||||||
function main() {
|
function main() {
|
||||||
cd "$(dirname "${0}")/.."
|
cd "$(dirname "${0}")/.."
|
||||||
|
|
||||||
local code_server_version=${VERSION:-${TRAVIS_TAG:-${DRONE_TAG:-}}}
|
local code_server_version=${VERSION:-${TRAVIS_TAG:-}}
|
||||||
if [[ -z $code_server_version ]] ; then
|
if [[ -z $code_server_version ]]; then
|
||||||
code_server_version=$(grep version ./package.json | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[:space:]')
|
code_server_version=$(grep version ./package.json | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[:space:]')
|
||||||
fi
|
fi
|
||||||
export VERSION=$code_server_version
|
export VERSION=$code_server_version
|
||||||
|
|
||||||
YARN_CACHE_FOLDER="$(pwd)/yarn-cache"
|
# Always minify and package on CI since that's when releases are pushed.
|
||||||
export YARN_CACHE_FOLDER
|
if [[ ${CI:-} ]]; then
|
||||||
|
|
||||||
# Always minify and package on tags since that's when releases are pushed.
|
|
||||||
if [[ -n ${DRONE_TAG:-} || -n ${TRAVIS_TAG:-} ]] ; then
|
|
||||||
export MINIFY="true"
|
export MINIFY="true"
|
||||||
export PACKAGE="true"
|
export PACKAGE="true"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
yarn build
|
yarn build
|
||||||
yarn binary
|
yarn binary
|
||||||
if [[ -n ${PACKAGE:-} ]] ; then
|
if [[ -n ${PACKAGE:-} ]]; then
|
||||||
yarn package
|
yarn package
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd binaries
|
cd binaries
|
||||||
|
|
||||||
if [[ -n ${STRIP_BIN_TARGET:-} ]] ; then
|
if [[ -n ${STRIP_BIN_TARGET:-} ]]; then
|
||||||
# In this case provide plainly named binaries.
|
# In this case provide plainly named binaries.
|
||||||
for binary in code-server* ; do
|
for binary in code-server*; do
|
||||||
echo "Moving $binary to code-server"
|
echo "Moving $binary to code-server"
|
||||||
mv "$binary" code-server
|
mv "$binary" code-server
|
||||||
done
|
done
|
||||||
elif [[ -n ${DRONE_TAG:-} || -n ${TRAVIS_TAG:-} ]] ; then
|
elif [[ -n ${DRONE_TAG:-} || -n ${TRAVIS_TAG:-} ]]; then
|
||||||
# Prepare directory for uploading binaries on release.
|
# Prepare directory for uploading binaries on release.
|
||||||
for binary in code-server* ; do
|
for binary in code-server*; do
|
||||||
mkdir -p "../binary-upload"
|
mkdir -p "../binary-upload"
|
||||||
|
|
||||||
local prefix="code-server-$code_server_version-"
|
local prefix="code-server-$code_server_version-"
|
||||||
local target="${binary#$prefix}"
|
local target="${binary#$prefix}"
|
||||||
if [[ $target == "linux-x86_64" ]] ; then
|
if [[ $target == "linux-x86_64" ]]; then
|
||||||
echo "Copying $binary to ../binary-upload/latest-linux"
|
echo "Copying $binary to ../binary-upload/latest-linux"
|
||||||
cp "$binary" "../binary-upload/latest-linux"
|
cp "$binary" "../binary-upload/latest-linux"
|
||||||
fi
|
fi
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"extends": "../tsconfig.json",
|
||||||
|
"include": ["./**/*.ts"]
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# 1. Ensures VS Code is cloned.
|
||||||
|
# 2. Patches it.
|
||||||
|
# 3. Installs it.
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
git submodule update --init
|
||||||
|
|
||||||
|
# If the patch fails to apply, then it's likely already applied
|
||||||
|
yarn vscode:patch &> /dev/null || true
|
||||||
|
|
||||||
|
# Install VS Code dependencies.
|
||||||
|
(cd lib/vscode && yarn)
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
Binary file not shown.
Before Width: | Height: | Size: 121 KiB |
|
@ -1,24 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<svg width="200px" height="40px" viewBox="0 0 200 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->
|
|
||||||
<title>do-btn-blue-ghost</title>
|
|
||||||
<desc>Created with Sketch.</desc>
|
|
||||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
||||||
<g id="Partner-welcome-kit-Copy-3" transform="translate(-651.000000, -828.000000)">
|
|
||||||
<g id="do-btn-blue-ghost" transform="translate(651.000000, 828.000000)">
|
|
||||||
<rect id="Rectangle-Copy-4" stroke="#0069FF" x="0.5" y="0.5" width="199" height="39" rx="6"></rect>
|
|
||||||
<path d="M6,0 L47,0 L47,40 L6,40 C2.6862915,40 4.05812251e-16,37.3137085 0,34 L-8.8817842e-16,6 C-1.29399067e-15,2.6862915 2.6862915,6.08718376e-16 6,0 Z" id="Rectangle-Copy-5" fill="#0069FF"></path>
|
|
||||||
<g id="DO_Logo_horizontal_blue-Copy-3" transform="translate(13.000000, 10.000000)" fill="#FFFFFF">
|
|
||||||
<path d="M10.0098493,20 L10.0098493,16.1262429 C14.12457,16.1262429 17.2897398,12.0548452 15.7269372,7.74627862 C15.1334679,6.14538921 13.8674,4.86072487 12.2650328,4.28756693 C7.952489,2.72620566 3.87733294,5.88845634 3.87733294,9.99938223 C3.87733294,9.99938223 3.87733294,9.99938223 3.87733294,9.99938223 L0,9.99938223 C0,3.45747613 6.3303395,-1.64165309 13.1948014,0.492866119 C16.2017127,1.42177726 18.57559,3.81322933 19.5053586,6.79760341 C21.6418482,13.6754986 16.5577943,20 10.0098493,20 Z" id="XMLID_49_"></path>
|
|
||||||
<polygon id="XMLID_47_" points="9.52380952 16.1904762 5.71428571 16.1904762 5.71428571 12.3809524 5.71428571 12.3809524 9.52380952 12.3809524 9.52380952 12.3809524"></polygon>
|
|
||||||
<polygon id="XMLID_46_" points="6.66666667 19.047619 3.80952381 19.047619 3.80952381 19.047619 3.80952381 16.1904762 6.66666667 16.1904762"></polygon>
|
|
||||||
<polygon id="XMLID_45_" points="3.80952381 16.1904762 0.952380952 16.1904762 0.952380952 16.1904762 0.952380952 13.3333333 0.952380952 13.3333333 3.80952381 13.3333333 3.80952381 13.3333333"></polygon>
|
|
||||||
</g>
|
|
||||||
<!-- Modified to add GitHub font-family after DigitalOcean's font-family, otherwise it looks bad on GitHub -->
|
|
||||||
<text id="Create-a-Droplet-Copy-3" font-family="Sailec-Medium, Sailec, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" font-size="16" font-weight="400" fill="#0069FF">
|
|
||||||
<tspan x="58" y="26">Create a Droplet</tspan>
|
|
||||||
</text>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.3 MiB |
Binary file not shown.
Before Width: | Height: | Size: 66 KiB |
|
@ -1,75 +0,0 @@
|
||||||
# Installing code-server in your ChromiumOS/ChromeOS/CloudReady machine
|
|
||||||
|
|
||||||
This guide will show you how to install code-server into your CrOS machine.
|
|
||||||
|
|
||||||
## Using Crostini
|
|
||||||
|
|
||||||
One of the easier ways to run code-server is via
|
|
||||||
[Crostini](https://www.aboutchromebooks.com/tag/project-crostini/), the Linux
|
|
||||||
apps support feature in CrOS. Make sure you have enough RAM, HDD space and your
|
|
||||||
CPU has VT-x/ AMD-V support. If your chromebook has this, then you are
|
|
||||||
qualified to use Crostini.
|
|
||||||
|
|
||||||
If you are running R69, you might want to enable this on
|
|
||||||
[Chrome Flags](chrome://flags/#enable-experimental-crostini-ui).
|
|
||||||
If you run R72, however, this is already enabled for you.
|
|
||||||
|
|
||||||
After checking your prerequisites, follow the steps in [the self-host install guide](index.md)
|
|
||||||
on installing code-server. Once done, make sure code-server works by running
|
|
||||||
it. After running it, simply go to `penguin.linux.test:8080` to access
|
|
||||||
code-server. Now you should be greeted with this screen. If you did,
|
|
||||||
congratulations, you have installed code-server in your Chromebook!
|
|
||||||
|
|
||||||
![code-server on Chromebook](assets/cros.png)
|
|
||||||
|
|
||||||
Alternatively, if you ran code-server in another container and you need the IP
|
|
||||||
for that specific container, simply go to Termina's shell via `crosh` and type
|
|
||||||
`vsh termina`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
Loading extra module: /usr/share/crosh/dev.d/50-crosh.sh
|
|
||||||
Welcome to crosh, the Chrome OS developer shell.
|
|
||||||
|
|
||||||
If you got here by mistake, don't panic! Just close this tab and carry on.
|
|
||||||
|
|
||||||
Type 'help' for a list of commands.
|
|
||||||
|
|
||||||
If you want to customize the look/behavior, you can use the options page.
|
|
||||||
Load it by using the Ctrl+Shift+P keyboard shortcut.
|
|
||||||
|
|
||||||
crosh> vsh termina
|
|
||||||
(termina) chronos@localhost ~ $
|
|
||||||
```
|
|
||||||
While in termina, run `lxc list`. It should output the list of running containers.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
(termina) chronos@localhost ~ $ lxc list
|
|
||||||
+---------|---------|-----------------------|------|------------|-----------+
|
|
||||||
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
|
|
||||||
+---------|---------|-----------------------|------|------------|-----------+
|
|
||||||
| penguin | RUNNING | 100.115.92.199 (eth0) | | PERSISTENT | 0 |
|
|
||||||
+---------|---------|-----------------------|------|------------|-----------+
|
|
||||||
(termina) chronos@localhost ~ $
|
|
||||||
```
|
|
||||||
|
|
||||||
For this example, we show the default `penguin` container, which is exposed on
|
|
||||||
`eth0` at 100.115.92.199. Simply enter the IP of the container where the
|
|
||||||
code-server runs to Chrome.
|
|
||||||
|
|
||||||
## Using Crouton
|
|
||||||
|
|
||||||
[Crouton](https://github.com/dnschneid/crouton) is one of the old ways to get a
|
|
||||||
running full Linux via `chroot` on a Chromebook. To use crouton, enable
|
|
||||||
developer mode and go to `crosh`. This time, run `shell`, which should drop you
|
|
||||||
to `bash`.
|
|
||||||
|
|
||||||
Make sure you downloaded `crouton`, if so, go ahead and run it under
|
|
||||||
`~/Downloads`. After installing your chroot container via crouton, go ahead and
|
|
||||||
enter `enter-chroot` to enter your container.
|
|
||||||
|
|
||||||
Follow the instructions set in [the self-host install guide](index.md) to
|
|
||||||
install code-server. After that is done, run `code-server` and verify it works
|
|
||||||
by going to `localhost:8080`.
|
|
||||||
|
|
||||||
> At this point in writing, `localhost` seems to work in this method. However,
|
|
||||||
> the author is not sure if it applies still to newer Chromebooks.
|
|
|
@ -1,73 +0,0 @@
|
||||||
# Set up instance
|
|
||||||
## EC2 on AWS
|
|
||||||
- Click **Launch Instance** from your [EC2 dashboard](https://console.aws.amazon.com/ec2/v2/home).
|
|
||||||
- Select the Ubuntu Server 18.04 LTS (HVM), SSD Volume Type
|
|
||||||
- Select an appropriate instance size (we recommend t2.medium/large, depending
|
|
||||||
on team size and number of repositories/languages enabled), then
|
|
||||||
**Next: Configure Instance Details**.
|
|
||||||
- Select **Next: ...** until you get to the **Configure Security Group** page,
|
|
||||||
then add a **Custom TCP Rule** rule with port range set to `8080` and source
|
|
||||||
set to "Anywhere".
|
|
||||||
> Rules with source of 0.0.0.0/0 allow all IP addresses to access your
|
|
||||||
> instance. We recommend setting [security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html?icmpid=docs_ec2_console)
|
|
||||||
> to allow access from known IP addresses only.
|
|
||||||
- Click **Launch**.
|
|
||||||
- You will be prompted to create a key pair.
|
|
||||||
- From the dropdown choose "create a new pair", give the key pair a name.
|
|
||||||
- Click **Download Key Pair** and store the file in a safe place.
|
|
||||||
- Click **Launch Instances**.
|
|
||||||
- Head to your [EC2 dashboard](https://console.aws.amazon.com/ec2/v2/home)
|
|
||||||
and choose instances from the left panel.
|
|
||||||
- In the description of your EC2 instance copy the public DNS (iPv4) address
|
|
||||||
using the copy to clipboard button.
|
|
||||||
- Open a terminal on your computer and SSH into your instance:
|
|
||||||
```
|
|
||||||
ssh -i ${path to key pair} ubuntu@${public address}
|
|
||||||
```
|
|
||||||
|
|
||||||
## DigitalOcean
|
|
||||||
[Open your DigitalOcean dashboard](https://cloud.digitalocean.com/droplets/new)
|
|
||||||
to create a new droplet
|
|
||||||
|
|
||||||
- **Choose an image -** Select the **Distributions** tab and then choose Ubuntu.
|
|
||||||
- **Choose a size -** We recommend at least 4GB RAM and 2 CPU, more depending
|
|
||||||
on team size and number of repositories/languages enabled.
|
|
||||||
- Launch your instance.
|
|
||||||
- Open a terminal on your computer and SSH into your instance:
|
|
||||||
```
|
|
||||||
ssh root@${instance ip}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Google Cloud
|
|
||||||
> Pre-requisite: Set up the [Google Cloud SDK](https://cloud.google.com/sdk/docs/)
|
|
||||||
> on your local machine
|
|
||||||
|
|
||||||
- [Open your Google Cloud console](https://console.cloud.google.com/compute/instances)
|
|
||||||
to create a new VM instance and click **Create Instance**.
|
|
||||||
- Choose an appropriate machine type (we recommend 2 vCPU and 7.5 GB RAM, more
|
|
||||||
depending on team size and number of repositories/languages enabled).
|
|
||||||
- Choose Ubuntu 16.04 LTS as your boot disk.
|
|
||||||
- Expand the "Management, security, disks, networking, sole tenancy" section,
|
|
||||||
go to the "Networking" tab, then under network tags add "code-server".
|
|
||||||
- Create your VM, and **take note** of its public IP address.
|
|
||||||
- Visit "VPC network" in the console and go to "Firewall rules". Create a new
|
|
||||||
firewall rule called "http-8080". Under "Target tags" add "code-server", and
|
|
||||||
under "Protocols and ports" tick "Specified protocols and ports" and "tcp".
|
|
||||||
Beside "tcp", add "8080", then create the rule.
|
|
||||||
- Open a terminal on your computer and SSH into your Google Cloud VM:
|
|
||||||
```
|
|
||||||
gcloud compute ssh --zone ${region} ${instance name}
|
|
||||||
```
|
|
||||||
# Run code-server
|
|
||||||
- Download the latest code-server release from the
|
|
||||||
[releases page](https://github.com/cdr/code-server/releases/latest)
|
|
||||||
to the instance, extract the file, then run the code-server binary:
|
|
||||||
```
|
|
||||||
wget https://github.com/cdr/code-server/releases/download/{version}/code-server{version}-linux-x64.tar.gz
|
|
||||||
tar -xvzf code-server{version}-linux-x64.tar.gz
|
|
||||||
cd code-server{version}-linux-x64
|
|
||||||
./code-server
|
|
||||||
```
|
|
||||||
- Open your browser and visit http://$public_ip:8080/ where `$public_ip` is
|
|
||||||
your instance's public IP address.
|
|
||||||
- For long-term use, set up a systemd service to run code-server.
|
|
|
@ -1,15 +0,0 @@
|
||||||
# Fail2Ban filter for code-server
|
|
||||||
|
|
||||||
[Definition]
|
|
||||||
|
|
||||||
failregex = ^Failed login attempt\s+{\"remoteAddress\":\"<HOST>\"
|
|
||||||
|
|
||||||
# Use this instead for proxies (ensure the proxy is configured to send the
|
|
||||||
# X-Forwarded-For header).
|
|
||||||
# failregex = ^Failed login attempt\s+{\"xForwardedFor\":\"<HOST>\"
|
|
||||||
|
|
||||||
ignoreregex =
|
|
||||||
|
|
||||||
datepattern = "timestamp":{EPOCH}}$
|
|
||||||
|
|
||||||
# Author: Dean Sheather
|
|
|
@ -1,73 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: code-server
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: code-server
|
|
||||||
namespace: code-server
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
name: https
|
|
||||||
protocol: TCP
|
|
||||||
selector:
|
|
||||||
app: code-server
|
|
||||||
type: ClusterIP
|
|
||||||
---
|
|
||||||
kind: StorageClass
|
|
||||||
apiVersion: storage.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: gp2
|
|
||||||
annotations:
|
|
||||||
storageclass.kubernetes.io/is-default-class: "true"
|
|
||||||
provisioner: kubernetes.io/aws-ebs
|
|
||||||
parameters:
|
|
||||||
type: gp2
|
|
||||||
fsType: ext4
|
|
||||||
---
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: code-store
|
|
||||||
namespace: code-server
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 60Gi
|
|
||||||
---
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: code-server
|
|
||||||
name: code-server
|
|
||||||
namespace: code-server
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: code-server
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: code-server
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: codercom/code-server:v2
|
|
||||||
imagePullPolicy: Always
|
|
||||||
name: code-servery
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
name: https
|
|
||||||
volumeMounts:
|
|
||||||
- name: code-server-storage
|
|
||||||
mountPath: /go/src
|
|
||||||
volumes:
|
|
||||||
- name: code-server-storage
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: code-store
|
|
|
@ -1,43 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: code-server
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: code-server
|
|
||||||
namespace: code-server
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
name: https
|
|
||||||
protocol: TCP
|
|
||||||
selector:
|
|
||||||
app: code-server
|
|
||||||
type: ClusterIP
|
|
||||||
---
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: code-server
|
|
||||||
name: code-server
|
|
||||||
namespace: code-server
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: code-server
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: code-server
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: codercom/code-server:v2
|
|
||||||
imagePullPolicy: Always
|
|
||||||
name: code-server
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
name: https
|
|
|
@ -1,35 +0,0 @@
|
||||||
# Protecting code-server from bruteforce attempts
|
|
||||||
code-server outputs all failed login attempts, along with the IP address,
|
|
||||||
provided password, user agent and timestamp by default.
|
|
||||||
|
|
||||||
When using a reverse proxy such as Nginx or Apache, the remote address may
|
|
||||||
appear to be `127.0.0.1` or a similar address so `X-Forwarded-For` should be
|
|
||||||
used instead. Ensure that you are setting this value in your reverse proxy:
|
|
||||||
|
|
||||||
Nginx:
|
|
||||||
```
|
|
||||||
location / {
|
|
||||||
...
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Apache:
|
|
||||||
```
|
|
||||||
<VirtualEnv>
|
|
||||||
...
|
|
||||||
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
|
|
||||||
...
|
|
||||||
</VirtualEnv>
|
|
||||||
```
|
|
||||||
|
|
||||||
It is extremely important that you ensure that your code-server instance is not
|
|
||||||
accessible from the internet (use localhost or block it in your firewall).
|
|
||||||
|
|
||||||
## Fail2Ban
|
|
||||||
Fail2Ban allows for automatically banning and logging repeated failed
|
|
||||||
authentication attempts for many applications through regex filters. A working
|
|
||||||
filter for code-server can be found in `./examples/fail2ban.conf`. Once this
|
|
||||||
is installed and configured correctly, repeated failed login attempts should
|
|
||||||
automatically be banned from connecting to your server.
|
|
|
@ -1,98 +0,0 @@
|
||||||
# Quickstart Guide
|
|
||||||
1. Visit the [releases page](https://github.com/cdr/code-server/releases) and
|
|
||||||
download the latest binary for your operating system.
|
|
||||||
2. Unpack the downloaded file then run the binary.
|
|
||||||
3. In your browser navigate to `localhost:8080`.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
Run `code-server --help` to view available options.
|
|
||||||
|
|
||||||
### Nginx Reverse Proxy
|
|
||||||
The trailing slashes are important.
|
|
||||||
|
|
||||||
```
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name code.example.com code.example.org;
|
|
||||||
location /some/path/ { # Or / if hosting at the root.
|
|
||||||
proxy_pass http://localhost:8080/;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection upgrade;
|
|
||||||
proxy_set_header Accept-Encoding gzip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Apache Reverse Proxy
|
|
||||||
```
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerName code.example.com
|
|
||||||
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteCond %{HTTP:Upgrade} =websocket [NC]
|
|
||||||
RewriteRule /(.*) ws://localhost:8080/$1 [P,L]
|
|
||||||
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
|
|
||||||
RewriteRule /(.*) http://localhost:8080/$1 [P,L]
|
|
||||||
|
|
||||||
ProxyRequests off
|
|
||||||
ProxyPass / http://localhost:8080/ nocanon
|
|
||||||
ProxyPassReverse / http://localhost:8080/
|
|
||||||
</VirtualHost>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run automatically at startup
|
|
||||||
|
|
||||||
In some cases you might need to run code-server automatically once the host starts. You may use your local init service to do so.
|
|
||||||
|
|
||||||
#### Systemd
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[Unit]
|
|
||||||
Description=Code Server IDE
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=<USER>
|
|
||||||
EnvironmentFile=$HOME/.profile
|
|
||||||
WorkingDirectory=$HOME
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=10
|
|
||||||
|
|
||||||
ExecStart=<PATH TO BINARY> $(pwd)
|
|
||||||
|
|
||||||
StandardOutput=file:/var/log/code-server-output.log
|
|
||||||
StandardError=file:/var/log/code-server-error.log
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
#### OpenRC
|
|
||||||
|
|
||||||
```sh
|
|
||||||
#!/sbin/openrc-run
|
|
||||||
|
|
||||||
depend() {
|
|
||||||
after net-online
|
|
||||||
need net
|
|
||||||
}
|
|
||||||
|
|
||||||
supervisor=supervise-daemon
|
|
||||||
name="code-server"
|
|
||||||
command="/opt/cdr/code-server"
|
|
||||||
command_args=""
|
|
||||||
|
|
||||||
pidfile="/var/run/cdr.pid"
|
|
||||||
respawn_delay=5
|
|
||||||
|
|
||||||
set -o allexport
|
|
||||||
if [ -f /etc/environment ]; then source /etc/environment; fi
|
|
||||||
set +o allexport
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Kubernetes/Docker
|
|
||||||
|
|
||||||
Make sure you set your restart policy to always - this will ensure your container starts as the daemon starts.
|
|
|
@ -1,13 +0,0 @@
|
||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
code-server:
|
|
||||||
container_name: code-server
|
|
||||||
image: codercom/code-server
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
volumes:
|
|
||||||
- "${PWD}:/home/coder/project"
|
|
||||||
- "${HOME}/.local/share/code-server:/home/coder/.local/share/code-server"
|
|
||||||
environment:
|
|
||||||
PASSWORD: ${PASSWORD}
|
|
19
package.json
19
package.json
|
@ -3,19 +3,16 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i": "yarn install --ignore-scripts",
|
"clean": "ci/clean.sh",
|
||||||
"preinstall": "./scripts/preinstall.sh",
|
"vscode": "ci/vscode.sh",
|
||||||
"postinstall": "./scripts/postinstall.sh",
|
"vscode:patch": "cd ./lib/vscode && git apply ../../ci/vscode.patch",
|
||||||
"patch:generate": "cd ./lib/vscode && git diff HEAD > ../../scripts/vscode.patch",
|
"vscode:diff": "cd ./lib/vscode && git diff HEAD > ../../ci/vscode.patch",
|
||||||
"patch:apply": "cd ./lib/vscode && git apply ../../scripts/vscode.patch",
|
|
||||||
"test": "mocha -r ts-node/register ./test/*.test.ts",
|
"test": "mocha -r ts-node/register ./test/*.test.ts",
|
||||||
"test:build": "./scripts/test.sh",
|
"lint": "ci/lint.sh",
|
||||||
"lint:js": "eslint src test scripts --ext .ts,.tsx",
|
"fmt": "ci/fmt.sh",
|
||||||
"lint:css": "stylelint 'src/**/*.css'",
|
"runner": "cd ./ci && NODE_OPTIONS=--max_old_space_size=32384 ts-node ./build.ts",
|
||||||
"lint": "./scripts/lint.sh",
|
|
||||||
"watch": "yarn runner watch",
|
|
||||||
"runner": "cd ./scripts && node --max-old-space-size=32384 -r ts-node/register ./build.ts",
|
|
||||||
"build": "yarn runner build",
|
"build": "yarn runner build",
|
||||||
|
"watch": "yarn runner watch",
|
||||||
"binary": "yarn runner binary",
|
"binary": "yarn runner binary",
|
||||||
"package": "yarn runner package"
|
"package": "yarn runner package"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# cacher.sh -- Restore and rebuild cache.
|
|
||||||
# Cache paths are designed to work with multi-arch builds and are organized
|
|
||||||
# based on the branch or tag. The master branch cache is used as a fallback.
|
|
||||||
# This will download and package the cache but it will not upload it.
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Try restoring from each argument in turn until we get something.
|
|
||||||
restore() {
|
|
||||||
for branch in "$@" ; do
|
|
||||||
if [ -n "$branch" ] ; then
|
|
||||||
cache_path="https://codesrv-ci.cdr.sh/cache/$branch/$tar.tar.gz"
|
|
||||||
if wget "$cache_path" ; then
|
|
||||||
tar xzvf "$tar.tar.gz"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# We need to cache the built-in extensions and Node modules. Everything inside
|
|
||||||
# the cache-upload directory will be uploaded as-is to the code-server bucket.
|
|
||||||
package() {
|
|
||||||
mkdir -p "cache-upload/cache/$1"
|
|
||||||
tar czfv "cache-upload/cache/$1/$tar.tar.gz" node_modules yarn-cache \
|
|
||||||
lib/vscode/.build \
|
|
||||||
lib/vscode/node_modules
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")/.."
|
|
||||||
|
|
||||||
# Get the branch for this build.
|
|
||||||
branch=${DRONE_BRANCH:-${DRONE_SOURCE_BRANCH:-${DRONE_TAG:-}}}
|
|
||||||
|
|
||||||
# The cache will be named based on the arch, platform, and libc.
|
|
||||||
arch=$DRONE_STAGE_ARCH
|
|
||||||
platform=${PLATFORM:-linux}
|
|
||||||
case $DRONE_STAGE_NAME in
|
|
||||||
*alpine*) libc=musl ;;
|
|
||||||
* ) libc=glibc ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
tar="$platform-$arch-$libc"
|
|
||||||
|
|
||||||
# The action is determined by the name of the step.
|
|
||||||
case $DRONE_STEP_NAME in
|
|
||||||
*restore*)
|
|
||||||
# Sub-modules must be pulled first since extracting the cache directories
|
|
||||||
# will prevent git from cloning into them.
|
|
||||||
git submodule update --init
|
|
||||||
|
|
||||||
restore "$branch" "$DRONE_REPO_BRANCH"
|
|
||||||
|
|
||||||
# Now make sure the pulled Node modules are up to date.
|
|
||||||
YARN_CACHE_FOLDER="$(pwd)/yarn-cache"
|
|
||||||
export YARN_CACHE_FOLDER
|
|
||||||
yarn
|
|
||||||
;;
|
|
||||||
*rebuild*|*package*) package "$branch" ;;
|
|
||||||
*) exit 1 ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,39 +0,0 @@
|
||||||
# We deploy with Ubuntu so that devs have a familiar environment.
|
|
||||||
FROM ubuntu:18.04
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
openssl \
|
|
||||||
net-tools \
|
|
||||||
git \
|
|
||||||
locales \
|
|
||||||
sudo \
|
|
||||||
dumb-init \
|
|
||||||
vim \
|
|
||||||
curl \
|
|
||||||
wget
|
|
||||||
|
|
||||||
RUN locale-gen en_US.UTF-8
|
|
||||||
# We cannot use update-locale because docker will not use the env variables
|
|
||||||
# configured in /etc/default/locale so we need to set it manually.
|
|
||||||
ENV LC_ALL=en_US.UTF-8 \
|
|
||||||
SHELL=/bin/bash
|
|
||||||
|
|
||||||
RUN adduser --gecos '' --disabled-password coder && \
|
|
||||||
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
|
|
||||||
|
|
||||||
USER coder
|
|
||||||
# Create first so these directories will be owned by coder instead of root
|
|
||||||
# (workdir and mounting appear to both default to root).
|
|
||||||
RUN mkdir -p /home/coder/project
|
|
||||||
RUN mkdir -p /home/coder/.local/share/code-server
|
|
||||||
|
|
||||||
WORKDIR /home/coder/project
|
|
||||||
|
|
||||||
# This ensures we have a volume mounted even if the user forgot to do bind
|
|
||||||
# mount. So that they do not lose their data if they delete the container.
|
|
||||||
VOLUME [ "/home/coder/project" ]
|
|
||||||
|
|
||||||
COPY ./binaries/code-server* /usr/local/bin/code-server
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
ENTRYPOINT ["dumb-init", "code-server", "--host", "0.0.0.0"]
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# code-server.sh -- Run code-server with the bundled Node binary.
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")" || exit 1
|
|
||||||
./node ./out/node/entry.js "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# lint.sh -- Lint CSS and JS files.
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
main() {
|
|
||||||
yarn lint:css "$@"
|
|
||||||
yarn lint:js "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# postinstall.sh - Does nothing at the moment.
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "${0}")/.."
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# preinstall.sh -- Prepare VS Code.
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "${0}")/.."
|
|
||||||
|
|
||||||
# Ensure submodules are cloned and up to date.
|
|
||||||
git submodule update --init
|
|
||||||
|
|
||||||
# Try patching but don't worry too much if it fails. It's possible VS Code has
|
|
||||||
# already been patched.
|
|
||||||
yarn patch:apply || echo "Unable to patch; assuming already patched"
|
|
||||||
|
|
||||||
# Install VS Code dependencies.
|
|
||||||
cd ./lib/vscode
|
|
||||||
yarn
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# test.sh -- Simple build test.
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")/.."
|
|
||||||
|
|
||||||
# The main goal here is to ensure that the build fully completed and the
|
|
||||||
# result looks usable.
|
|
||||||
version=$(node ./build/out/node/entry.js --version --json)
|
|
||||||
echo "Got '$version' for the version"
|
|
||||||
case $version in
|
|
||||||
"{ codeServer":*) exit 0 ;;
|
|
||||||
*) exit 1 ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es5",
|
|
||||||
"module": "commonjs",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"strict": true,
|
|
||||||
"noImplicitReturns": true,
|
|
||||||
"noUnusedLocals": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"outDir": "./out",
|
|
||||||
"declaration": true,
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"sourceMap": true
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"./**/*.ts"
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -5,9 +5,11 @@
|
||||||
"display": "fullscreen",
|
"display": "fullscreen",
|
||||||
"background-color": "#fff",
|
"background-color": "#fff",
|
||||||
"description": "Run editors on a remote server.",
|
"description": "Run editors on a remote server.",
|
||||||
"icons": [{
|
"icons": [
|
||||||
"src": "{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png",
|
{
|
||||||
"sizes": "384x384",
|
"src": "{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png",
|
||||||
"type": "image/png"
|
"sizes": "384x384",
|
||||||
}]
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,21 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;">
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;" />
|
||||||
<title>code-server — {{APP_NAME}}</title>
|
<title>code-server — {{APP_NAME}}</title>
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet">
|
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet" />
|
||||||
<meta id="coder-options" data-settings="{{OPTIONS}}">
|
<meta id="coder-options" data-settings="{{OPTIONS}}" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script src="{{BASE}}/static-{{COMMIT}}/dist/app.js"></script>
|
<script src="{{BASE}}/static-{{COMMIT}}/dist/app.js"></script>
|
||||||
|
|
|
@ -2,13 +2,20 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;">
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;" />
|
||||||
<title>code-server {{ERROR_TITLE}}</title>
|
<title>code-server {{ERROR_TITLE}}</title>
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet">
|
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="center-container">
|
<div class="center-container">
|
||||||
|
@ -18,7 +25,7 @@
|
||||||
{{ERROR_BODY}}
|
{{ERROR_BODY}}
|
||||||
</div>
|
</div>
|
||||||
<div class="links">
|
<div class="links">
|
||||||
<a class="link" href="{{BASE}}">go home</a
|
<a class="link" href="{{BASE}}">go home</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,8 @@ body {
|
||||||
background: #272727;
|
background: #272727;
|
||||||
color: #f4f4f4;
|
color: #f4f4f4;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji",
|
||||||
|
"Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,21 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;">
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;" />
|
||||||
<title>code-server</title>
|
<title>code-server</title>
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet">
|
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet" />
|
||||||
<meta id="coder-options" data-settings="{{OPTIONS}}">
|
<meta id="coder-options" data-settings="{{OPTIONS}}" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="center-container">
|
<div class="center-container">
|
||||||
|
|
|
@ -2,13 +2,23 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; script-src 'unsafe-inline'; manifest-src 'self'; img-src 'self' data:;">
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
http-equiv="Content-Security-Policy"
|
||||||
|
content="style-src 'self'; script-src 'unsafe-inline'; manifest-src 'self'; img-src 'self' data:;"
|
||||||
|
/>
|
||||||
<title>code-server login</title>
|
<title>code-server login</title>
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet">
|
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="center-container">
|
<div class="center-container">
|
||||||
|
@ -22,7 +32,8 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<!-- The onfocus code places the cursor at the end of the value. -->
|
<!-- The onfocus code places the cursor at the end of the value. -->
|
||||||
<input
|
<input
|
||||||
required autofocus
|
required
|
||||||
|
autofocus
|
||||||
value="{{VALUE}}"
|
value="{{VALUE}}"
|
||||||
onfocus="const value=this.value;this.value='';this.value=value;"
|
onfocus="const value=this.value;this.value='';this.value=value;"
|
||||||
class="password"
|
class="password"
|
||||||
|
@ -30,7 +41,7 @@
|
||||||
placeholder="password"
|
placeholder="password"
|
||||||
name="password"
|
name="password"
|
||||||
autocomplete="current-password"
|
autocomplete="current-password"
|
||||||
/>
|
/>
|
||||||
<button class="submit" type="submit">
|
<button class="submit" type="submit">
|
||||||
Log In
|
Log In
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -2,20 +2,26 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;">
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="style-src 'self'; manifest-src 'self'; img-src 'self' data:;" />
|
||||||
<title>code-server</title>
|
<title>code-server</title>
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet">
|
<link href="{{BASE}}/static-{{COMMIT}}/dist/app.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="center-container">
|
<div class="center-container">
|
||||||
<form class="update-form" method="post">
|
<form class="update-form" method="post">
|
||||||
<h2 class="header">Update</h2>
|
<h2 class="header">Update</h2>
|
||||||
{{UPDATE_STATUS}}
|
{{UPDATE_STATUS}} {{ERROR}}
|
||||||
{{ERROR}}
|
|
||||||
<div class="links">
|
<div class="links">
|
||||||
<a class="link" href="{{BASE}}">go home</a>
|
<a class="link" href="{{BASE}}">go home</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,28 +4,38 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
<meta http-equiv="Content-Security-Policy" content="font-src 'self'; connect-src 'self' https:; default-src ws: wss: 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; manifest-src 'self'; img-src 'self' data:;">
|
<meta
|
||||||
|
http-equiv="Content-Security-Policy"
|
||||||
|
content="font-src 'self'; connect-src 'self' https:; default-src ws: wss: 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; manifest-src 'self'; img-src 'self' data:;"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- Disable pinch zooming -->
|
<!-- Disable pinch zooming -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- Workbench Configuration -->
|
<!-- Workbench Configuration -->
|
||||||
<meta id="vscode-workbench-web-configuration" data-settings="{{WORKBENCH_WEB_CONFIGURATION}}">
|
<meta id="vscode-workbench-web-configuration" data-settings="{{WORKBENCH_WEB_CONFIGURATION}}" />
|
||||||
|
|
||||||
<!-- Workarounds/Hacks (remote user data uri) -->
|
<!-- Workarounds/Hacks (remote user data uri) -->
|
||||||
<meta id="vscode-remote-user-data-uri" data-settings="{{REMOTE_USER_DATA_URI}}">
|
<meta id="vscode-remote-user-data-uri" data-settings="{{REMOTE_USER_DATA_URI}}" />
|
||||||
<meta id="vscode-remote-commit" data-settings="{{COMMIT}}">
|
<meta id="vscode-remote-commit" data-settings="{{COMMIT}}" />
|
||||||
<meta id="vscode-remote-product-configuration" data-settings="{{PRODUCT_CONFIGURATION}}">
|
<meta id="vscode-remote-product-configuration" data-settings="{{PRODUCT_CONFIGURATION}}" />
|
||||||
<meta id="vscode-remote-nls-configuration" data-settings="{{NLS_CONFIGURATION}}">
|
<meta id="vscode-remote-nls-configuration" data-settings="{{NLS_CONFIGURATION}}" />
|
||||||
|
|
||||||
<!-- Workbench Icon/Manifest/CSS -->
|
<!-- Workbench Icon/Manifest/CSS -->
|
||||||
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json" crossorigin="use-credentials">
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="{{BASE}}/static-{{COMMIT}}/src/browser/media/manifest.json"
|
||||||
|
crossorigin="use-credentials"
|
||||||
|
/>
|
||||||
<!-- PROD_ONLY
|
<!-- PROD_ONLY
|
||||||
<link data-name="vs/workbench/workbench.web.api" rel="stylesheet" href="{{VS_BASE}}/static-{{COMMIT}}/out/vs/workbench/workbench.web.api.css">
|
<link data-name="vs/workbench/workbench.web.api" rel="stylesheet" href="{{VS_BASE}}/static-{{COMMIT}}/out/vs/workbench/workbench.web.api.css">
|
||||||
END_PROD_ONLY -->
|
END_PROD_ONLY -->
|
||||||
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
<link rel="apple-touch-icon" href="{{BASE}}/static-{{COMMIT}}/src/browser/media/code-server.png" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
|
||||||
<!-- Prefetch to avoid waterfall -->
|
<!-- Prefetch to avoid waterfall -->
|
||||||
<!-- PROD_ONLY
|
<!-- PROD_ONLY
|
||||||
|
@ -33,53 +43,53 @@
|
||||||
END_PROD_ONLY -->
|
END_PROD_ONLY -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body aria-label="">
|
<body aria-label=""></body>
|
||||||
</body>
|
|
||||||
|
|
||||||
<!-- Startup (do not modify order of script tags!) -->
|
<!-- Startup (do not modify order of script tags!) -->
|
||||||
<script>
|
<script>
|
||||||
const parts = window.location.pathname.replace(/^\//g, "").split("/")
|
const parts = window.location.pathname.replace(/^\//g, "").split("/")
|
||||||
parts[parts.length - 1] = "{{VS_BASE}}"
|
parts[parts.length - 1] = "{{VS_BASE}}"
|
||||||
const url = new URL(window.location.origin + "/" + parts.join("/"))
|
const url = new URL(window.location.origin + "/" + parts.join("/"))
|
||||||
const el = document.getElementById('vscode-remote-commit');
|
const el = document.getElementById("vscode-remote-commit")
|
||||||
const commit = el ? el.getAttribute('data-settings') : "";
|
const commit = el ? el.getAttribute("data-settings") : ""
|
||||||
const staticBase = url.href + '/static-' + commit;
|
const staticBase = url.href + "/static-" + commit
|
||||||
let nlsConfig;
|
let nlsConfig
|
||||||
try {
|
try {
|
||||||
nlsConfig = JSON.parse(document.getElementById('vscode-remote-nls-configuration').getAttribute('data-settings'));
|
nlsConfig = JSON.parse(document.getElementById("vscode-remote-nls-configuration").getAttribute("data-settings"))
|
||||||
if (nlsConfig._resolvedLanguagePackCoreLocation) {
|
if (nlsConfig._resolvedLanguagePackCoreLocation) {
|
||||||
const bundles = Object.create(null);
|
const bundles = Object.create(null)
|
||||||
nlsConfig.loadBundle = (bundle, language, cb) => {
|
nlsConfig.loadBundle = (bundle, language, cb) => {
|
||||||
let result = bundles[bundle];
|
let result = bundles[bundle]
|
||||||
if (result) {
|
if (result) {
|
||||||
return cb(undefined, result);
|
return cb(undefined, result)
|
||||||
}
|
}
|
||||||
// FIXME: Only works if path separators are /.
|
// FIXME: Only works if path separators are /.
|
||||||
const path = nlsConfig._resolvedLanguagePackCoreLocation
|
const path = nlsConfig._resolvedLanguagePackCoreLocation + "/" + bundle.replace(/\//g, "!") + ".nls.json"
|
||||||
+ '/' + bundle.replace(/\//g, '!') + '.nls.json';
|
fetch(`${url.href}/resource/?path=${encodeURIComponent(path)}`)
|
||||||
fetch(`${url.href}/resource/?path=${encodeURIComponent(path)}`)
|
.then((response) => response.json())
|
||||||
.then((response) => response.json())
|
.then((json) => {
|
||||||
.then((json) => {
|
bundles[bundle] = json
|
||||||
bundles[bundle] = json;
|
cb(undefined, json)
|
||||||
cb(undefined, json);
|
})
|
||||||
})
|
.catch(cb)
|
||||||
.catch(cb);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
} catch (error) { /* Probably fine. */ }
|
}
|
||||||
|
} catch (error) {
|
||||||
|
/* Probably fine. */
|
||||||
|
}
|
||||||
self.require = {
|
self.require = {
|
||||||
baseUrl: `${staticBase}/out`,
|
baseUrl: `${staticBase}/out`,
|
||||||
paths: {
|
paths: {
|
||||||
'vscode-textmate': `${staticBase}/node_modules/vscode-textmate/release/main`,
|
"vscode-textmate": `${staticBase}/node_modules/vscode-textmate/release/main`,
|
||||||
'onigasm-umd': `${staticBase}/node_modules/onigasm-umd/release/main`,
|
"onigasm-umd": `${staticBase}/node_modules/onigasm-umd/release/main`,
|
||||||
'xterm': `${staticBase}/node_modules/xterm/lib/xterm.js`,
|
xterm: `${staticBase}/node_modules/xterm/lib/xterm.js`,
|
||||||
'xterm-addon-search': `${staticBase}/node_modules/xterm-addon-search/lib/xterm-addon-search.js`,
|
"xterm-addon-search": `${staticBase}/node_modules/xterm-addon-search/lib/xterm-addon-search.js`,
|
||||||
'xterm-addon-web-links': `${staticBase}/node_modules/xterm-addon-web-links/lib/xterm-addon-web-links.js`,
|
"xterm-addon-web-links": `${staticBase}/node_modules/xterm-addon-web-links/lib/xterm-addon-web-links.js`,
|
||||||
'xterm-addon-webgl': `${staticBase}/node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`,
|
"xterm-addon-webgl": `${staticBase}/node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`,
|
||||||
'semver-umd': `${staticBase}/node_modules/semver-umd/lib/semver-umd.js`,
|
"semver-umd": `${staticBase}/node_modules/semver-umd/lib/semver-umd.js`,
|
||||||
},
|
},
|
||||||
'vs/nls': nlsConfig,
|
"vs/nls": nlsConfig,
|
||||||
};
|
}
|
||||||
</script>
|
</script>
|
||||||
<script src="{{VS_BASE}}/static-{{COMMIT}}/out/vs/loader.js"></script>
|
<script src="{{VS_BASE}}/static-{{COMMIT}}/out/vs/loader.js"></script>
|
||||||
<!-- PROD_ONLY
|
<!-- PROD_ONLY
|
||||||
|
@ -87,6 +97,6 @@
|
||||||
<script src="{{VS_BASE}}/static-{{COMMIT}}/out/vs/workbench/workbench.web.api.js"></script>
|
<script src="{{VS_BASE}}/static-{{COMMIT}}/out/vs/workbench/workbench.web.api.js"></script>
|
||||||
END_PROD_ONLY -->
|
END_PROD_ONLY -->
|
||||||
<script>
|
<script>
|
||||||
require(['vs/code/browser/workbench/workbench'], function() {});
|
require(["vs/code/browser/workbench/workbench"], function() {})
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -159,7 +159,7 @@ export class ReconnectingSocket {
|
||||||
const socket = new WebSocket(
|
const socket = new WebSocket(
|
||||||
`${location.protocol === "https:" ? "wss" : "ws"}://${location.host}${this.customPath || location.pathname}${
|
`${location.protocol === "https:" ? "wss" : "ws"}://${location.host}${this.customPath || location.pathname}${
|
||||||
location.search ? `?${location.search}` : ""
|
location.search ? `?${location.search}` : ""
|
||||||
}`
|
}`,
|
||||||
)
|
)
|
||||||
|
|
||||||
const reject = (): void => {
|
const reject = (): void => {
|
||||||
|
|
|
@ -68,7 +68,7 @@ export class ApiHttpProvider extends HttpProvider {
|
||||||
route: Route,
|
route: Route,
|
||||||
request: http.IncomingMessage,
|
request: http.IncomingMessage,
|
||||||
socket: net.Socket,
|
socket: net.Socket,
|
||||||
head: Buffer
|
head: Buffer,
|
||||||
): Promise<true | undefined> {
|
): Promise<true | undefined> {
|
||||||
if (!this.authenticated(request)) {
|
if (!this.authenticated(request)) {
|
||||||
throw new Error("not authenticated")
|
throw new Error("not authenticated")
|
||||||
|
@ -120,7 +120,7 @@ export class ApiHttpProvider extends HttpProvider {
|
||||||
route: Route,
|
route: Route,
|
||||||
request: http.IncomingMessage,
|
request: http.IncomingMessage,
|
||||||
socket: net.Socket,
|
socket: net.Socket,
|
||||||
head: Buffer
|
head: Buffer,
|
||||||
): Promise<true> {
|
): Promise<true> {
|
||||||
const sessionId = route.requestPath.replace(/^\//, "")
|
const sessionId = route.requestPath.replace(/^\//, "")
|
||||||
logger.debug("connecting session", field("sessionId", sessionId))
|
logger.debug("connecting session", field("sessionId", sessionId))
|
||||||
|
@ -149,8 +149,8 @@ export class ApiHttpProvider extends HttpProvider {
|
||||||
Buffer.from(
|
Buffer.from(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
protocol: "TODO",
|
protocol: "TODO",
|
||||||
})
|
}),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -15,7 +15,7 @@ export class MainHttpProvider extends HttpProvider {
|
||||||
public constructor(
|
public constructor(
|
||||||
options: HttpProviderOptions,
|
options: HttpProviderOptions,
|
||||||
private readonly api: ApiHttpProvider,
|
private readonly api: ApiHttpProvider,
|
||||||
private readonly update: UpdateHttpProvider
|
private readonly update: UpdateHttpProvider,
|
||||||
) {
|
) {
|
||||||
super(options)
|
super(options)
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ export class MainHttpProvider extends HttpProvider {
|
||||||
base: this.base(route),
|
base: this.base(route),
|
||||||
logLevel: logger.level,
|
logLevel: logger.level,
|
||||||
},
|
},
|
||||||
(app && app.name) || ""
|
(app && app.name) || "",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,11 +100,11 @@ export class MainHttpProvider extends HttpProvider {
|
||||||
.replace(/{{APP_LIST:RUNNING}}/, this.getAppRows(recent.running))
|
.replace(/{{APP_LIST:RUNNING}}/, this.getAppRows(recent.running))
|
||||||
.replace(
|
.replace(
|
||||||
/{{APP_LIST:EDITORS}}/,
|
/{{APP_LIST:EDITORS}}/,
|
||||||
this.getAppRows(apps.filter((app) => app.categories && app.categories.includes("Editor")))
|
this.getAppRows(apps.filter((app) => app.categories && app.categories.includes("Editor"))),
|
||||||
)
|
)
|
||||||
.replace(
|
.replace(
|
||||||
/{{APP_LIST:OTHER}}/,
|
/{{APP_LIST:OTHER}}/,
|
||||||
this.getAppRows(apps.filter((app) => !app.categories || !app.categories.includes("Editor")))
|
this.getAppRows(apps.filter((app) => !app.categories || !app.categories.includes("Editor"))),
|
||||||
)
|
)
|
||||||
return response
|
return response
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,7 +109,7 @@ export class LoginHttpProvider extends HttpProvider {
|
||||||
remoteAddress: request.connection.remoteAddress,
|
remoteAddress: request.connection.remoteAddress,
|
||||||
userAgent: request.headers["user-agent"],
|
userAgent: request.headers["user-agent"],
|
||||||
timestamp: Math.floor(new Date().getTime() / 1000),
|
timestamp: Math.floor(new Date().getTime() / 1000),
|
||||||
})
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
throw new Error("Incorrect password")
|
throw new Error("Incorrect password")
|
||||||
|
|
|
@ -96,7 +96,7 @@ export class VscodeHttpProvider extends HttpProvider {
|
||||||
"Upgrade: websocket",
|
"Upgrade: websocket",
|
||||||
"Connection: Upgrade",
|
"Connection: Upgrade",
|
||||||
`Sec-WebSocket-Accept: ${reply}`,
|
`Sec-WebSocket-Accept: ${reply}`,
|
||||||
].join("\r\n") + "\r\n\r\n"
|
].join("\r\n") + "\r\n\r\n",
|
||||||
)
|
)
|
||||||
|
|
||||||
const vscode = await this._vscode
|
const vscode = await this._vscode
|
||||||
|
@ -140,7 +140,7 @@ export class VscodeHttpProvider extends HttpProvider {
|
||||||
const response = await this.getUtf8Resource(this.vsRootPath, route.requestPath)
|
const response = await this.getUtf8Resource(this.vsRootPath, route.requestPath)
|
||||||
response.content = response.content.replace(
|
response.content = response.content.replace(
|
||||||
/{{COMMIT}}/g,
|
/{{COMMIT}}/g,
|
||||||
this.workbenchOptions ? this.workbenchOptions.commit : ""
|
this.workbenchOptions ? this.workbenchOptions.commit : "",
|
||||||
)
|
)
|
||||||
response.cache = true
|
response.cache = true
|
||||||
return response
|
return response
|
||||||
|
@ -180,7 +180,7 @@ export class VscodeHttpProvider extends HttpProvider {
|
||||||
lastVisited,
|
lastVisited,
|
||||||
this.args._ && this.args._.length > 0 ? { url: this.args._[0] } : undefined,
|
this.args._ && this.args._.length > 0 ? { url: this.args._[0] } : undefined,
|
||||||
],
|
],
|
||||||
remoteAuthority
|
remoteAuthority,
|
||||||
)
|
)
|
||||||
const [response, options] = await Promise.all([
|
const [response, options] = await Promise.all([
|
||||||
await this.getUtf8Resource(this.rootPath, "src/browser/pages/vscode.html"),
|
await this.getUtf8Resource(this.rootPath, "src/browser/pages/vscode.html"),
|
||||||
|
@ -223,7 +223,7 @@ export class VscodeHttpProvider extends HttpProvider {
|
||||||
*/
|
*/
|
||||||
private async getFirstValidPath(
|
private async getFirstValidPath(
|
||||||
startPaths: Array<{ url?: string | string[]; workspace?: boolean } | undefined>,
|
startPaths: Array<{ url?: string | string[]; workspace?: boolean } | undefined>,
|
||||||
remoteAuthority: string
|
remoteAuthority: string,
|
||||||
): Promise<StartPath | undefined> {
|
): Promise<StartPath | undefined> {
|
||||||
for (let i = 0; i < startPaths.length; ++i) {
|
for (let i = 0; i < startPaths.length; ++i) {
|
||||||
const startPath = startPaths[i]
|
const startPath = startPaths[i]
|
||||||
|
|
|
@ -102,13 +102,13 @@ export const optionDescriptions = (): string[] => {
|
||||||
long: k.length > prev.long ? k.length : prev.long,
|
long: k.length > prev.long ? k.length : prev.long,
|
||||||
short: v.short && v.short.length > prev.short ? v.short.length : prev.short,
|
short: v.short && v.short.length > prev.short ? v.short.length : prev.short,
|
||||||
}),
|
}),
|
||||||
{ short: 0, long: 0 }
|
{ short: 0, long: 0 },
|
||||||
)
|
)
|
||||||
return entries.map(
|
return entries.map(
|
||||||
([k, v]) =>
|
([k, v]) =>
|
||||||
`${" ".repeat(widths.short - (v.short ? v.short.length : 0))}${v.short ? `-${v.short}` : " "} --${k}${" ".repeat(
|
`${" ".repeat(widths.short - (v.short ? v.short.length : 0))}${v.short ? `-${v.short}` : " "} --${k}${" ".repeat(
|
||||||
widths.long - k.length
|
widths.long - k.length,
|
||||||
)} ${v.description}${typeof v.type === "object" ? ` [${Object.values(v.type).join(", ")}]` : ""}`
|
)} ${v.description}${typeof v.type === "object" ? ` [${Object.values(v.type).join(", ")}]` : ""}`,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ const main = async (args: Args): Promise<void> => {
|
||||||
logger.info(
|
logger.info(
|
||||||
typeof args.cert === "string"
|
typeof args.cert === "string"
|
||||||
? ` - Using provided certificate${args["cert-key"] ? " and key" : ""} for HTTPS`
|
? ` - Using provided certificate${args["cert-key"] ? " and key" : ""} for HTTPS`
|
||||||
: ` - Using generated certificate and key for HTTPS`
|
: ` - Using generated certificate and key for HTTPS`,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
logger.info(" - Not serving HTTPS")
|
logger.info(" - Not serving HTTPS")
|
||||||
|
|
|
@ -142,7 +142,7 @@ export abstract class HttpProvider {
|
||||||
route: Route,
|
route: Route,
|
||||||
request: http.IncomingMessage,
|
request: http.IncomingMessage,
|
||||||
socket: net.Socket,
|
socket: net.Socket,
|
||||||
head: Buffer
|
head: Buffer,
|
||||||
): Promise<true | undefined>
|
): Promise<true | undefined>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -384,7 +384,7 @@ export class HttpServer {
|
||||||
cert: this.options.cert && fs.readFileSync(this.options.cert),
|
cert: this.options.cert && fs.readFileSync(this.options.cert),
|
||||||
key: this.options.certKey && fs.readFileSync(this.options.certKey),
|
key: this.options.certKey && fs.readFileSync(this.options.certKey),
|
||||||
},
|
},
|
||||||
this.onRequest
|
this.onRequest,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
this.server = http.createServer(this.onRequest)
|
this.server = http.createServer(this.onRequest)
|
||||||
|
@ -412,7 +412,7 @@ export class HttpServer {
|
||||||
endpoint: string,
|
endpoint: string,
|
||||||
provider: HttpProvider2<A1, A2, T>,
|
provider: HttpProvider2<A1, A2, T>,
|
||||||
a1: A1,
|
a1: A1,
|
||||||
a2: A2
|
a2: A2,
|
||||||
): T
|
): T
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
public registerHttpProvider(endpoint: string, provider: any, ...args: any[]): any {
|
public registerHttpProvider(endpoint: string, provider: any, ...args: any[]): any {
|
||||||
|
@ -430,7 +430,7 @@ export class HttpServer {
|
||||||
commit: this.options.commit,
|
commit: this.options.commit,
|
||||||
password: this.options.password,
|
password: this.options.password,
|
||||||
},
|
},
|
||||||
...args
|
...args,
|
||||||
)
|
)
|
||||||
this.providers.set(`/${endpoint}`, p)
|
this.providers.set(`/${endpoint}`, p)
|
||||||
return p
|
return p
|
||||||
|
|
|
@ -14,7 +14,7 @@ const getXdgDataDir = (): string => {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
return path.join(
|
return path.join(
|
||||||
process.env.XDG_DATA_HOME || path.join(os.homedir(), "Library/Application Support"),
|
process.env.XDG_DATA_HOME || path.join(os.homedir(), "Library/Application Support"),
|
||||||
"code-server"
|
"code-server",
|
||||||
)
|
)
|
||||||
default:
|
default:
|
||||||
return path.join(process.env.XDG_DATA_HOME || path.join(os.homedir(), ".local/share"), "code-server")
|
return path.join(process.env.XDG_DATA_HOME || path.join(os.homedir(), ".local/share"), "code-server")
|
||||||
|
|
|
@ -76,7 +76,7 @@ export class IpcMain {
|
||||||
`${child ? "wrapper" : "inner process"} ${process.pid} received message from ${
|
`${child ? "wrapper" : "inner process"} ${process.pid} received message from ${
|
||||||
child ? child.pid : this.parentPid
|
child ? child.pid : this.parentPid
|
||||||
}`,
|
}`,
|
||||||
field("message", message)
|
field("message", message),
|
||||||
)
|
)
|
||||||
if (message.type === "handshake") {
|
if (message.type === "handshake") {
|
||||||
target.removeListener("message", onMessage)
|
target.removeListener("message", onMessage)
|
||||||
|
@ -122,7 +122,7 @@ export const ipcMain = (): IpcMain => {
|
||||||
_ipcMain = new IpcMain(
|
_ipcMain = new IpcMain(
|
||||||
typeof process.env.CODE_SERVER_PARENT_PID !== "undefined"
|
typeof process.env.CODE_SERVER_PARENT_PID !== "undefined"
|
||||||
? parseInt(process.env.CODE_SERVER_PARENT_PID)
|
? parseInt(process.env.CODE_SERVER_PARENT_PID)
|
||||||
: undefined
|
: undefined,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return _ipcMain
|
return _ipcMain
|
||||||
|
|
|
@ -73,7 +73,7 @@ describe("cli", () => {
|
||||||
"user-data-dir": path.resolve("bar"),
|
"user-data-dir": path.resolve("bar"),
|
||||||
verbose: true,
|
verbose: true,
|
||||||
version: true,
|
version: true,
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,5 @@
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"typeRoots": ["./node_modules/@types", "./typings"]
|
"typeRoots": ["./node_modules/@types", "./typings"]
|
||||||
},
|
},
|
||||||
"include": [
|
"include": ["./src/**/*.ts", "./src/**/*.tsx"]
|
||||||
"./src/**/*.ts",
|
|
||||||
"./src/**/*.tsx"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,6 @@ declare module "httpolyglot" {
|
||||||
function createServer(requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void): http.Server
|
function createServer(requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void): http.Server
|
||||||
function createServer(
|
function createServer(
|
||||||
options: https.ServerOptions,
|
options: https.ServerOptions,
|
||||||
requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void
|
requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void,
|
||||||
): https.Server
|
): https.Server
|
||||||
}
|
}
|
||||||
|
|
320
yarn.lock
320
yarn.lock
|
@ -904,9 +904,9 @@
|
||||||
integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==
|
integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==
|
||||||
|
|
||||||
"@types/node@*", "@types/node@^12.12.7":
|
"@types/node@*", "@types/node@^12.12.7":
|
||||||
version "12.12.26"
|
version "12.12.27"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.26.tgz#213e153babac0ed169d44a6d919501e68f59dea9"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.27.tgz#d7506f73160ad30fcebbcf5b8b7d2d976e649e42"
|
||||||
integrity sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA==
|
integrity sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
|
@ -998,39 +998,39 @@
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^2.0.0":
|
"@typescript-eslint/eslint-plugin@^2.0.0":
|
||||||
version "2.19.0"
|
version "2.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.0.tgz#bf743448a4633e4b52bee0c40148ba072ab3adbd"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.2.tgz#e279aaae5d5c1f2547b4cff99204e1250bc7a058"
|
||||||
integrity sha512-u7IcQ9qwsB6U806LupZmINRnQjC+RJyv36sV/ugaFWMHTbFm/hlLTRx3gGYJgHisxcGSTnf+I/fPDieRMhPSQQ==
|
integrity sha512-HX2qOq2GOV04HNrmKnTpSIpHjfl7iwdXe3u/Nvt+/cpmdvzYvY0NHSiTkYN257jHnq4OM/yo+OsFgati+7LqJA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "2.19.0"
|
"@typescript-eslint/experimental-utils" "2.19.2"
|
||||||
eslint-utils "^1.4.3"
|
eslint-utils "^1.4.3"
|
||||||
functional-red-black-tree "^1.0.1"
|
functional-red-black-tree "^1.0.1"
|
||||||
regexpp "^3.0.0"
|
regexpp "^3.0.0"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@2.19.0":
|
"@typescript-eslint/experimental-utils@2.19.2":
|
||||||
version "2.19.0"
|
version "2.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.0.tgz#d5ca732f22c009e515ba09fcceb5f2127d841568"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.2.tgz#4611d44cf0f0cb460c26aa7676fc0a787281e233"
|
||||||
integrity sha512-zwpg6zEOPbhB3+GaQfufzlMUOO6GXCNZq6skk+b2ZkZAIoBhVoanWK255BS1g5x9bMwHpLhX0Rpn5Fc3NdCZdg==
|
integrity sha512-B88QuwT1wMJR750YvTJBNjMZwmiPpbmKYLm1yI7PCc3x0NariqPwqaPsoJRwU9DmUi0cd9dkhz1IqEnwfD+P1A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/json-schema" "^7.0.3"
|
"@types/json-schema" "^7.0.3"
|
||||||
"@typescript-eslint/typescript-estree" "2.19.0"
|
"@typescript-eslint/typescript-estree" "2.19.2"
|
||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^2.0.0":
|
"@typescript-eslint/parser@^2.0.0":
|
||||||
version "2.19.0"
|
version "2.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.19.0.tgz#912160d9425395d09857dcd5382352bc98be11ae"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.19.2.tgz#21f42c0694846367e7d6a907feb08ab2f89c0879"
|
||||||
integrity sha512-s0jZoxAWjHnuidbbN7aA+BFVXn4TCcxEVGPV8lWMxZglSs3NRnFFAlL+aIENNmzB2/1jUJuySi6GiM6uACPmpg==
|
integrity sha512-8uwnYGKqX9wWHGPGdLB9sk9+12sjcdqEEYKGgbS8A0IvYX59h01o8os5qXUHMq2na8vpDRaV0suTLM7S8wraTA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/eslint-visitor-keys" "^1.0.0"
|
"@types/eslint-visitor-keys" "^1.0.0"
|
||||||
"@typescript-eslint/experimental-utils" "2.19.0"
|
"@typescript-eslint/experimental-utils" "2.19.2"
|
||||||
"@typescript-eslint/typescript-estree" "2.19.0"
|
"@typescript-eslint/typescript-estree" "2.19.2"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@2.19.0":
|
"@typescript-eslint/typescript-estree@2.19.2":
|
||||||
version "2.19.0"
|
version "2.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.0.tgz#6bd7310b9827e04756fe712909f26956aac4b196"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.2.tgz#67485b00172f400474d243c6c0be27581a579350"
|
||||||
integrity sha512-n6/Xa37k0jQdwpUszffi19AlNbVCR0sdvCs3DmSKMD7wBttKY31lhD2fug5kMD91B2qW4mQldaTEc1PEzvGu8w==
|
integrity sha512-Xu/qa0MDk6upQWqE4Qy2X16Xg8Vi32tQS2PR0AvnT/ZYS4YGDvtn2MStOh5y8Zy2mg4NuL06KUHlvCh95j9C6Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
@ -1081,9 +1081,9 @@ acorn-walk@^6.0.1:
|
||||||
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
|
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
|
||||||
|
|
||||||
acorn-walk@^7.0.0:
|
acorn-walk@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.0.0.tgz#c8ba6f0f1aac4b0a9e32d1f0af12be769528f36b"
|
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
|
||||||
integrity sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==
|
integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==
|
||||||
|
|
||||||
acorn@^5.0.0:
|
acorn@^5.0.0:
|
||||||
version "5.7.3"
|
version "5.7.3"
|
||||||
|
@ -1173,9 +1173,9 @@ ansi-styles@^4.1.0:
|
||||||
color-convert "^2.0.1"
|
color-convert "^2.0.1"
|
||||||
|
|
||||||
ansi-to-html@^0.6.4:
|
ansi-to-html@^0.6.4:
|
||||||
version "0.6.13"
|
version "0.6.14"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.13.tgz#c72eae8b63e5ca0643aab11bfc6e6f2217425833"
|
resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8"
|
||||||
integrity sha512-Ys2/umuaTlQvP9DLkaa7UzRKF2FLrfod/hNHXS9QhXCrw7seObG6ksOGmNz3UoK+adwM8L9vQfG7mvaxfJ3Jvw==
|
integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==
|
||||||
dependencies:
|
dependencies:
|
||||||
entities "^1.1.2"
|
entities "^1.1.2"
|
||||||
|
|
||||||
|
@ -1188,9 +1188,9 @@ anymatch@^2.0.0:
|
||||||
normalize-path "^2.1.1"
|
normalize-path "^2.1.1"
|
||||||
|
|
||||||
arg@^4.1.0:
|
arg@^4.1.0:
|
||||||
version "4.1.2"
|
version "4.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064"
|
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||||
integrity sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==
|
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||||
|
|
||||||
argparse@^1.0.7:
|
argparse@^1.0.7:
|
||||||
version "1.0.10"
|
version "1.0.10"
|
||||||
|
@ -1310,7 +1310,7 @@ atob@^2.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||||
|
|
||||||
autoprefixer@^9.7.3:
|
autoprefixer@^9.7.4:
|
||||||
version "9.7.4"
|
version "9.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378"
|
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378"
|
||||||
integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==
|
integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==
|
||||||
|
@ -1620,13 +1620,13 @@ browserify@^16.5.0:
|
||||||
xtend "^4.0.0"
|
xtend "^4.0.0"
|
||||||
|
|
||||||
browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.8.3, browserslist@^4.8.5:
|
browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.8.3, browserslist@^4.8.5:
|
||||||
version "4.8.6"
|
version "4.8.7"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0"
|
||||||
integrity sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==
|
integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001023"
|
caniuse-lite "^1.0.30001027"
|
||||||
electron-to-chromium "^1.3.341"
|
electron-to-chromium "^1.3.349"
|
||||||
node-releases "^1.1.47"
|
node-releases "^1.1.49"
|
||||||
|
|
||||||
buffer-alloc-unsafe@^1.1.0:
|
buffer-alloc-unsafe@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
|
@ -1756,10 +1756,10 @@ caniuse-api@^3.0.0:
|
||||||
lodash.memoize "^4.1.2"
|
lodash.memoize "^4.1.2"
|
||||||
lodash.uniq "^4.5.0"
|
lodash.uniq "^4.5.0"
|
||||||
|
|
||||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023:
|
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001027:
|
||||||
version "1.0.30001024"
|
version "1.0.30001027"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz#7feb6793fd5c9d7e0d4c01c80321855592a46b73"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz#283e2ef17d94889cc216a22c6f85303d78ca852d"
|
||||||
integrity sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA==
|
integrity sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg==
|
||||||
|
|
||||||
caseless@~0.12.0:
|
caseless@~0.12.0:
|
||||||
version "0.12.0"
|
version "0.12.0"
|
||||||
|
@ -1849,9 +1849,9 @@ chokidar@^2.1.5:
|
||||||
fsevents "^1.2.7"
|
fsevents "^1.2.7"
|
||||||
|
|
||||||
chownr@^1.1.1:
|
chownr@^1.1.1:
|
||||||
version "1.1.3"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
|
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||||
integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
|
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||||
|
|
||||||
chownr@^1.1.3:
|
chownr@^1.1.3:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
|
@ -2506,9 +2506,9 @@ diff@3.5.0:
|
||||||
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
||||||
|
|
||||||
diff@^4.0.1:
|
diff@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff"
|
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||||
integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==
|
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||||
|
|
||||||
diffie-hellman@^5.0.0:
|
diffie-hellman@^5.0.0:
|
||||||
version "5.0.3"
|
version "5.0.3"
|
||||||
|
@ -2586,12 +2586,12 @@ domutils@^1.5.1, domutils@^1.7.0:
|
||||||
dom-serializer "0"
|
dom-serializer "0"
|
||||||
domelementtype "1"
|
domelementtype "1"
|
||||||
|
|
||||||
dot-prop@^4.1.1:
|
dot-prop@^5.2.0:
|
||||||
version "4.2.0"
|
version "5.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb"
|
||||||
integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
|
integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-obj "^1.0.0"
|
is-obj "^2.0.0"
|
||||||
|
|
||||||
dotenv-expand@^5.1.0:
|
dotenv-expand@^5.1.0:
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
|
@ -2623,10 +2623,10 @@ ee-first@1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||||
|
|
||||||
electron-to-chromium@^1.3.341:
|
electron-to-chromium@^1.3.349:
|
||||||
version "1.3.344"
|
version "1.3.351"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz#f1397a633c35e726730c24be1084cd25c3ee8148"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.351.tgz#78bcf8e9092013232b2fb72b9db423d96e92604c"
|
||||||
integrity sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw==
|
integrity sha512-L8zhV8k7Znp2q3wWXYDzCyfTBeGauEX0rX/FtgmnDgmvHRqwu9NVN614wOkXx9sDZmJZpNMBaEFMXTu/vbr+Kg==
|
||||||
|
|
||||||
elliptic@^6.0.0:
|
elliptic@^6.0.0:
|
||||||
version "6.5.2"
|
version "6.5.2"
|
||||||
|
@ -2685,7 +2685,7 @@ error-ex@^1.2.0, error-ex@^1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-arrayish "^0.2.1"
|
is-arrayish "^0.2.1"
|
||||||
|
|
||||||
es-abstract@^1.17.0, es-abstract@^1.17.2:
|
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
|
||||||
version "1.17.4"
|
version "1.17.4"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184"
|
||||||
integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==
|
integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==
|
||||||
|
@ -2702,23 +2702,6 @@ es-abstract@^1.17.0, es-abstract@^1.17.2:
|
||||||
string.prototype.trimleft "^2.1.1"
|
string.prototype.trimleft "^2.1.1"
|
||||||
string.prototype.trimright "^2.1.1"
|
string.prototype.trimright "^2.1.1"
|
||||||
|
|
||||||
es-abstract@^1.17.0-next.1:
|
|
||||||
version "1.17.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1"
|
|
||||||
integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==
|
|
||||||
dependencies:
|
|
||||||
es-to-primitive "^1.2.1"
|
|
||||||
function-bind "^1.1.1"
|
|
||||||
has "^1.0.3"
|
|
||||||
has-symbols "^1.0.1"
|
|
||||||
is-callable "^1.1.5"
|
|
||||||
is-regex "^1.0.5"
|
|
||||||
object-inspect "^1.7.0"
|
|
||||||
object-keys "^1.1.1"
|
|
||||||
object.assign "^4.1.0"
|
|
||||||
string.prototype.trimleft "^2.1.1"
|
|
||||||
string.prototype.trimright "^2.1.1"
|
|
||||||
|
|
||||||
es-to-primitive@^1.2.1:
|
es-to-primitive@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
||||||
|
@ -2744,9 +2727,9 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
|
||||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||||
|
|
||||||
escodegen@^1.11.0, escodegen@^1.11.1:
|
escodegen@^1.11.0, escodegen@^1.11.1:
|
||||||
version "1.13.0"
|
version "1.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.13.0.tgz#c7adf9bd3f3cc675bb752f202f79a720189cab29"
|
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457"
|
||||||
integrity sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==
|
integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
esprima "^4.0.1"
|
esprima "^4.0.1"
|
||||||
estraverse "^4.2.0"
|
estraverse "^4.2.0"
|
||||||
|
@ -2898,9 +2881,9 @@ esprima@^4.0.0, esprima@^4.0.1:
|
||||||
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
||||||
|
|
||||||
esquery@^1.0.1:
|
esquery@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
|
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48"
|
||||||
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
|
integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
estraverse "^4.0.0"
|
estraverse "^4.0.0"
|
||||||
|
|
||||||
|
@ -3421,7 +3404,7 @@ har-schema@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||||
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
|
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
|
||||||
|
|
||||||
har-validator@~5.1.0:
|
har-validator@~5.1.3:
|
||||||
version "5.1.3"
|
version "5.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
|
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
|
||||||
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
|
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
|
||||||
|
@ -3970,10 +3953,10 @@ is-number@^7.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||||
|
|
||||||
is-obj@^1.0.0:
|
is-obj@^2.0.0:
|
||||||
version "1.0.1"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
|
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
|
||||||
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
|
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
|
||||||
|
|
||||||
is-plain-obj@^1.1.0:
|
is-plain-obj@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
|
@ -4243,14 +4226,14 @@ kind-of@^5.0.0:
|
||||||
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
|
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
|
||||||
|
|
||||||
kind-of@^6.0.0, kind-of@^6.0.2:
|
kind-of@^6.0.0, kind-of@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||||
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
|
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||||
|
|
||||||
known-css-properties@^0.17.0:
|
known-css-properties@^0.18.0:
|
||||||
version "0.17.0"
|
version "0.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.17.0.tgz#1c535f530ee8e9e3e27bb6a718285780e1d07326"
|
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f"
|
||||||
integrity sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==
|
integrity sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==
|
||||||
|
|
||||||
labeled-stream-splicer@^2.0.0:
|
labeled-stream-splicer@^2.0.0:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
|
@ -4427,7 +4410,7 @@ markdown-table@^1.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
|
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
|
||||||
integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
|
integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
|
||||||
|
|
||||||
mathml-tag-names@^2.1.1:
|
mathml-tag-names@^2.1.3:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
||||||
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
||||||
|
@ -4463,9 +4446,9 @@ mdn-data@2.0.4:
|
||||||
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
|
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
|
||||||
|
|
||||||
meow@^6.0.0:
|
meow@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.0.tgz#949196fdf21d979379e3bdccb0411e60f8cffd93"
|
resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.1.tgz#f9b3f912c9aa039142cebcf74315129f4cd1ce1c"
|
||||||
integrity sha512-x4rYsjigPBDAxY+BGuK83YLhUIqui5wYyZoqb6QJCUOs+0fiYq+i/NV4Jt8OgIfObZFxG9iTyvLDu4UTohGTFw==
|
integrity sha512-kxGTFgT/b7/oSRSQsJ0qsT5IMU+bgZ1eAdSA3kIV7onkW0QWo/hL5RbGlMfvBjHJKPE1LaPX0kdecYFiqYWjUw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/minimist" "^1.2.0"
|
"@types/minimist" "^1.2.0"
|
||||||
camelcase-keys "^6.1.1"
|
camelcase-keys "^6.1.1"
|
||||||
|
@ -4787,10 +4770,10 @@ node-libs-browser@^2.0.0:
|
||||||
util "^0.11.0"
|
util "^0.11.0"
|
||||||
vm-browserify "^1.0.1"
|
vm-browserify "^1.0.1"
|
||||||
|
|
||||||
node-releases@^1.1.47:
|
node-releases@^1.1.49:
|
||||||
version "1.1.47"
|
version "1.1.49"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.49.tgz#67ba5a3fac2319262675ef864ed56798bb33b93e"
|
||||||
integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==
|
integrity sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
|
@ -5061,9 +5044,9 @@ pako@^0.2.5:
|
||||||
integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
|
integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
|
||||||
|
|
||||||
pako@~1.0.5:
|
pako@~1.0.5:
|
||||||
version "1.0.10"
|
version "1.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
|
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||||
integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
|
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
||||||
|
|
||||||
parcel-bundler@^1.12.4:
|
parcel-bundler@^1.12.4:
|
||||||
version "1.12.4"
|
version "1.12.4"
|
||||||
|
@ -5272,14 +5255,14 @@ pbkdf2@^3.0.3:
|
||||||
sha.js "^2.4.8"
|
sha.js "^2.4.8"
|
||||||
|
|
||||||
pem@^1.14.2:
|
pem@^1.14.2:
|
||||||
version "1.14.3"
|
version "1.14.4"
|
||||||
resolved "https://registry.yarnpkg.com/pem/-/pem-1.14.3.tgz#347e5a5c194a5f7612b88083e45042fcc4fb4901"
|
resolved "https://registry.yarnpkg.com/pem/-/pem-1.14.4.tgz#a68c70c6e751ccc5b3b5bcd7af78b0aec1177ff9"
|
||||||
integrity sha512-Q+AMVMD3fzeVvZs5PHeI+pVt0hgZY2fjhkliBW43qyONLgCXPVk1ryim43F9eupHlNGLJNT5T/NNrzhUdiC5Zg==
|
integrity sha512-v8lH3NpirgiEmbOqhx0vwQTxwi0ExsiWBGYh0jYNq7K6mQuO4gI6UEFlr6fLAdv9TPXRt6GqiwE37puQdIDS8g==
|
||||||
dependencies:
|
dependencies:
|
||||||
es6-promisify "^6.0.0"
|
es6-promisify "^6.0.0"
|
||||||
md5 "^2.2.1"
|
md5 "^2.2.1"
|
||||||
os-tmpdir "^1.0.1"
|
os-tmpdir "^1.0.1"
|
||||||
which "^1.3.1"
|
which "^2.0.2"
|
||||||
|
|
||||||
performance-now@^2.1.0:
|
performance-now@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
|
@ -5382,7 +5365,7 @@ postcss-html@^0.36.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
htmlparser2 "^3.10.0"
|
htmlparser2 "^3.10.0"
|
||||||
|
|
||||||
postcss-jsx@^0.36.3:
|
postcss-jsx@^0.36.4:
|
||||||
version "0.36.4"
|
version "0.36.4"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50"
|
resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50"
|
||||||
integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==
|
integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==
|
||||||
|
@ -5628,11 +5611,11 @@ postcss-resolve-nested-selector@^0.1.1:
|
||||||
integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
|
integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
|
||||||
|
|
||||||
postcss-safe-parser@^4.0.1:
|
postcss-safe-parser@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea"
|
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96"
|
||||||
integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==
|
integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss "^7.0.0"
|
postcss "^7.0.26"
|
||||||
|
|
||||||
postcss-sass@^0.4.2:
|
postcss-sass@^0.4.2:
|
||||||
version "0.4.2"
|
version "0.4.2"
|
||||||
|
@ -5649,7 +5632,7 @@ postcss-scss@^2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss "^7.0.0"
|
postcss "^7.0.0"
|
||||||
|
|
||||||
postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0:
|
postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
|
||||||
integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
|
integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
|
||||||
|
@ -5658,12 +5641,12 @@ postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0:
|
||||||
indexes-of "^1.0.1"
|
indexes-of "^1.0.1"
|
||||||
uniq "^1.0.1"
|
uniq "^1.0.1"
|
||||||
|
|
||||||
postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0:
|
postcss-selector-parser@^3.0.0:
|
||||||
version "3.1.1"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
|
||||||
integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
|
integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
|
||||||
dependencies:
|
dependencies:
|
||||||
dot-prop "^4.1.1"
|
dot-prop "^5.2.0"
|
||||||
indexes-of "^1.0.1"
|
indexes-of "^1.0.1"
|
||||||
uniq "^1.0.1"
|
uniq "^1.0.1"
|
||||||
|
|
||||||
|
@ -5807,7 +5790,7 @@ progress@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
||||||
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
||||||
|
|
||||||
psl@^1.1.24, psl@^1.1.28:
|
psl@^1.1.28:
|
||||||
version "1.7.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
|
||||||
integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
|
integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
|
||||||
|
@ -5837,7 +5820,7 @@ punycode@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
||||||
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
||||||
|
|
||||||
punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
|
punycode@^1.2.4, punycode@^1.3.2:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
||||||
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
||||||
|
@ -5967,19 +5950,10 @@ readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable
|
||||||
string_decoder "~1.1.1"
|
string_decoder "~1.1.1"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
readable-stream@^3.0.1, readable-stream@^3.1.1:
|
readable-stream@^3.0.1, readable-stream@^3.0.6, readable-stream@^3.1.1:
|
||||||
version "3.4.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||||
integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
|
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||||
dependencies:
|
|
||||||
inherits "^2.0.3"
|
|
||||||
string_decoder "^1.1.1"
|
|
||||||
util-deprecate "^1.0.1"
|
|
||||||
|
|
||||||
readable-stream@^3.0.6:
|
|
||||||
version "3.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606"
|
|
||||||
integrity sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
string_decoder "^1.1.1"
|
string_decoder "^1.1.1"
|
||||||
|
@ -6088,9 +6062,9 @@ regjsparser@^0.1.4:
|
||||||
jsesc "~0.5.0"
|
jsesc "~0.5.0"
|
||||||
|
|
||||||
regjsparser@^0.6.0:
|
regjsparser@^0.6.0:
|
||||||
version "0.6.2"
|
version "0.6.3"
|
||||||
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96"
|
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.3.tgz#74192c5805d35e9f5ebe3c1fb5b40d40a8a38460"
|
||||||
integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==
|
integrity sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==
|
||||||
dependencies:
|
dependencies:
|
||||||
jsesc "~0.5.0"
|
jsesc "~0.5.0"
|
||||||
|
|
||||||
|
@ -6181,9 +6155,9 @@ request-promise-native@^1.0.5:
|
||||||
tough-cookie "^2.3.3"
|
tough-cookie "^2.3.3"
|
||||||
|
|
||||||
request@^2.88.0:
|
request@^2.88.0:
|
||||||
version "2.88.0"
|
version "2.88.2"
|
||||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
|
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||||
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
|
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
||||||
dependencies:
|
dependencies:
|
||||||
aws-sign2 "~0.7.0"
|
aws-sign2 "~0.7.0"
|
||||||
aws4 "^1.8.0"
|
aws4 "^1.8.0"
|
||||||
|
@ -6192,7 +6166,7 @@ request@^2.88.0:
|
||||||
extend "~3.0.2"
|
extend "~3.0.2"
|
||||||
forever-agent "~0.6.1"
|
forever-agent "~0.6.1"
|
||||||
form-data "~2.3.2"
|
form-data "~2.3.2"
|
||||||
har-validator "~5.1.0"
|
har-validator "~5.1.3"
|
||||||
http-signature "~1.2.0"
|
http-signature "~1.2.0"
|
||||||
is-typedarray "~1.0.0"
|
is-typedarray "~1.0.0"
|
||||||
isstream "~0.1.2"
|
isstream "~0.1.2"
|
||||||
|
@ -6202,7 +6176,7 @@ request@^2.88.0:
|
||||||
performance-now "^2.1.0"
|
performance-now "^2.1.0"
|
||||||
qs "~6.5.2"
|
qs "~6.5.2"
|
||||||
safe-buffer "^5.1.2"
|
safe-buffer "^5.1.2"
|
||||||
tough-cookie "~2.4.3"
|
tough-cookie "~2.5.0"
|
||||||
tunnel-agent "^0.6.0"
|
tunnel-agent "^0.6.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
|
@ -6241,17 +6215,10 @@ resolve@1.1.7:
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
||||||
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
|
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
|
||||||
|
|
||||||
resolve@^1.1.4, resolve@^1.1.5, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2:
|
resolve@^1.1.4, resolve@^1.1.5, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0:
|
||||||
version "1.15.0"
|
version "1.15.1"
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5"
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
|
||||||
integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==
|
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
|
||||||
dependencies:
|
|
||||||
path-parse "^1.0.6"
|
|
||||||
|
|
||||||
resolve@^1.4.0:
|
|
||||||
version "1.14.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2"
|
|
||||||
integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.6"
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
|
@ -6888,11 +6855,11 @@ stylelint-config-standard@^19.0.0:
|
||||||
stylelint-config-recommended "^3.0.0"
|
stylelint-config-recommended "^3.0.0"
|
||||||
|
|
||||||
stylelint@^13.0.0:
|
stylelint@^13.0.0:
|
||||||
version "13.0.0"
|
version "13.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.0.0.tgz#532007f7154c1a5ed14245d857a5884316f5111f"
|
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.2.0.tgz#b6f5b67b9a9a51f1fd105ab916952456d93826b4"
|
||||||
integrity sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg==
|
integrity sha512-isf31yjkm0DQesx+Yk1b/WQpFkf1MicwaAVR22Hprx9HRFGhhEkWdrVCyrkK6HFymL0rhzynG97Tu53q/WCsAg==
|
||||||
dependencies:
|
dependencies:
|
||||||
autoprefixer "^9.7.3"
|
autoprefixer "^9.7.4"
|
||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
chalk "^3.0.0"
|
chalk "^3.0.0"
|
||||||
cosmiconfig "^6.0.0"
|
cosmiconfig "^6.0.0"
|
||||||
|
@ -6907,17 +6874,17 @@ stylelint@^13.0.0:
|
||||||
ignore "^5.1.4"
|
ignore "^5.1.4"
|
||||||
import-lazy "^4.0.0"
|
import-lazy "^4.0.0"
|
||||||
imurmurhash "^0.1.4"
|
imurmurhash "^0.1.4"
|
||||||
known-css-properties "^0.17.0"
|
known-css-properties "^0.18.0"
|
||||||
leven "^3.1.0"
|
leven "^3.1.0"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
log-symbols "^3.0.0"
|
log-symbols "^3.0.0"
|
||||||
mathml-tag-names "^2.1.1"
|
mathml-tag-names "^2.1.3"
|
||||||
meow "^6.0.0"
|
meow "^6.0.0"
|
||||||
micromatch "^4.0.2"
|
micromatch "^4.0.2"
|
||||||
normalize-selector "^0.2.0"
|
normalize-selector "^0.2.0"
|
||||||
postcss "^7.0.26"
|
postcss "^7.0.26"
|
||||||
postcss-html "^0.36.0"
|
postcss-html "^0.36.0"
|
||||||
postcss-jsx "^0.36.3"
|
postcss-jsx "^0.36.4"
|
||||||
postcss-less "^3.1.4"
|
postcss-less "^3.1.4"
|
||||||
postcss-markdown "^0.36.0"
|
postcss-markdown "^0.36.0"
|
||||||
postcss-media-query-parser "^0.2.3"
|
postcss-media-query-parser "^0.2.3"
|
||||||
|
@ -6926,7 +6893,7 @@ stylelint@^13.0.0:
|
||||||
postcss-safe-parser "^4.0.1"
|
postcss-safe-parser "^4.0.1"
|
||||||
postcss-sass "^0.4.2"
|
postcss-sass "^0.4.2"
|
||||||
postcss-scss "^2.0.0"
|
postcss-scss "^2.0.0"
|
||||||
postcss-selector-parser "^3.1.0"
|
postcss-selector-parser "^6.0.2"
|
||||||
postcss-syntax "^0.36.2"
|
postcss-syntax "^0.36.2"
|
||||||
postcss-value-parser "^4.0.2"
|
postcss-value-parser "^4.0.2"
|
||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
|
@ -7193,7 +7160,7 @@ toidentifier@1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||||
|
|
||||||
tough-cookie@^2.3.3, tough-cookie@^2.5.0:
|
tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||||
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
||||||
|
@ -7201,14 +7168,6 @@ tough-cookie@^2.3.3, tough-cookie@^2.5.0:
|
||||||
psl "^1.1.28"
|
psl "^1.1.28"
|
||||||
punycode "^2.1.1"
|
punycode "^2.1.1"
|
||||||
|
|
||||||
tough-cookie@~2.4.3:
|
|
||||||
version "2.4.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
|
|
||||||
integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
|
|
||||||
dependencies:
|
|
||||||
psl "^1.1.24"
|
|
||||||
punycode "^1.4.1"
|
|
||||||
|
|
||||||
tr46@^1.0.1:
|
tr46@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
|
||||||
|
@ -7237,15 +7196,15 @@ trough@^1.0.0:
|
||||||
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
||||||
|
|
||||||
ts-node@^8.4.1:
|
ts-node@^8.4.1:
|
||||||
version "8.5.4"
|
version "8.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.5.4.tgz#a152add11fa19c221d0b48962c210cf467262ab2"
|
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35"
|
||||||
integrity sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==
|
integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==
|
||||||
dependencies:
|
dependencies:
|
||||||
arg "^4.1.0"
|
arg "^4.1.0"
|
||||||
diff "^4.0.1"
|
diff "^4.0.1"
|
||||||
make-error "^1.1.1"
|
make-error "^1.1.1"
|
||||||
source-map-support "^0.5.6"
|
source-map-support "^0.5.6"
|
||||||
yn "^3.0.0"
|
yn "3.1.1"
|
||||||
|
|
||||||
tslib@^1.8.1, tslib@^1.9.0:
|
tslib@^1.8.1, tslib@^1.9.0:
|
||||||
version "1.10.0"
|
version "1.10.0"
|
||||||
|
@ -7321,9 +7280,9 @@ umd@^3.0.0:
|
||||||
integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
|
integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
|
||||||
|
|
||||||
uncss@^0.17.2:
|
uncss@^0.17.2:
|
||||||
version "0.17.2"
|
version "0.17.3"
|
||||||
resolved "https://registry.yarnpkg.com/uncss/-/uncss-0.17.2.tgz#fac1c2429be72108e8a47437c647d58cf9ea66f1"
|
resolved "https://registry.yarnpkg.com/uncss/-/uncss-0.17.3.tgz#50fc1eb4ed573ffff763458d801cd86e4d69ea11"
|
||||||
integrity sha512-hu2HquwDItuGDem4YsJROdAD8SknmWtM24zwhQax6J1se8tPjV1cnwPKhtjodzBaUhaL8Zb3hlGdZ2WAUpbAOg==
|
integrity sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==
|
||||||
dependencies:
|
dependencies:
|
||||||
commander "^2.20.0"
|
commander "^2.20.0"
|
||||||
glob "^7.1.4"
|
glob "^7.1.4"
|
||||||
|
@ -7679,6 +7638,13 @@ which@1.3.1, which@^1.2.9, which@^1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
|
which@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||||
|
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
||||||
|
dependencies:
|
||||||
|
isexe "^2.0.0"
|
||||||
|
|
||||||
wide-align@1.1.3:
|
wide-align@1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
||||||
|
@ -7844,7 +7810,7 @@ yargs@^14.0.0:
|
||||||
y18n "^4.0.0"
|
y18n "^4.0.0"
|
||||||
yargs-parser "^15.0.0"
|
yargs-parser "^15.0.0"
|
||||||
|
|
||||||
yn@^3.0.0:
|
yn@3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||||
|
|
Loading…
Reference in New Issue