Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Tabby
提交
bcdbab43
T
Tabby
项目概览
后端镜像
/
Tabby
通知
37
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tabby
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bcdbab43
编写于
12月 24, 2020
作者:
E
Eugene
提交者:
GitHub
12月 24, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3226 from pinpins/terminus_pinpin
上级
0971a85d
a24f52c5
变更
73
展开全部
隐藏空白更改
内联
并排
Showing
73 changed file
with
5768 addition
and
6449 deletion
+5768
-6449
.eslintrc.yml
.eslintrc.yml
+17
-1
.github/workflows/lint.yml
.github/workflows/lint.yml
+4
-1
.github/workflows/linux.yml
.github/workflows/linux.yml
+1
-1
.github/workflows/macos.yml
.github/workflows/macos.yml
+18
-7
.github/workflows/windows.yml
.github/workflows/windows.yml
+1
-1
.gitignore
.gitignore
+3
-0
.travis.yml
.travis.yml
+1
-1
app/lib/app.ts
app/lib/app.ts
+13
-13
app/lib/config.ts
app/lib/config.ts
+1
-1
app/lib/lru.ts
app/lib/lru.ts
+2
-2
app/lib/portable.ts
app/lib/portable.ts
+1
-1
app/lib/sentry.ts
app/lib/sentry.ts
+2
-2
app/lib/window.ts
app/lib/window.ts
+8
-7
app/package.json
app/package.json
+25
-17
app/src/plugins.ts
app/src/plugins.ts
+1
-1
app/tsconfig.main.json
app/tsconfig.main.json
+0
-1
app/yarn.lock
app/yarn.lock
+1406
-2270
appveyor.yml
appveyor.yml
+1
-1
electron-builder.yml
electron-builder.yml
+2
-4
package.json
package.json
+28
-25
scripts/build-macos.js
scripts/build-macos.js
+3
-0
scripts/build-native.js
scripts/build-native.js
+1
-0
scripts/install-deps.js
scripts/install-deps.js
+2
-2
scripts/prepackage-plugins.js
scripts/prepackage-plugins.js
+9
-2
terminus-community-color-schemes/package.json
terminus-community-color-schemes/package.json
+2
-2
terminus-core/.gitignore
terminus-core/.gitignore
+0
-1
terminus-core/package.json
terminus-core/package.json
+10
-9
terminus-core/src/api/tabContextMenuProvider.ts
terminus-core/src/api/tabContextMenuProvider.ts
+2
-1
terminus-core/src/components/appRoot.component.scss
terminus-core/src/components/appRoot.component.scss
+2
-0
terminus-core/src/components/tabHeader.component.ts
terminus-core/src/components/tabHeader.component.ts
+4
-3
terminus-core/src/components/windowControls.component.scss
terminus-core/src/components/windowControls.component.scss
+2
-1
terminus-core/src/services/config.service.ts
terminus-core/src/services/config.service.ts
+3
-3
terminus-core/src/services/docking.service.ts
terminus-core/src/services/docking.service.ts
+6
-5
terminus-core/src/services/electron.service.ts
terminus-core/src/services/electron.service.ts
+12
-12
terminus-core/src/services/homeBase.service.ts
terminus-core/src/services/homeBase.service.ts
+1
-1
terminus-core/src/services/hostApp.service.ts
terminus-core/src/services/hostApp.service.ts
+12
-4
terminus-core/src/services/log.service.ts
terminus-core/src/services/log.service.ts
+2
-2
terminus-core/src/services/shellIntegration.service.ts
terminus-core/src/services/shellIntegration.service.ts
+2
-2
terminus-core/src/services/touchbar.service.ts
terminus-core/src/services/touchbar.service.ts
+3
-3
terminus-core/src/tabContextMenu.ts
terminus-core/src/tabContextMenu.ts
+9
-8
terminus-core/src/theme.compact.scss
terminus-core/src/theme.compact.scss
+1
-1
terminus-core/src/theme.paper.scss
terminus-core/src/theme.paper.scss
+1
-1
terminus-core/src/theme.scss
terminus-core/src/theme.scss
+1
-0
terminus-core/yarn.lock
terminus-core/yarn.lock
+89
-86
terminus-plugin-manager/package.json
terminus-plugin-manager/package.json
+7
-7
terminus-plugin-manager/src/components/pluginsSettingsTab.component.ts
...in-manager/src/components/pluginsSettingsTab.component.ts
+1
-1
terminus-plugin-manager/yarn.lock
terminus-plugin-manager/yarn.lock
+9
-16
terminus-serial/.gitignore
terminus-serial/.gitignore
+0
-0
terminus-serial/package.json
terminus-serial/package.json
+11
-10
terminus-serial/src/components/serialTab.component.ts
terminus-serial/src/components/serialTab.component.ts
+2
-2
terminus-serial/yarn.lock
terminus-serial/yarn.lock
+13
-1085
terminus-settings/package.json
terminus-settings/package.json
+8
-7
terminus-settings/src/components/settingsTab.component.ts
terminus-settings/src/components/settingsTab.component.ts
+2
-6
terminus-ssh/.gitignore
terminus-ssh/.gitignore
+0
-0
terminus-ssh/package.json
terminus-ssh/package.json
+13
-10
terminus-ssh/src/api.ts
terminus-ssh/src/api.ts
+6
-6
terminus-ssh/src/components/sshTab.component.ts
terminus-ssh/src/components/sshTab.component.ts
+2
-2
terminus-ssh/src/services/ssh.service.ts
terminus-ssh/src/services/ssh.service.ts
+4
-4
terminus-ssh/src/winSCPIntegration.ts
terminus-ssh/src/winSCPIntegration.ts
+3
-2
terminus-ssh/yarn.lock
terminus-ssh/yarn.lock
+29
-21
terminus-terminal/package.json
terminus-terminal/package.json
+8
-8
terminus-terminal/src/api/baseTerminalTab.component.ts
terminus-terminal/src/api/baseTerminalTab.component.ts
+8
-7
terminus-terminal/src/api/contextMenuProvider.ts
terminus-terminal/src/api/contextMenuProvider.ts
+2
-1
terminus-terminal/src/api/interfaces.ts
terminus-terminal/src/api/interfaces.ts
+1
-1
terminus-terminal/src/colorSchemes.ts
terminus-terminal/src/colorSchemes.ts
+2
-2
terminus-terminal/src/components/terminalSettingsTab.component.ts
...-terminal/src/components/terminalSettingsTab.component.ts
+1
-1
terminus-terminal/src/features/zmodem.ts
terminus-terminal/src/features/zmodem.ts
+0
-1
terminus-terminal/src/frontends/xtermFrontend.ts
terminus-terminal/src/frontends/xtermFrontend.ts
+10
-10
terminus-terminal/src/index.ts
terminus-terminal/src/index.ts
+1
-1
terminus-terminal/src/services/sessions.service.ts
terminus-terminal/src/services/sessions.service.ts
+2
-2
terminus-terminal/src/tabContextMenu.ts
terminus-terminal/src/tabContextMenu.ts
+8
-7
terminus-terminal/yarn.lock
terminus-terminal/yarn.lock
+156
-38
yarn.lock
yarn.lock
+3745
-2685
未找到文件。
.eslintrc.yml
浏览文件 @
bcdbab43
...
...
@@ -37,6 +37,7 @@ rules:
'
@typescript-eslint/strict-boolean-expressions'
:
off
'
@typescript-eslint/no-misused-promises'
:
off
'
@typescript-eslint/typedef'
:
off
'
@typescript-eslint/consistent-type-imports'
:
off
'
@typescript-eslint/no-use-before-define'
:
-
error
-
classes
:
false
...
...
@@ -53,7 +54,8 @@ rules:
computed-property-spacing
:
-
error
-
never
comma-dangle
:
comma-dangle
:
off
'
@typescript-eslint/comma-dangle'
:
-
error
-
always-multiline
curly
:
error
...
...
@@ -104,3 +106,17 @@ rules:
'
@typescript-eslint/no-unsafe-call'
:
off
'
@typescript-eslint/no-unsafe-return'
:
off
'
@typescript-eslint/no-base-to-string'
:
off
# broken in typescript-eslint
'
@typescript-eslint/no-unsafe-assignment'
:
off
'
@typescript-eslint/naming-convention'
:
off
'
@typescript-eslint/lines-between-class-members'
:
-
error
-
exceptAfterSingleLine
:
true
'
@typescript-eslint/non-nullable-type-assertion-style'
:
off
'
@typescript-eslint/dot-notation'
:
off
'
@typescript-eslint/no-confusing-void-expression'
:
off
'
@typescript-eslint/prefer-enum-initializers'
:
off
'
@typescript-eslint/no-implicit-any-catch'
:
off
'
@typescript-eslint/member-ordering'
:
off
'
@typescript-eslint/consistent-indexed-object-style'
:
off
'
@typescript-eslint/no-var-requires'
:
off
'
@typescript-eslint/no-shadow'
:
off
.github/workflows/lint.yml
浏览文件 @
bcdbab43
...
...
@@ -11,7 +11,7 @@ jobs:
-
name
:
Installing Node
uses
:
actions/setup-node@v1
with
:
node-version
:
1
0
node-version
:
1
5
-
name
:
Install deps
run
:
|
...
...
@@ -22,5 +22,8 @@ jobs:
rm app/node_modules/.yarn-integrity
yarn
-
name
:
Build typings
run
:
yarn run build:typings
-
name
:
Lint
run
:
yarn run lint
.github/workflows/linux.yml
浏览文件 @
bcdbab43
...
...
@@ -11,7 +11,7 @@ jobs:
-
name
:
Install Node
uses
:
actions/setup-node@v1
with
:
node-version
:
1
0
node-version
:
1
5
-
name
:
Install deps
run
:
|
...
...
.github/workflows/macos.yml
浏览文件 @
bcdbab43
...
...
@@ -2,7 +2,12 @@ name: macOS Build
on
:
[
push
,
pull_request
]
jobs
:
build
:
runs-on
:
macOS-latest
runs-on
:
macos-11.0
strategy
:
matrix
:
include
:
-
arch
:
x86_64
-
arch
:
arm64
steps
:
-
name
:
Checkout
...
...
@@ -11,11 +16,11 @@ jobs:
-
name
:
Installing Node
uses
:
actions/setup-node@v1
with
:
node-version
:
1
0
node-version
:
1
5
-
name
:
Install deps
run
:
|
sudo npm i -g yarn@1.
19
.1
sudo npm i -g yarn@1.
22
.1
cd app
yarn
cd ..
...
...
@@ -24,12 +29,16 @@ jobs:
-
name
:
Build native deps
run
:
scripts/build-native.js
env
:
ARCH
:
${{matrix.arch}}
-
name
:
Webpack
run
:
yarn run build
-
name
:
Prepackage plugins
run
:
scripts/prepackage-plugins.js
env
:
ARCH
:
${{matrix.arch}}
-
run
:
sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
...
...
@@ -37,18 +46,20 @@ jobs:
run
:
scripts/build-macos.js
if
:
github.repository == 'Eugeny/terminus' && github.event_name == 'push'
env
:
#DEBUG: electron-builder,electron-builder:*
ARCH
:
${{matrix.arch}}
GH_TOKEN
:
${{ secrets.GH_TOKEN }}
CSC_LINK
:
${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD
:
${{ secrets.CSC_KEY_PASSWORD }}
APPSTORE_USERNAME
:
${{ secrets.APPSTORE_USERNAME }}
APPSTORE_PASSWORD
:
${{ secrets.APPSTORE_PASSWORD }}
# DEBUG: electron-builder,electron-builder:*
-
name
:
Build packages without signing
run
:
scripts/build-macos.js
if
:
github.repository != 'Eugeny/terminus' || github.event_name != 'push'
env
:
DEBUG
:
electron-builder,electron-builder:*
ARCH
:
${{matrix.arch}}
# DEBUG: electron-builder,electron-builder:*
-
name
:
Package artifacts
run
:
|
...
...
@@ -60,11 +71,11 @@ jobs:
-
uses
:
actions/upload-artifact@master
name
:
Upload PKG
with
:
name
:
macOS .pkg
name
:
macOS .pkg
(${{matrix.arch}})
path
:
artifact-pkg
-
uses
:
actions/upload-artifact@master
name
:
Upload ZIP
with
:
name
:
macOS .zip
name
:
macOS .zip
(${{matrix.arch}})
path
:
artifact-zip
.github/workflows/windows.yml
浏览文件 @
bcdbab43
...
...
@@ -11,7 +11,7 @@ jobs:
-
name
:
Installing Node
uses
:
actions/setup-node@v1
with
:
node-version
:
1
0
node-version
:
1
5
-
name
:
Build
shell
:
powershell
...
...
.gitignore
浏览文件 @
bcdbab43
...
...
@@ -13,6 +13,9 @@ dist
*.xcuserstate
*.wixpdb
.DS_Store
.DS_Store?
coverage
.nyc_output
npm-debug.log
...
...
.travis.yml
浏览文件 @
bcdbab43
language
:
node_js
node_js
:
1
0
node_js
:
1
5
stages
:
-
Build
...
...
app/lib/app.ts
浏览文件 @
bcdbab43
import
{
app
,
ipcMain
,
Menu
,
Tray
,
shell
,
globalShortcut
}
from
'
electron
'
// eslint-disable-next-line no-duplicate-imports
import
*
as
electron
from
'
electron
'
import
{
app
,
ipcMain
,
Menu
,
Tray
,
shell
,
screen
,
globalShortcut
,
MenuItemConstructorOptions
}
from
'
electron
'
import
{
loadConfig
}
from
'
./config
'
import
{
Window
,
WindowOptions
}
from
'
./window
'
...
...
@@ -15,7 +13,7 @@ export class Application {
ipcMain
.
on
(
'
app:register-global-hotkey
'
,
(
_event
,
specs
)
=>
{
globalShortcut
.
unregisterAll
()
for
(
le
t
spec
of
specs
)
{
for
(
cons
t
spec
of
specs
)
{
globalShortcut
.
register
(
spec
,
()
=>
{
this
.
onGlobalHotkey
()
})
...
...
@@ -41,11 +39,13 @@ export class Application {
}
init
():
void
{
electron
.
screen
.
on
(
'
display-metrics-changed
'
,
()
=>
this
.
broadcast
(
'
host:display-metrics-changed
'
))
screen
.
on
(
'
display-metrics-changed
'
,
()
=>
this
.
broadcast
(
'
host:display-metrics-changed
'
))
screen
.
on
(
'
display-added
'
,
()
=>
this
.
broadcast
(
'
host:displays-changed
'
))
screen
.
on
(
'
display-removed
'
,
()
=>
this
.
broadcast
(
'
host:displays-changed
'
))
}
async
newWindow
(
options
?:
WindowOptions
):
Promise
<
Window
>
{
le
t
window
=
new
Window
(
options
)
cons
t
window
=
new
Window
(
options
)
this
.
windows
.
push
(
window
)
window
.
visible$
.
subscribe
(
visible
=>
{
if
(
visible
)
{
...
...
@@ -66,29 +66,29 @@ export class Application {
onGlobalHotkey
():
void
{
if
(
this
.
windows
.
some
(
x
=>
x
.
isFocused
()))
{
for
(
le
t
window
of
this
.
windows
)
{
for
(
cons
t
window
of
this
.
windows
)
{
window
.
hide
()
}
}
else
{
for
(
le
t
window
of
this
.
windows
)
{
for
(
cons
t
window
of
this
.
windows
)
{
window
.
present
()
}
}
}
presentAllWindows
():
void
{
for
(
le
t
window
of
this
.
windows
)
{
for
(
cons
t
window
of
this
.
windows
)
{
window
.
present
()
}
}
broadcast
(
event
:
string
,
...
args
):
void
{
broadcast
(
event
:
string
,
...
args
:
any
[]
):
void
{
for
(
const
window
of
this
.
windows
)
{
window
.
send
(
event
,
...
args
)
}
}
async
send
(
event
:
string
,
...
args
):
Promise
<
void
>
{
async
send
(
event
:
string
,
...
args
:
any
[]
):
Promise
<
void
>
{
if
(
!
this
.
hasWindows
())
{
await
this
.
newWindow
()
}
...
...
@@ -132,7 +132,7 @@ export class Application {
}
focus
():
void
{
for
(
le
t
window
of
this
.
windows
)
{
for
(
cons
t
window
of
this
.
windows
)
{
window
.
show
()
}
}
...
...
@@ -143,7 +143,7 @@ export class Application {
}
private
setupMenu
()
{
let
template
:
Electron
.
MenuItemConstructorOptions
[]
=
[
const
template
:
MenuItemConstructorOptions
[]
=
[
{
label
:
'
Application
'
,
submenu
:
[
...
...
app/lib/config.ts
浏览文件 @
bcdbab43
...
...
@@ -4,7 +4,7 @@ import * as yaml from 'js-yaml'
import
{
app
}
from
'
electron
'
export
function
loadConfig
():
any
{
le
t
configPath
=
path
.
join
(
app
.
getPath
(
'
userData
'
),
'
config.yaml
'
)
cons
t
configPath
=
path
.
join
(
app
.
getPath
(
'
userData
'
),
'
config.yaml
'
)
if
(
fs
.
existsSync
(
configPath
))
{
return
yaml
.
safeLoad
(
fs
.
readFileSync
(
configPath
,
'
utf8
'
))
}
else
{
...
...
app/lib/lru.ts
浏览文件 @
bcdbab43
import
*
as
create
LRU
from
'
lru-cache
'
import
*
as
LRU
from
'
lru-cache
'
import
*
as
fs
from
'
fs
'
const
lru
=
create
LRU
({
max
:
256
,
maxAge
:
250
})
const
lru
=
new
LRU
({
max
:
256
,
maxAge
:
250
})
const
origLstat
=
fs
.
realpathSync
.
bind
(
fs
)
// NB: The biggest offender of thrashing realpathSync is the node module system
...
...
app/lib/portable.ts
浏览文件 @
bcdbab43
...
...
@@ -9,7 +9,7 @@ try {
}
if
(
null
!=
appPath
)
{
if
(
fs
.
existsSync
(
path
.
join
(
appPath
,
'
terminus-data
'
)))
{
if
(
fs
.
existsSync
(
path
.
join
(
appPath
,
'
terminus-data
'
)))
{
fs
.
renameSync
(
path
.
join
(
appPath
,
'
terminus-data
'
),
path
.
join
(
appPath
,
'
data
'
))
}
const
portableData
=
path
.
join
(
appPath
,
'
data
'
)
...
...
app/lib/sentry.ts
浏览文件 @
bcdbab43
const
{
init
}
=
process
.
type
===
'
main
'
?
require
(
'
@sentry/electron/dist/main
'
)
:
require
(
'
@sentry/electron/dist/renderer
'
)
const
{
init
}
=
String
(
process
.
type
)
===
'
main
'
?
require
(
'
@sentry/electron/dist/main
'
)
:
require
(
'
@sentry/electron/dist/renderer
'
)
import
*
as
isDev
from
'
electron-is-dev
'
const
SENTRY_DSN
=
'
https://4717a0a7ee0b4429bd3a0f06c3d7eec3@sentry.io/181876
'
let
release
let
release
=
null
try
{
release
=
require
(
'
electron
'
).
app
.
getVersion
()
}
catch
{
...
...
app/lib/window.ts
浏览文件 @
bcdbab43
...
...
@@ -5,7 +5,7 @@ if (process.platform === 'win32' || process.platform === 'linux') {
import
{
Subject
,
Observable
}
from
'
rxjs
'
import
{
debounceTime
}
from
'
rxjs/operators
'
import
{
BrowserWindow
,
app
,
ipcMain
,
Rectangle
,
Menu
,
screen
}
from
'
electron
'
import
{
BrowserWindow
,
app
,
ipcMain
,
Rectangle
,
Menu
,
screen
,
BrowserWindowConstructorOptions
}
from
'
electron
'
import
ElectronConfig
=
require
(
'
electron-config
'
)
import
*
as
os
from
'
os
'
import
*
as
path
from
'
path
'
...
...
@@ -13,7 +13,7 @@ import * as path from 'path'
import
{
parseArgs
}
from
'
./cli
'
import
{
loadConfig
}
from
'
./config
'
let
DwmEnableBlurBehindWindow
:
any
let
DwmEnableBlurBehindWindow
:
any
=
null
if
(
process
.
platform
===
'
win32
'
)
{
DwmEnableBlurBehindWindow
=
require
(
'
windows-blurbehind
'
).
DwmEnableBlurBehindWindow
}
...
...
@@ -45,8 +45,8 @@ export class Window {
this
.
windowConfig
=
new
ElectronConfig
({
name
:
'
window
'
})
this
.
windowBounds
=
this
.
windowConfig
.
get
(
'
windowBoundaries
'
)
le
t
maximized
=
this
.
windowConfig
.
get
(
'
maximized
'
)
let
bwOptions
:
Electron
.
BrowserWindowConstructorOptions
=
{
cons
t
maximized
=
this
.
windowConfig
.
get
(
'
maximized
'
)
const
bwOptions
:
BrowserWindowConstructorOptions
=
{
width
:
800
,
height
:
600
,
title
:
'
Terminus
'
,
...
...
@@ -56,6 +56,7 @@ export class Window {
nodeIntegration
:
true
,
preload
:
path
.
join
(
__dirname
,
'
sentry.js
'
),
backgroundThrottling
:
false
,
enableRemoteModule
:
true
,
},
frame
:
false
,
show
:
false
,
...
...
@@ -138,7 +139,7 @@ export class Window {
}
else
{
DwmEnableBlurBehindWindow
(
this
.
window
,
enabled
)
}
}
else
if
(
process
.
platform
===
'
linux
'
)
{
}
else
if
(
process
.
platform
===
'
linux
'
)
{
glasstron
.
update
(
this
.
window
,
{
linux
:
{
requestBlur
:
enabled
},
})
...
...
@@ -157,7 +158,7 @@ export class Window {
this
.
window
.
focus
()
}
send
(
event
:
string
,
...
args
):
void
{
send
(
event
:
string
,
...
args
:
any
[]
):
void
{
if
(
!
this
.
window
)
{
return
}
...
...
@@ -224,7 +225,7 @@ export class Window {
this
.
visible
.
next
(
false
)
})
le
t
moveSubscription
=
new
Observable
<
void
>
(
observer
=>
{
cons
t
moveSubscription
=
new
Observable
<
void
>
(
observer
=>
{
this
.
window
.
on
(
'
move
'
,
()
=>
observer
.
next
())
}).
pipe
(
debounceTime
(
250
)).
subscribe
(()
=>
{
this
.
send
(
'
host:window-moved
'
)
...
...
app/package.json
浏览文件 @
bcdbab43
...
...
@@ -13,42 +13,50 @@
"watch"
:
"webpack --progress --color --watch"
},
"dependencies"
:
{
"@angular/animations"
:
"9.1.9"
,
"@angular/common"
:
"9.1.11"
,
"@angular/compiler"
:
"9.1.9"
,
"@angular/core"
:
"9.1.9"
,
"@angular/forms"
:
"9.1.11"
,
"@angular/platform-browser"
:
"9.1.9"
,
"@angular/platform-browser-dynamic"
:
"9.1.9"
,
"@angular/animations"
:
"
^
9.1.9"
,
"@angular/common"
:
"
^
9.1.11"
,
"@angular/compiler"
:
"
^
9.1.9"
,
"@angular/core"
:
"
^
9.1.9"
,
"@angular/forms"
:
"
^
9.1.11"
,
"@angular/platform-browser"
:
"
^
9.1.9"
,
"@angular/platform-browser-dynamic"
:
"
^
9.1.9"
,
"@ng-bootstrap/ng-bootstrap"
:
"^6.1.0"
,
"
devtron"
:
"1.4.
0"
,
"
@terminus-term/node-pty"
:
"0.10.0-beta1
0"
,
"electron-config"
:
"2.0.0"
,
"electron-debug"
:
"^3.0.1"
,
"electron-is-dev"
:
"1.1.0"
,
"fontmanager-redux"
:
"
0.4
.0"
,
"glasstron"
:
"
sentialx/Glasstron#n-api
"
,
"fontmanager-redux"
:
"
1.0
.0"
,
"glasstron"
:
"
0.0.5
"
,
"js-yaml"
:
"3.14.0"
,
"keytar"
:
"^
6.0.1
"
,
"keytar"
:
"^
7.2.0
"
,
"mz"
:
"^2.7.0"
,
"ngx-toastr"
:
"^12.0.1"
,
"@terminus-term/node-pty"
:
"0.10.0-beta9"
,
"npm"
:
"6.9.0"
,
"npm"
:
"7.0.15"
,
"path"
:
"0.12.7"
,
"rxjs"
:
"^6.5.5"
,
"rxjs-compat"
:
"^6.6.0"
,
"yargs"
:
"^15.4.1"
,
"zone.js"
:
"^0.1
0
.3"
"zone.js"
:
"^0.1
1
.3"
},
"optionalDependencies"
:
{
"macos-native-processlist"
:
"^2.0.0"
,
"serialport"
:
"^9.0.
0
"
,
"serialport"
:
"^9.0.
4
"
,
"windows-blurbehind"
:
"^1.0.1"
,
"windows-native-registry"
:
"^3.0.0"
,
"windows-process-tree"
:
"^0.2.4"
},
"devDependencies"
:
{
"@types/mz"
:
"0.0.32"
,
"@types/node"
:
"12.7.12"
,
"node-abi"
:
"^2.18.0"
"@types/node"
:
"14.14.14"
,
"node-abi"
:
"2.19.3"
},
"peerDependencies"
:
{
"terminus-community-color-schemes"
:
"*"
,
"terminus-core"
:
"*"
,
"terminus-plugin-manager"
:
"*"
,
"terminus-serial"
:
"*"
,
"terminus-settings"
:
"*"
,
"terminus-ssh"
:
"*"
,
"terminus-terminal"
:
"*"
}
}
app/src/plugins.ts
浏览文件 @
bcdbab43
...
...
@@ -83,7 +83,7 @@ const originalRequire = (global as any).require
if
(
cachedBuiltinModules
[
query
])
{
return
cachedBuiltinModules
[
query
]
}
return
originalRequire
.
apply
(
this
,
arguments
)
return
originalRequire
.
apply
(
this
,
[
query
]
)
}
const
originalModuleRequire
=
nodeModule
.
prototype
.
require
...
...
app/tsconfig.main.json
浏览文件 @
bcdbab43
...
...
@@ -12,7 +12,6 @@
"noUnusedParameters"
:
true
,
"noImplicitReturns"
:
true
,
"noFallthroughCasesInSwitch"
:
true
,
"noUnusedParameters"
:
true
,
"noUnusedLocals"
:
true
,
"lib"
:
[
"dom"
,
...
...
app/yarn.lock
浏览文件 @
bcdbab43
此差异已折叠。
点击以展开。
appveyor.yml
浏览文件 @
bcdbab43
...
...
@@ -4,7 +4,7 @@ platform:
-
x64
environment
:
nodejs_version
:
"
1
0
"
nodejs_version
:
"
1
5
"
version
:
"
{build}"
...
...
electron-builder.yml
浏览文件 @
bcdbab43
...
...
@@ -2,6 +2,7 @@
appId
:
org.terminus
productName
:
Terminus
compression
:
normal
npmRebuild
:
false
afterSign
:
"
./build/mac/afterSignHook.js"
afterAllArtifactBuild
:
"
./build/mac/afterBuildHook.js"
files
:
...
...
@@ -25,7 +26,7 @@ nsis:
mac
:
category
:
public.app-category.video
icon
:
"
./build/mac/icon.icns"
artifactName
:
terminus-${version}-macos.${ext}
artifactName
:
terminus-${version}-macos
-${env.ARCH}
.${ext}
hardenedRuntime
:
true
entitlements
:
"
./build/mac/entitlements.plist"
entitlementsInherit
:
"
./build/mac/entitlements.plist"
...
...
@@ -40,9 +41,6 @@ mac:
NSNetworkVolumesUsageDescription
:
'
A
subprocess
requests
access
to
files
on
a
network
volume.'
NSRemovableVolumesUsageDescription
:
'
A
subprocess
requests
access
to
files
on
a
removable
volume.'
pkg
:
artifactName
:
terminus-${version}-macos.pkg
linux
:
category
:
Utilities
icon
:
"
./build/icons"
...
...
package.json
浏览文件 @
bcdbab43
{
"devDependencies"
:
{
"
@fortawesome/fontawesome-free
"
:
"
^5.13.0
"
,
"
@sentry/cli
"
:
"
^1.
52.3
"
,
"
@sentry/cli
"
:
"
^1.
61.0
"
,
"
@sentry/electron
"
:
"
^2.0.4
"
,
"
@types/electron-config
"
:
"
^3.2.2
"
,
"
@types/electron-debug
"
:
"
^2.1.0
"
,
"
@types/js-yaml
"
:
"
^3.12.4
"
,
"
@types/node
"
:
"
12.7.12
"
,
"
@types/webpack-env
"
:
"
^1.15.2
"
,
"
@typescript-eslint/eslint-plugin
"
:
"
^2.26.0
"
,
"
@typescript-eslint/parser
"
:
"
^3.8.0
"
,
"
@types/fs-extra
"
:
"
^8.1.1
"
,
"
@types/js-yaml
"
:
"
^3.12.5
"
,
"
@types/node
"
:
"
14.14.14
"
,
"
@types/webpack-env
"
:
"
^1.16.0
"
,
"
@typescript-eslint/eslint-plugin
"
:
"
^4.11.0
"
,
"
@typescript-eslint/parser
"
:
"
^4.11.0
"
,
"
apply-loader
"
:
"
2.0.0
"
,
"
awesome-typescript-loader
"
:
"
^5.
0.0
"
,
"
core-js
"
:
"
^3.
6.5
"
,
"
awesome-typescript-loader
"
:
"
^5.
2.1
"
,
"
core-js
"
:
"
^3.
8.1
"
,
"
cross-env
"
:
"
7.0.2
"
,
"
css-loader
"
:
"
3.4.2
"
,
"
electron
"
:
"
^
8.5.2
"
,
"
electron-builder
"
:
"
22.
6.1
"
,
"
electron
"
:
"
^
11.1.0
"
,
"
electron-builder
"
:
"
22.
10.3
"
,
"
electron-download
"
:
"
^4.1.1
"
,
"
electron-installer-snap
"
:
"
^5.
0
.0
"
,
"
electron-installer-snap
"
:
"
^5.
1
.0
"
,
"
electron-notarize
"
:
"
^1.0.0
"
,
"
electron-rebuild
"
:
"
^
1.10.1
"
,
"
electron-rebuild
"
:
"
^
2.3.4
"
,
"
eslint
"
:
"
^7.6.0
"
,
"
eslint-plugin-import
"
:
"
^2.21.1
"
,
"
file-loader
"
:
"
^5.
0.2
"
,
"
file-loader
"
:
"
^5.
1.0
"
,
"
graceful-fs
"
:
"
^4.2.4
"
,
"
html-loader
"
:
"
0.5.5
"
,
"
json-loader
"
:
"
0.5.7
"
,
"
node-abi
"
:
"
^2.1
8.0
"
,
"
node-gyp
"
:
"
^7.
0.0
"
,
"
node-sass
"
:
"
^
4.14.1
"
,
"
node-abi
"
:
"
^2.1
9.3
"
,
"
node-gyp
"
:
"
^7.
1.2
"
,
"
node-sass
"
:
"
^
5.0.0
"
,
"
npmlog
"
:
"
4.1.2
"
,
"
npx
"
:
"
^10.2.
0
"
,
"
npx
"
:
"
^10.2.
2
"
,
"
pug
"
:
"
^2.0.4
"
,
"
pug-html-loader
"
:
"
1.1.5
"
,
"
pug-lint
"
:
"
^2.6.0
"
,
"
pug-loader
"
:
"
^2.4.0
"
,
"
pug-static-loader
"
:
"
2.0.0
"
,
"
raw-loader
"
:
"
4.0.1
"
,
"
sass-loader
"
:
"
^
8.0
.0
"
,
"
sass-loader
"
:
"
^
10.1
.0
"
,
"
shelljs
"
:
"
0.8.4
"
,
"
source-code-pro
"
:
"
^2.30.2
"
,
"
source-sans-pro
"
:
"
3.6.0
"
,
"
style-loader
"
:
"
^1.1.4
"
,
"
svg-inline-loader
"
:
"
^0.8.0
"
,
"
ssh2-streams
"
:
"
^0.4.10
"
,
"
style-loader
"
:
"
^1.3.0
"
,
"
svg-inline-loader
"
:
"
^0.8.2
"
,
"
to-string-loader
"
:
"
1.1.6
"
,
"
tslib
"
:
"
^2.0.
0
"
,
"
tslib
"
:
"
^2.0.
3
"
,
"
typedoc
"
:
"
^0.18.0
"
,
"
typescript
"
:
"
^3.9.
3
"
,
"
typescript
"
:
"
^3.9.
7
"
,
"
url-loader
"
:
"
^3.0.0
"
,
"
val-loader
"
:
"
2.1.1
"
,
"
webpack
"
:
"
^5.
0.0-beta.18
"
,
"
webpack-cli
"
:
"
^
3.3.12
"
,
"
webpack
"
:
"
^5.
11.0
"
,
"
webpack-cli
"
:
"
^
4.2.0
"
,
"
yaml-loader
"
:
"
0.6.0
"
},
"resolutions"
:
{
"*/node-abi"
:
"^2.14.0"
"*/node-abi"
:
"^2.19.3"
,
"**/graceful-fs"
:
"^4.2.4"
},
"scripts"
:
{
"build"
:
"npm run build:typings && webpack --color --config app/webpack.main.config.js && webpack --color --config app/webpack.config.js && webpack --color --config terminus-core/webpack.config.js && webpack --color --config terminus-settings/webpack.config.js && webpack --color --config terminus-terminal/webpack.config.js && webpack --color --config terminus-plugin-manager/webpack.config.js && webpack --color --config terminus-community-color-schemes/webpack.config.js && webpack --color --config terminus-ssh/webpack.config.js && webpack --color --config terminus-serial/webpack.config.js"
,
...
...
scripts/build-macos.js
浏览文件 @
bcdbab43
...
...
@@ -6,9 +6,12 @@ const signHook = require('../build/mac/afterSignHook')
const
isTag
=
(
process
.
env
.
GITHUB_REF
||
''
).
startsWith
(
'
refs/tags/
'
)
process
.
env
.
ARCH
=
process
.
env
.
ARCH
||
process
.
arch
builder
({
dir
:
true
,
mac
:
[
'
pkg
'
,
'
zip
'
],
arm64
:
process
.
env
.
ARCH
===
'
arm64
'
,
config
:
{
extraMetadata
:
{
version
:
vars
.
version
,
...
...
scripts/build-native.js
浏览文件 @
bcdbab43
...
...
@@ -8,6 +8,7 @@ for (let dir of ['app', 'terminus-core', 'terminus-ssh', 'terminus-terminal']) {
const
build
=
rebuild
({
buildPath
:
path
.
resolve
(
__dirname
,
'
../
'
+
dir
),
electronVersion
:
vars
.
electronVersion
,
arch
:
process
.
env
.
ARCH
??
process
.
arch
,
force
:
true
,
})
build
.
catch
(
e
=>
{
...
...
scripts/install-deps.js
浏览文件 @
bcdbab43
...
...
@@ -10,13 +10,13 @@ const npx = `${localBinPath}/npx`;
log
.
info
(
'
deps
'
,
'
app
'
)
sh
.
cd
(
'
app
'
)
sh
.
exec
(
`
${
npx
}
yarn install`
)
sh
.
exec
(
`
${
npx
}
yarn install
--force
`
)
sh
.
cd
(
'
..
'
)
vars
.
builtinPlugins
.
forEach
(
plugin
=>
{
log
.
info
(
'
deps
'
,
plugin
)
sh
.
cd
(
plugin
)
sh
.
exec
(
`
${
npx
}
yarn install`
)
sh
.
exec
(
`
${
npx
}
yarn install
--force
`
)
sh
.
cd
(
'
..
'
)
})
...
...
scripts/prepackage-plugins.js
浏览文件 @
bcdbab43
...
...
@@ -15,10 +15,17 @@ vars.builtinPlugins.forEach(plugin => {
sh
.
cp
(
'
-r
'
,
path
.
join
(
'
..
'
,
plugin
),
'
.
'
)
sh
.
rm
(
'
-rf
'
,
path
.
join
(
plugin
,
'
node_modules
'
))
sh
.
cd
(
plugin
)
sh
.
exec
(
`npm install --only=prod`
)
sh
.
exec
(
`yarn install --force --production`
)
log
.
info
(
'
rebuild
'
,
'
native
'
)
if
(
fs
.
existsSync
(
'
node_modules
'
))
{
rebuild
(
path
.
resolve
(
'
.
'
),
vars
.
electronVersion
,
process
.
arch
,
[],
true
)
rebuild
({
buildPath
:
path
.
resolve
(
'
.
'
),
electronVersion
:
vars
.
electronVersion
,
arch
:
process
.
env
.
ARCH
??
process
.
arch
,
force
:
true
,
})
}
sh
.
cd
(
'
..
'
)
})
...
...
terminus-community-color-schemes/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-community-color-schemes"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Community color schemes for Terminus"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -17,7 +17,7 @@
"author"
:
"Eugene Pankov"
,
"license"
:
"MIT"
,
"peerDependencies"
:
{
"@angular/core"
:
"^
7
"
,
"@angular/core"
:
"^
9.1.9
"
,
"terminus-core"
:
"*"
,
"terminus-terminal"
:
"*"
}
...
...
terminus-core/.gitignore
浏览文件 @
bcdbab43
dist
node_modules
terminus-core/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-core"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Terminus core"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -29,17 +29,18 @@
"mixpanel"
:
"^0.10.2"
,
"ng2-dnd"
:
"^5.0.2"
,
"ngx-perfect-scrollbar"
:
"^8.0.0"
,
"readable-stream"
:
"2.3.7"
,
"shell-escape"
:
"^0.2.0"
,
"uuid"
:
"^8.0.0"
,
"winston"
:
"^3.
2.1
"
"winston"
:
"^3.
3.3
"
},
"peerDependencies"
:
{
"@angular/animations"
:
"^
7
"
,
"@angular/common"
:
"^
7
"
,
"@angular/core"
:
"^
7
"
,
"@angular/forms"
:
"^
7
"
,
"@angular/platform-browser"
:
"^
7
"
,
"@angular/platform-browser-dynamic"
:
"^
7
"
,
"rxjs"
:
"^
5
"
"@angular/animations"
:
"^
9.1.9
"
,
"@angular/common"
:
"^
9.1.11
"
,
"@angular/core"
:
"^
9.1.9
"
,
"@angular/forms"
:
"^
9.1.11
"
,
"@angular/platform-browser"
:
"^
9.1.11
"
,
"@angular/platform-browser-dynamic"
:
"^
9.1.11
"
,
"rxjs"
:
"^
6.6.3
"
}
}
terminus-core/src/api/tabContextMenuProvider.ts
浏览文件 @
bcdbab43
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
BaseTabComponent
}
from
'
../components/baseTab.component
'
import
{
TabHeaderComponent
}
from
'
../components/tabHeader.component
'
...
...
@@ -7,5 +8,5 @@ import { TabHeaderComponent } from '../components/tabHeader.component'
export
abstract
class
TabContextMenuItemProvider
{
weight
=
0
abstract
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
abstract
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
}
terminus-core/src/components/appRoot.component.scss
浏览文件 @
bcdbab43
...
...
@@ -92,6 +92,8 @@ $side-tab-width: 200px;
color
:
#aaa
;
border
:
none
;
border-radius
:
0
;
align-items
:
center
;
&
.dropdown-toggle
::after
{
display
:
none
;
...
...
terminus-core/src/components/tabHeader.component.ts
浏览文件 @
bcdbab43
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
Component
,
Input
,
Optional
,
Inject
,
HostBinding
,
HostListener
,
ViewChild
,
ElementRef
}
from
'
@angular/core
'
import
{
SortableComponent
}
from
'
ng2-dnd
'
import
{
NgbModal
}
from
'
@ng-bootstrap/ng-bootstrap
'
...
...
@@ -13,7 +14,7 @@ import { ConfigService } from '../services/config.service'
/** @hidden */
export
interface
SortableComponentProxy
{
setDragHandle
(
_
:
HTMLElement
)
setDragHandle
:
(
_
:
HTMLElement
)
=>
void
}
/** @hidden */
...
...
@@ -71,8 +72,8 @@ export class TabHeaderComponent {
}).
catch
(()
=>
null
)
}
async
buildContextMenu
():
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[]
async
buildContextMenu
():
Promise
<
MenuItemConstructorOptions
[]
>
{
let
items
:
MenuItemConstructorOptions
[]
=
[]
for
(
const
section
of
await
Promise
.
all
(
this
.
contextMenuProviders
.
map
(
x
=>
x
.
getItems
(
this
.
tab
,
this
))))
{
items
.
push
({
type
:
'
separator
'
})
items
=
items
.
concat
(
section
)
...
...
terminus-core/src/components/windowControls.component.scss
浏览文件 @
bcdbab43
...
...
@@ -12,7 +12,8 @@ button {
padding
:
0
;
line-height
:
0
;
text-align
:
center
;
align-items
:
center
;
&
:not
(
:hover
)
:not
(
:active
)
{
background
:
transparent
;
}
...
...
terminus-core/src/services/config.service.ts
浏览文件 @
bcdbab43
...
...
@@ -97,7 +97,7 @@ export class ConfigService {
private
changed
=
new
Subject
<
void
>
()
private
_store
:
any
private
defaults
:
any
private
servicesCache
:
{
[
id
:
string
]:
Function
[]
}
|
null
=
null
private
servicesCache
:
Record
<
string
,
Function
[]
>|
null
=
null
// eslint-disable-line @typescript-eslint/ban-types
get
changed$
():
Observable
<
void
>
{
return
this
.
changed
}
...
...
@@ -159,7 +159,7 @@ export class ConfigService {
this
.
_store
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
_store
))
fs
.
writeFileSync
(
this
.
path
,
yaml
.
safeDump
(
this
.
_store
),
'
utf8
'
)
this
.
emitChange
()
this
.
hostApp
.
broadcastConfigChange
(
this
.
store
)
this
.
hostApp
.
broadcastConfigChange
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
store
))
)
}
/**
...
...
@@ -189,7 +189,7 @@ export class ConfigService {
*
* @typeparam T Base provider type
*/
enabledServices
<
T
extends
object
>
(
services
:
T
[]):
T
[]
{
enabledServices
<
T
extends
object
>
(
services
:
T
[]):
T
[]
{
// eslint-disable-line @typescript-eslint/ban-types
if
(
!
this
.
servicesCache
)
{
this
.
servicesCache
=
{}
const
ngModule
=
window
[
'
rootModule
'
].
ɵinj
...
...
terminus-core/src/services/docking.service.ts
浏览文件 @
bcdbab43
import
type
{
Display
}
from
'
electron
'
import
{
Injectable
}
from
'
@angular/core
'
import
{
ConfigService
}
from
'
../services/config.service
'
import
{
ElectronService
}
from
'
../services/electron.service
'
...
...
@@ -11,8 +12,8 @@ export class DockingService {
private
config
:
ConfigService
,
private
hostApp
:
HostAppService
,
)
{
electron
.
screen
.
on
(
'
display-removed
'
,
()
=>
this
.
repositionWindow
())
electron
.
screen
.
on
(
'
display-metrics-changed
'
,
()
=>
this
.
repositionWindow
())
hostApp
.
displaysChanged$
.
subscribe
(
()
=>
this
.
repositionWindow
())
hostApp
.
displayMetricsChanged$
.
subscribe
(
()
=>
this
.
repositionWindow
())
}
dock
():
void
{
...
...
@@ -61,11 +62,11 @@ export class DockingService {
})
}
getCurrentScreen
():
Electron
.
Display
{
getCurrentScreen
():
Display
{
return
this
.
electron
.
screen
.
getDisplayNearestPoint
(
this
.
electron
.
screen
.
getCursorScreenPoint
())
}
getScreens
():
Electron
.
Display
[]
{
getScreens
():
Display
[]
{
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
...
...
@@ -73,7 +74,7 @@ export class DockingService {
return
{
...
display
,
id
:
display
.
id
,
name
:
display
.
id
===
primaryDisplayID
?
'
Primary Display
'
:
`Display
${
index
+
1
}
`
,
name
:
display
.
id
===
primaryDisplayID
?
'
Primary Display
'
:
`Display
${
index
+
1
}
`
,
}
})
}
...
...
terminus-core/src/services/electron.service.ts
浏览文件 @
bcdbab43
import
{
Injectable
}
from
'
@angular/core
'
import
{
TouchBar
,
BrowserWindow
,
Menu
,
MenuItem
,
NativeImage
}
from
'
electron
'
import
{
App
,
IpcRenderer
,
Shell
,
Dialog
,
Clipboard
,
GlobalShortcut
,
Screen
,
Remote
,
AutoUpdater
,
TouchBar
,
BrowserWindow
,
Menu
,
MenuItem
,
NativeImage
,
MessageBoxOptions
}
from
'
electron
'
export
interface
MessageBoxResponse
{
response
:
number
...
...
@@ -8,16 +8,16 @@ export interface MessageBoxResponse {
@
Injectable
({
providedIn
:
'
root
'
})
export
class
ElectronService
{
app
:
Electron
.
App
ipcRenderer
:
Electron
.
IpcRenderer
shell
:
Electron
.
Shell
dialog
:
Electron
.
Dialog
clipboard
:
Electron
.
Clipboard
globalShortcut
:
Electron
.
GlobalShortcut
app
:
App
ipcRenderer
:
IpcRenderer
shell
:
Shell
dialog
:
Dialog
clipboard
:
Clipboard
globalShortcut
:
GlobalShortcut
nativeImage
:
typeof
NativeImage
screen
:
Electron
.
Screen
remote
:
Electron
.
Remote
autoUpdater
:
Electron
.
AutoUpdater
screen
:
Screen
remote
:
Remote
autoUpdater
:
AutoUpdater
TouchBar
:
typeof
TouchBar
BrowserWindow
:
typeof
BrowserWindow
Menu
:
typeof
Menu
...
...
@@ -44,8 +44,8 @@ export class ElectronService {
}
async
showMessageBox
(
browserWindow
:
Electron
.
BrowserWindow
,
options
:
Electron
.
MessageBoxOptions
browserWindow
:
BrowserWindow
,
options
:
MessageBoxOptions
):
Promise
<
MessageBoxResponse
>
{
return
this
.
dialog
.
showMessageBox
(
browserWindow
,
options
)
}
...
...
terminus-core/src/services/homeBase.service.ts
浏览文件 @
bcdbab43
...
...
@@ -58,7 +58,7 @@ export class HomeBaseService {
getAnalyticsProperties
():
Record
<
string
,
string
>
{
return
{
distinct_id
:
window
.
localStorage
.
analyticsUserID
,
// eslint-disable-line @typescript-eslint/camelcase
distinct_id
:
window
.
localStorage
.
analyticsUserID
,
platform
:
process
.
platform
,
os
:
os
.
release
(),
version
:
this
.
appVersion
,
...
...
terminus-core/src/services/hostApp.service.ts
浏览文件 @
bcdbab43
import
type
{
BrowserWindow
,
TouchBar
,
MenuItemConstructorOptions
}
from
'
electron
'
import
*
as
path
from
'
path
'
import
shellEscape
from
'
shell-escape
'
import
{
Observable
,
Subject
}
from
'
rxjs
'
...
...
@@ -42,6 +43,7 @@ export class HostAppService {
private
windowMoved
=
new
Subject
<
void
>
()
private
windowFocused
=
new
Subject
<
void
>
()
private
displayMetricsChanged
=
new
Subject
<
void
>
()
private
displaysChanged
=
new
Subject
<
void
>
()
private
logger
:
Logger
private
windowId
:
number
...
...
@@ -91,6 +93,8 @@ export class HostAppService {
get
displayMetricsChanged$
():
Observable
<
void
>
{
return
this
.
displayMetricsChanged
}
get
displaysChanged$
():
Observable
<
void
>
{
return
this
.
displaysChanged
}
private
constructor
(
private
zone
:
NgZone
,
private
electron
:
ElectronService
,
...
...
@@ -140,6 +144,10 @@ export class HostAppService {
this
.
zone
.
run
(()
=>
this
.
displayMetricsChanged
.
next
())
})
electron
.
ipcRenderer
.
on
(
'
host:displays-changed
'
,
()
=>
{
this
.
zone
.
run
(()
=>
this
.
displaysChanged
.
next
())
})
electron
.
ipcRenderer
.
on
(
'
host:second-instance
'
,
(
_$event
,
argv
:
any
,
cwd
:
string
)
=>
this
.
zone
.
run
(()
=>
{
this
.
logger
.
info
(
'
Second instance
'
,
argv
)
const
op
=
argv
.
_
[
0
]
...
...
@@ -177,8 +185,8 @@ export class HostAppService {
/**
* Returns the current remote [[BrowserWindow]]
*/
getWindow
():
Electron
.
BrowserWindow
{
return
this
.
electron
.
BrowserWindow
.
fromId
(
this
.
windowId
)
getWindow
():
BrowserWindow
{
return
this
.
electron
.
BrowserWindow
.
fromId
(
this
.
windowId
)
!
}
newWindow
():
void
{
...
...
@@ -239,11 +247,11 @@ export class HostAppService {
this
.
electron
.
ipcRenderer
.
send
(
'
window-set-title
'
,
title
)
}
setTouchBar
(
touchBar
:
Electron
.
TouchBar
):
void
{
setTouchBar
(
touchBar
:
TouchBar
):
void
{
this
.
getWindow
().
setTouchBar
(
touchBar
)
}
popupContextMenu
(
menuDefinition
:
Electron
.
MenuItemConstructorOptions
[]):
void
{
popupContextMenu
(
menuDefinition
:
MenuItemConstructorOptions
[]):
void
{
this
.
electron
.
Menu
.
buildFromTemplate
(
menuDefinition
).
popup
({})
}
...
...
terminus-core/src/services/log.service.ts
浏览文件 @
bcdbab43
...
...
@@ -28,7 +28,7 @@ const initializeWinston = (electron: ElectronService) => {
export
class
Logger
{
constructor
(
private
winstonLogger
:
any
,
private
winstonLogger
:
winston
.
Logger
,
private
name
:
string
,
)
{}
...
...
@@ -62,7 +62,7 @@ export class Logger {
@
Injectable
({
providedIn
:
'
root
'
})
export
class
LogService
{
private
log
:
any
private
log
:
winston
.
Logger
/** @hidden */
private
constructor
(
electron
:
ElectronService
)
{
...
...
terminus-core/src/services/shellIntegration.service.ts
浏览文件 @
bcdbab43
...
...
@@ -73,10 +73,10 @@ export class ShellIntegrationService {
wnr
.
setRegistryValue
(
wnr
.
HK
.
CU
,
registryKey
.
path
+
'
\\
command
'
,
''
,
wnr
.
REG
.
SZ
,
exe
+
'
'
+
registryKey
.
command
)
}
if
(
wnr
.
getRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
Directory
\\
Background
\\
shell
\\
Open Terminus here
'
))
{
if
(
wnr
.
getRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
Directory
\\
Background
\\
shell
\\
Open Terminus here
'
))
{
wnr
.
deleteRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
Directory
\\
Background
\\
shell
\\
Open Terminus here
'
)
}
if
(
wnr
.
getRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
*
\\
shell
\\
Paste path into Terminus
'
))
{
if
(
wnr
.
getRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
*
\\
shell
\\
Paste path into Terminus
'
))
{
wnr
.
deleteRegistryKey
(
wnr
.
HK
.
CU
,
'
Software
\\
Classes
\\
*
\\
shell
\\
Paste path into Terminus
'
)
}
}
...
...
terminus-core/src/services/touchbar.service.ts
浏览文件 @
bcdbab43
import
{
NativeImage
,
SegmentedControlSegment
,
TouchBarSegmentedControl
}
from
'
electron
'
import
{
Injectable
,
Inject
,
NgZone
}
from
'
@angular/core
'
import
{
TouchBarSegmentedControl
,
SegmentedControlSegment
}
from
'
electron
'
import
{
AppService
}
from
'
./app.service
'
import
{
ConfigService
}
from
'
./config.service
'
import
{
ElectronService
}
from
'
./electron.service
'
...
...
@@ -12,7 +12,7 @@ export class TouchbarService {
private
tabsSegmentedControl
:
TouchBarSegmentedControl
private
buttonsSegmentedControl
:
TouchBarSegmentedControl
private
tabSegments
:
SegmentedControlSegment
[]
=
[]
private
nsImageCache
:
{[
id
:
string
]:
Electron
.
NativeImage
}
=
{}
private
nsImageCache
:
{[
id
:
string
]:
NativeImage
}
=
{}
private
constructor
(
private
app
:
AppService
,
...
...
@@ -100,7 +100,7 @@ export class TouchbarService {
this
.
hostApp
.
setTouchBar
(
touchBar
)
}
private
getButton
(
button
:
ToolbarButton
):
Electron
.
SegmentedControlSegment
{
private
getButton
(
button
:
ToolbarButton
):
SegmentedControlSegment
{
return
{
label
:
button
.
touchBarNSImage
?
undefined
:
this
.
shortenTitle
(
button
.
touchBarTitle
||
button
.
title
),
icon
:
button
.
touchBarNSImage
?
this
.
getCachedNSImage
(
button
.
touchBarNSImage
)
:
undefined
,
...
...
terminus-core/src/tabContextMenu.ts
浏览文件 @
bcdbab43
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
Injectable
,
NgZone
}
from
'
@angular/core
'
import
{
Subscription
}
from
'
rxjs
'
import
{
AppService
}
from
'
./services/app.service
'
...
...
@@ -19,8 +20,8 @@ export class TabManagementContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
let
items
:
MenuItemConstructorOptions
[]
=
[
{
label
:
'
Close
'
,
click
:
()
=>
this
.
zone
.
run
(()
=>
{
...
...
@@ -75,7 +76,7 @@ export class TabManagementContextMenu extends TabContextMenuItemProvider {
click
:
()
=>
this
.
zone
.
run
(()
=>
{
(
tab
.
parent
as
SplitTabComponent
).
splitTab
(
tab
,
dir
)
}),
}))
as
Electron
.
MenuItemConstructorOptions
[],
}))
as
MenuItemConstructorOptions
[],
})
}
}
...
...
@@ -105,8 +106,8 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[]
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
let
items
:
MenuItemConstructorOptions
[]
=
[]
if
(
tabHeader
)
{
items
=
[
...
items
,
...
...
@@ -128,7 +129,7 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
click
:
()
=>
this
.
zone
.
run
(()
=>
{
tab
.
color
=
color
.
value
}),
}))
as
Electron
.
MenuItemConstructorOptions
[],
}))
as
MenuItemConstructorOptions
[],
},
]
}
...
...
@@ -146,9 +147,9 @@ export class TaskCompletionContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
const
process
=
await
tab
.
getCurrentProcess
()
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[]
const
items
:
MenuItemConstructorOptions
[]
=
[]
const
extTab
:
(
BaseTabComponent
&
{
__completionNotificationEnabled
?:
boolean
,
__outputNotificationSubscription
?:
Subscription
|
null
})
=
tab
...
...
terminus-core/src/theme.compact.scss
浏览文件 @
bcdbab43
...
...
@@ -7,7 +7,7 @@ app-root {
.btn-tab-bar
{
line-height
:
29px
!
important
;
height
:
27px
!
important
;
align-items
:
center
;
svg
{
height
:
14px
;
}
...
...
terminus-core/src/theme.paper.scss
浏览文件 @
bcdbab43
...
...
@@ -137,7 +137,7 @@ app-root {
.btn-tab-bar
{
background
:
transparent
;
line-height
:
42px
;
align-items
:
center
;
svg
,
path
{
fill
:
$black
;
fill-opacity
:
0
.75
;
...
...
terminus-core/src/theme.scss
浏览文件 @
bcdbab43
...
...
@@ -358,6 +358,7 @@ search-panel {
.btn-secondary
:not
(
:disabled
)
:not
(
.disabled
)
{
&
.active
,
&
:active
{
background
:
#191e23
;
align-items
:
center
;
}
}
...
...
terminus-core/yarn.lock
浏览文件 @
bcdbab43
...
...
@@ -12,21 +12,14 @@
kuler "^2.0.0"
"@types/js-yaml@^3.9.0":
version "3.12.4"
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.4.tgz#7d3b534ec35a0585128e2d332db1403ebe057e25"
integrity sha512-fYMgzN+9e28R81weVN49inn/u798ruU91En1ZnGvSZzCRc5jXx9B2EDhlRaWmcO1RIxFHL8AajRXzxDuJu93+A==
"@types/node@*":
version "13.7.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.1.tgz#238eb34a66431b71d2aaddeaa7db166f25971a0d"
integrity sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==
"@types/semver@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408"
integrity sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==
dependencies:
"@types/node" "*"
version "3.12.5"
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb"
integrity sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==
"@types/semver@^7.3.1":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb"
integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==
"@types/shell-escape@^0.2.0":
version "0.2.0"
...
...
@@ -72,14 +65,14 @@ axios@^0.19.0:
follow-redirects "1.5.10"
bootstrap@^4.1.3:
version "4.
4.1
"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.
4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01
"
integrity sha512-
tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA
==
builder-util-runtime@8.7.
0
:
version "8.7.
0
"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.
0.tgz#e48ad004835c8284662e8eaf47a53468c66e8e8d
"
integrity sha512-
G1AqqVM2vYTrSFR982c1NNzwXKrGLQjVjaZaWQdn4O6Z3YKjdMDofw88aD9jpyK9ZXkrCxR0tI3Qe9wNbyTlXg
==
version "4.
5.3
"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.
5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6
"
integrity sha512-
o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ
==
builder-util-runtime@8.7.
2
:
version "8.7.
2
"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.
2.tgz#d93afc71428a12789b437e13850e1fa7da956d72
"
integrity sha512-
xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA
==
dependencies:
debug "^4.1.1"
sax "^1.2.4"
...
...
@@ -102,9 +95,9 @@ color-name@^1.0.0:
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.5.2:
version "1.5.
3
"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.
3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc
"
integrity sha512-
dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQ
w==
version "1.5.
4
"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.
4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6
"
integrity sha512-
57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidb
w==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
...
...
@@ -118,9 +111,9 @@ color@3.0.x:
color-string "^1.5.2"
colors@^1.2.1:
version "1.
3.3
"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.
3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d
"
integrity sha512-
mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg
==
version "1.
4.0
"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.
4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78
"
integrity sha512-
a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA
==
colorspace@1.1.x:
version "1.1.2"
...
...
@@ -131,9 +124,9 @@ colorspace@1.1.x:
text-hex "1.0.x"
core-js@^3.1.2:
version "3.
6.5
"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.
6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a
"
integrity sha512-
vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCr
A==
version "3.
7.0
"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.
7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f
"
integrity sha512-
NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xz
A==
core-util-is@~1.0.0:
version "1.0.2"
...
...
@@ -155,11 +148,11 @@ debug@^3.1.0:
ms "^2.1.1"
debug@^4.1.1:
version "4.
1.1
"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.
1.1.tgz#3b72260255109c6b589cee050f1d51613966479
1"
integrity sha512-
pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw
==
version "4.
2.0
"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.
2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f
1"
integrity sha512-
IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg
==
dependencies:
ms "
^2.1.1
"
ms "
2.1.2
"
deepmerge@^4.1.1:
version "4.2.2"
...
...
@@ -167,17 +160,17 @@ deepmerge@^4.1.1:
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
electron-updater@^4.0.6:
version "4.3.
1
"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.
1.tgz#9d485b6262bc56fcf7ee62b1dc1b3b105a3e96a7
"
integrity sha512-
UDC5AHCgeiHJYDYWZG/rsl1vdAFKqI/Lm7whN57LKAk8EfhTewhcEHzheRcncLgikMcQL8gFo1KeX51tf5a5Wg
==
dependencies:
"@types/semver" "^7.
1.0
"
builder-util-runtime "8.7.
0
"
fs-extra "^9.0.
0
"
js-yaml "^3.1
3.1
"
version "4.3.
5
"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.
5.tgz#4fb36f593a031c87ea07ee141c9f064d5deffb15
"
integrity sha512-
5jjN7ebvfj1cLI0VZMdCnJk6aC4bP+dy7ryBf21vArR0JzpRVk0OZHA2QBD+H5rm6ZSeDYHOY6+8PrMEqJ4wlQ
==
dependencies:
"@types/semver" "^7.
3.1
"
builder-util-runtime "8.7.
2
"
fs-extra "^9.0.
1
"
js-yaml "^3.1
4.0
"
lazy-val "^1.0.4"
lodash.isequal "^4.5.0"
semver "^7.
1.3
"
semver "^7.
3.2
"
enabled@2.0.x:
version "2.0.0"
...
...
@@ -185,9 +178,9 @@ enabled@2.0.x:
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
es6-promise@^4.0.3:
version "4.2.
6
"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.
6.tgz#b685edd8258886365ea62b57d30de28fadcd974f
"
integrity sha512-
aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q
==
version "4.2.
8
"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.
8.tgz#4eb21594c972bc40553d276e510539143db53e0a
"
integrity sha512-
HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w
==
es6-promisify@^5.0.0:
version "5.0.0"
...
...
@@ -202,9 +195,9 @@ esprima@^4.0.0:
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
fast-safe-stringify@^2.0.4:
version "2.0.
6
"
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.
6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2
"
integrity sha512-
q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg
==
version "2.0.
7
"
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.
7.tgz#124aa885899261f68aedb42a7c080de9da608743
"
integrity sha512-
Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA
==
fecha@^4.2.0:
version "4.2.0"
...
...
@@ -223,10 +216,10 @@ follow-redirects@1.5.10:
dependencies:
debug "=3.1.0"
fs-extra@^9.0.
0
:
version "9.0.
0
"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.
0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3
"
integrity sha512-
pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g
==
fs-extra@^9.0.
1
:
version "9.0.
1
"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.
1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc
"
integrity sha512-
h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ
==
dependencies:
at-least-node "^1.0.0"
graceful-fs "^4.2.0"
...
...
@@ -234,9 +227,9 @@ fs-extra@^9.0.0:
universalify "^1.0.0"
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.
2
"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.
2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02
"
integrity sha512-
IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q
==
version "4.2.
4
"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.
4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb
"
integrity sha512-
WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw
==
https-proxy-agent@3.0.0:
version "3.0.0"
...
...
@@ -247,9 +240,9 @@ https-proxy-agent@3.0.0:
debug "^3.1.0"
inherits@^2.0.3, inherits@~2.0.3:
version "2.0.
3
"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.
3.tgz#633c2c83e3da42a502f52466022480f4208261de
"
integrity sha
1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4
=
version "2.0.
4
"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.
4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c
"
integrity sha
512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=
=
is-arrayish@^0.3.1:
version "0.3.2"
...
...
@@ -266,7 +259,7 @@ isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
js-yaml@^3.1
3.1
, js-yaml@^3.9.0:
js-yaml@^3.1
4.0
, js-yaml@^3.9.0:
version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
...
...
@@ -275,11 +268,11 @@ js-yaml@^3.13.1, js-yaml@^3.9.0:
esprima "^4.0.0"
jsonfile@^6.0.1:
version "6.
0.1
"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.
0.1.tgz#98966cba214378c8c84b82e085907b40bf614179
"
integrity sha512-
jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg
==
version "6.
1.0
"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.
1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae
"
integrity sha512-
5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ
==
dependencies:
universalify "^
1
.0.0"
universalify "^
2
.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
...
...
@@ -321,7 +314,7 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@^2.1.1:
ms@
2.1.2, ms@
^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
...
...
@@ -347,16 +340,16 @@ one-time@^1.0.0:
fn.name "1.x.x"
perfect-scrollbar@^1.4.0:
version "1.
4
.0"
resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.
4.0.tgz#5d014ef9775e1f43058a1dbae9ed1daf0e7091f1
"
integrity sha512-
/2Sk/khljhdrsamjJYS5NjrH+GKEHEwh7zFSiYyxROyYKagkE4kSn2zDQDRTOMo8mpT2jikxx6yI1dG7lNP/hw
==
version "1.
5
.0"
resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.
5.0.tgz#821d224ed8ff61990c23f26db63048cdc75b6b83
"
integrity sha512-
NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA
==
process-nextick-args@~2.0.0:
version "2.0.
0
"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.
0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa
"
integrity sha512-
MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw
==
version "2.0.
1
"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.
1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2
"
integrity sha512-
3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag
==
readable-stream@^2.3.7:
readable-stream@
2.3.7, readable-stream@
^2.3.7:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
...
...
@@ -388,15 +381,20 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver@^7.
1.3
:
version "7.
1.3
"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.
1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6
"
integrity sha512-
ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA
==
semver@^7.
3.2
:
version "7.
3.2
"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.
3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938
"
integrity sha512-
OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ
==
shell-escape@^0.2.0:
version "0.2.0"
...
...
@@ -421,11 +419,11 @@ stack-trace@0.0.x:
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
string_decoder@^1.1.1:
version "1.
2
.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.
2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d
"
integrity sha512-
6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w
==
version "1.
3
.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.
3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e
"
integrity sha512-
hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA
==
dependencies:
safe-buffer "~5.
1
.0"
safe-buffer "~5.
2
.0"
string_decoder@~1.1.1:
version "1.1.1"
...
...
@@ -449,15 +447,20 @@ universalify@^1.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
uuid@^8.0.0:
version "8.
2.0
"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.
2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e
"
integrity sha512-
CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q
==
version "8.
3.1
"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.
3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31
"
integrity sha512-
FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg
==
winston-transport@^4.4.0:
version "4.4.0"
...
...
@@ -467,7 +470,7 @@ winston-transport@^4.4.0:
readable-stream "^2.3.7"
triple-beam "^1.2.0"
winston@*, winston@^3.
2.1
:
winston@*, winston@^3.
3.3
:
version "3.3.3"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
...
...
terminus-plugin-manager/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-plugin-manager"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Terminus' plugin manager"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -23,12 +23,12 @@
"semver"
:
"^7.1.1"
},
"peerDependencies"
:
{
"@angular/common"
:
"^
7
"
,
"@angular/core"
:
"^
7
"
,
"@angular/forms"
:
"^
7
"
,
"@angular/platform-browser"
:
"^
7
"
,
"@ng-bootstrap/ng-bootstrap"
:
"^
1
"
,
"rxjs"
:
"^5"
,
"@angular/common"
:
"^
9.1.11
"
,
"@angular/core"
:
"^
9.1.9
"
,
"@angular/forms"
:
"^
9.1.11
"
,
"@angular/platform-browser"
:
"^
9.1.11
"
,
"@ng-bootstrap/ng-bootstrap"
:
"^
6.1.0
"
,
"rxjs"
:
"^
6.5.
5"
,
"terminus-core"
:
"*"
,
"terminus-settings"
:
"*"
}
...
...
terminus-plugin-manager/src/components/pluginsSettingsTab.component.ts
浏览文件 @
bcdbab43
...
...
@@ -55,7 +55,7 @@ export class PluginsSettingsTabComponent {
}
openPluginsFolder
():
void
{
this
.
electron
.
shell
.
open
Item
(
this
.
pluginManager
.
userPluginsPath
)
this
.
electron
.
shell
.
open
Path
(
this
.
pluginManager
.
userPluginsPath
)
}
searchAvailable
(
query
:
string
)
{
...
...
terminus-plugin-manager/yarn.lock
浏览文件 @
bcdbab43
...
...
@@ -2,17 +2,10 @@
# yarn lockfile v1
"@types/node@*":
version "13.7.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.6.tgz#cb734a7c191472ae6a2b3a502b4dfffcea974113"
integrity sha512-eyK7MWD0R1HqVTp+PtwRgFeIsemzuj4gBFSQxfPHY5iMjS7474e5wq+VFgTcdpyHeNxyKSaetYAjdMLJlKoWqA==
"@types/semver@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408"
integrity sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==
dependencies:
"@types/node" "*"
version "7.3.4"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb"
integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==
any-promise@^1.0.0:
version "1.3.0"
...
...
@@ -60,9 +53,9 @@ object-assign@^4.0.1:
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
semver@^7.1.1:
version "7.
2
.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.
2.2.tgz#d01432d74ed3010a20ffaf909d63a691520521cd
"
integrity sha512-
Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA
==
version "7.
3
.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.
3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938
"
integrity sha512-
OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ
==
thenify-all@^1.0.0:
version "1.6.0"
...
...
@@ -72,8 +65,8 @@ thenify-all@^1.0.0:
thenify ">= 3.1.0 < 4"
"thenify@>= 3.1.0 < 4":
version "3.3.
0
"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.
0.tgz#e69e38a1babe969b0108207978b9f62b88604839
"
integrity sha
1-5p44obq+lpsBCCB5eLn2K4hgSDk
=
version "3.3.
1
"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.
1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f
"
integrity sha
512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=
=
dependencies:
any-promise "^1.0.0"
terminus-serial/.gitignore
0 → 100644
浏览文件 @
bcdbab43
terminus-serial/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-serial"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Serial connection manager for Terminus"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -17,19 +17,20 @@
"author"
:
"Eugene Pankov"
,
"license"
:
"MIT"
,
"devDependencies"
:
{
"@types/node"
:
"1
2.7.3
"
,
"@types/node"
:
"1
4.14.14
"
,
"@types/ssh2"
:
"^0.5.35"
,
"ansi-colors"
:
"^4.1.1"
,
"cli-spinner"
:
"^0.2.10"
,
"electron-rebuild"
:
"^1.10.0"
,
"terminus-terminal"
:
"^1.0.98-nightly.0"
"cli-spinner"
:
"^0.2.10"
},
"peerDependencies"
:
{
"@angular/common"
:
"^7"
,
"@angular/core"
:
"^7"
,
"@angular/forms"
:
"^7"
,
"@ng-bootstrap/ng-bootstrap"
:
"^1"
,
"rxjs"
:
"^5"
,
"@angular/animations"
:
"^9.1.9"
,
"@angular/common"
:
"^9.1.11"
,
"@angular/core"
:
"^9.1.9"
,
"@angular/forms"
:
"^9.1.11"
,
"@angular/platform-browser"
:
"^9.1.11"
,
"@angular/platform-browser-dynamic"
:
"^9.1.11"
,
"@ng-bootstrap/ng-bootstrap"
:
"^6.2.0"
,
"rxjs"
:
"^6.6.3"
,
"terminus-core"
:
"*"
,
"terminus-settings"
:
"*"
,
"terminus-terminal"
:
"*"
...
...
terminus-serial/src/components/serialTab.component.ts
浏览文件 @
bcdbab43
...
...
@@ -11,7 +11,7 @@ import { Subscription } from 'rxjs'
/** @hidden */
@
Component
({
selector
:
'
serial-tab
'
,
template
:
BaseTerminalTabComponent
.
template
+
require
<
string
>
(
'
./serialTab.component.pug
'
),
template
:
BaseTerminalTabComponent
.
template
+
(
require
(
'
./serialTab.component.pug
'
)
as
string
),
styles
:
[
require
(
'
./serialTab.component.scss
'
),
...
BaseTerminalTabComponent
.
styles
],
animations
:
BaseTerminalTabComponent
.
animations
,
})
...
...
@@ -64,7 +64,7 @@ export class SerialTabComponent extends BaseTerminalTabComponent {
this
.
session
=
this
.
injector
.
get
(
SerialService
).
createSession
(
this
.
connection
)
this
.
session
.
serviceMessage$
.
subscribe
(
msg
=>
{
this
.
write
(
'
\r\n
'
+
colors
.
black
.
bgWhite
(
'
serial
'
)
+
'
'
+
msg
+
'
\r\n
'
)
this
.
write
(
`\r\n
${
colors
.
black
.
bgWhite
(
'
serial
'
)}
${
msg
}
\r\n`
)
this
.
session
.
resize
(
this
.
size
.
columns
,
this
.
size
.
rows
)
})
this
.
attachSessionHandlers
()
...
...
terminus-serial/yarn.lock
浏览文件 @
bcdbab43
此差异已折叠。
点击以展开。
terminus-settings/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-settings"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Terminus terminal settings page"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -20,12 +20,13 @@
"@types/deep-equal"
:
"1.0.1"
},
"peerDependencies"
:
{
"@angular/common"
:
"^7"
,
"@angular/core"
:
"^7"
,
"@angular/forms"
:
"^7"
,
"@angular/platform-browser"
:
"^7"
,
"@ng-bootstrap/ng-bootstrap"
:
"^1"
,
"rxjs"
:
"^5"
,
"@angular/animations"
:
"^9.1.9"
,
"@angular/common"
:
"^9.1.11"
,
"@angular/core"
:
"^9.1.9"
,
"@angular/forms"
:
"^9.1.11"
,
"@angular/platform-browser"
:
"^9.1.11"
,
"@ng-bootstrap/ng-bootstrap"
:
"^6.1.0"
,
"rxjs"
:
"^6.5.5"
,
"terminus-core"
:
"*"
}
}
terminus-settings/src/components/settingsTab.component.ts
浏览文件 @
bcdbab43
...
...
@@ -71,13 +71,9 @@ export class SettingsTabComponent extends BaseTabComponent {
this
.
configSubscription
=
config
.
changed$
.
subscribe
(
onConfigChange
)
onConfigChange
()
const
onScreenChange
=
()
=>
{
hostApp
.
displaysChanged$
.
subscribe
(
()
=>
{
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
)
})
hotkeys
.
getHotkeyDescriptions
().
then
(
descriptions
=>
{
this
.
hotkeyDescriptions
=
descriptions
...
...
terminus-ssh/.gitignore
0 → 100644
浏览文件 @
bcdbab43
terminus-ssh/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-ssh"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"SSH connection manager for Terminus"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -21,25 +21,28 @@
"author"
:
"Eugene Pankov"
,
"license"
:
"MIT"
,
"devDependencies"
:
{
"@types/node"
:
"1
2.7.3
"
,
"@types/node"
:
"1
4.14.14
"
,
"@types/ssh2"
:
"^0.5.35"
,
"ansi-colors"
:
"^4.1.1"
,
"cli-spinner"
:
"^0.2.10"
,
"run-script-os"
:
"^1.1.3"
,
"socksv5"
:
"^0.0.6"
,
"ssh2"
:
"^0.8.9"
,
"ssh2-streams"
:
"Eugeny/ssh2-streams#75f6d3425d071ac73a18fd46e2f5e738bfe897c5"
,
"sshpk"
:
"^1.16.1"
,
"strip-ansi"
:
"^6.0.0"
,
"temp"
:
"^0.9.1"
,
"terminus-terminal"
:
"^1.0.98-nightly.0"
"temp"
:
"^0.9.1"
},
"dependencies"
:
{
"socksv5"
:
"^0.0.6"
},
"peerDependencies"
:
{
"@angular/common"
:
"^7"
,
"@angular/core"
:
"^7"
,
"@angular/forms"
:
"^7"
,
"@ng-bootstrap/ng-bootstrap"
:
"^1"
,
"rxjs"
:
"^5"
,
"@angular/animations"
:
"^9.1.9"
,
"@angular/common"
:
"^9.1.11"
,
"@angular/core"
:
"^9.1.9"
,
"@angular/forms"
:
"^9.1.11"
,
"@angular/platform-browser"
:
"^9.1.11"
,
"@ng-bootstrap/ng-bootstrap"
:
"^6.1.0"
,
"rxjs"
:
"^6.5.5"
,
"terminus-core"
:
"*"
,
"terminus-settings"
:
"*"
,
"terminus-terminal"
:
"*"
...
...
terminus-ssh/src/api.ts
浏览文件 @
bcdbab43
...
...
@@ -18,7 +18,7 @@ export enum SSHAlgorithmType {
HMAC
=
'
hmac
'
,
KEX
=
'
kex
'
,
CIPHER
=
'
cipher
'
,
HOSTKEY
=
'
serverHostKey
'
HOSTKEY
=
'
serverHostKey
'
,
}
export
interface
SSHConnection
{
...
...
@@ -45,7 +45,7 @@ export interface SSHConnection {
}
export
enum
PortForwardType
{
Local
,
Remote
,
Dynamic
Local
,
Remote
,
Dynamic
,
}
export
class
ForwardedPort
{
...
...
@@ -230,11 +230,11 @@ export class SSHSession extends BaseSession {
this
.
ssh
.
on
(
'
x11
'
,
(
details
,
accept
,
reject
)
=>
{
this
.
logger
.
info
(
`Incoming X11 connection from
${
details
.
srcIP
}
:
${
details
.
srcPort
}
`
)
le
t
displaySpec
=
process
.
env
.
DISPLAY
||
'
:0
'
cons
t
displaySpec
=
process
.
env
.
DISPLAY
||
'
:0
'
this
.
logger
.
debug
(
`Trying display
${
displaySpec
}
`
)
le
t
xHost
=
displaySpec
.
split
(
'
:
'
)[
0
]
le
t
xDisplay
=
parseInt
(
displaySpec
.
split
(
'
:
'
)[
1
].
split
(
'
.
'
)[
0
]
||
'
0
'
)
le
t
xPort
=
xDisplay
<
100
?
xDisplay
+
6000
:
xDisplay
cons
t
xHost
=
displaySpec
.
split
(
'
:
'
)[
0
]
cons
t
xDisplay
=
parseInt
(
displaySpec
.
split
(
'
:
'
)[
1
].
split
(
'
.
'
)[
0
]
||
'
0
'
)
cons
t
xPort
=
xDisplay
<
100
?
xDisplay
+
6000
:
xDisplay
const
socket
=
displaySpec
.
startsWith
(
'
/
'
)
?
createConnection
(
displaySpec
)
:
new
Socket
()
if
(
!
displaySpec
.
startsWith
(
'
/
'
))
{
...
...
terminus-ssh/src/components/sshTab.component.ts
浏览文件 @
bcdbab43
...
...
@@ -14,7 +14,7 @@ import { Subscription } from 'rxjs'
/** @hidden */
@
Component
({
selector
:
'
ssh-tab
'
,
template
:
BaseTerminalTabComponent
.
template
+
require
<
string
>
(
'
./sshTab.component.pug
'
),
template
:
BaseTerminalTabComponent
.
template
+
(
require
(
'
./sshTab.component.pug
'
)
as
string
),
styles
:
[
require
(
'
./sshTab.component.scss
'
),
...
BaseTerminalTabComponent
.
styles
],
animations
:
BaseTerminalTabComponent
.
animations
,
})
...
...
@@ -91,7 +91,7 @@ export class SSHTabComponent extends BaseTerminalTabComponent {
session
.
serviceMessage$
.
subscribe
(
msg
=>
{
this
.
write
(
'
\r\n
'
+
colors
.
black
.
bgWhite
(
'
SSH
'
)
+
'
'
+
msg
+
'
\r\n
'
)
this
.
write
(
`\r\n
${
colors
.
black
.
bgWhite
(
'
SSH
'
)}
${
msg
}
\r\n`
)
session
.
resize
(
this
.
size
.
columns
,
this
.
size
.
rows
)
})
...
...
terminus-ssh/src/services/ssh.service.ts
浏览文件 @
bcdbab43
...
...
@@ -87,7 +87,7 @@ export class SSHService {
try
{
const
result
=
await
modal
.
result
passphrase
=
result
?.
value
}
catch
(
e
)
{
}
}
catch
{
}
parsedKey
=
sshpk
.
parsePrivateKey
(
privateKey
,
'
auto
'
,
...
...
@@ -269,7 +269,7 @@ export class SSHService {
sock
:
session
.
jumpStream
,
authHandler
:
methodsLeft
=>
{
while
(
true
)
{
le
t
method
=
authMethodsLeft
.
shift
()
cons
t
method
=
authMethodsLeft
.
shift
()
if
(
!
method
)
{
return
false
}
...
...
@@ -348,8 +348,8 @@ export class SSHService {
})
}
le
t
groups
:
{
name
:
string
,
connections
:
SSHConnection
[]
}[]
=
[]
le
t
connections
=
this
.
config
.
store
.
ssh
.
connections
cons
t
groups
:
{
name
:
string
,
connections
:
SSHConnection
[]
}[]
=
[]
cons
t
connections
=
this
.
config
.
store
.
ssh
.
connections
for
(
const
connection
of
connections
)
{
connection
.
group
=
connection
.
group
||
null
let
group
=
groups
.
find
(
x
=>
x
.
name
===
connection
.
group
)
...
...
terminus-ssh/src/winSCPIntegration.ts
浏览文件 @
bcdbab43
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
execFile
}
from
'
child_process
'
import
{
Injectable
}
from
'
@angular/core
'
import
{
ConfigService
,
BaseTabComponent
,
TabContextMenuItemProvider
,
TabHeaderComponent
,
HostAppService
,
Platform
}
from
'
terminus-core
'
...
...
@@ -36,7 +37,7 @@ export class WinSCPContextMenu extends TabContextMenuItemProvider {
}
}
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
if
(
this
.
hostApp
.
platform
!==
Platform
.
Windows
||
tabHeader
)
{
return
[]
}
...
...
@@ -75,7 +76,7 @@ export class WinSCPContextMenu extends TabContextMenuItemProvider {
if
(
!
path
)
{
return
}
le
t
args
=
[
await
this
.
getURI
(
connection
)]
cons
t
args
=
[
await
this
.
getURI
(
connection
)]
if
((
!
connection
.
auth
||
connection
.
auth
===
'
publicKey
'
)
&&
connection
.
privateKey
)
{
args
.
push
(
'
/privatekey
'
)
args
.
push
(
connection
.
privateKey
)
...
...
terminus-ssh/yarn.lock
浏览文件 @
bcdbab43
...
...
@@ -3,26 +3,26 @@
"@types/node@*":
version "1
2.7.12
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-1
2.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc
"
integrity sha512-
KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ
==
version "1
4.14.7
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-1
4.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d
"
integrity sha512-
Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg
==
"@types/node@1
2.7.3
":
version "1
2.7.3
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-1
2.7.3.tgz#27b3f40addaf2f580459fdb405222685542f907a
"
integrity sha512-
3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJ
Q==
"@types/node@1
4.14.14
":
version "1
4.14.14
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-1
4.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae
"
integrity sha512-
UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEn
Q==
"@types/ssh2-streams@*":
version "0.1.
2
"
resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.
2.tgz#7aa18b8c2450f17699e9ea18a76efc838188d58d
"
integrity sha
1-eqGLjCRQ8XaZ6eoYp278g4GI1Y0
=
version "0.1.
7
"
resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.
7.tgz#bf79349ec85a4dfb5b3fd9f4a05af729121f07e6
"
integrity sha
512-cQNV72C+BOG7G8WNGarTQdB2Ii37cJlWatSpx5zTYxtI2ZvUt2lbq6Nc2XZ4kbge28V7Xe5KYYr82d96/rDMnQ=
=
dependencies:
"@types/node" "*"
"@types/ssh2@^0.5.35":
version "0.5.4
4
"
resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-0.5.4
4.tgz#8bda3ffe9cab038a997f6749df76cc52249d1916
"
integrity sha512-
2aKqF0no055Zs8E6eaUtgDJv9yw1ViR7GLkWhuMIMnSPIU46vJJviEFZZtEqGxZEnrPpYxvOPPpWzwll/a4YwQ
==
version "0.5.4
5
"
resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-0.5.4
5.tgz#14e293ec2a4d4c8a5434a7989a676b87340aa870
"
integrity sha512-
SAQITTyO/jOoskSAw2T/9sveX4lhTzx7zdeYR0t04RMhZQrEIzvrAoCStSxYwvwZ5ofek1JWeW9x2yOK3GOUlg
==
dependencies:
"@types/node" "*"
"@types/ssh2-streams" "*"
...
...
@@ -198,6 +198,18 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
...
...
@@ -301,17 +313,13 @@ strip-ansi@^6.0.0:
ansi-regex "^5.0.0"
temp@^0.9.1:
version "0.9.
1
"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.
1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697
"
integrity sha512-
WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5Oe
A==
version "0.9.
4
"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.
4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620
"
integrity sha512-
yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUG
A==
dependencies:
mkdirp "^0.5.1"
rimraf "~2.6.2"
terminus-terminal@^1.0.98-nightly.0:
version "1.0.98-nightly.0"
resolved "https://registry.yarnpkg.com/terminus-terminal/-/terminus-terminal-1.0.98-nightly.0.tgz#10df71b0a81adf76a076fb21a91c859dd2f8bef7"
integrity sha512-JLxkeoQkORcfe6cRW6BJF5ZPSbvKA8IWUAb7fzBONVmNfRKj2Mq/uYPy76UXsdmb9F1n+rYIg+DShNp57asMKA==
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
...
...
terminus-terminal/package.json
浏览文件 @
bcdbab43
{
"name"
:
"terminus-terminal"
,
"version"
:
"1.0.1
04
-nightly.0"
,
"version"
:
"1.0.1
23
-nightly.0"
,
"description"
:
"Terminus' terminal emulation core"
,
"keywords"
:
[
"terminus-builtin-plugin"
...
...
@@ -36,13 +36,13 @@
"zmodem.js"
:
"^0.1.9"
},
"peerDependencies"
:
{
"@angular/animations"
:
"^
7
"
,
"@angular/common"
:
"^
7
"
,
"@angular/core"
:
"^
7
"
,
"@angular/forms"
:
"^
7
"
,
"@angular/platform-browser"
:
"^
7
"
,
"@ng-bootstrap/ng-bootstrap"
:
"^
1
"
,
"rxjs"
:
"^5"
,
"@angular/animations"
:
"^
9.1.9
"
,
"@angular/common"
:
"^
9.1.11
"
,
"@angular/core"
:
"^
9.1.9
"
,
"@angular/forms"
:
"^
9.1.11
"
,
"@angular/platform-browser"
:
"^
9.1.11
"
,
"@ng-bootstrap/ng-bootstrap"
:
"^
6.1.0
"
,
"rxjs"
:
"^
6.5.
5"
,
"terminus-core"
:
"*"
,
"terminus-settings"
:
"*"
}
...
...
terminus-terminal/src/api/baseTerminalTab.component.ts
浏览文件 @
bcdbab43
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
Observable
,
Subject
,
Subscription
}
from
'
rxjs
'
import
{
first
}
from
'
rxjs/operators
'
import
{
ToastrService
}
from
'
ngx-toastr
'
...
...
@@ -16,14 +17,14 @@ import { TerminalDecorator } from './decorator'
/** @hidden */
export
interface
ToastrServiceProxy
{
info
(
_
:
string
)
info
:
(
_
:
string
)
=>
void
}
/**
* A class to base your custom terminal tabs on
*/
export
class
BaseTerminalTabComponent
extends
BaseTabComponent
implements
OnInit
,
OnDestroy
{
static
template
=
require
<
string
>
(
'
../components/baseTerminalTab.component.pug
'
)
static
styles
=
[
require
<
string
>
(
'
../components/terminalTab.component.scss
'
)]
static
template
:
string
=
require
<
string
>
(
'
../components/baseTerminalTab.component.pug
'
)
static
styles
:
string
[]
=
[
require
<
string
>
(
'
../components/terminalTab.component.scss
'
)]
static
animations
:
AnimationTriggerMetadata
[]
=
[
trigger
(
'
slideInOut
'
,
[
transition
(
'
:enter
'
,
[
style
({
transform
:
'
translateY(-25%)
'
}),
...
...
@@ -277,8 +278,8 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
})
}
async
buildContextMenu
():
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[]
async
buildContextMenu
():
Promise
<
MenuItemConstructorOptions
[]
>
{
let
items
:
MenuItemConstructorOptions
[]
=
[]
for
(
const
section
of
await
Promise
.
all
(
this
.
contextMenuProviders
.
map
(
x
=>
x
.
getItems
(
this
))))
{
items
=
items
.
concat
(
section
)
items
.
push
({
type
:
'
separator
'
})
...
...
@@ -435,7 +436,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
async
destroy
():
Promise
<
void
>
{
super
.
destroy
()
if
(
this
.
session
&&
this
.
session
.
open
)
{
if
(
this
.
session
?
.
open
)
{
await
this
.
session
.
destroy
()
}
}
...
...
@@ -512,7 +513,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this
.
logger
.
debug
(
`Resizing to
${
columns
}
x
${
rows
}
`
)
this
.
size
=
{
columns
,
rows
}
this
.
zone
.
run
(()
=>
{
if
(
this
.
session
&&
this
.
session
.
open
)
{
if
(
this
.
session
?
.
open
)
{
this
.
session
.
resize
(
columns
,
rows
)
}
})
...
...
terminus-terminal/src/api/contextMenuProvider.ts
浏览文件 @
bcdbab43
import
type
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
BaseTerminalTabComponent
}
from
'
./baseTerminalTab.component
'
/**
...
...
@@ -7,5 +8,5 @@ import { BaseTerminalTabComponent } from './baseTerminalTab.component'
export
abstract
class
TerminalContextMenuItemProvider
{
weight
:
number
abstract
async
getItems
(
tab
:
BaseTerminalTabComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
abstract
async
getItems
(
tab
:
BaseTerminalTabComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
}
terminus-terminal/src/api/interfaces.ts
浏览文件 @
bcdbab43
...
...
@@ -8,7 +8,7 @@ export interface SessionOptions {
command
:
string
args
:
string
[]
cwd
?:
string
env
?:
{[
id
:
string
]:
string
}
env
?:
Record
<
string
,
string
>
width
?:
number
height
?:
number
pauseAfterExit
?:
boolean
...
...
terminus-terminal/src/colorSchemes.ts
浏览文件 @
bcdbab43
...
...
@@ -20,10 +20,10 @@ export class HyperColorSchemes extends TerminalColorSchemeProvider {
try
{
const
module
=
(
global
as
any
).
require
(
path
.
join
(
pluginsPath
,
plugin
))
if
(
module
.
decorateConfig
)
{
let
config
:
any
let
config
:
any
=
{}
try
{
config
=
module
.
decorateConfig
({})
}
catch
(
error
)
{
}
catch
{
console
.
warn
(
'
Could not load Hyper theme:
'
,
plugin
)
return
}
...
...
terminus-terminal/src/components/terminalSettingsTab.component.ts
浏览文件 @
bcdbab43
...
...
@@ -14,7 +14,7 @@ export class TerminalSettingsTabComponent {
)
{
}
openWSLVolumeMixer
():
void
{
this
.
electron
.
shell
.
open
Item
(
'
sndvol.exe
'
)
this
.
electron
.
shell
.
open
Path
(
'
sndvol.exe
'
)
this
.
terminal
.
openTab
({
name
:
''
,
sessionOptions
:
{
...
...
terminus-terminal/src/features/zmodem.ts
浏览文件 @
bcdbab43
/* eslint-disable @typescript-eslint/camelcase */
import
colors
from
'
ansi-colors
'
import
*
as
ZModem
from
'
zmodem.js
'
import
*
as
fs
from
'
fs
'
...
...
terminus-terminal/src/frontends/xtermFrontend.ts
浏览文件 @
bcdbab43
...
...
@@ -99,16 +99,16 @@ export class XTermFrontend extends Frontend {
this
.
resizeHandler
=
()
=>
{
try
{
if
(
this
.
xterm
.
element
&&
getComputedStyle
(
this
.
xterm
.
element
).
getPropertyValue
(
'
height
'
)
!==
'
auto
'
)
{
le
t
t
=
window
.
getComputedStyle
(
this
.
xterm
.
element
.
parentElement
!
)
le
t
r
=
parseInt
(
t
.
getPropertyValue
(
'
height
'
))
le
t
n
=
Math
.
max
(
0
,
parseInt
(
t
.
getPropertyValue
(
'
width
'
)))
le
t
o
=
window
.
getComputedStyle
(
this
.
xterm
.
element
)
le
t
i
=
r
-
(
parseInt
(
o
.
getPropertyValue
(
'
padding-top
'
))
+
parseInt
(
o
.
getPropertyValue
(
'
padding-bottom
'
)))
le
t
l
=
n
-
(
parseInt
(
o
.
getPropertyValue
(
'
padding-right
'
))
+
parseInt
(
o
.
getPropertyValue
(
'
padding-left
'
)))
-
this
.
xtermCore
.
viewport
.
scrollBarWidth
le
t
actualCellWidth
=
this
.
xtermCore
.
_renderService
.
dimensions
.
actualCellWidth
||
9
le
t
actualCellHeight
=
this
.
xtermCore
.
_renderService
.
dimensions
.
actualCellHeight
||
17
le
t
cols
=
Math
.
floor
(
l
/
actualCellWidth
)
le
t
rows
=
Math
.
floor
(
i
/
actualCellHeight
)
cons
t
t
=
window
.
getComputedStyle
(
this
.
xterm
.
element
.
parentElement
!
)
cons
t
r
=
parseInt
(
t
.
getPropertyValue
(
'
height
'
))
cons
t
n
=
Math
.
max
(
0
,
parseInt
(
t
.
getPropertyValue
(
'
width
'
)))
cons
t
o
=
window
.
getComputedStyle
(
this
.
xterm
.
element
)
cons
t
i
=
r
-
(
parseInt
(
o
.
getPropertyValue
(
'
padding-top
'
))
+
parseInt
(
o
.
getPropertyValue
(
'
padding-bottom
'
)))
cons
t
l
=
n
-
(
parseInt
(
o
.
getPropertyValue
(
'
padding-right
'
))
+
parseInt
(
o
.
getPropertyValue
(
'
padding-left
'
)))
-
this
.
xtermCore
.
viewport
.
scrollBarWidth
cons
t
actualCellWidth
=
this
.
xtermCore
.
_renderService
.
dimensions
.
actualCellWidth
||
9
cons
t
actualCellHeight
=
this
.
xtermCore
.
_renderService
.
dimensions
.
actualCellHeight
||
17
cons
t
cols
=
Math
.
floor
(
l
/
actualCellWidth
)
cons
t
rows
=
Math
.
floor
(
i
/
actualCellHeight
)
if
(
!
isNaN
(
cols
)
&&
!
isNaN
(
rows
))
{
this
.
xterm
.
resize
(
cols
,
rows
)
...
...
terminus-terminal/src/index.ts
浏览文件 @
bcdbab43
...
...
@@ -171,7 +171,7 @@ export default class TerminalModule { // eslint-disable-line @typescript-eslint/
argv
=
argv
.
slice
(
1
)
}
if
(
require
(
'
yargs
'
).
parse
(
argv
.
slice
(
1
)).
_
[
0
]
!==
'
open
'
){
if
(
require
(
'
yargs
'
).
parse
(
argv
.
slice
(
1
)).
_
[
0
]
!==
'
open
'
){
app
.
ready$
.
subscribe
(()
=>
{
terminal
.
openTab
()
})
...
...
terminus-terminal/src/services/sessions.service.ts
浏览文件 @
bcdbab43
...
...
@@ -267,7 +267,7 @@ export class Session extends BaseSession {
return
null
}
if
(
process
.
platform
===
'
darwin
'
)
{
let
lines
:
string
[]
let
lines
:
string
[]
=
[]
try
{
lines
=
(
await
exec
(
`lsof -p
${
this
.
truePID
}
-Fn`
))[
0
].
toString
().
split
(
'
\n
'
)
}
catch
(
e
)
{
...
...
@@ -312,7 +312,7 @@ export class Session extends BaseSession {
private
processOSC1337
(
data
:
Buffer
)
{
if
(
data
.
includes
(
OSC1337Prefix
))
{
const
preData
=
data
.
subarray
(
0
,
data
.
indexOf
(
OSC1337Prefix
))
le
t
params
=
data
.
subarray
(
data
.
indexOf
(
OSC1337Prefix
)
+
OSC1337Prefix
.
length
)
cons
t
params
=
data
.
subarray
(
data
.
indexOf
(
OSC1337Prefix
)
+
OSC1337Prefix
.
length
)
const
postData
=
params
.
subarray
(
params
.
indexOf
(
OSC1337Suffix
)
+
OSC1337Suffix
.
length
)
const
paramString
=
params
.
subarray
(
0
,
params
.
indexOf
(
OSC1337Suffix
)).
toString
()
...
...
terminus-terminal/src/tabContextMenu.ts
浏览文件 @
bcdbab43
import
{
MenuItemConstructorOptions
}
from
'
electron
'
import
{
Injectable
,
NgZone
,
Optional
,
Inject
}
from
'
@angular/core
'
import
{
ToastrService
}
from
'
ngx-toastr
'
import
{
ConfigService
,
BaseTabComponent
,
TabContextMenuItemProvider
,
TabHeaderComponent
,
SplitTabComponent
}
from
'
terminus-core
'
...
...
@@ -18,11 +19,11 @@ export class SaveAsProfileContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
_tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
,
_tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
if
(
!
(
tab
instanceof
TerminalTabComponent
))
{
return
[]
}
const
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[
const
items
:
MenuItemConstructorOptions
[]
=
[
{
label
:
'
Save as profile
'
,
click
:
()
=>
this
.
zone
.
run
(
async
()
=>
{
...
...
@@ -61,10 +62,10 @@ export class NewTabContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
const
profiles
=
await
this
.
terminalService
.
getProfiles
()
const
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[
const
items
:
MenuItemConstructorOptions
[]
=
[
{
label
:
'
New terminal
'
,
click
:
()
=>
this
.
zone
.
run
(()
=>
{
...
...
@@ -138,7 +139,7 @@ export class CopyPasteContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
,
tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
if
(
tabHeader
)
{
return
[]
}
...
...
@@ -178,12 +179,12 @@ export class LegacyContextMenu extends TabContextMenuItemProvider {
super
()
}
async
getItems
(
tab
:
BaseTabComponent
,
_tabHeader
?:
TabHeaderComponent
):
Promise
<
Electron
.
MenuItemConstructorOptions
[]
>
{
async
getItems
(
tab
:
BaseTabComponent
,
_tabHeader
?:
TabHeaderComponent
):
Promise
<
MenuItemConstructorOptions
[]
>
{
if
(
!
this
.
contextMenuProviders
)
{
return
[]
}
if
(
tab
instanceof
BaseTerminalTabComponent
)
{
let
items
:
Electron
.
MenuItemConstructorOptions
[]
=
[]
let
items
:
MenuItemConstructorOptions
[]
=
[]
for
(
const
p
of
this
.
contextMenuProviders
)
{
items
=
items
.
concat
(
await
p
.
getItems
(
tab
))
}
...
...
terminus-terminal/yarn.lock
浏览文件 @
bcdbab43
...
...
@@ -17,6 +17,14 @@ any-promise@^1.0.0:
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
call-bind@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce"
integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==
dependencies:
function-bind "^1.1.1"
get-intrinsic "^1.0.0"
connected-domain@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/connected-domain/-/connected-domain-1.0.0.tgz#bfe77238c74be453a79f0cb6058deeb4f2358e93"
...
...
@@ -47,13 +55,57 @@ deep-equal@1.1.0:
object-keys "^1.1.1"
regexp.prototype.flags "^1.2.0"
define-properties@^1.1.
2
:
define-properties@^1.1.
3
:
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"
es-abstract@^1.17.0-next.1:
version "1.17.7"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.2.2"
is-regex "^1.1.1"
object-inspect "^1.8.0"
object-keys "^1.1.1"
object.assign "^4.1.1"
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
es-abstract@^1.18.0-next.1:
version "1.18.0-next.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.2.2"
is-negative-zero "^2.0.0"
is-regex "^1.1.1"
object-inspect "^1.8.0"
object-keys "^1.1.1"
object.assign "^4.1.1"
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
exit-on-epipe@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692"
...
...
@@ -81,12 +133,26 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
get-intrinsic@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be"
integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
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/DavyF2nnLdELzPBSHojzQJVai9WiwrRzn5gp2dutJuerC8qHyBoh4lxfVdKGbnb9eZ4p8Oefbuc3yExB7
Q==
version "2.0.
2
"
resolved "https://registry.yarnpkg.com/get-system-fonts/-/get-system-fonts-2.0.
2.tgz#7ada3cc41322daf17c204a6f07c6588341cbc9cb
"
integrity sha512-
zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhD
Q==
has@^1.0.1:
has-symbols@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
...
...
@@ -103,17 +169,34 @@ is-arguments@^1.0.4:
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
is-callable@^1.1.4, is-callable@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
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 sha
1-mqIOtq7rv/d/vTPnTKAbM1gdOhY
=
version "1.0.
2
"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.
2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e
"
integrity sha
512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=
=
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=
is-negative-zero@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
is-regex@^1.0.4, is-regex@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
dependencies:
has-symbols "^1.0.1"
is-symbol@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
has "^1.0.1"
has
-symbols
"^1.0.1"
lru-cache@^4.1.3:
version "4.1.5"
...
...
@@ -137,16 +220,34 @@ object-assign@^4.0.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-inspect@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
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=
version "1.1.3"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81"
integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
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==
object.assign@^4.1.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
has-symbols "^1.0.1"
object-keys "^1.1.1"
opentype.js@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-0.8.0.tgz#acabcfa1642fbe894a3e4d759e43ba694e02bd35"
...
...
@@ -177,11 +278,12 @@ pseudomap@^1.0.2:
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
==
version "1.
3
.0"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.
3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75
"
integrity sha512-
2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ
==
dependencies:
define-properties "^1.1.2"
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
runes@^0.4.2:
version "0.4.3"
...
...
@@ -189,9 +291,25 @@ runes@^0.4.2:
integrity sha512-K6p9y4ZyL9wPzA+PMDloNQPfoDGTiFYDvdlXznyGKgD10BJpcAosvATKrExRKOrNLgD8E7Um7WGW0lxsnOuNLg==
slugify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb"
integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ==
version "1.4.6"
resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace"
integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==
string.prototype.trimend@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46"
integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
string.prototype.trimstart@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7"
integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
table-parser@^0.1.3:
version "0.1.3"
...
...
@@ -208,16 +326,16 @@ thenify-all@^1.0.0:
thenify ">= 3.1.0 < 4"
"thenify@>= 3.1.0 < 4":
version "3.3.
0
"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.
0.tgz#e69e38a1babe969b0108207978b9f62b88604839
"
integrity sha
1-5p44obq+lpsBCCB5eLn2K4hgSDk
=
version "3.3.
1
"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.
1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f
"
integrity sha
512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=
=
dependencies:
any-promise "^1.0.0"
tiny-inflate@^1.0.2:
version "1.0.
2
"
resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.
2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7
"
integrity sha
1-k9nez/yIBb1X6uQxDwt0Xptvs6c
=
version "1.0.
3
"
resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.
3.tgz#122715494913a1805166aaf7c93467933eea26c4
"
integrity sha
512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=
=
xterm-addon-fit@^0.4.0-beta.8:
version "0.4.0"
...
...
@@ -225,9 +343,9 @@ xterm-addon-fit@^0.4.0-beta.8:
integrity sha512-p4BESuV/g2L6pZzFHpeNLLnep9mp/DkF3qrPglMiucSFtD8iJxtMufEoEJbN8LZwB4i+8PFpFvVuFrGOSpW05w==
xterm-addon-ligatures@^0.4.0-beta.5:
version "0.4.0-beta.
5
"
resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.4.0-beta.
5.tgz#b3592a52a0156f67db6a74af3c1a86ef44b0174e
"
integrity sha512-
1IyXJtpz/q1PrHIjz6Baob/FHqGUXaCsU0XOXbVc9xf/ZMrBp+gYI6zFHea9PfaniMCTLRn0oOI4z7SzpHcNVA
==
version "0.4.0-beta.
7
"
resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.4.0-beta.
7.tgz#06dfafe0491a2e4744b1a6429958f261820baa00
"
integrity sha512-
GVZKbm7GRgs0LFtdKKmpu0Cs2jfC+sdRtl2E4vWEmhi8WNeW9iINbrsYgdtFPvs1X9OaKxEWqEXJkTcy5rmLHQ
==
dependencies:
font-finder "^1.0.4"
font-ligatures "^1.3.3"
...
...
@@ -253,9 +371,9 @@ xterm-addon-webgl@^0.8.0:
integrity sha512-dlpYPsv0C9S6v6+T/h/d/otSbdUTizMJdxvSoS34tUpMOHev6iW7Zqt5KRFqYxl4vCqpDk9Wmhb3fKL3kwX5fQ==
xterm@^4.9.0-beta.7:
version "4.9.0
-beta.7
"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.9.0
-beta.7.tgz#606b7a8eae77dd1a28c75eb15a4e956daf432dbe
"
integrity sha512-
h1XfOqO080kBLRTgnSe3/Pjq/dXxdPBAsXxTQ1hfdC2Emo8QWqu7jrW7/5VAhPnt8XWmyXUeCiAxqM2n40gaA
w==
version "4.9.0"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.9.0
.tgz#7a4c097a433d565339b5533b468bbc60c6c87969
"
integrity sha512-
wGfqufmioctKr8VkbRuZbVDfjlXWGZZ1PWHy1yqqpGT3Nm6yaJx8lxDbSEBANtgaiVPTcKSp97sxOy5IlpqYf
w==
yallist@^2.1.2:
version "2.1.2"
...
...
@@ -263,8 +381,8 @@ yallist@^2.1.2:
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
zmodem.js@^0.1.9:
version "0.1.
9
"
resolved "https://registry.yarnpkg.com/zmodem.js/-/zmodem.js-0.1.
9.tgz#8dda36d45091bbdf263819f961d3c1a20223daf
7"
integrity sha512-
xixLjW1eML0uiWULsXDInyfwNW9mqESzz7ra+2MWHNG2F5JINEkE5vzF5MigpPcLvrYoHdnehPcJwQZlDph3hQ
==
version "0.1.
10
"
resolved "https://registry.yarnpkg.com/zmodem.js/-/zmodem.js-0.1.
10.tgz#848ae071ea0f2706e3decd24ec66fc009ed19c4
7"
integrity sha512-
Z1DWngunZ/j3BmIzSJpFZVNV73iHkj89rxXX4IciJdU9ga3nZ7rJ5LkfjV/QDsKhc7bazDWTTJCLJ+iRXD82dw
==
dependencies:
crc-32 "^1.1.1"
yarn.lock
浏览文件 @
bcdbab43
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录