mirror of
https://github.com/Eugeny/tabby.git
synced 2025-09-04 23:51:49 +00:00
Compare commits
251 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e5575f93fb | ||
![]() |
7bc353b0dd | ||
![]() |
dc6a81d17f | ||
![]() |
4da21a2537 | ||
![]() |
8ea270fb74 | ||
![]() |
bc0e1936c2 | ||
![]() |
587f295c30 | ||
![]() |
27ff57e47e | ||
![]() |
dfbbb68286 | ||
![]() |
7bc92b12e3 | ||
![]() |
7eb70e2925 | ||
![]() |
28a9c55006 | ||
![]() |
3e4427deaa | ||
![]() |
b56471aef6 | ||
![]() |
1c812faf3d | ||
![]() |
95967882e3 | ||
![]() |
d1ddbe213f | ||
![]() |
ba073d546a | ||
![]() |
981f673dbb | ||
![]() |
eece7b7b3e | ||
![]() |
27c9df9bc8 | ||
![]() |
6968dcdd13 | ||
![]() |
bcaa638ef0 | ||
![]() |
c243de3704 | ||
![]() |
4e35d2a367 | ||
![]() |
c2e42682d6 | ||
![]() |
5e566c2fd9 | ||
![]() |
effaa81582 | ||
![]() |
4cd9290972 | ||
![]() |
3ddbb62658 | ||
![]() |
2ee336bef8 | ||
![]() |
8d767ac497 | ||
![]() |
955ef9b361 | ||
![]() |
90cf46b826 | ||
![]() |
c08ba92f33 | ||
![]() |
4bf2963d1e | ||
![]() |
e81228782d | ||
![]() |
dd6dd01e16 | ||
![]() |
31ad686545 | ||
![]() |
b79b3302ab | ||
![]() |
68220d1afc | ||
![]() |
a8e1cee84a | ||
![]() |
bd713f8e07 | ||
![]() |
3bc387b1d9 | ||
![]() |
2844f699ff | ||
![]() |
1d3333e83b | ||
![]() |
4f0daf7a77 | ||
![]() |
3421a8e19f | ||
![]() |
927ca57e56 | ||
![]() |
c63c7dae3f | ||
![]() |
e0f05654f7 | ||
![]() |
2a1501c91e | ||
![]() |
f244f09362 | ||
![]() |
3c2af3045d | ||
![]() |
d82b0b4661 | ||
![]() |
5e2ec1a9bf | ||
![]() |
1d8a71fbc0 | ||
![]() |
7b9a6f1055 | ||
![]() |
8bd9a0d4bc | ||
![]() |
69c1c9f664 | ||
![]() |
d30836681d | ||
![]() |
0a597ffd5f | ||
![]() |
757c91815b | ||
![]() |
deb01266ea | ||
![]() |
d3cff11602 | ||
![]() |
f177a5c734 | ||
![]() |
bf4e0e4f3d | ||
![]() |
9d509dd3ce | ||
![]() |
02674d0f86 | ||
![]() |
ff6ec006e7 | ||
![]() |
a4ed9a5444 | ||
![]() |
d01e3a97d5 | ||
![]() |
3f84a9239a | ||
![]() |
84d4ca4053 | ||
![]() |
19c4a77d6f | ||
![]() |
c16c250847 | ||
![]() |
0905be77bc | ||
![]() |
3d11179a06 | ||
![]() |
516d7eae9a | ||
![]() |
2e486c5e53 | ||
![]() |
d87f329838 | ||
![]() |
e6de63c689 | ||
![]() |
bb845ee803 | ||
![]() |
9e67996e24 | ||
![]() |
b5523d9820 | ||
![]() |
ad26e4f6a3 | ||
![]() |
ae40f009a0 | ||
![]() |
7ee603df60 | ||
![]() |
a8eb0d8346 | ||
![]() |
924a8da2f5 | ||
![]() |
07ab28279c | ||
![]() |
dbb6c544de | ||
![]() |
8c3d2531dc | ||
![]() |
e8fc47665b | ||
![]() |
574d8d9c7a | ||
![]() |
16c9e20b2a | ||
![]() |
665e0ff692 | ||
![]() |
8c71b26109 | ||
![]() |
6aeb9a62e6 | ||
![]() |
337d1f4df5 | ||
![]() |
057bd3f6d1 | ||
![]() |
b01a2e42fb | ||
![]() |
62efe406f5 | ||
![]() |
43f6ad3530 | ||
![]() |
a060246269 | ||
![]() |
802752d76c | ||
![]() |
a7fc2f4ddc | ||
![]() |
6a2fcd9f16 | ||
![]() |
90f475e532 | ||
![]() |
af6294e404 | ||
![]() |
17f471ac24 | ||
![]() |
4274ed563b | ||
![]() |
2acda3be5f | ||
![]() |
2848f9f257 | ||
![]() |
6536e3d4b5 | ||
![]() |
cdaa4fe106 | ||
![]() |
a07e27ef4b | ||
![]() |
2d5e4477b8 | ||
![]() |
f1213fb83e | ||
![]() |
947c751bc7 | ||
![]() |
0ca00b81d5 | ||
![]() |
7c10b57fb9 | ||
![]() |
ffa6d41d8b | ||
![]() |
5ecab9f304 | ||
![]() |
dc9508f80d | ||
![]() |
b6aa1f764b | ||
![]() |
63f8ac2d92 | ||
![]() |
da4622a2ed | ||
![]() |
2896321076 | ||
![]() |
092e5fb8aa | ||
![]() |
43bb3f7f2d | ||
![]() |
b144724ed5 | ||
![]() |
04f233b4a5 | ||
![]() |
7645a1d2c7 | ||
![]() |
2953ea60e8 | ||
![]() |
8d5b2bc4c5 | ||
![]() |
1d1e620db6 | ||
![]() |
3532195760 | ||
![]() |
9d55c7c0ed | ||
![]() |
b9fcf6cac3 | ||
![]() |
e49deee303 | ||
![]() |
f4da5955de | ||
![]() |
5db0ccf96a | ||
![]() |
f8f9c81a66 | ||
![]() |
75b51983cc | ||
![]() |
7e66af2585 | ||
![]() |
ac8026b6d9 | ||
![]() |
119cfdc577 | ||
![]() |
09ce7e062f | ||
![]() |
9cd4fb5417 | ||
![]() |
7887cf58d2 | ||
![]() |
af9c9e580c | ||
![]() |
a4c98db69e | ||
![]() |
122e68de04 | ||
![]() |
d922b2de1f | ||
![]() |
84e2cdb191 | ||
![]() |
b424876cf8 | ||
![]() |
3e306c1479 | ||
![]() |
fb4258d0a2 | ||
![]() |
c9965d3d1a | ||
![]() |
5411ef4802 | ||
![]() |
fbc67970b4 | ||
![]() |
08910933e0 | ||
![]() |
ee23ca0770 | ||
![]() |
febdb96c2b | ||
![]() |
d771bd196c | ||
![]() |
4782a67fe0 | ||
![]() |
6cd5d819ea | ||
![]() |
f8cc637e19 | ||
![]() |
23907ffffe | ||
![]() |
9af1f40086 | ||
![]() |
2a1e1007b7 | ||
![]() |
4c2168b4b5 | ||
![]() |
8920cc7924 | ||
![]() |
8ee7022307 | ||
![]() |
380266a57c | ||
![]() |
5679d5edf1 | ||
![]() |
6a9d569345 | ||
![]() |
eccbd66c18 | ||
![]() |
041a2a92d5 | ||
![]() |
35984ab66e | ||
![]() |
a4ad435341 | ||
![]() |
1b3f28415e | ||
![]() |
b942a2eb1d | ||
![]() |
60e6e2d3ca | ||
![]() |
77d209e285 | ||
![]() |
a735c910d5 | ||
![]() |
876aee93df | ||
![]() |
b0f8dd4036 | ||
![]() |
9413c80376 | ||
![]() |
735fa76239 | ||
![]() |
5820b7ff9a | ||
![]() |
ce49dd9dae | ||
![]() |
0804b949fc | ||
![]() |
dc6871f4a3 | ||
![]() |
2197dceeb2 | ||
![]() |
e4f29b5862 | ||
![]() |
aba3e190ed | ||
![]() |
0ef8c7a570 | ||
![]() |
04b3ab45ea | ||
![]() |
8f2f66c269 | ||
![]() |
1ebbe07870 | ||
![]() |
dadc6c1665 | ||
![]() |
3f3bcfe805 | ||
![]() |
e9ac1f81f7 | ||
![]() |
cd3bab2f6d | ||
![]() |
dc190ad733 | ||
![]() |
1e81e65df7 | ||
![]() |
409c33782e | ||
![]() |
65f2b98f08 | ||
![]() |
891ef52a44 | ||
![]() |
4a18038f15 | ||
![]() |
3891818863 | ||
![]() |
b03e6d449e | ||
![]() |
a70c084a03 | ||
![]() |
fa752b5987 | ||
![]() |
05f8adc323 | ||
![]() |
90df7ac5b7 | ||
![]() |
ea7825e7a8 | ||
![]() |
93f262cb0f | ||
![]() |
f7d60efeb9 | ||
![]() |
be7e6b8d6e | ||
![]() |
4972d2ffea | ||
![]() |
08cebe202c | ||
![]() |
26ca65e10f | ||
![]() |
bb00b07ee8 | ||
![]() |
7bff0a1174 | ||
![]() |
4b67e02f6b | ||
![]() |
046f56215e | ||
![]() |
09b6428705 | ||
![]() |
6c5eb9c525 | ||
![]() |
4f5ee31a69 | ||
![]() |
8eeb8f3f10 | ||
![]() |
31b69f676c | ||
![]() |
9fc3b41247 | ||
![]() |
af946a4a51 | ||
![]() |
85a69ed922 | ||
![]() |
80a4b7bdfc | ||
![]() |
bcbc6e3b46 | ||
![]() |
4828156c7a | ||
![]() |
93119dbfca | ||
![]() |
393c113d77 | ||
![]() |
a6e5c317ae | ||
![]() |
5d22cab164 | ||
![]() |
745923d0b9 | ||
![]() |
e6e3c59e63 | ||
![]() |
55bc4f47bb | ||
![]() |
6484a1baff | ||
![]() |
493186ce53 | ||
![]() |
9a72184f94 | ||
![]() |
2238a231f0 |
@@ -162,6 +162,42 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "hammster",
|
||||
"name": "Hans Koch",
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/1093709?v=4",
|
||||
"profile": "https://hans-koch.me",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "ThePuzzlemaker",
|
||||
"name": "Dak Smyth",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/12666617?v=4",
|
||||
"profile": "http://thepuzzlemaker.info",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "yfwz100",
|
||||
"name": "Wang Zhi",
|
||||
"avatar_url": "https://avatars2.githubusercontent.com/u/983211?v=4",
|
||||
"profile": "http://yfwz100.github.io",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "jack1142",
|
||||
"name": "jack1142",
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/6032823?v=4",
|
||||
"profile": "https://github.com/jack1142",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
@@ -31,6 +31,11 @@ rules:
|
||||
'@typescript-eslint/promise-function-async': off
|
||||
'@typescript-eslint/no-unnecessary-type-assertion': off
|
||||
'@typescript-eslint/require-array-sort-compare': off
|
||||
'@typescript-eslint/no-floating-promises': off
|
||||
'@typescript-eslint/prefer-readonly': off
|
||||
'@typescript-eslint/require-await': off
|
||||
'@typescript-eslint/strict-boolean-expressions': off
|
||||
'@typescript-eslint/no-misused-promises': off
|
||||
'@typescript-eslint/no-use-before-define':
|
||||
- error
|
||||
- classes: false
|
||||
|
25
.github/workflows/docs.yml
vendored
Normal file
25
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Docs
|
||||
on: push
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-18.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
eval $(ssh-agent -s)
|
||||
ssh-add <(echo "$DOCS_PRIVATE_KEY")
|
||||
yarn
|
||||
yarn run docs
|
||||
rsync -e "ssh -o StrictHostKeyChecking=no" -arv docs/api/ root@ajenti.org:/srv/terminus-docs/
|
||||
|
||||
env:
|
||||
DOCS_PRIVATE_KEY: ${{ secrets.DOCS_PRIVATE_KEY }}
|
78
.github/workflows/linux.yml
vendored
Normal file
78
.github/workflows/linux.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
name: Linux Build
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: Install deps
|
||||
run: |
|
||||
cd app
|
||||
yarn
|
||||
cd ..
|
||||
rm app/node_modules/.yarn-integrity
|
||||
yarn
|
||||
|
||||
- name: Lint
|
||||
run: yarn run lint
|
||||
|
||||
- name: Build native deps
|
||||
run: scripts/build-native.js
|
||||
|
||||
- name: Build typings
|
||||
run: yarn run build:typings
|
||||
|
||||
- name: Webpack
|
||||
run: yarn run build
|
||||
|
||||
- name: Prepackage plugins
|
||||
run: scripts/prepackage-plugins.js
|
||||
|
||||
- name: Build packages
|
||||
run: scripts/build-linux.js
|
||||
env:
|
||||
DEBUG: electron-builder,electron-builder:*
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
- name: Package artifacts
|
||||
run: |
|
||||
mkdir artifact-deb
|
||||
mv dist/*.deb artifact-deb/ || true
|
||||
mkdir artifact-rpm
|
||||
mv dist/*.rpm artifact-rpm/ || true
|
||||
mkdir artifact-snap
|
||||
mv dist/*.snap artifact-snap/ || true
|
||||
mkdir artifact-tar.gz
|
||||
mv dist/*.tar.gz artifact-tar.gz/ || true
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload DEB
|
||||
with:
|
||||
name: Linux .deb
|
||||
path: artifact-deb
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload RPM
|
||||
with:
|
||||
name: Linux .rpm
|
||||
path: artifact-rpm
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload Snap
|
||||
with:
|
||||
name: Linux .snap
|
||||
path: artifact-snap
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload tarball
|
||||
with:
|
||||
name: Linux tarball
|
||||
path: artifact-tar.gz
|
51
.github/workflows/macos.yml
vendored
Normal file
51
.github/workflows/macos.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: macOS Build
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macOS-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cd app
|
||||
yarn
|
||||
cd ..
|
||||
rm app/node_modules/.yarn-integrity
|
||||
yarn
|
||||
yarn run lint
|
||||
scripts/build-native.js
|
||||
yarn run build:typings
|
||||
yarn run build
|
||||
scripts/prepackage-plugins.js
|
||||
scripts/build-macos.js
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||
|
||||
- name: Package artifacts
|
||||
run: |
|
||||
mkdir artifact-pkg
|
||||
mv dist/*.pkg artifact-pkg/
|
||||
mkdir artifact-zip
|
||||
mv dist/*.zip artifact-zip/
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload PKG
|
||||
with:
|
||||
name: macOS .pkg
|
||||
path: artifact-pkg
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload ZIP
|
||||
with:
|
||||
name: macOS .zip
|
||||
path: artifact-zip
|
51
.github/workflows/windows.yml
vendored
Normal file
51
.github/workflows/windows.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Windows Build
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2016
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Installing Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: Build
|
||||
shell: powershell
|
||||
run: |
|
||||
cd app
|
||||
yarn
|
||||
cd ..
|
||||
del app/node_modules/.yarn-integrity
|
||||
yarn
|
||||
node scripts/build-native.js
|
||||
yarn run build:typings
|
||||
yarn run build
|
||||
node scripts/prepackage-plugins.js
|
||||
node scripts/build-windows.js
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
|
||||
WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
|
||||
|
||||
- name: Package artifacts
|
||||
run: |
|
||||
mkdir artifact-setup
|
||||
mv dist/*-setup.exe artifact-setup/
|
||||
mkdir artifact-portable
|
||||
mv dist/*-portable.exe artifact-portable/
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload installer
|
||||
with:
|
||||
name: Installer
|
||||
path: artifact-setup
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload portable build
|
||||
with:
|
||||
name: Portable build
|
||||
path: artifact-portable
|
Binary file not shown.
@@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDFM4nHSbET5V7EYNgjA8NeVfOxV0wVMdZ2YvsDzD+qPJ4+MYbvsL7ZPaSxQSn7n6ATkLHjKje5RpF/Rl9K3kucGs0P6cqJVeE0qryEteQ3Q+fYAk+bD2J9ZQ/hv/0NtLl8T+7lJUZ3WUxFH73sgph77Sw0z+kMpPaK7U2vqMBQD/7+6iJgya31wP0qW0XKDz1BjKeXgwTg10Pm4vcGsR4c2q7YIzSzBHffcyo0vJyFvOX/ZKHlZRcq/wnQMeOl/hPgf1xCENjQZmFVReQlYSw5cNNDT9HZPKekOAZFFez7/AbPiTIo/bnBYIv0mdUjr3nw8nXF505q8LiD3z/ksaaWDqe9CCLM4W0Bh7/dhP7IGPdfX0fVHLhOnYIOsG21D8rWJjMPkVRSLyEvWNAnVuObJNHoQu8VATnOxfPNnMun72IHyyFWVoADk5JcsMbzcP7gZB+5oJO7U1qpcdndtBOA3ZlF0Uz2jVZnqavoEBWT39tl3vs69hAA3aTPGclg7HMuAJOl4HsKmaUgDxqV2wCX/S4pDqmKMbmumDLX+MM0xl0gXj/zpVJp9BzdnrArkC40ivmC6TSA4wrdN0tNBlqApkH5/jxGWrcu2AXVn9PGF3+QrjW0iu+QMZCaKWDhLIQC835uFwzhnNGlx41B7uxMLuNFxKXdQ3f/cC9QMG8ew== TravisCIDeployKey
|
39
.travis.yml
39
.travis.yml
@@ -8,40 +8,11 @@ stages:
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: 'Build'
|
||||
if: branch = xxx
|
||||
os: linux
|
||||
before_install:
|
||||
- set -e
|
||||
- rm app/node_modules/.yarn-integrity || true
|
||||
- yarn
|
||||
script:
|
||||
- set -e
|
||||
- python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)" # https://github.com/travis-ci/travis-ci/issues/8920
|
||||
- scripts/build-native.js
|
||||
- yarn run build:typings
|
||||
- yarn run build
|
||||
- scripts/prepackage-plugins.js
|
||||
- travis_wait scripts/build-linux.js
|
||||
|
||||
- stage: 'Build'
|
||||
os: osx
|
||||
before_install:
|
||||
- set -e
|
||||
- rm app/node_modules/.yarn-integrity || true
|
||||
- yarn
|
||||
script:
|
||||
- set -e
|
||||
- scripts/build-native.js
|
||||
- yarn run build:typings
|
||||
- yarn run build
|
||||
- scripts/prepackage-plugins.js
|
||||
- travis_wait scripts/build-macos.js
|
||||
|
||||
- stage: 'Docs'
|
||||
os: linux
|
||||
if: branch = master
|
||||
script:
|
||||
- '[ -z "${encrypted_4e2fb4889ef8_iv}" ] && exit 0 || true'
|
||||
- set -e
|
||||
- openssl aes-256-cbc -K $encrypted_4e2fb4889ef8_key -iv $encrypted_4e2fb4889ef8_iv -in .travis.ssh.key.enc -out .travis.ssh.key -d
|
||||
- eval "$(ssh-agent -s)"
|
||||
@@ -63,11 +34,3 @@ addons:
|
||||
sources:
|
||||
- sourceline: 'deb https://dl.yarnpkg.com/debian/ stable main'
|
||||
key_url: 'https://dl.yarnpkg.com/debian/pubkey.gpg'
|
||||
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- 'terminus-*/node_modules'
|
||||
- $HOME/.cache/yarn
|
||||
- $HOME/.cache/electron
|
||||
- $HOME/.cache/electron-builder
|
||||
|
@@ -58,7 +58,7 @@ export class Application {
|
||||
if (!this.hasWindows()) {
|
||||
await this.newWindow()
|
||||
}
|
||||
this.windows[0].send(event, ...args)
|
||||
this.windows.filter(w => !w.isDestroyed())[0].send(event, ...args)
|
||||
}
|
||||
|
||||
enableTray () {
|
||||
@@ -72,7 +72,7 @@ export class Application {
|
||||
this.tray = new Tray(`${app.getAppPath()}/assets/tray.png`)
|
||||
}
|
||||
|
||||
this.tray.on('click', () => this.focus())
|
||||
this.tray.on('click', () => setTimeout(() => this.focus()));
|
||||
|
||||
const contextMenu = Menu.buildFromTemplate([{
|
||||
label: 'Show',
|
||||
@@ -100,7 +100,6 @@ export class Application {
|
||||
focus () {
|
||||
for (let window of this.windows) {
|
||||
window.show()
|
||||
window.focus()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +124,7 @@ export class Application {
|
||||
{ role: 'services', submenu: [] },
|
||||
{ type: 'separator' },
|
||||
{ role: 'hide' },
|
||||
{ role: 'hideothers' },
|
||||
{ role: 'hideOthers' },
|
||||
{ role: 'unhide' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
@@ -146,21 +145,21 @@ export class Application {
|
||||
{ role: 'cut' },
|
||||
{ role: 'copy' },
|
||||
{ role: 'paste' },
|
||||
{ role: 'pasteandmatchstyle' },
|
||||
{ role: 'pasteAndMatchStyle' },
|
||||
{ role: 'delete' },
|
||||
{ role: 'selectall' },
|
||||
{ role: 'selectAll' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'View',
|
||||
submenu: [
|
||||
{ role: 'reload' },
|
||||
{ role: 'forcereload' },
|
||||
{ role: 'toggledevtools' },
|
||||
{ role: 'forceReload' },
|
||||
{ role: 'toggleDevTools' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'resetzoom' },
|
||||
{ role: 'zoomin' },
|
||||
{ role: 'zoomout' },
|
||||
{ role: 'resetZoom' },
|
||||
{ role: 'zoomIn' },
|
||||
{ role: 'zoomOut' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'togglefullscreen' },
|
||||
],
|
||||
|
@@ -39,7 +39,7 @@ const argv = parseArgs(process.argv, process.cwd())
|
||||
|
||||
if (!app.requestSingleInstanceLock()) {
|
||||
app.quit()
|
||||
process.exit(0)
|
||||
app.exit(0)
|
||||
}
|
||||
|
||||
if (argv.d) {
|
||||
|
@@ -147,6 +147,10 @@ export class Window {
|
||||
this.window.webContents.send(event, ...args)
|
||||
}
|
||||
|
||||
isDestroyed() {
|
||||
return !this.window || this.window.isDestroyed();
|
||||
}
|
||||
|
||||
private setupWindowManagement () {
|
||||
this.window.on('show', () => {
|
||||
this.visible.next(true)
|
||||
|
@@ -22,31 +22,32 @@
|
||||
"@angular/platform-browser-dynamic": "7.2.8",
|
||||
"@ng-bootstrap/ng-bootstrap": "^4.2.0",
|
||||
"devtron": "1.4.0",
|
||||
"fontmanager-redux": "0.3.2",
|
||||
"electron-config": "2.0.0",
|
||||
"electron-debug": "^3.0.1",
|
||||
"electron-is-dev": "1.1.0",
|
||||
"electron-updater": "^4.0.6",
|
||||
"fontmanager-redux": "0.3.3",
|
||||
"js-yaml": "3.13.1",
|
||||
"keytar": "^4.7.0",
|
||||
"keytar": "4.13.0",
|
||||
"mz": "^2.7.0",
|
||||
"ngx-toastr": "^10.0.4",
|
||||
"node-pty": "^0.9.0-beta18",
|
||||
"npm": "~6.9.0",
|
||||
"ngx-toastr": "^10.1.0",
|
||||
"node-pty": "^0.9.0-beta22",
|
||||
"npm": "6.9.0",
|
||||
"path": "0.12.7",
|
||||
"rxjs": "^6.5.2",
|
||||
"rxjs-compat": "^6.5.2",
|
||||
"yargs": "^13.2.4",
|
||||
"yargs": "^14.0.0",
|
||||
"zone.js": "^0.8.29"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@terminus-term/windows-process-tree": "^0.2.4",
|
||||
"macos-native-processlist": "^1.0.1",
|
||||
"windows-blurbehind": "^1.0.1",
|
||||
"windows-native-registry": "^1.0.14",
|
||||
"windows-process-tree": "^0.2.4",
|
||||
"windows-swca": "^2.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/mz": "0.0.32"
|
||||
"@types/mz": "0.0.32",
|
||||
"node-abi": "^2.11.0"
|
||||
}
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ location.hash = ''
|
||||
|
||||
;(process as any).enablePromiseAPI = true
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
if (process.platform === 'win32' && !('HOME' in process.env)) {
|
||||
process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,12 @@ body {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn {
|
||||
& > svg {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.form-line {
|
||||
display: flex;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.2);
|
||||
|
@@ -176,7 +176,7 @@ export async function loadPlugins (foundPlugins: PluginInfo[], progress: Progres
|
||||
pluginModule['bootstrap'] = packageModule.bootstrap
|
||||
plugins.push(pluginModule)
|
||||
console.timeEnd(label)
|
||||
await (new Promise(x => setTimeout(x, 50)))
|
||||
await new Promise(x => setTimeout(x, 50))
|
||||
} catch (error) {
|
||||
console.error(`Could not load ${foundPlugin.name}:`, error)
|
||||
}
|
||||
|
163
app/yarn.lock
163
app/yarn.lock
@@ -58,13 +58,6 @@
|
||||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
"@terminus-term/windows-process-tree@^0.2.4":
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@terminus-term/windows-process-tree/-/windows-process-tree-0.2.4.tgz#558f33d5afd934b070aec78da2529fc4042cf90d"
|
||||
integrity sha512-FbquNhrFoe9EBwVITV9bqd/wukJLJSVI2pAzvM8dBvPP3/ErTiavZWU0W/J5av61SavJFDMkSiYVYL5NJe30zg==
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
|
||||
"@types/mz@0.0.32":
|
||||
version "0.0.32"
|
||||
resolved "https://registry.yarnpkg.com/@types/mz/-/mz-0.0.32.tgz#e8248b4e41424c052edc1725dd33650c313a3659"
|
||||
@@ -607,17 +600,6 @@ cross-spawn@^5.0.1:
|
||||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^6.0.0:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
||||
dependencies:
|
||||
nice-try "^1.0.4"
|
||||
path-key "^2.0.1"
|
||||
semver "^5.5.0"
|
||||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
crypto-random-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
|
||||
@@ -900,19 +882,6 @@ execa@^0.7.0:
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
|
||||
dependencies:
|
||||
cross-spawn "^6.0.0"
|
||||
get-stream "^4.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
@@ -975,10 +944,10 @@ flush-write-stream@^1.0.0:
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^2.3.6"
|
||||
|
||||
fontmanager-redux@0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fontmanager-redux/-/fontmanager-redux-0.3.2.tgz#e5c8d8dc8fda98629eaef4201a27df9e56a122f4"
|
||||
integrity sha512-NWmTbYfDijrx8qLJ2+O2VgYKhdfsMy/ec+Qf2DGxoLJDZHaRhBKd2Eufh4fFmfJUAwhzrkIgbKJsNT/IYJDbaA==
|
||||
fontmanager-redux@0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/fontmanager-redux/-/fontmanager-redux-0.3.3.tgz#39f3493332d1694ef3bd1652ee11d66ae3e4f495"
|
||||
integrity sha512-n7bz3J+8gHn1+bEsIwdNlZ+wYsof3JPijHW/HQ+0oYA/zVTAuryXYgBrIKboNymJmYnabACoLB0p4tv/vMPGMA==
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
@@ -1332,11 +1301,6 @@ invert-kv@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
|
||||
|
||||
invert-kv@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
|
||||
integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
|
||||
|
||||
ip-regex@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
|
||||
@@ -1503,10 +1467,10 @@ keyboardevents-areequal@^0.2.1:
|
||||
resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194"
|
||||
integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==
|
||||
|
||||
keytar@^4.7.0:
|
||||
version "4.11.0"
|
||||
resolved "https://registry.yarnpkg.com/keytar/-/keytar-4.11.0.tgz#891569045b287a0dabe69320e2381e059b02363f"
|
||||
integrity sha512-cGn2xd4NY0yCBrU5zQ/lwIagP1UBOhUEemi6iSJU2gshN1RHkxHekSdLUji9IWNo5B1Va/iwXXWzGD2p8ziqfQ==
|
||||
keytar@4.13.0:
|
||||
version "4.13.0"
|
||||
resolved "https://registry.yarnpkg.com/keytar/-/keytar-4.13.0.tgz#f3484988e87e692958ce901a36c850422093def0"
|
||||
integrity sha512-qdyZ3XDuv11ANDXJ+shsmc+j/h5BHPDSn33MwkUMDg2EA++xEBleNkghr3Jg95cqVx5WgDYD8V/m3Q0y7kwQ2w==
|
||||
dependencies:
|
||||
nan "2.14.0"
|
||||
prebuild-install "5.3.0"
|
||||
@@ -1535,13 +1499,6 @@ lcid@^1.0.0:
|
||||
dependencies:
|
||||
invert-kv "^1.0.0"
|
||||
|
||||
lcid@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
|
||||
integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
|
||||
dependencies:
|
||||
invert-kv "^2.0.0"
|
||||
|
||||
libcipm@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-3.0.3.tgz#2e764effe0b90d458790dab3165794c804075ed3"
|
||||
@@ -1801,13 +1758,6 @@ make-fetch-happen@^4.0.1:
|
||||
socks-proxy-agent "^4.0.0"
|
||||
ssri "^6.0.0"
|
||||
|
||||
map-age-cleaner@^0.1.1:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
|
||||
integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
|
||||
dependencies:
|
||||
p-defer "^1.0.0"
|
||||
|
||||
meant@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d"
|
||||
@@ -1820,15 +1770,6 @@ mem@^1.1.0:
|
||||
dependencies:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
mem@^4.0.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
|
||||
integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
|
||||
dependencies:
|
||||
map-age-cleaner "^0.1.1"
|
||||
mimic-fn "^2.0.0"
|
||||
p-is-promise "^2.0.0"
|
||||
|
||||
mime-db@1.40.0:
|
||||
version "1.40.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
|
||||
@@ -1846,11 +1787,6 @@ mimic-fn@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
||||
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
|
||||
|
||||
mimic-fn@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
mimic-response@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
|
||||
@@ -1952,7 +1888,7 @@ mz@^2.7.0:
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nan@2.14.0, nan@^2.13.2:
|
||||
nan@2.14.0, nan@^2.13.2, nan@^2.14.0:
|
||||
version "2.14.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
|
||||
@@ -1962,22 +1898,17 @@ napi-build-utils@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508"
|
||||
integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==
|
||||
|
||||
ngx-toastr@^10.0.4:
|
||||
version "10.0.4"
|
||||
resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-10.0.4.tgz#cbc61b8d67d748194ea7a28542b01e39bf1fc6c2"
|
||||
integrity sha512-iN+zr2Msae5wV334c1dytRhSYNdUz467jwv1NE91lMmllsMkpUzZlu8VdFCeTFt+/R4TWzz19xBRqhpp+OAuVA==
|
||||
ngx-toastr@^10.1.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-10.1.0.tgz#df6e578ebac1348e68d24b11d243653a401d17e6"
|
||||
integrity sha512-LXGL8jKIm0SGklkXytNKbR6VrF94all35SaUfgd1gOUzgllTW2ldqORDZlgIaiMB3Dcybaald8p3boEHvfjEIQ==
|
||||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
node-abi@^2.7.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.9.0.tgz#ae4075b298dab2d92dd1e22c48ccc7ffd7f06200"
|
||||
integrity sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA==
|
||||
node-abi@^2.11.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.11.0.tgz#b7dce18815057544a049be5ae75cd1fdc2e9ea59"
|
||||
integrity sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==
|
||||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
@@ -2025,12 +1956,12 @@ node-gyp@^4.0.0:
|
||||
tar "^4.4.8"
|
||||
which "1"
|
||||
|
||||
node-pty@^0.9.0-beta18:
|
||||
version "0.9.0-beta18"
|
||||
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.9.0-beta18.tgz#d81c1ed96ee2727043abd5ac6666250149c1b606"
|
||||
integrity sha512-j4E8RYda9cqm+2cGxaAxDlpEmPpuS0dfCuZII8VPRTw6p5gRJRwPJo9oL//YKdtaasRFfRy0/mUaNj8ft3FQVg==
|
||||
node-pty@^0.9.0-beta22:
|
||||
version "0.9.0-beta22"
|
||||
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.9.0-beta22.tgz#5c26bbad8ccebaf887309f9511b40c8e22465459"
|
||||
integrity sha512-ASvZMaSXVT0ntpAw+nEXjjWplgBKwddjkJ4X0+aDNbTsqSjrNxWvArVdrlk8c7dC5D5tKCBzWtxJuM1a2q8baw==
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
nan "^2.14.0"
|
||||
|
||||
noop-logger@^0.1.1:
|
||||
version "0.1.1"
|
||||
@@ -2166,7 +2097,7 @@ npm-user-validate@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951"
|
||||
integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE=
|
||||
|
||||
npm@~6.9.0:
|
||||
npm@6.9.0:
|
||||
version "6.9.0"
|
||||
resolved "https://registry.yarnpkg.com/npm/-/npm-6.9.0.tgz#5296720486814a64a7fb082de00c4b5cfd11211f"
|
||||
integrity sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==
|
||||
@@ -2331,15 +2262,6 @@ os-locale@^2.0.0:
|
||||
lcid "^1.0.0"
|
||||
mem "^1.1.0"
|
||||
|
||||
os-locale@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
|
||||
dependencies:
|
||||
execa "^1.0.0"
|
||||
lcid "^2.0.0"
|
||||
mem "^4.0.0"
|
||||
|
||||
os-tmpdir@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||
@@ -2353,21 +2275,11 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5:
|
||||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.0"
|
||||
|
||||
p-defer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
||||
|
||||
p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
||||
|
||||
p-is-promise@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
|
||||
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
|
||||
|
||||
p-limit@^1.1.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
|
||||
@@ -2478,7 +2390,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
|
||||
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
|
||||
|
||||
path-key@^2.0.0, path-key@^2.0.1:
|
||||
path-key@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||
@@ -3477,6 +3389,13 @@ windows-native-registry@^1.0.14:
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
|
||||
windows-process-tree@^0.2.4:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.2.4.tgz#747af587b54cc6c996f2be0836cc8a8fd0dc038f"
|
||||
integrity sha512-9gag9AHm3Iin/4YC1EwoIfZlqW/rG2eV7rJZ4Fy5NnAMGdewmnwsie5Rz+CJo2vSolqzzfw7hPeu3oOdniNejg==
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
|
||||
windows-swca@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/windows-swca/-/windows-swca-2.0.2.tgz#66807012f73f5d3c0f0cb49bfa61be297aaabb50"
|
||||
@@ -3552,10 +3471,10 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
|
||||
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
|
||||
|
||||
yargs-parser@^13.1.0:
|
||||
version "13.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.0.tgz#7016b6dd03e28e1418a510e258be4bff5a31138f"
|
||||
integrity sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==
|
||||
yargs-parser@^13.1.1:
|
||||
version "13.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
|
||||
integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
|
||||
dependencies:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
@@ -3585,22 +3504,22 @@ yargs@^11.0.0:
|
||||
y18n "^3.2.1"
|
||||
yargs-parser "^9.0.2"
|
||||
|
||||
yargs@^13.2.4:
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
|
||||
integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
|
||||
yargs@^14.0.0:
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066"
|
||||
integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==
|
||||
dependencies:
|
||||
cliui "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
find-up "^3.0.0"
|
||||
get-caller-file "^2.0.1"
|
||||
os-locale "^3.1.0"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^2.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^3.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^13.1.0"
|
||||
yargs-parser "^13.1.1"
|
||||
|
||||
zone.js@^0.8.29:
|
||||
version "0.8.29"
|
||||
|
@@ -1,207 +0,0 @@
|
||||
trigger:
|
||||
tags:
|
||||
include:
|
||||
- v*
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
|
||||
variables:
|
||||
- group: Vars
|
||||
|
||||
jobs:
|
||||
- job: Windows
|
||||
pool:
|
||||
vmImage: 'vs2017-win2016'
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- script: yarn --network-timeout 100000
|
||||
displayName: 'Install dependencies'
|
||||
|
||||
- script: node scripts/build-native.js
|
||||
displayName: 'Rebuild native dependencies'
|
||||
|
||||
- script: yarn run build
|
||||
displayName: 'Build'
|
||||
|
||||
- script: node scripts/prepackage-plugins.js
|
||||
displayName: 'Prepackage plugins'
|
||||
|
||||
- script: node scripts/build-windows.js
|
||||
displayName: 'Package'
|
||||
env:
|
||||
WIN_CSC_LINK: $(WIN_CSC_LINK)
|
||||
WIN_CSC_KEY_PASSWORD: $(WIN_CSC_KEY_PASSWORD)
|
||||
BT_TOKEN: $(BT_TOKEN)
|
||||
GH_TOKEN: $(GH_TOKEN)
|
||||
DEBUG: electron-builder
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist\\*-setup.exe'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Windows - Installer
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist\\*-portable.exe'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Windows - Portable build
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- job: Linux
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- script: yarn
|
||||
displayName: 'Install dependencies'
|
||||
|
||||
- script: node scripts/build-native.js
|
||||
displayName: 'Rebuild native dependencies'
|
||||
|
||||
- script: yarn run build
|
||||
displayName: 'Build'
|
||||
|
||||
- script: node scripts/prepackage-plugins.js
|
||||
displayName: 'Prepackage plugins'
|
||||
|
||||
- script: node scripts/build-linux.js
|
||||
displayName: 'Package'
|
||||
env:
|
||||
BT_TOKEN: $(BT_TOKEN)
|
||||
GH_TOKEN: $(GH_TOKEN)
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.deb'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Linux - DEB
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.rpm'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Linux - RPM
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.snap'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Linux - Snap
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.tar.gz'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: Linux - tar.gz
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- job: macOS
|
||||
pool:
|
||||
vmImage: 'macOS-10.14'
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- script: yarn
|
||||
displayName: 'Install dependencies'
|
||||
|
||||
- script: node scripts/build-native.js
|
||||
displayName: 'Rebuild native dependencies'
|
||||
|
||||
- script: yarn run build
|
||||
displayName: 'Build'
|
||||
|
||||
- script: node scripts/prepackage-plugins.js
|
||||
displayName: 'Prepackage plugins'
|
||||
|
||||
- script: node scripts/build-macos.js
|
||||
displayName: 'Package'
|
||||
env:
|
||||
CSC_LINK: $(CSC_LINK)
|
||||
CSC_KEY_PASSWORD: $(CSC_KEY_PASSWORD)
|
||||
BT_TOKEN: $(BT_TOKEN)
|
||||
GH_TOKEN: $(GH_TOKEN)
|
||||
APPSTORE_USERNAME: $(APPSTORE_USERNAME)
|
||||
APPSTORE_PASSWORD: $(APPSTORE_PASSWORD)
|
||||
DEBUG: electron-builder
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.dmg'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: macOS - DMG
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
||||
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: 'dist/*.zip'
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
flattenFolders: true
|
||||
cleanTargetFolder: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
artifactName: macOS - app.zip
|
||||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
|
@@ -5,9 +5,8 @@ const path = require('path')
|
||||
const notarizer = require('electron-notarize')
|
||||
|
||||
module.exports = async function (params) {
|
||||
console.log('env: ', process.env)
|
||||
// notarize the app on Mac OS only.
|
||||
if (process.platform !== 'darwin' || process.env.BUILD_SOURCEBRANCH !== 'refs/heads/master' || process.env.TRAVIS_BRANCH && !process.env.TRAVIS_PULL_REQUEST_BRANCH) {
|
||||
if (process.platform !== 'darwin' || process.env.GITHUB_REF !== 'refs/heads/master' || process.env.GITHUB_REF && !process.env.GITHUB_REF.startsWith('refs/tags/')) {
|
||||
return
|
||||
}
|
||||
console.log('afterSign hook triggered', params)
|
||||
|
@@ -8,5 +8,7 @@
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
49
package.json
49
package.json
@@ -1,32 +1,31 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.9.0",
|
||||
"@fortawesome/fontawesome-free": "^5.10.2",
|
||||
"@types/electron-config": "^3.2.2",
|
||||
"@types/electron-debug": "^2.1.0",
|
||||
"@types/fs-promise": "1.0.3",
|
||||
"@types/js-yaml": "^3.12.1",
|
||||
"@types/node": "^12.0.10",
|
||||
"@types/node": "12.7.2",
|
||||
"@types/webpack-env": "1.13.9",
|
||||
"@typescript-eslint/eslint-plugin": "^1.11.0",
|
||||
"@typescript-eslint/parser": "^1.11.0",
|
||||
"app-builder-lib": "^21.0.6",
|
||||
"@typescript-eslint/eslint-plugin": "^1.13.0",
|
||||
"@typescript-eslint/parser": "^1.13.0",
|
||||
"apply-loader": "2.0.0",
|
||||
"awesome-typescript-loader": "^5.0.0",
|
||||
"core-js": "^3.1.4",
|
||||
"core-js": "^3.2.0",
|
||||
"cross-env": "5.2.0",
|
||||
"css-loader": "3.0.0",
|
||||
"electron": "^5.0.5",
|
||||
"electron-builder": "^21.0.7",
|
||||
"css-loader": "3.2.0",
|
||||
"electron": "^6.0.5",
|
||||
"electron-builder": "^21.2.0",
|
||||
"electron-installer-snap": "^4.0.0",
|
||||
"electron-notarize": "^0.1.1",
|
||||
"electron-rebuild": "^1.8.5",
|
||||
"eslint": "^5.16.0",
|
||||
"file-loader": "^4.0.0",
|
||||
"graceful-fs": "^4.1.15",
|
||||
"file-loader": "^4.1.0",
|
||||
"graceful-fs": "^4.2.2",
|
||||
"html-loader": "0.5.5",
|
||||
"json-loader": "0.5.7",
|
||||
"node-abi": "^2.9.0",
|
||||
"node-gyp": "^5.0.2",
|
||||
"node-abi": "^2.11.0",
|
||||
"node-gyp": "^5.0.3",
|
||||
"node-sass": "^4.12.0",
|
||||
"npmlog": "4.1.2",
|
||||
"npx": "^10.2.0",
|
||||
@@ -36,21 +35,21 @@
|
||||
"pug-loader": "^2.4.0",
|
||||
"pug-static-loader": "2.0.0",
|
||||
"raven-js": "3.27.2",
|
||||
"raw-loader": "3.0.0",
|
||||
"sass-loader": "^7.0.1",
|
||||
"raw-loader": "3.1.0",
|
||||
"sass-loader": "^7.3.1",
|
||||
"shelljs": "0.8.3",
|
||||
"source-code-pro": "^2.30.1",
|
||||
"source-sans-pro": "2.45.0",
|
||||
"style-loader": "^0.23.1",
|
||||
"style-loader": "^1.0.0",
|
||||
"svg-inline-loader": "^0.8.0",
|
||||
"to-string-loader": "1.1.5",
|
||||
"tslib": "^1.10.0",
|
||||
"typedoc": "^0.14.2",
|
||||
"typescript": "^3.5.2",
|
||||
"url-loader": "^2.0.0",
|
||||
"typedoc": "^0.15.0",
|
||||
"typescript": "^3.5.3",
|
||||
"url-loader": "^2.1.0",
|
||||
"val-loader": "1.1.1",
|
||||
"webpack": "^4.35.2",
|
||||
"webpack-cli": "^3.3.5",
|
||||
"webpack": "^4.39.3",
|
||||
"webpack-cli": "^3.3.6",
|
||||
"yaml-loader": "0.5.0"
|
||||
},
|
||||
"resolutions": {
|
||||
@@ -80,11 +79,6 @@
|
||||
"installerIcon": "./build/windows/icon.ico"
|
||||
},
|
||||
"publish": [
|
||||
{
|
||||
"provider": "bintray",
|
||||
"token": "d993c4faa708a4cba84fa3a8e822457e7298d75c",
|
||||
"component": "main"
|
||||
},
|
||||
{
|
||||
"provider": "github"
|
||||
}
|
||||
@@ -98,6 +92,7 @@
|
||||
"artifactName": "terminus-${version}-macos.${ext}",
|
||||
"hardenedRuntime": true,
|
||||
"entitlements": "./build/mac/entitlements.plist",
|
||||
"entitlementsInherit": "./build/mac/entitlements.plist",
|
||||
"extendInfo": {
|
||||
"NSRequiresAquaSystemAppearance": false
|
||||
}
|
||||
@@ -141,6 +136,6 @@
|
||||
},
|
||||
"repository": "eugeny/terminus",
|
||||
"dependencies": {
|
||||
"eslint-plugin-import": "^2.18.0"
|
||||
"eslint-plugin-import": "^2.18.2"
|
||||
}
|
||||
}
|
||||
|
@@ -2,11 +2,12 @@
|
||||
const builder = require('electron-builder').build
|
||||
const vars = require('./vars')
|
||||
|
||||
const isTag = (process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
|
||||
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
|
||||
const isCI = !!process.env.GITHUB_REF
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
linux: ['snap', 'deb', 'rpm', 'tar.gz'],
|
||||
linux: ['deb', 'tar.gz', 'rpm'],
|
||||
config: {
|
||||
extraMetadata: {
|
||||
version: vars.version,
|
||||
|
@@ -2,7 +2,8 @@
|
||||
const builder = require('electron-builder').build
|
||||
const vars = require('./vars')
|
||||
|
||||
const isTag = (process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
|
||||
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
|
||||
const isCI = !!process.env.GITHUB_REF
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
|
@@ -3,21 +3,24 @@ const rebuild = require('electron-rebuild').default
|
||||
const path = require('path')
|
||||
const vars = require('./vars')
|
||||
|
||||
lifecycles = []
|
||||
let lifecycles = []
|
||||
for (let dir of ['app', 'terminus-core', 'terminus-ssh', 'terminus-terminal']) {
|
||||
build = rebuild({
|
||||
buildPath: path.resolve(__dirname, '../' + dir),
|
||||
electronVersion: vars.electronVersion,
|
||||
force: true,
|
||||
})
|
||||
build.catch(() => process.exit(1))
|
||||
lifecycles.push([build.lifecycle, dir])
|
||||
const build = rebuild({
|
||||
buildPath: path.resolve(__dirname, '../' + dir),
|
||||
electronVersion: vars.electronVersion,
|
||||
force: true,
|
||||
})
|
||||
build.catch(e => {
|
||||
console.error(e)
|
||||
process.exit(1)
|
||||
})
|
||||
lifecycles.push([build.lifecycle, dir])
|
||||
}
|
||||
|
||||
console.info('Building against Electron', vars.electronVersion)
|
||||
|
||||
for (let [lc, dir] of lifecycles) {
|
||||
lc.on('module-found', name => {
|
||||
console.info('Rebuilding', dir + '/' + name)
|
||||
})
|
||||
lc.on('module-found', name => {
|
||||
console.info('Rebuilding', dir + '/' + name)
|
||||
})
|
||||
}
|
||||
|
@@ -2,7 +2,8 @@
|
||||
const builder = require('electron-builder').build
|
||||
const vars = require('./vars')
|
||||
|
||||
const isTag = (process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
|
||||
const isTag = (process.env.GITHUB_REF || process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
|
||||
const isCI = !!process.env.GITHUB_REF
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
|
@@ -1,11 +1,10 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -49,7 +48,4 @@ module.exports = {
|
||||
/^@ng-bootstrap/,
|
||||
/^terminus-/,
|
||||
],
|
||||
plugins: [
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
],
|
||||
}
|
||||
|
@@ -6,9 +6,7 @@ title-bar(
|
||||
.content(
|
||||
[class.tabs-on-top]='config.store.appearance.tabsLocation == "top"'
|
||||
)
|
||||
.tab-bar(
|
||||
*ngIf='!hostApp.isFullScreen',
|
||||
)
|
||||
.tab-bar
|
||||
.inset.background(*ngIf='hostApp.platform == Platform.macOS && config.store.appearance.frame == "thin" && config.store.appearance.tabsLocation == "top"')
|
||||
.tabs(
|
||||
dnd-sortable-container,
|
||||
@@ -77,7 +75,7 @@ title-bar(
|
||||
|
||||
button.btn.btn-secondary.btn-tab-bar.btn-update(
|
||||
*ngIf='updatesAvailable',
|
||||
title='Update available',
|
||||
title='Update available - Click to install',
|
||||
(click)='updateApp()',
|
||||
[innerHTML]='sanitizeIcon(updateIcon)'
|
||||
)
|
||||
|
@@ -128,8 +128,7 @@ export class AppRootComponent {
|
||||
})
|
||||
|
||||
this.hostApp.windowCloseRequest$.subscribe(async () => {
|
||||
await this.app.closeAllTabs()
|
||||
this.hostApp.closeWindow()
|
||||
await this.app.closeAllTabs() && this.hostApp.closeWindow()
|
||||
})
|
||||
|
||||
if (window['safeModeReason']) {
|
||||
@@ -218,8 +217,18 @@ export class AppRootComponent {
|
||||
return false
|
||||
}
|
||||
|
||||
updateApp () {
|
||||
this.updater.update()
|
||||
async updateApp () {
|
||||
if ((await this.electron.showMessageBox(
|
||||
this.hostApp.getWindow(),
|
||||
{
|
||||
type: 'warning',
|
||||
message: 'Installing the update will close all tabs and restart Terminus.',
|
||||
buttons: ['Cancel', 'Update'],
|
||||
defaultId: 1,
|
||||
}
|
||||
)).response === 1) {
|
||||
this.updater.update()
|
||||
}
|
||||
}
|
||||
|
||||
onTabDragStart () {
|
||||
|
@@ -147,13 +147,15 @@ export abstract class BaseTabComponent {
|
||||
/**
|
||||
* Called before the tab is closed
|
||||
*/
|
||||
destroy (): void {
|
||||
destroy (skipDestroyedEvent = false): void {
|
||||
this.focused.complete()
|
||||
this.blurred.complete()
|
||||
this.titleChange.complete()
|
||||
this.progress.complete()
|
||||
this.recoveryStateChangedHint.complete()
|
||||
this.destroyed.next()
|
||||
if (!skipDestroyedEvent) {
|
||||
this.destroyed.next()
|
||||
}
|
||||
this.destroyed.complete()
|
||||
}
|
||||
}
|
||||
|
@@ -10,7 +10,7 @@ import { AppService } from '../services/app.service'
|
||||
import { HostAppService, Platform } from '../services/hostApp.service'
|
||||
|
||||
/** @hidden */
|
||||
export interface ISortableComponent {
|
||||
export interface SortableComponentProxy {
|
||||
setDragHandle (_: HTMLElement)
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ export class TabHeaderComponent {
|
||||
private hostApp: HostAppService,
|
||||
private ngbModal: NgbModal,
|
||||
private hotkeys: HotkeysService,
|
||||
@Inject(SortableComponent) private parentDraggable: ISortableComponent,
|
||||
@Inject(SortableComponent) private parentDraggable: SortableComponentProxy,
|
||||
@Optional() @Inject(TabContextMenuItemProvider) protected contextMenuProviders: TabContextMenuItemProvider[],
|
||||
) {
|
||||
this.hotkeys.matchedHotkey.subscribe((hotkey) => {
|
||||
|
@@ -12,7 +12,6 @@ export class WindowControlsComponent {
|
||||
constructor (public hostApp: HostAppService, public app: AppService) { }
|
||||
|
||||
async closeWindow () {
|
||||
await this.app.closeAllTabs()
|
||||
this.hostApp.closeWindow()
|
||||
await this.app.closeAllTabs() && this.hostApp.closeWindow()
|
||||
}
|
||||
}
|
||||
|
@@ -14,3 +14,4 @@ enableAnalytics: true
|
||||
enableWelcomeTab: true
|
||||
electronFlags:
|
||||
- ['force_discrete_gpu', '0']
|
||||
enableAutomaticUpdates: true
|
||||
|
@@ -1,8 +1,11 @@
|
||||
|
||||
import { Observable, Subject, AsyncSubject } from 'rxjs'
|
||||
import { takeUntil } from 'rxjs/operators'
|
||||
import { Injectable } from '@angular/core'
|
||||
|
||||
import { BaseTabComponent } from '../components/baseTab.component'
|
||||
import { SplitTabComponent } from '../components/splitTab.component'
|
||||
|
||||
import { ConfigService } from './config.service'
|
||||
import { HostAppService } from './hostApp.service'
|
||||
import { TabRecoveryService } from './tabRecovery.service'
|
||||
@@ -67,18 +70,19 @@ export class AppService {
|
||||
private tabRecovery: TabRecoveryService,
|
||||
private tabsService: TabsService,
|
||||
) {
|
||||
this.tabRecovery.recoverTabs().then(tabs => {
|
||||
for (const tab of tabs) {
|
||||
this.openNewTabRaw(tab.type, tab.options)
|
||||
}
|
||||
|
||||
this.tabsChanged$.subscribe(() => {
|
||||
tabRecovery.saveTabs(this.tabs)
|
||||
if (hostApp.getWindow().id === 1) {
|
||||
this.tabRecovery.recoverTabs().then(tabs => {
|
||||
for (const tab of tabs) {
|
||||
this.openNewTabRaw(tab.type, tab.options)
|
||||
}
|
||||
this.tabsChanged$.subscribe(() => {
|
||||
tabRecovery.saveTabs(this.tabs)
|
||||
})
|
||||
setInterval(() => {
|
||||
tabRecovery.saveTabs(this.tabs)
|
||||
}, 30000)
|
||||
})
|
||||
setInterval(() => {
|
||||
tabRecovery.saveTabs(this.tabs)
|
||||
}, 30000)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
addTabRaw (tab: BaseTabComponent) {
|
||||
@@ -87,9 +91,11 @@ export class AppService {
|
||||
this.tabsChanged.next()
|
||||
this.tabOpened.next(tab)
|
||||
|
||||
tab.recoveryStateChangedHint$.subscribe(() => {
|
||||
this.tabRecovery.saveTabs(this.tabs)
|
||||
})
|
||||
if (this.hostApp.getWindow().id === 1) {
|
||||
tab.recoveryStateChangedHint$.subscribe(() => {
|
||||
this.tabRecovery.saveTabs(this.tabs)
|
||||
})
|
||||
}
|
||||
|
||||
tab.titleChange$.subscribe(title => {
|
||||
if (tab === this._activeTab) {
|
||||
@@ -206,15 +212,19 @@ export class AppService {
|
||||
}
|
||||
}
|
||||
|
||||
async closeAllTabs () {
|
||||
/**
|
||||
* Attempts to close all tabs, returns false if one of the tabs blocked closure
|
||||
*/
|
||||
async closeAllTabs (): Promise<boolean> {
|
||||
for (const tab of this.tabs) {
|
||||
if (!await tab.canClose()) {
|
||||
return
|
||||
return false
|
||||
}
|
||||
}
|
||||
for (const tab of this.tabs) {
|
||||
tab.destroy()
|
||||
tab.destroy(true)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
|
@@ -71,8 +71,8 @@ export class ConfigProxy {
|
||||
}
|
||||
}
|
||||
|
||||
getValue (_key: string): any { }
|
||||
setValue (_key: string, _value: any) { }
|
||||
getValue (_key: string): any { } // eslint-disable-line @typescript-eslint/no-empty-function
|
||||
setValue (_key: string, _value: any) { } // eslint-disable-line @typescript-eslint/no-empty-function
|
||||
}
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
|
@@ -30,8 +30,8 @@ export class DockingService {
|
||||
}
|
||||
|
||||
const newBounds: Bounds = { x: 0, y: 0, width: 0, height: 0 }
|
||||
|
||||
const fill = this.config.store.appearance.dockFill <= 1 ? this.config.store.appearance.dockFill : 1;
|
||||
|
||||
const fill = this.config.store.appearance.dockFill <= 1 ? this.config.store.appearance.dockFill : 1
|
||||
const [minWidth, minHeight] = this.hostApp.getWindow().getMinimumSize()
|
||||
|
||||
if (dockSide === 'left' || dockSide === 'right') {
|
||||
@@ -64,15 +64,15 @@ export class DockingService {
|
||||
}
|
||||
|
||||
getScreens () {
|
||||
const primaryDisplayID = this.electron.screen.getPrimaryDisplay().id;
|
||||
return this.electron.screen.getAllDisplays().sort((a,b) => (
|
||||
const primaryDisplayID = this.electron.screen.getPrimaryDisplay().id
|
||||
return this.electron.screen.getAllDisplays().sort((a, b) =>
|
||||
a.bounds.x === b.bounds.x ? a.bounds.y - b.bounds.y : a.bounds.x - b.bounds.x
|
||||
)).map((display,index) => {
|
||||
).map((display,index) => {
|
||||
return {
|
||||
id: display.id,
|
||||
name: display.id === primaryDisplayID ? 'Primary Display' : `Display ${index +1}`,
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
private repositionWindow () {
|
||||
|
@@ -56,10 +56,6 @@ export class ElectronService {
|
||||
browserWindow: Electron.BrowserWindow,
|
||||
options: Electron.MessageBoxOptions
|
||||
): Promise<MessageBoxResponse> {
|
||||
return new Promise(resolve => {
|
||||
this.dialog.showMessageBox(browserWindow, options, (response, checkboxChecked) => {
|
||||
resolve({ response, checkboxChecked })
|
||||
})
|
||||
})
|
||||
return this.dialog.showMessageBox(browserWindow, options)
|
||||
}
|
||||
}
|
||||
|
@@ -147,6 +147,8 @@ export class HostAppService {
|
||||
this.cliPaste.next(text)
|
||||
} else if (op === 'profile') {
|
||||
this.cliOpenProfile.next(argv.profileName)
|
||||
} else if (op === undefined) {
|
||||
this.newWindow()
|
||||
} else {
|
||||
this.secondInstance.next()
|
||||
}
|
||||
|
@@ -1,8 +1,13 @@
|
||||
import axios from 'axios'
|
||||
import * as fs from 'fs'
|
||||
import os from 'os'
|
||||
|
||||
import { spawn } from 'mz/child_process'
|
||||
|
||||
import { Injectable } from '@angular/core'
|
||||
import { Logger, LogService } from './log.service'
|
||||
import { ElectronService } from './electron.service'
|
||||
import { ConfigService } from './config.service'
|
||||
|
||||
const UPDATES_URL = 'https://api.github.com/repos/eugeny/terminus/releases/latest'
|
||||
|
||||
@@ -18,11 +23,14 @@ export class UpdaterService {
|
||||
constructor (
|
||||
log: LogService,
|
||||
private electron: ElectronService,
|
||||
config: ConfigService,
|
||||
) {
|
||||
this.logger = log.create('updater')
|
||||
|
||||
this.autoUpdater = electron.remote.require('electron-updater').autoUpdater
|
||||
|
||||
this.autoUpdater.autoInstallOnAppQuit = !!config.store.enableAutomaticUpdates
|
||||
|
||||
this.autoUpdater.on('update-available', () => {
|
||||
this.logger.info('Update available')
|
||||
})
|
||||
@@ -48,7 +56,7 @@ export class UpdaterService {
|
||||
|
||||
async check (): Promise<boolean> {
|
||||
if (!this.electronUpdaterAvailable) {
|
||||
this.logger.debug('Checking for updates')
|
||||
this.logger.debug('Checking for updates through fallback method.')
|
||||
const response = await axios.get(UPDATES_URL)
|
||||
const data = response.data
|
||||
const version = data.tag_name.substring(1)
|
||||
@@ -67,8 +75,21 @@ export class UpdaterService {
|
||||
if (!this.electronUpdaterAvailable) {
|
||||
this.electron.shell.openExternal(this.updateURL)
|
||||
} else {
|
||||
await this.downloaded
|
||||
this.autoUpdater.quitAndInstall()
|
||||
if (process.platform === 'win32') {
|
||||
let downloadpath = await this.autoUpdater.downloadUpdate()
|
||||
fs.exists(downloadpath[0], (exists) => {
|
||||
if (exists) {
|
||||
fs.copyFile(downloadpath[0], os.tmpdir() + 'terminus-installer-temp.exe', (err) => {
|
||||
if (!err) {
|
||||
spawn(os.tmpdir() + 'terminus-installer-temp.exe', ['--force-run'], { detached: true, stdio: 'ignore' })
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
await this.downloaded
|
||||
this.autoUpdater.quitAndInstall(false, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -138,7 +138,7 @@ app-root {
|
||||
background: transparent;
|
||||
line-height: 42px;
|
||||
|
||||
svg {
|
||||
svg, path {
|
||||
fill: $black;
|
||||
fill-opacity: 0.75;
|
||||
}
|
||||
|
@@ -1,12 +1,10 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
mode: 'development',
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -59,7 +57,4 @@ module.exports = {
|
||||
/^@angular/,
|
||||
/^@ng-bootstrap/,
|
||||
],
|
||||
plugins: [
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
],
|
||||
}
|
||||
|
@@ -132,9 +132,9 @@ colorspace@1.1.x:
|
||||
text-hex "1.0.x"
|
||||
|
||||
core-js@^3.1.2:
|
||||
version "3.1.4"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07"
|
||||
integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.0.tgz#0a835fdf6aa677fff83a823a7b5276c9e7cebb76"
|
||||
integrity sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@@ -325,9 +325,9 @@ lodash.isequal@^4.5.0:
|
||||
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
|
||||
|
||||
lodash@^4.17.11:
|
||||
version "4.17.11"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
||||
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
||||
version "4.17.14"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
|
||||
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
|
||||
|
||||
logform@^2.1.1:
|
||||
version "2.1.2"
|
||||
|
@@ -1,11 +1,10 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -54,7 +53,4 @@ module.exports = {
|
||||
/^@ng-bootstrap/,
|
||||
/^terminus-/,
|
||||
],
|
||||
plugins: [
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
],
|
||||
}
|
||||
|
@@ -236,6 +236,12 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab')
|
||||
(ngModelChange)='config.save(); config.requestRestart()',
|
||||
)
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Automatic Updates
|
||||
.description Enable automatic installation of updates when they become available.
|
||||
toggle([(ngModel)]='config.store.enableAutomaticUpdates', (ngModelChange)='config.save()')
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Custom CSS
|
||||
|
@@ -70,12 +70,12 @@ export class SettingsTabComponent extends BaseTabComponent {
|
||||
onConfigChange()
|
||||
|
||||
const onScreenChange = () => {
|
||||
this.zone.run(() => this.screens = this.docking.getScreens());
|
||||
this.zone.run(() => this.screens = this.docking.getScreens())
|
||||
}
|
||||
|
||||
electron.screen.on('display-added', onScreenChange);
|
||||
electron.screen.on('display-removed', onScreenChange);
|
||||
electron.screen.on('display-metrics-changed', onScreenChange);
|
||||
electron.screen.on('display-added', onScreenChange)
|
||||
electron.screen.on('display-removed', onScreenChange)
|
||||
electron.screen.on('display-metrics-changed', onScreenChange)
|
||||
|
||||
hotkeys.getHotkeyDescriptions().then(descriptions => {
|
||||
this.hotkeyDescriptions = descriptions
|
||||
@@ -100,7 +100,7 @@ export class SettingsTabComponent extends BaseTabComponent {
|
||||
}
|
||||
|
||||
async getRecoveryToken (): Promise<any> {
|
||||
return { type: 'app:settings' }
|
||||
return null
|
||||
}
|
||||
|
||||
ngOnDestroy () {
|
||||
|
@@ -1,12 +1,10 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
mode: 'development',
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -56,7 +54,4 @@ module.exports = {
|
||||
/^@ng-bootstrap/,
|
||||
/^terminus-/,
|
||||
],
|
||||
plugins: [
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
],
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@ import { PasswordStorageService } from './passwordStorage.service'
|
||||
import { SSH2Stream } from 'ssh2-streams'
|
||||
|
||||
try {
|
||||
var windowsProcessTree = require('@terminus-term/windows-process-tree') // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
var windowsProcessTreeNative = require('windows-process-tree/build/Release/windows_process_tree.node') // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
} catch { }
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
@@ -132,13 +132,13 @@ export class SSHService {
|
||||
})
|
||||
|
||||
ssh.on('banner', banner => {
|
||||
log('Banner: ' + banner)
|
||||
log('Banner: \n' + banner)
|
||||
})
|
||||
|
||||
let agent: string = null
|
||||
if (this.hostApp.platform === Platform.Windows) {
|
||||
const pageantRunning = new Promise<boolean>(resolve => {
|
||||
windowsProcessTree.getProcessList(list => {
|
||||
windowsProcessTreeNative.getProcessList(list => { // eslint-disable-line block-scoped-var
|
||||
resolve(list.some(x => x.name === 'pageant.exe'))
|
||||
}, 0)
|
||||
})
|
||||
|
@@ -3,8 +3,8 @@ const path = require('path')
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -49,7 +49,7 @@ module.exports = {
|
||||
'keytar',
|
||||
'path',
|
||||
'ngx-toastr',
|
||||
'@terminus-term/windows-process-tree',
|
||||
'windows-process-tree/build/Release/windows_process_tree.node',
|
||||
/^rxjs/,
|
||||
/^@angular/,
|
||||
/^@ng-bootstrap/,
|
||||
|
@@ -36,6 +36,11 @@ bcrypt-pbkdf@^1.0.2:
|
||||
dependencies:
|
||||
tweetnacl "^0.14.3"
|
||||
|
||||
nan@^2.13.2:
|
||||
version "2.14.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
|
||||
|
||||
safer-buffer@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
@@ -51,9 +56,9 @@ ssh2-streams@^0.4.2, ssh2-streams@~0.4.4:
|
||||
streamsearch "~0.1.2"
|
||||
|
||||
ssh2@^0.8.2:
|
||||
version "0.8.4"
|
||||
resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-0.8.4.tgz#0a657d9371c1fe9f9e349bcff6144febee256aa6"
|
||||
integrity sha512-qztb9t4b34wJSiWVpeTMVVN/5KCuBoyctBc2BcSe/Uq4NRnF0gB16Iu5p72ILhdYATcMNwB5WppzPIEs/3wB8Q==
|
||||
version "0.8.5"
|
||||
resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-0.8.5.tgz#9144cdd6c104aa81b2b16ce647c109f4bd138b57"
|
||||
integrity sha512-TkvzxSYYUSQ8jb//HbHnJVui4fVEW7yu/zwBxwro/QaK2EGYtwB+8gdEChwHHuj142c5+250poMC74aJiwApPw==
|
||||
dependencies:
|
||||
ssh2-streams "~0.4.4"
|
||||
|
||||
@@ -66,3 +71,10 @@ tweetnacl@^0.14.3:
|
||||
version "0.14.5"
|
||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
||||
|
||||
windows-process-tree@^0.2.4:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.2.4.tgz#747af587b54cc6c996f2be0836cc8a8fd0dc038f"
|
||||
integrity sha512-9gag9AHm3Iin/4YC1EwoIfZlqW/rG2eV7rJZ4Fy5NnAMGdewmnwsie5Rz+CJo2vSolqzzfw7hPeu3oOdniNejg==
|
||||
dependencies:
|
||||
nan "^2.13.2"
|
||||
|
@@ -21,14 +21,14 @@
|
||||
"@types/mz": "0.0.32",
|
||||
"@types/slug": "^0.9.1",
|
||||
"dataurl": "0.1.0",
|
||||
"deep-equal": "1.0.1",
|
||||
"deep-equal": "1.1.0",
|
||||
"hterm-umdjs": "1.4.1",
|
||||
"mz": "^2.6.0",
|
||||
"ps-node": "^0.1.6",
|
||||
"runes": "^0.4.2",
|
||||
"slug": "^1.1.0",
|
||||
"uuid": "^3.3.2",
|
||||
"xterm": "3.15.0-beta67",
|
||||
"xterm": "3.15.0-beta98",
|
||||
"xterm-addon-fit": "^0.1.0-beta3",
|
||||
"xterm-addon-ligatures": "^0.1.0-beta-2",
|
||||
"xterm-addon-search": "^0.2.0-beta1",
|
||||
|
@@ -15,7 +15,7 @@ import { TerminalContextMenuItemProvider } from './contextMenuProvider'
|
||||
|
||||
|
||||
/** @hidden */
|
||||
export interface IToastrService {
|
||||
export interface ToastrServiceProxy {
|
||||
info (_: string)
|
||||
}
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
|
||||
protected sessions: SessionsService,
|
||||
protected electron: ElectronService,
|
||||
protected terminalContainersService: TerminalFrontendService,
|
||||
@Inject(ToastrService) protected toastr: IToastrService,
|
||||
@Inject(ToastrService) protected toastr: ToastrServiceProxy,
|
||||
protected log: LogService,
|
||||
@Optional() @Inject(TerminalDecorator) protected decorators: TerminalDecorator[],
|
||||
@Optional() @Inject(TerminalContextMenuItemProvider) protected contextMenuProviders: TerminalContextMenuItemProvider[],
|
||||
|
@@ -13,7 +13,7 @@ h3.mb-3 Appearance
|
||||
option(value='hterm') hterm
|
||||
option(value='xterm') xterm
|
||||
option(value='xterm-webgl') xterm (WebGL)
|
||||
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Font
|
||||
@@ -36,7 +36,7 @@ h3.mb-3 Appearance
|
||||
.header
|
||||
.title Enable font ligatures
|
||||
toggle(
|
||||
[(ngModel)]='config.store.terminal.ligatures',
|
||||
[(ngModel)]='config.store.terminal.ligatures',
|
||||
(ngModelChange)='config.save()',
|
||||
)
|
||||
|
||||
@@ -160,13 +160,13 @@ h3.mb-3 Appearance
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[1]') $
|
||||
span ls -l
|
||||
div
|
||||
span drwxr-xr-x 1 root
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[4]') directory
|
||||
span drwxr-xr-x 1 root
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[4]') directory 📁
|
||||
div
|
||||
span -rw-r--r-- 1 root file
|
||||
span -rw-r--r-- 1 root файл
|
||||
div
|
||||
span -rwxr-xr-x 1 root
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[2]') executable
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[2]') 実行可能ファイル
|
||||
div
|
||||
span -rwxr-xr-x 1 root
|
||||
span([style.color]='config.store.terminal.colorScheme.colors[6]') sym
|
||||
@@ -203,7 +203,7 @@ h3.mb-3 Appearance
|
||||
[value]='"colorScheme"'
|
||||
)
|
||||
| From color scheme
|
||||
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Cursor shape
|
||||
@@ -234,7 +234,7 @@ h3.mb-3 Appearance
|
||||
[value]='"underline"'
|
||||
)
|
||||
| ▁
|
||||
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Blink cursor
|
||||
@@ -243,3 +243,15 @@ h3.mb-3 Appearance
|
||||
[(ngModel)]='config.store.terminal.cursorBlink',
|
||||
(ngModelChange)='config.save()',
|
||||
)
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Fallback font
|
||||
.description A second font family used to display characters missing in the main font
|
||||
|
||||
input.form-control(
|
||||
type='text',
|
||||
[ngbTypeahead]='fontAutocomplete',
|
||||
[(ngModel)]='config.store.terminal.fallbackFont',
|
||||
(ngModelChange)='config.save()'
|
||||
)
|
||||
|
@@ -32,7 +32,11 @@ export class AppearanceSettingsTabComponent {
|
||||
async ngOnInit () {
|
||||
if (this.hostApp.platform === Platform.Windows || this.hostApp.platform === Platform.macOS) {
|
||||
const fonts = await new Promise<any[]>((resolve) => fontManager.findFonts({ monospace: true }, resolve))
|
||||
this.fonts = fonts.map(x => `${x.family} ${x.style}`.trim())
|
||||
if (this.hostApp.platform === Platform.Windows) {
|
||||
this.fonts = fonts.map(x => `${x.family} ${x.style}`.trim())
|
||||
} else {
|
||||
this.fonts = fonts.map(x => x.family.trim())
|
||||
}
|
||||
this.fonts.sort()
|
||||
}
|
||||
if (this.hostApp.platform === Platform.Linux) {
|
||||
@@ -101,6 +105,6 @@ export class AppearanceSettingsTabComponent {
|
||||
}
|
||||
|
||||
getPreviewFontFamily () {
|
||||
return getCSSFontFamily(this.config.store.terminal.font)
|
||||
return getCSSFontFamily(this.config.store)
|
||||
}
|
||||
}
|
||||
|
@@ -55,6 +55,16 @@ h3.mb-3 Shell
|
||||
button.btn.btn-secondary((click)='pickWorkingDirectory()')
|
||||
i.fas.fa-folder-open
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title Always Use Working Directory
|
||||
.description By default, new terminals will open where the previous terminal was working. Enabling this option will always launch new terminals in the working directory specified above.
|
||||
|
||||
toggle(
|
||||
[(ngModel)]='config.store.terminal.alwaysUseWorkingDirectory',
|
||||
(ngModelChange)='config.save()'
|
||||
)
|
||||
|
||||
.form-line.align-items-start
|
||||
.header
|
||||
.title Environment
|
||||
|
@@ -97,5 +97,6 @@ export class TerminalTabComponent extends BaseTerminalTabComponent {
|
||||
ngOnDestroy () {
|
||||
this.homeEndSubscription.unsubscribe()
|
||||
super.ngOnDestroy()
|
||||
this.session.destroy()
|
||||
}
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ export class TerminalConfigProvider extends ConfigProvider {
|
||||
frontend: 'xterm',
|
||||
autoOpen: false,
|
||||
fontSize: 14,
|
||||
fallbackFont: null,
|
||||
linePadding: 0,
|
||||
bell: 'off',
|
||||
bracketedPaste: false,
|
||||
@@ -27,6 +28,7 @@ export class TerminalConfigProvider extends ConfigProvider {
|
||||
copyOnSelect: false,
|
||||
scrollOnInput: true,
|
||||
workingDirectory: '',
|
||||
alwaysUseWorkingDirectory: false,
|
||||
altIsMeta: false,
|
||||
colorScheme: {
|
||||
__nonStructural: true,
|
||||
|
@@ -35,7 +35,9 @@ export class NewTabContextMenu extends TerminalContextMenuItemProvider {
|
||||
submenu: profiles.map(profile => ({
|
||||
label: profile.name,
|
||||
click: () => this.zone.run(async () => {
|
||||
this.terminalService.openTab(profile, await tab.session.getWorkingDirectory())
|
||||
const workingDirectory = this.config.store.terminal.alwaysUseWorkingDirectory === true ?
|
||||
this.config.store.terminal.workingDirectory : await tab.session.getWorkingDirectory()
|
||||
await this.terminalService.openTab(profile, workingDirectory)
|
||||
}),
|
||||
})),
|
||||
},
|
||||
|
@@ -60,7 +60,7 @@ export class HTermFrontend extends Frontend {
|
||||
this.configuredLinePadding = config.terminal.linePadding
|
||||
this.setFontSize()
|
||||
|
||||
preferenceManager.set('font-family', getCSSFontFamily(config.terminal.font))
|
||||
preferenceManager.set('font-family', getCSSFontFamily(config))
|
||||
preferenceManager.set('enable-bold', true)
|
||||
// preferenceManager.set('audible-bell-sound', '')
|
||||
preferenceManager.set('desktop-notification-bell', config.terminal.bell === 'notification')
|
||||
|
@@ -48,7 +48,7 @@ export class XTermFrontend extends Frontend {
|
||||
this.title.next(title)
|
||||
})
|
||||
this.xterm.onSelectionChange(() => {
|
||||
if (this.copyOnSelect) {
|
||||
if (this.copyOnSelect && this.getSelection()) {
|
||||
this.copySelection()
|
||||
}
|
||||
})
|
||||
@@ -85,7 +85,20 @@ export class XTermFrontend extends Frontend {
|
||||
|
||||
this.resizeHandler = () => {
|
||||
try {
|
||||
this.fitAddon.fit()
|
||||
if (this.xtermCore.element && getComputedStyle(this.xtermCore.element).getPropertyValue('height') !== 'auto') {
|
||||
let t = window.getComputedStyle(this.xtermCore.element.parentElement)
|
||||
let r = parseInt(t.getPropertyValue("height"))
|
||||
let n = Math.max(0, parseInt(t.getPropertyValue("width")))
|
||||
let o = window.getComputedStyle(this.xtermCore.element)
|
||||
let i = r - (parseInt(o.getPropertyValue("padding-top")) + parseInt(o.getPropertyValue("padding-bottom")))
|
||||
let l = n - (parseInt(o.getPropertyValue("padding-right")) + parseInt(o.getPropertyValue("padding-left"))) - this.xtermCore.viewport.scrollBarWidth
|
||||
let actualCellWidth = this.xtermCore._renderService.dimensions.actualCellWidth || 9
|
||||
let actualCellHeight = this.xtermCore._renderService.dimensions.actualCellHeight || 17
|
||||
let cols = Math.floor(l / actualCellWidth)
|
||||
let rows = Math.floor(i / actualCellHeight)
|
||||
|
||||
this.xterm.resize(cols, rows)
|
||||
}
|
||||
} catch (e) {
|
||||
// tends to throw when element wasn't shown yet
|
||||
console.warn('Could not resize xterm', e)
|
||||
@@ -184,7 +197,7 @@ export class XTermFrontend extends Frontend {
|
||||
}
|
||||
})
|
||||
|
||||
this.xterm.setOption('fontFamily', getCSSFontFamily(config.terminal.font))
|
||||
this.xterm.setOption('fontFamily', getCSSFontFamily(config))
|
||||
this.xterm.setOption('bellStyle', config.terminal.bell)
|
||||
this.xterm.setOption('cursorStyle', {
|
||||
beam: 'bar',
|
||||
@@ -254,7 +267,7 @@ export class XTermFrontend extends Frontend {
|
||||
return html
|
||||
}
|
||||
|
||||
private getHexColor (mode: number, color: number): string {
|
||||
private getHexColor (mode: number, color: number, def: string): string {
|
||||
if (mode === Attributes.CM_RGB) {
|
||||
const rgb = AttributeData.toColorRGB(color)
|
||||
return rgb.map(x => x.toString(16).padStart(2, '0')).join('')
|
||||
@@ -262,7 +275,7 @@ export class XTermFrontend extends Frontend {
|
||||
if (mode === Attributes.CM_P16 || mode === Attributes.CM_P256) {
|
||||
return this.configService.store.terminal.colorScheme.colors[color]
|
||||
}
|
||||
return 'transparent'
|
||||
return def
|
||||
}
|
||||
|
||||
private getLineAsHTML (y: number, start: number, end: number): string {
|
||||
@@ -272,8 +285,8 @@ export class XTermFrontend extends Frontend {
|
||||
const cell = new CellData()
|
||||
for (let i = start; i < end; i++) {
|
||||
line.loadCell(i, cell)
|
||||
const fg = this.getHexColor(cell.getFgColorMode(), cell.getFgColor())
|
||||
const bg = this.getHexColor(cell.getBgColorMode(), cell.getBgColor())
|
||||
const fg = this.getHexColor(cell.getFgColorMode(), cell.getFgColor(), this.configService.store.terminal.colorScheme.foreground)
|
||||
const bg = this.getHexColor(cell.getBgColorMode(), cell.getBgColor(), this.configService.store.terminal.colorScheme.background)
|
||||
const style = `color: ${fg}; background: ${bg}; font-weight: ${cell.isBold() ? 'bold' : 'normal'}; font-style: ${cell.isItalic() ? 'italic' : 'normal'}; text-decoration: ${cell.isUnderline() ? 'underline' : 'none'}`
|
||||
if (style !== lastStyle) {
|
||||
if (lastStyle !== null) {
|
||||
|
@@ -156,9 +156,17 @@ export default class TerminalModule { // eslint-disable-line @typescript-eslint/
|
||||
}
|
||||
})
|
||||
if (config.store.terminal.autoOpen) {
|
||||
app.ready$.subscribe(() => {
|
||||
terminal.openTab()
|
||||
})
|
||||
|
||||
let argv = require('electron').remote.process.argv
|
||||
if (argv[0].includes('node')) {
|
||||
argv = argv.slice(1)
|
||||
}
|
||||
|
||||
if(require('yargs').parse(argv.slice(1))._[0] !== "open"){
|
||||
app.ready$.subscribe(() => {
|
||||
terminal.openTab()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
hotkeys.matchedHotkey.subscribe(async (hotkey) => {
|
||||
|
@@ -18,7 +18,7 @@ try {
|
||||
} catch { }
|
||||
|
||||
try {
|
||||
var windowsProcessTree = require('@terminus-term/windows-process-tree') // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
var windowsProcessTree = require('windows-process-tree') // eslint-disable-line @typescript-eslint/no-var-requires
|
||||
} catch { }
|
||||
|
||||
|
||||
@@ -284,7 +284,7 @@ export class Session extends BaseSession {
|
||||
} catch (e) {
|
||||
return null
|
||||
}
|
||||
let cwd = lines[(lines[1] === 'fcwd') ? 2 : 1].substring(1)
|
||||
let cwd = lines[lines[1] === 'fcwd' ? 2 : 1].substring(1)
|
||||
if (cwd.startsWith(catalinaDataVolumePrefix)) {
|
||||
cwd = cwd.substring(catalinaDataVolumePrefix.length)
|
||||
}
|
||||
|
@@ -65,14 +65,16 @@ export class TerminalService {
|
||||
}
|
||||
|
||||
if (!cwd) {
|
||||
if (this.app.activeTab instanceof TerminalTabComponent && this.app.activeTab.session) {
|
||||
cwd = await this.app.activeTab.session.getWorkingDirectory()
|
||||
}
|
||||
if (this.app.activeTab instanceof SplitTabComponent) {
|
||||
const focusedTab = this.app.activeTab.getFocusedTab()
|
||||
if (!this.config.store.terminal.alwaysUseWorkingDirectory) {
|
||||
if (this.app.activeTab instanceof TerminalTabComponent && this.app.activeTab.session) {
|
||||
cwd = await this.app.activeTab.session.getWorkingDirectory()
|
||||
}
|
||||
if (this.app.activeTab instanceof SplitTabComponent) {
|
||||
const focusedTab = this.app.activeTab.getFocusedTab()
|
||||
|
||||
if (focusedTab instanceof TerminalTabComponent && focusedTab.session) {
|
||||
cwd = await focusedTab.session.getWorkingDirectory()
|
||||
if (focusedTab instanceof TerminalTabComponent && focusedTab.session) {
|
||||
cwd = await focusedTab.session.getWorkingDirectory()
|
||||
}
|
||||
}
|
||||
}
|
||||
cwd = cwd || this.config.store.terminal.workingDirectory
|
||||
|
@@ -8,8 +8,11 @@ export function isWindowsBuild (build: number): boolean {
|
||||
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
|
||||
}
|
||||
|
||||
export function getCSSFontFamily (fontList: string): string {
|
||||
let fonts = fontList.split(',').map(x => x.trim().replace(/"/g, ''))
|
||||
export function getCSSFontFamily (config: any): string {
|
||||
let fonts = config.terminal.font.split(',').map(x => x.trim().replace(/"/g, ''))
|
||||
if (config.terminal.fallbackFont) {
|
||||
fonts.push(config.terminal.fallbackFont)
|
||||
}
|
||||
fonts.push('monospace-fallback')
|
||||
fonts.push('monospace')
|
||||
fonts = fonts.map(x => `"${x}"`)
|
||||
|
@@ -1,11 +1,10 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: 'src/index.ts',
|
||||
devtool: 'source-map',
|
||||
context: __dirname,
|
||||
devtool: 'cheap-module-eval-source-map',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'index.js',
|
||||
@@ -67,7 +66,7 @@ module.exports = {
|
||||
'macos-native-processlist',
|
||||
'windows-native-registry',
|
||||
'node-pty',
|
||||
'@terminus-term/windows-process-tree',
|
||||
'windows-process-tree',
|
||||
'os',
|
||||
/^rxjs/,
|
||||
/^@angular/,
|
||||
@@ -75,7 +74,4 @@ module.exports = {
|
||||
'ngx-toastr',
|
||||
/^terminus-/,
|
||||
],
|
||||
plugins: [
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
],
|
||||
}
|
||||
|
@@ -39,10 +39,24 @@ dataurl@0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/dataurl/-/dataurl-0.1.0.tgz#1f4734feddec05ffe445747978d86759c4b33199"
|
||||
integrity sha1-H0c0/t3sBf/kRXR5eNhnWcSzMZk=
|
||||
|
||||
deep-equal@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
||||
integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
|
||||
deep-equal@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745"
|
||||
integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==
|
||||
dependencies:
|
||||
is-arguments "^1.0.4"
|
||||
is-date-object "^1.0.1"
|
||||
is-regex "^1.0.4"
|
||||
object-is "^1.0.1"
|
||||
object-keys "^1.1.1"
|
||||
regexp.prototype.flags "^1.2.0"
|
||||
|
||||
define-properties@^1.1.2:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
|
||||
dependencies:
|
||||
object-keys "^1.0.12"
|
||||
|
||||
font-finder@^1.0.2, font-finder@^1.0.3:
|
||||
version "1.0.4"
|
||||
@@ -61,16 +75,45 @@ font-ligatures@^1.3.1:
|
||||
lru-cache "^4.1.3"
|
||||
opentype.js "^0.8.0"
|
||||
|
||||
function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
get-system-fonts@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-system-fonts/-/get-system-fonts-2.0.0.tgz#a43b9a33f05c0715a60176d2aad5ce6e98f0a3c6"
|
||||
integrity sha512-iiM/DavyF2nnLdELzPBSHojzQJVai9WiwrRzn5gp2dutJuerC8qHyBoh4lxfVdKGbnb9eZ4p8Oefbuc3yExB7Q==
|
||||
|
||||
has@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hterm-umdjs@1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/hterm-umdjs/-/hterm-umdjs-1.4.1.tgz#0cd5352eaf927c70b83c36146cf2c2a281dba957"
|
||||
integrity sha512-r5JOmdDK1bZCmp3cKcuGRLVeum33H+pzD119ZxmQou+QUVe6SAVSz03HvKWVhM2Ao1Biv+fkhFDmnsaRPq0tFg==
|
||||
|
||||
is-arguments@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
|
||||
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
||||
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
|
||||
|
||||
is-regex@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
||||
integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
|
||||
dependencies:
|
||||
has "^1.0.1"
|
||||
|
||||
lru-cache@^4.1.3:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
@@ -93,6 +136,16 @@ object-assign@^4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
|
||||
integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=
|
||||
|
||||
object-keys@^1.0.12, object-keys@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
||||
|
||||
opentype.js@^0.8.0:
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-0.8.0.tgz#acabcfa1642fbe894a3e4d759e43ba694e02bd35"
|
||||
@@ -117,6 +170,13 @@ pseudomap@^1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
||||
|
||||
regexp.prototype.flags@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
|
||||
integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
|
||||
runes@^0.4.2:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/runes/-/runes-0.4.3.tgz#32f7738844bc767b65cc68171528e3373c7bb355"
|
||||
@@ -166,9 +226,9 @@ uuid@^3.3.2:
|
||||
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
||||
|
||||
xterm-addon-fit@^0.1.0-beta3:
|
||||
version "0.1.0-beta3"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.1.0-beta3.tgz#82bc2474cb00a2872d9a43ea52ed801bdfeebeaf"
|
||||
integrity sha512-5UWwCH3smDWlqskK8r0GcCgLPvwbJiPpKiM01E67g5HIrQqCxITKawc01cuKCDLVj03sFJB9jDCOoh0n0mN+Zw==
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.1.0.tgz#dd52d8b2ec6ef05faab8285bafd9310063704468"
|
||||
integrity sha512-DzYThnR5rXYX7JrOZ8rHGMU36BiTwYNFUOhhNwrDSFvoUR2MgwQrfA/JrqLE62KRj0D8bkRR7+xe7qGBp1O4Rw==
|
||||
|
||||
xterm-addon-ligatures@^0.1.0-beta-2:
|
||||
version "0.1.0-beta-2"
|
||||
@@ -179,19 +239,19 @@ xterm-addon-ligatures@^0.1.0-beta-2:
|
||||
font-ligatures "^1.3.1"
|
||||
|
||||
xterm-addon-search@^0.2.0-beta1:
|
||||
version "0.2.0-beta2"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.2.0-beta2.tgz#c3173f0a6f207ee9f1848849174ee5d6b6ce8262"
|
||||
integrity sha512-XEcwi2TeFGk2MuIFjiI/OpVXSNO5dGQBvHH3o+9KzqG3ooVqhhDqzwxs092QGNcNCGh8hGn/PWZiczaBBnKm/g==
|
||||
version "0.2.0-beta5"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.2.0-beta5.tgz#258d7cb1511d9060cd4520f0f82e408000fd4f53"
|
||||
integrity sha512-Tg+d8scch0rYOVmzBbX35Y1GXtq+eu/YlzbXznmTo/yD83j3BQlXOhgECu/Yv8EX5JwFmzbfVRWC+JWnfigwGg==
|
||||
|
||||
xterm-addon-webgl@^0.2.0-beta1:
|
||||
version "0.2.0-beta1"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.2.0-beta1.tgz#c688e4b26bbd01a8a0cd9143362bbe040fc98ef9"
|
||||
integrity sha512-arDNdOyiGs0BCFUaQ0jEa1UgybqMsMRZwV9+/xc0D4vJi5STWtH8lRtTUAgvDxaTJQBo1frz56JkYpDddHDSXw==
|
||||
version "0.2.0-beta6"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.2.0-beta6.tgz#308464aebc6002f04514673e5233fe237df76d7f"
|
||||
integrity sha512-KPGv5VPzeZWmqHIuR73UOD/eMSLG2mi57qQCrjYUMOQK9PPFfm5KQtYmCfK+DhNUWqrs5dpGbFFLv3lfwVghcg==
|
||||
|
||||
xterm@3.15.0-beta67:
|
||||
version "3.15.0-beta67"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-3.15.0-beta67.tgz#71973e174bdc08df620945eecd3f87912f1ac550"
|
||||
integrity sha512-qLfo9GHVlu/IxgDI3vRGObWZM7UL4eLhMfjZhprx2aXNMpzmrOW6l3JDRsCjUWm93EoVavbULtnDhGSiTlKitQ==
|
||||
xterm@3.15.0-beta98:
|
||||
version "3.15.0-beta98"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-3.15.0-beta98.tgz#37f37c35577422880e7ef673cc37f9d2a45dd40c"
|
||||
integrity sha512-vZbg2LcRvoiJOgr1MyeLFM9mF4uib3BWUWDHyFc+vZ58CTuK0iczOvFXgk/ySo23ZLqwmHQSigLgmWvZ8J5G0Q==
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
|
Reference in New Issue
Block a user