@opensumi/ide-terminal-next 2.27.3-next-1706520813.0 → 2.27.3-rc-1706687185.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/component/resize.delegate.d.ts +2 -2
- package/lib/browser/component/resize.delegate.d.ts.map +1 -1
- package/lib/browser/component/resize.view.d.ts +3 -1
- package/lib/browser/component/resize.view.d.ts.map +1 -1
- package/lib/browser/component/tab.item.d.ts +6 -2
- package/lib/browser/component/tab.item.d.ts.map +1 -1
- package/lib/browser/component/tab.module.less +1 -0
- package/lib/browser/component/tab.view.d.ts +3 -1
- package/lib/browser/component/tab.view.d.ts.map +1 -1
- package/lib/browser/component/terminal.select.d.ts +3 -1
- package/lib/browser/component/terminal.select.d.ts.map +1 -1
- package/lib/browser/component/terminal.variable.d.ts +2 -2
- package/lib/browser/component/terminal.variable.d.ts.map +1 -1
- package/lib/browser/component/terminal.view.d.ts +3 -1
- package/lib/browser/component/terminal.view.d.ts.map +1 -1
- package/lib/browser/component/terminal.widget.d.ts +2 -2
- package/lib/browser/component/terminal.widget.d.ts.map +1 -1
- package/lib/browser/terminal.client.d.ts.map +1 -1
- package/lib/browser/terminal.client.js +4 -3
- package/lib/browser/terminal.client.js.map +1 -1
- package/lib/browser/terminal.controller.d.ts.map +1 -1
- package/lib/browser/terminal.controller.js +1 -0
- package/lib/browser/terminal.controller.js.map +1 -1
- package/lib/browser/terminal.error.d.ts.map +1 -1
- package/lib/browser/terminal.error.js +1 -0
- package/lib/browser/terminal.error.js.map +1 -1
- package/lib/browser/terminal.render.d.ts +6 -2
- package/lib/browser/terminal.render.d.ts.map +1 -1
- package/lib/browser/terminal.search.d.ts +1 -0
- package/lib/browser/terminal.search.d.ts.map +1 -1
- package/lib/browser/terminal.search.js +3 -1
- package/lib/browser/terminal.search.js.map +1 -1
- package/lib/browser/terminal.view.d.ts +2 -2
- package/lib/browser/terminal.view.d.ts.map +1 -1
- package/lib/browser/terminal.view.js +83 -4
- package/lib/browser/terminal.view.js.map +1 -1
- package/lib/common/pty.d.ts +5 -6
- package/lib/common/pty.d.ts.map +1 -1
- package/lib/common/pty.js.map +1 -1
- package/lib/node/pty.manager.d.ts +2 -5
- package/lib/node/pty.manager.d.ts.map +1 -1
- package/lib/node/pty.manager.js +6 -7
- package/lib/node/pty.manager.js.map +1 -1
- package/lib/node/pty.manager.remote.d.ts.map +1 -1
- package/lib/node/pty.manager.remote.js +8 -4
- package/lib/node/pty.manager.remote.js.map +1 -1
- package/lib/node/pty.proxy.d.ts +2 -2
- package/lib/node/pty.proxy.d.ts.map +1 -1
- package/lib/node/pty.proxy.js +18 -17
- package/lib/node/pty.proxy.js.map +1 -1
- package/lib/node/shell.d.ts.map +1 -1
- package/lib/node/shell.js +4 -1
- package/lib/node/shell.js.map +1 -1
- package/package.json +16 -16
- package/src/browser/component/tab.item.tsx +5 -5
- package/src/browser/component/tab.module.less +1 -0
- package/src/browser/component/terminal.view.tsx +2 -2
- package/src/browser/terminal.client.ts +5 -4
- package/src/browser/terminal.controller.ts +2 -1
- package/src/browser/terminal.error.ts +2 -1
- package/src/browser/terminal.search.ts +5 -1
- package/src/browser/terminal.view.ts +23 -6
- package/src/common/pty.ts +6 -7
- package/src/node/pty.manager.remote.ts +9 -5
- package/src/node/pty.manager.ts +9 -16
- package/src/node/pty.proxy.ts +23 -20
- package/src/node/shell.ts +4 -1
package/lib/node/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/node/shell.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;AAEhG,sCAAsC;AACtC,yGAAyG;AACzG,gHAAgH;AAEhH,oDAAoB;AACpB,2BAAuC;AAEvC,+DAA6G;AAC7G,2DAAoD;AAEvC,QAAA,sBAAsB,GAAG;IACpC,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,sBAAsB;IACpD,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,2BAA2B;IACzD,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,sBAAsB;IACpD,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,2BAA2B;IACzD,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,gCAAgC;IAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,yDAAyD;IACtF,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,yDAAyD;CAC3F,CAAC;AAEK,KAAK,UAAU,kBAAkB;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,uBAAuB;IACvB,gDAAgD;IAChD,oEAAoE;IACpE,iCAAiC;IACjC,IAAI;IACJ,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AATD,gDASC;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;IACxC,IAAI;QACF,MAAM,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;KACV;IAAC,OAAO,EAAE,EAAE;QACX,OAAO;KACR;AACH,CAAC,CAAC;AAPW,QAAA,MAAM,UAOjB;AAEK,KAAK,UAAU,wBAAwB,CAAC,SAAmB;IAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,SAAS,CAAC;KAClB;IACD,8BAA8B;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3F,CAAC;AAND,4DAMC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,SAAmB;IACrD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,SAAS,CAAC;KAClB;IAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;QACzB,IAAI,YAAE,CAAC,UAAU,CAAC,sBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC;SACV;QACD,SAAS;KACV;AACH,CAAC;AAXD,kDAWC;AAED,SAAgB,kBAAkB,CAAC,MAA2B,EAAE,GAAW;IACzE,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,CAAC;IACxF,OAAO,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAJD,gDAIC;AAEM,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,GAAY,EACZ,KAAgB,EAChB,MAA2B,OAAO,CAAC,GAA0B;IAE7D,+CAA+C;IAC/C,IAAI,sBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5B,OAAO,CAAC,MAAM,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;KACtD;IACD,IAAI,GAAG,KAAK,SAAS,EAAE;QACrB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;KACrB;IACD,MAAM,GAAG,GAAG,sBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,GAAG,EAAE;QACf,wFAAwF;QACxF,oCAAoC;QACpC,MAAM,QAAQ,GAAG,sBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;KACxD;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QACtD,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAI,CAAC,SAAS,CAAC,CAAC;KACvC;IACD,sDAAsD;IACtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7C,MAAM,QAAQ,GAAG,sBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;KACxD;IACD,oEAAoE;IACpE,8CAA8C;IAC9C,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;QAC7B,8BAA8B;QAC9B,IAAI,QAAgB,CAAC;QACrB,IAAI,sBAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC9B,QAAQ,GAAG,sBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SAC1C;aAAM;YACL,QAAQ,GAAG,sBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SAC/C;QAED,IAAI,MAAM,IAAA,cAAM,EAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,yBAAS,EAAE;YACb,IAAI,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;YACtC,IAAI,MAAM,IAAA,cAAM,EAAC,aAAa,CAAC,EAAE;gBAC/B,OAAO,aAAa,CAAC;aACtB;YACD,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;YAClC,IAAI,MAAM,IAAA,cAAM,EAAC,aAAa,CAAC,EAAE;gBAC/B,OAAO,aAAa,CAAC;aACtB;SACF;KACF;IACD,MAAM,QAAQ,GAAG,sBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAxDD,wCAwDC;AAED,SAAgB,qBAAqB;IACnC,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAA,YAAO,GAAE,CAAC,CAAC;IACzD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACvC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC1C;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAPD,sDAOC;AAED;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,EAAmB;IACtD,IAAI,EAAE,KAAK,iCAAe,CAAC,OAAO,EAAE;QAClC,IAAI,yBAAS,EAAE;YACb,OAAO,qBAAqB,EAAE,CAAC;SAChC;QACD,iDAAiD;QACjD,OAAO,eAAe,EAAE,CAAC;KAC1B;IACD,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AATD,wCASC;AAED,IAAI,iCAAiC,GAAkB,IAAI,CAAC;AAC5D,SAAS,sBAAsB,CAAC,EAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IACpE,qCAAqC;IACrC,IAAI,CAAC,yBAAO,IAAI,EAAE,KAAK,iCAAe,CAAC,SAAS,CAAC,IAAI,CAAC,6BAAW,IAAI,EAAE,KAAK,iCAAe,CAAC,KAAK,CAAC,EAAE;QAClG,OAAO,WAAW,CAAC;KACpB;IAED,IAAI,CAAC,iCAAiC,EAAE;QACtC,IAAI,gBAAoC,CAAC;QAEzC,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,gBAAgB,EAAE;YACrB,IAAI;gBACF,yHAAyH;gBACzH,0EAA0E;gBAC1E,
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/node/shell.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-terminal-next",
|
|
3
|
-
"version": "2.27.3-
|
|
3
|
+
"version": "2.27.3-rc-1706687185.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@opensumi/ide-connection": "2.27.3-
|
|
21
|
-
"@opensumi/ide-core-common": "2.27.3-
|
|
22
|
-
"@opensumi/ide-core-node": "2.27.3-
|
|
23
|
-
"@opensumi/ide-file-service": "2.27.3-
|
|
20
|
+
"@opensumi/ide-connection": "2.27.3-rc-1706687185.0",
|
|
21
|
+
"@opensumi/ide-core-common": "2.27.3-rc-1706687185.0",
|
|
22
|
+
"@opensumi/ide-core-node": "2.27.3-rc-1706687185.0",
|
|
23
|
+
"@opensumi/ide-file-service": "2.27.3-rc-1706687185.0",
|
|
24
24
|
"event-kit": "^2.5.3",
|
|
25
|
-
"node-pty": "0.
|
|
25
|
+
"node-pty": "1.0.0",
|
|
26
26
|
"os-locale": "^4.0.0",
|
|
27
27
|
"xterm": "5.2.0",
|
|
28
28
|
"xterm-addon-canvas": "0.4.0",
|
|
@@ -31,19 +31,19 @@
|
|
|
31
31
|
"xterm-addon-webgl": "0.15.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@opensumi/ide-components": "2.27.3-
|
|
35
|
-
"@opensumi/ide-core-browser": "2.27.3-
|
|
34
|
+
"@opensumi/ide-components": "2.27.3-rc-1706687185.0",
|
|
35
|
+
"@opensumi/ide-core-browser": "2.27.3-rc-1706687185.0",
|
|
36
36
|
"@opensumi/ide-dev-tool": "1.3.1",
|
|
37
|
-
"@opensumi/ide-editor": "2.27.3-
|
|
38
|
-
"@opensumi/ide-main-layout": "2.27.3-
|
|
39
|
-
"@opensumi/ide-overlay": "2.27.3-
|
|
40
|
-
"@opensumi/ide-status-bar": "2.27.3-
|
|
41
|
-
"@opensumi/ide-theme": "2.27.3-
|
|
42
|
-
"@opensumi/ide-variable": "2.27.3-
|
|
43
|
-
"@opensumi/ide-workspace": "2.27.3-
|
|
37
|
+
"@opensumi/ide-editor": "2.27.3-rc-1706687185.0",
|
|
38
|
+
"@opensumi/ide-main-layout": "2.27.3-rc-1706687185.0",
|
|
39
|
+
"@opensumi/ide-overlay": "2.27.3-rc-1706687185.0",
|
|
40
|
+
"@opensumi/ide-status-bar": "2.27.3-rc-1706687185.0",
|
|
41
|
+
"@opensumi/ide-theme": "2.27.3-rc-1706687185.0",
|
|
42
|
+
"@opensumi/ide-variable": "2.27.3-rc-1706687185.0",
|
|
43
|
+
"@opensumi/ide-workspace": "2.27.3-rc-1706687185.0",
|
|
44
44
|
"@types/event-kit": "^2.4.0",
|
|
45
45
|
"@types/http-proxy": "^1.17.2",
|
|
46
46
|
"http-proxy": "^1.18.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "922ed9010fe3658f626401b559c5d1cae6afa760"
|
|
49
49
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import cls from 'classnames';
|
|
2
2
|
import debounce from 'lodash/debounce';
|
|
3
3
|
import { observer } from 'mobx-react-lite';
|
|
4
4
|
import React, { useEffect, useRef, KeyboardEvent, createElement } from 'react';
|
|
@@ -49,7 +49,7 @@ export const renderInfoItem = observer((props: ItemProps) => {
|
|
|
49
49
|
return (
|
|
50
50
|
<div
|
|
51
51
|
ref={ref}
|
|
52
|
-
className={
|
|
52
|
+
className={cls({
|
|
53
53
|
[styles.item_container]: true,
|
|
54
54
|
[styles.item_selected]: !!props.selected,
|
|
55
55
|
})}
|
|
@@ -88,7 +88,7 @@ export const renderInfoItem = observer((props: ItemProps) => {
|
|
|
88
88
|
<div></div>
|
|
89
89
|
) : (
|
|
90
90
|
<div
|
|
91
|
-
className={
|
|
91
|
+
className={cls([getIcon('close'), styles.close_icon])}
|
|
92
92
|
onClick={(event) => {
|
|
93
93
|
event.stopPropagation();
|
|
94
94
|
handleClose();
|
|
@@ -109,7 +109,7 @@ export const renderAddItem = observer((props: ItemProps) => {
|
|
|
109
109
|
<div className={styles.item_wrapper}>
|
|
110
110
|
<div
|
|
111
111
|
title={createTitle}
|
|
112
|
-
className={
|
|
112
|
+
className={cls({
|
|
113
113
|
[getIcon('plus')]: true,
|
|
114
114
|
[styles.item_add]: true,
|
|
115
115
|
})}
|
|
@@ -117,7 +117,7 @@ export const renderAddItem = observer((props: ItemProps) => {
|
|
|
117
117
|
/>
|
|
118
118
|
<div
|
|
119
119
|
title={localize('terminal.new.type')}
|
|
120
|
-
className={
|
|
120
|
+
className={cls({
|
|
121
121
|
[getIcon('down')]: true,
|
|
122
122
|
[styles.item_more]: true,
|
|
123
123
|
})}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import cls from 'classnames';
|
|
2
2
|
import { observer } from 'mobx-react-lite';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
|
|
@@ -106,7 +106,7 @@ export default observer(() => {
|
|
|
106
106
|
onKeyDown={searchKeyDown}
|
|
107
107
|
/>
|
|
108
108
|
</div>
|
|
109
|
-
<div className={
|
|
109
|
+
<div className={cls(styles.closeBtn, getIcon('close'))} onClick={() => searchService.close()}></div>
|
|
110
110
|
</div>
|
|
111
111
|
)}
|
|
112
112
|
{groups.map((group, index) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable } from 'mobx';
|
|
1
|
+
import { observable, makeObservable } from 'mobx';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Autowired, Injector, INJECTOR_TOKEN } from '@opensumi/di';
|
|
4
4
|
import { QuickPickService, IEventBus, TerminalClientAttachEvent } from '@opensumi/ide-core-browser';
|
|
@@ -160,6 +160,7 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
160
160
|
|
|
161
161
|
constructor() {
|
|
162
162
|
super();
|
|
163
|
+
makeObservable(this);
|
|
163
164
|
this.init();
|
|
164
165
|
}
|
|
165
166
|
|
|
@@ -576,7 +577,7 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
576
577
|
|
|
577
578
|
resolveConnection(connection: ITerminalConnection | undefined) {
|
|
578
579
|
if (!connection) {
|
|
579
|
-
this._attached.
|
|
580
|
+
this._attached.reject('no connection while attaching terminal client');
|
|
580
581
|
return;
|
|
581
582
|
}
|
|
582
583
|
|
|
@@ -588,7 +589,7 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
588
589
|
}
|
|
589
590
|
this._ready = true;
|
|
590
591
|
this._attached.resolve();
|
|
591
|
-
this._widget.
|
|
592
|
+
this._widget.rename(this.name);
|
|
592
593
|
|
|
593
594
|
this.eventBus.fire(new TerminalClientAttachEvent({ clientId: this.id }));
|
|
594
595
|
|
|
@@ -704,7 +705,7 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
704
705
|
|
|
705
706
|
updateTerminalName(options: { name: string }) {
|
|
706
707
|
if (!this.name && !this._widget.name) {
|
|
707
|
-
this._widget.
|
|
708
|
+
this._widget.rename(options.name || this.name);
|
|
708
709
|
}
|
|
709
710
|
}
|
|
710
711
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable } from 'mobx';
|
|
1
|
+
import { observable, makeObservable } from 'mobx';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Autowired, INJECTOR_TOKEN, Injector } from '@opensumi/di';
|
|
4
4
|
import { ResizeEvent, getSlotLocation, AppConfig } from '@opensumi/ide-core-browser';
|
|
@@ -250,6 +250,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
250
250
|
|
|
251
251
|
constructor() {
|
|
252
252
|
super();
|
|
253
|
+
makeObservable(this);
|
|
253
254
|
this._focus = false;
|
|
254
255
|
this._clients = new Map();
|
|
255
256
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable } from 'mobx';
|
|
1
|
+
import { observable, makeObservable } from 'mobx';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Autowired } from '@opensumi/di';
|
|
4
4
|
|
|
@@ -26,6 +26,7 @@ export class TerminalErrorService implements ITerminalErrorService {
|
|
|
26
26
|
protected readonly view: ITerminalGroupViewService;
|
|
27
27
|
|
|
28
28
|
constructor() {
|
|
29
|
+
makeObservable(this);
|
|
29
30
|
this.service.onError((error) => {
|
|
30
31
|
this.errors.set(error.id, error);
|
|
31
32
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable } from 'mobx';
|
|
1
|
+
import { observable, makeObservable } from 'mobx';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Autowired } from '@opensumi/di';
|
|
4
4
|
import { debounce, Emitter, Event } from '@opensumi/ide-core-common';
|
|
@@ -23,6 +23,10 @@ export class TerminalSearchService implements ITerminalSearchService {
|
|
|
23
23
|
|
|
24
24
|
onOpen: Event<void> = this._onOpen.event;
|
|
25
25
|
|
|
26
|
+
constructor() {
|
|
27
|
+
makeObservable(this);
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
get client(): ITerminalClient | undefined {
|
|
27
31
|
return this.controller.findClientFromWidgetId(this.terminalView.currentWidget.id);
|
|
28
32
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { observable, computed } from 'mobx';
|
|
1
|
+
import { observable, computed, makeObservable, action } from 'mobx';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Autowired } from '@opensumi/di';
|
|
4
4
|
import { Emitter, Disposable, Event } from '@opensumi/ide-core-browser';
|
|
@@ -33,6 +33,7 @@ export class Widget extends Disposable implements IWidget {
|
|
|
33
33
|
|
|
34
34
|
constructor(id: string, public reuse: boolean = false) {
|
|
35
35
|
super();
|
|
36
|
+
makeObservable(this);
|
|
36
37
|
this._id = id;
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -87,17 +88,20 @@ export class Widget extends Disposable implements IWidget {
|
|
|
87
88
|
onShow: Event<boolean> = this._onShow.event;
|
|
88
89
|
onError: Event<boolean> = this._onError.event;
|
|
89
90
|
|
|
91
|
+
@action
|
|
90
92
|
resize(dynamic?: number) {
|
|
91
93
|
this.dynamic = dynamic || this.shadowDynamic;
|
|
92
94
|
this.shadowDynamic = this.dynamic;
|
|
93
95
|
this._onResize.fire();
|
|
94
96
|
}
|
|
95
97
|
|
|
98
|
+
@action
|
|
96
99
|
increase(increment: number) {
|
|
97
100
|
this.shadowDynamic += increment;
|
|
98
101
|
this._onResize.fire();
|
|
99
102
|
}
|
|
100
103
|
|
|
104
|
+
@action
|
|
101
105
|
rename(name: string) {
|
|
102
106
|
this.name = name;
|
|
103
107
|
}
|
|
@@ -170,6 +174,7 @@ export class WidgetGroup extends Disposable implements IWidgetGroup {
|
|
|
170
174
|
return this.current?.processName;
|
|
171
175
|
}
|
|
172
176
|
|
|
177
|
+
@action
|
|
173
178
|
addWidget(widget: Widget) {
|
|
174
179
|
this.widgets.push(widget);
|
|
175
180
|
this.widgetsMap.set(widget.id, widget);
|
|
@@ -184,6 +189,7 @@ export class WidgetGroup extends Disposable implements IWidgetGroup {
|
|
|
184
189
|
return this.widgets.findIndex((item) => item.id === widget.id);
|
|
185
190
|
}
|
|
186
191
|
|
|
192
|
+
@action
|
|
187
193
|
selectWidget(widget: Widget) {
|
|
188
194
|
this.currentId = widget.id;
|
|
189
195
|
}
|
|
@@ -200,14 +206,17 @@ export class WidgetGroup extends Disposable implements IWidgetGroup {
|
|
|
200
206
|
return widget[0];
|
|
201
207
|
}
|
|
202
208
|
|
|
209
|
+
@action
|
|
203
210
|
edit() {
|
|
204
211
|
this.editable = true;
|
|
205
212
|
}
|
|
206
213
|
|
|
214
|
+
@action
|
|
207
215
|
unedit() {
|
|
208
216
|
this.editable = false;
|
|
209
217
|
}
|
|
210
218
|
|
|
219
|
+
@action
|
|
211
220
|
rename(name: string) {
|
|
212
221
|
this.name = name;
|
|
213
222
|
this.editable = false;
|
|
@@ -233,17 +242,17 @@ export class WidgetGroup extends Disposable implements IWidgetGroup {
|
|
|
233
242
|
export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
234
243
|
protected _widgets: Map<string, Widget>;
|
|
235
244
|
|
|
236
|
-
@observable
|
|
237
|
-
groups: WidgetGroup[] = [];
|
|
245
|
+
@observable.shallow
|
|
246
|
+
groups: WidgetGroup[] = observable.array([]);
|
|
238
247
|
|
|
239
248
|
@observable
|
|
240
|
-
currentGroupId
|
|
249
|
+
currentGroupId = '';
|
|
241
250
|
|
|
242
251
|
@observable
|
|
243
|
-
currentGroupIndex
|
|
252
|
+
currentGroupIndex = -1;
|
|
244
253
|
|
|
245
254
|
@Autowired(ITerminalInternalService)
|
|
246
|
-
service: ITerminalInternalService;
|
|
255
|
+
private readonly service: ITerminalInternalService;
|
|
247
256
|
|
|
248
257
|
protected _onWidgetCreated = new Emitter<Widget>();
|
|
249
258
|
protected _onWidgetSelected = new Emitter<Widget>();
|
|
@@ -251,6 +260,7 @@ export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
|
251
260
|
protected _onWidgetEmpty = new Emitter<void>();
|
|
252
261
|
|
|
253
262
|
constructor() {
|
|
263
|
+
makeObservable(this);
|
|
254
264
|
this._widgets = new Map();
|
|
255
265
|
}
|
|
256
266
|
|
|
@@ -278,7 +288,11 @@ export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
|
278
288
|
return this.groups[index];
|
|
279
289
|
}
|
|
280
290
|
|
|
291
|
+
@action
|
|
281
292
|
private _doSelectGroup(index: number) {
|
|
293
|
+
if (this.currentGroupIndex === index) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
282
296
|
const group = this.getGroup(index);
|
|
283
297
|
this.currentGroupIndex = index;
|
|
284
298
|
this.currentGroupId = group.id;
|
|
@@ -297,6 +311,7 @@ export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
|
297
311
|
this._doSelectGroup(index);
|
|
298
312
|
}
|
|
299
313
|
|
|
314
|
+
@action
|
|
300
315
|
private _doCreateGroup(id?: string, options?: IShellLaunchConfig) {
|
|
301
316
|
const group = new WidgetGroup(id, options);
|
|
302
317
|
this.groups.push(group);
|
|
@@ -322,6 +337,7 @@ export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
|
322
337
|
}
|
|
323
338
|
}
|
|
324
339
|
|
|
340
|
+
@action
|
|
325
341
|
private _doRemoveGroup(index: number) {
|
|
326
342
|
const [group] = this.groups.splice(index, 1);
|
|
327
343
|
|
|
@@ -404,6 +420,7 @@ export class TerminalGroupViewService implements ITerminalGroupViewService {
|
|
|
404
420
|
return this._widgets.size === 0;
|
|
405
421
|
}
|
|
406
422
|
|
|
423
|
+
@action
|
|
407
424
|
clear() {
|
|
408
425
|
this.groups = observable.array([]);
|
|
409
426
|
this._widgets.clear();
|
package/src/common/pty.ts
CHANGED
|
@@ -77,13 +77,6 @@ export interface IPtyProxyRPCService {
|
|
|
77
77
|
*/
|
|
78
78
|
$onExit(callId: number, pid: number): void;
|
|
79
79
|
|
|
80
|
-
/**
|
|
81
|
-
* pty数据on回调代理
|
|
82
|
-
* @param callId 指定callId的方法回调注册
|
|
83
|
-
* @param pid pty进程的pid,用于辨识pty进程
|
|
84
|
-
*/
|
|
85
|
-
$on(callId: number, pid: number, event: any): void;
|
|
86
|
-
|
|
87
80
|
/**
|
|
88
81
|
* resize方法RPC转发
|
|
89
82
|
* @param pid pty进程的pid,用于辨识pty进程
|
|
@@ -120,6 +113,12 @@ export interface IPtyProxyRPCService {
|
|
|
120
113
|
*/
|
|
121
114
|
$resume(pid: number): void;
|
|
122
115
|
|
|
116
|
+
/**
|
|
117
|
+
* 清理 pty
|
|
118
|
+
* @param pid pty进程的pid,用于辨识pty进程
|
|
119
|
+
*/
|
|
120
|
+
$clear(pid: number): void;
|
|
121
|
+
|
|
123
122
|
/**
|
|
124
123
|
* 实时性通过Pid获取ProcessName
|
|
125
124
|
* @param pid pty进程的pid,用于辨识pty进程
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import net, { SocketConnectOpts } from 'net';
|
|
2
2
|
|
|
3
3
|
import { Injectable, Optional } from '@opensumi/di';
|
|
4
|
-
import { RPCServiceCenter, initRPCService } from '@opensumi/ide-connection';
|
|
5
|
-
import {
|
|
4
|
+
import { RPCServiceCenter, WSChannel, initRPCService } from '@opensumi/ide-connection';
|
|
5
|
+
import { NetSocketConnection } from '@opensumi/ide-connection/lib/common/connection';
|
|
6
6
|
import { Disposable, IDisposable } from '@opensumi/ide-core-common';
|
|
7
7
|
|
|
8
8
|
import {
|
|
@@ -50,11 +50,15 @@ export class PtyServiceManagerRemote extends PtyServiceManager {
|
|
|
50
50
|
},
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
-
const
|
|
54
|
-
|
|
53
|
+
const socketConnection = new NetSocketConnection(socket);
|
|
54
|
+
const channel = WSChannel.forClient(socketConnection, {
|
|
55
|
+
id: 'pty-manager-remote',
|
|
56
|
+
logger: this.logger,
|
|
57
|
+
});
|
|
58
|
+
const remove = clientCenter.setChannel(channel);
|
|
55
59
|
return Disposable.create(() => {
|
|
56
60
|
callbackDisposed = true;
|
|
57
|
-
|
|
61
|
+
remove.dispose();
|
|
58
62
|
});
|
|
59
63
|
}
|
|
60
64
|
|
package/src/node/pty.manager.ts
CHANGED
|
@@ -25,13 +25,11 @@ export interface IPtyServiceManager {
|
|
|
25
25
|
// 因为 PtyServiceManage 是 PtyClient 端统筹所有 Pty 的管理类,因此每一个具体方法的调用都需要传入 pid 来对指定 pid 做某些操作
|
|
26
26
|
onData(pid: number, listener: (e: string) => any): pty.IDisposable;
|
|
27
27
|
onExit(pid: number, listener: (e: { exitCode: number; signal?: number }) => any): pty.IDisposable;
|
|
28
|
-
on(pid: number, event: 'data', listener: (data: string) => void): void;
|
|
29
|
-
on(pid: number, event: 'exit', listener: (exitCode: number, signal?: number) => void): void;
|
|
30
|
-
on(pid: number, event: any, listener: (data: any) => void): void;
|
|
31
28
|
resize(pid: number, columns: number, rows: number): void;
|
|
32
29
|
write(pid: number, data: string): void;
|
|
33
30
|
pause(pid: number): void;
|
|
34
31
|
resume(pid: number): void;
|
|
32
|
+
clear(pid: number): void;
|
|
35
33
|
kill(pid: number, signal?: string): void;
|
|
36
34
|
getProcess(pid: number): Promise<string>;
|
|
37
35
|
getCwd(pid: number): Promise<string | undefined>;
|
|
@@ -127,23 +125,21 @@ export class PtyServiceManager implements IPtyServiceManager {
|
|
|
127
125
|
this.ptyServiceProxy.$onData(callId, pid);
|
|
128
126
|
return disposable;
|
|
129
127
|
}
|
|
128
|
+
|
|
130
129
|
onExit(pid: number, listener: (e: { exitCode: number; signal?: number }) => any): pty.IDisposable {
|
|
131
130
|
const { callId, disposable } = this.addNewCallback(pid, listener);
|
|
132
131
|
this.ptyServiceProxy.$onExit(callId, pid);
|
|
133
132
|
return disposable;
|
|
134
133
|
}
|
|
135
134
|
|
|
136
|
-
on(pid: number, event: 'data', listener: (data: string) => void): void;
|
|
137
|
-
on(pid: number, event: 'exit', listener: (exitCode: number, signal?: number) => void): void;
|
|
138
|
-
on(pid: number, event: any, listener: (data: any) => void): void {
|
|
139
|
-
const { callId } = this.addNewCallback(pid, listener);
|
|
140
|
-
this.ptyServiceProxy.$on(callId, pid, event);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
135
|
resize(pid: number, columns: number, rows: number): void {
|
|
144
136
|
this.ptyServiceProxy.$resize(pid, columns, rows);
|
|
145
137
|
}
|
|
146
138
|
|
|
139
|
+
clear(pid: number) {
|
|
140
|
+
this.ptyServiceProxy.$clear(pid);
|
|
141
|
+
}
|
|
142
|
+
|
|
147
143
|
write(pid: number, data: string): void {
|
|
148
144
|
timeCaptureTmp = new Date().getTime();
|
|
149
145
|
if (data.includes('=')) {
|
|
@@ -220,12 +216,6 @@ class PtyProcessProxy implements IPtyProcessProxy {
|
|
|
220
216
|
onData: pty.IEvent<string>;
|
|
221
217
|
onExit: pty.IEvent<{ exitCode: number; signal?: number }>;
|
|
222
218
|
|
|
223
|
-
// 将 pid 维护到对象内部,对外暴露 NodePty 的标准 api,因此在调用的时候不需要显式传入 pid
|
|
224
|
-
on(event: 'data', listener: (data: string) => void): void;
|
|
225
|
-
on(event: 'exit', listener: (exitCode: number, signal?: number) => void): void;
|
|
226
|
-
on(event: any, listener: any): void {
|
|
227
|
-
this.ptyServiceManager.on(this.pid, event, listener);
|
|
228
|
-
}
|
|
229
219
|
resize(columns: number, rows: number): void {
|
|
230
220
|
this.ptyServiceManager.resize(this.pid, columns, rows);
|
|
231
221
|
}
|
|
@@ -241,4 +231,7 @@ class PtyProcessProxy implements IPtyProcessProxy {
|
|
|
241
231
|
resume(): void {
|
|
242
232
|
this.ptyServiceManager.resume(this.pid);
|
|
243
233
|
}
|
|
234
|
+
clear(): void {
|
|
235
|
+
this.ptyServiceManager.clear(this.pid);
|
|
236
|
+
}
|
|
244
237
|
}
|
package/src/node/pty.proxy.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import childProcess from 'child_process';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import net, { ListenOptions, Server } from 'net';
|
|
4
|
-
import os from 'os';
|
|
5
4
|
import { promisify } from 'util';
|
|
6
5
|
|
|
7
6
|
import * as pty from 'node-pty';
|
|
8
7
|
|
|
9
|
-
import { RPCServiceCenter, initRPCService } from '@opensumi/ide-connection';
|
|
10
|
-
import {
|
|
8
|
+
import { RPCServiceCenter, WSChannel, initRPCService } from '@opensumi/ide-connection';
|
|
9
|
+
import { NetSocketConnection } from '@opensumi/ide-connection/lib/common/connection';
|
|
11
10
|
import { DisposableCollection, getDebugLogger } from '@opensumi/ide-core-node';
|
|
12
11
|
import { isMacintosh, isLinux } from '@opensumi/ide-utils/lib/platform';
|
|
13
12
|
|
|
@@ -201,16 +200,14 @@ export class PtyServiceProxy implements IPtyProxyRPCService {
|
|
|
201
200
|
}
|
|
202
201
|
}
|
|
203
202
|
|
|
204
|
-
$
|
|
203
|
+
$resize(pid: number, columns: number, rows: number): void {
|
|
205
204
|
const ptyInstance = this.ptyInstanceMap.get(pid);
|
|
206
|
-
ptyInstance?.
|
|
207
|
-
this.$callback(callId, e);
|
|
208
|
-
});
|
|
205
|
+
ptyInstance?.resize(columns, rows);
|
|
209
206
|
}
|
|
210
207
|
|
|
211
|
-
$
|
|
208
|
+
$clear(pid: number): void {
|
|
212
209
|
const ptyInstance = this.ptyInstanceMap.get(pid);
|
|
213
|
-
ptyInstance?.
|
|
210
|
+
ptyInstance?.clear();
|
|
214
211
|
}
|
|
215
212
|
|
|
216
213
|
$write(pid: number, data: string): void {
|
|
@@ -251,16 +248,17 @@ export class PtyServiceProxy implements IPtyProxyRPCService {
|
|
|
251
248
|
export class PtyServiceProxyRPCProvider {
|
|
252
249
|
private ptyServiceProxy: PtyServiceProxy;
|
|
253
250
|
private readonly ptyServiceCenter: RPCServiceCenter;
|
|
254
|
-
private readonly
|
|
251
|
+
private readonly logger = getDebugLogger();
|
|
255
252
|
private serverListenOptions: ListenOptions; // HOST + PORT or UNIX SOCK PATH
|
|
256
253
|
private server: Server;
|
|
257
254
|
|
|
258
255
|
constructor(listenOptions: ListenOptions = { port: PTY_SERVICE_PROXY_SERVER_PORT }) {
|
|
259
256
|
this.serverListenOptions = listenOptions;
|
|
260
257
|
this.ptyServiceCenter = new RPCServiceCenter();
|
|
261
|
-
const { createRPCService, getRPCService } = initRPCService
|
|
262
|
-
|
|
263
|
-
|
|
258
|
+
const { createRPCService, getRPCService } = initRPCService<{
|
|
259
|
+
$callback: (callId: number, ...args: any[]) => void;
|
|
260
|
+
}>(this.ptyServiceCenter);
|
|
261
|
+
const $callback = getRPCService(PTY_SERVICE_PROXY_CALLBACK_PROTOCOL).$callback;
|
|
264
262
|
|
|
265
263
|
this.ptyServiceProxy = new PtyServiceProxy($callback);
|
|
266
264
|
|
|
@@ -275,7 +273,7 @@ export class PtyServiceProxyRPCProvider {
|
|
|
275
273
|
private createSocket() {
|
|
276
274
|
this.server = net.createServer();
|
|
277
275
|
this.server.on('connection', (connection) => {
|
|
278
|
-
this.
|
|
276
|
+
this.logger.log('ptyServiceCenter: new connections coming in');
|
|
279
277
|
this.setProxyConnection(connection);
|
|
280
278
|
});
|
|
281
279
|
// const ipcPath = normalizedIpcHandlerPath()
|
|
@@ -284,7 +282,7 @@ export class PtyServiceProxyRPCProvider {
|
|
|
284
282
|
fs.unlinkSync(this.serverListenOptions.path); // 兜底逻辑,如果之前Server没有清除掉SOCK文件的话,那就先清除
|
|
285
283
|
}
|
|
286
284
|
this.server.listen(this.serverListenOptions);
|
|
287
|
-
this.
|
|
285
|
+
this.logger.log('ptyServiceCenter: listening on', this.serverListenOptions);
|
|
288
286
|
}
|
|
289
287
|
|
|
290
288
|
// Close Server, release UNIX DOMAIN SOCKET
|
|
@@ -303,11 +301,16 @@ export class PtyServiceProxyRPCProvider {
|
|
|
303
301
|
});
|
|
304
302
|
}
|
|
305
303
|
|
|
306
|
-
private setProxyConnection(
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
this.
|
|
304
|
+
private setProxyConnection(socket: net.Socket) {
|
|
305
|
+
const connection = new NetSocketConnection(socket);
|
|
306
|
+
const channel = WSChannel.forClient(connection, {
|
|
307
|
+
id: 'pty',
|
|
308
|
+
logger: this.logger,
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
const remove = this.ptyServiceCenter.setChannel(channel);
|
|
312
|
+
socket.on('close', () => {
|
|
313
|
+
remove.dispose();
|
|
311
314
|
});
|
|
312
315
|
}
|
|
313
316
|
|
package/src/node/shell.ts
CHANGED
|
@@ -172,7 +172,10 @@ function getSystemShellUnixLike(os: OperatingSystem, env = process.env): string
|
|
|
172
172
|
try {
|
|
173
173
|
// It's possible for $SHELL to be unset, this API reads /etc/passwd. See https://github.com/github/codespaces/issues/1639
|
|
174
174
|
// Node docs: "Throws a SystemError if a user has no username or homedir."
|
|
175
|
-
|
|
175
|
+
const info = userInfo();
|
|
176
|
+
if (info.shell) {
|
|
177
|
+
unixLikeTerminal = info.shell;
|
|
178
|
+
}
|
|
176
179
|
} catch (err) {}
|
|
177
180
|
}
|
|
178
181
|
|