@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.
Files changed (67) hide show
  1. package/lib/browser/component/resize.delegate.d.ts +2 -2
  2. package/lib/browser/component/resize.delegate.d.ts.map +1 -1
  3. package/lib/browser/component/resize.view.d.ts +3 -1
  4. package/lib/browser/component/resize.view.d.ts.map +1 -1
  5. package/lib/browser/component/tab.item.d.ts +6 -2
  6. package/lib/browser/component/tab.item.d.ts.map +1 -1
  7. package/lib/browser/component/tab.module.less +1 -0
  8. package/lib/browser/component/tab.view.d.ts +3 -1
  9. package/lib/browser/component/tab.view.d.ts.map +1 -1
  10. package/lib/browser/component/terminal.select.d.ts +3 -1
  11. package/lib/browser/component/terminal.select.d.ts.map +1 -1
  12. package/lib/browser/component/terminal.variable.d.ts +2 -2
  13. package/lib/browser/component/terminal.variable.d.ts.map +1 -1
  14. package/lib/browser/component/terminal.view.d.ts +3 -1
  15. package/lib/browser/component/terminal.view.d.ts.map +1 -1
  16. package/lib/browser/component/terminal.widget.d.ts +2 -2
  17. package/lib/browser/component/terminal.widget.d.ts.map +1 -1
  18. package/lib/browser/terminal.client.d.ts.map +1 -1
  19. package/lib/browser/terminal.client.js +4 -3
  20. package/lib/browser/terminal.client.js.map +1 -1
  21. package/lib/browser/terminal.controller.d.ts.map +1 -1
  22. package/lib/browser/terminal.controller.js +1 -0
  23. package/lib/browser/terminal.controller.js.map +1 -1
  24. package/lib/browser/terminal.error.d.ts.map +1 -1
  25. package/lib/browser/terminal.error.js +1 -0
  26. package/lib/browser/terminal.error.js.map +1 -1
  27. package/lib/browser/terminal.render.d.ts +6 -2
  28. package/lib/browser/terminal.render.d.ts.map +1 -1
  29. package/lib/browser/terminal.search.d.ts +1 -0
  30. package/lib/browser/terminal.search.d.ts.map +1 -1
  31. package/lib/browser/terminal.search.js +3 -1
  32. package/lib/browser/terminal.search.js.map +1 -1
  33. package/lib/browser/terminal.view.d.ts +2 -2
  34. package/lib/browser/terminal.view.d.ts.map +1 -1
  35. package/lib/browser/terminal.view.js +83 -4
  36. package/lib/browser/terminal.view.js.map +1 -1
  37. package/lib/common/pty.d.ts +5 -6
  38. package/lib/common/pty.d.ts.map +1 -1
  39. package/lib/common/pty.js.map +1 -1
  40. package/lib/node/pty.manager.d.ts +2 -5
  41. package/lib/node/pty.manager.d.ts.map +1 -1
  42. package/lib/node/pty.manager.js +6 -7
  43. package/lib/node/pty.manager.js.map +1 -1
  44. package/lib/node/pty.manager.remote.d.ts.map +1 -1
  45. package/lib/node/pty.manager.remote.js +8 -4
  46. package/lib/node/pty.manager.remote.js.map +1 -1
  47. package/lib/node/pty.proxy.d.ts +2 -2
  48. package/lib/node/pty.proxy.d.ts.map +1 -1
  49. package/lib/node/pty.proxy.js +18 -17
  50. package/lib/node/pty.proxy.js.map +1 -1
  51. package/lib/node/shell.d.ts.map +1 -1
  52. package/lib/node/shell.js +4 -1
  53. package/lib/node/shell.js.map +1 -1
  54. package/package.json +16 -16
  55. package/src/browser/component/tab.item.tsx +5 -5
  56. package/src/browser/component/tab.module.less +1 -0
  57. package/src/browser/component/terminal.view.tsx +2 -2
  58. package/src/browser/terminal.client.ts +5 -4
  59. package/src/browser/terminal.controller.ts +2 -1
  60. package/src/browser/terminal.error.ts +2 -1
  61. package/src/browser/terminal.search.ts +5 -1
  62. package/src/browser/terminal.view.ts +23 -6
  63. package/src/common/pty.ts +6 -7
  64. package/src/node/pty.manager.remote.ts +9 -5
  65. package/src/node/pty.manager.ts +9 -16
  66. package/src/node/pty.proxy.ts +23 -20
  67. package/src/node/shell.ts +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/node/shell.ts"],"names":[],"mappings":"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"}
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-next-1706520813.0",
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-next-1706520813.0",
21
- "@opensumi/ide-core-common": "2.27.3-next-1706520813.0",
22
- "@opensumi/ide-core-node": "2.27.3-next-1706520813.0",
23
- "@opensumi/ide-file-service": "2.27.3-next-1706520813.0",
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.11.0-beta19",
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-next-1706520813.0",
35
- "@opensumi/ide-core-browser": "2.27.3-next-1706520813.0",
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-next-1706520813.0",
38
- "@opensumi/ide-main-layout": "2.27.3-next-1706520813.0",
39
- "@opensumi/ide-overlay": "2.27.3-next-1706520813.0",
40
- "@opensumi/ide-status-bar": "2.27.3-next-1706520813.0",
41
- "@opensumi/ide-theme": "2.27.3-next-1706520813.0",
42
- "@opensumi/ide-variable": "2.27.3-next-1706520813.0",
43
- "@opensumi/ide-workspace": "2.27.3-next-1706520813.0",
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": "ab440e0a62600ed6d6b577fc520d8b42db9d6394"
48
+ "gitHead": "922ed9010fe3658f626401b559c5d1cae6afa760"
49
49
  }
@@ -1,4 +1,4 @@
1
- import clx from 'classnames';
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={clx({
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={clx([getIcon('close'), styles.close_icon])}
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={clx({
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={clx({
120
+ className={cls({
121
121
  [getIcon('down')]: true,
122
122
  [styles.item_more]: true,
123
123
  })}
@@ -19,6 +19,7 @@
19
19
  overflow-y: hidden;
20
20
  display: inline-flex;
21
21
  position: relative;
22
+ height: 100%;
22
23
  }
23
24
  }
24
25
 
@@ -1,4 +1,4 @@
1
- import clx from 'classnames';
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={clx(styles.closeBtn, getIcon('close'))} onClick={() => searchService.close()}></div>
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.resolve();
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.name = this.name;
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.name = options.name || this.name;
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: string;
249
+ currentGroupId = '';
241
250
 
242
251
  @observable
243
- currentGroupIndex: number;
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 { createSocketConnection } from '@opensumi/ide-connection/lib/node';
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 messageConnection = createSocketConnection(socket);
54
- clientCenter.setConnection(messageConnection);
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
- clientCenter.removeConnection(messageConnection);
61
+ remove.dispose();
58
62
  });
59
63
  }
60
64
 
@@ -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
  }
@@ -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 { createSocketConnection } from '@opensumi/ide-connection/lib/node';
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
- $on(callId: number, pid: number, event: any): void {
203
+ $resize(pid: number, columns: number, rows: number): void {
205
204
  const ptyInstance = this.ptyInstanceMap.get(pid);
206
- ptyInstance?.on(event, (e) => {
207
- this.$callback(callId, e);
208
- });
205
+ ptyInstance?.resize(columns, rows);
209
206
  }
210
207
 
211
- $resize(pid: number, columns: number, rows: number): void {
208
+ $clear(pid: number): void {
212
209
  const ptyInstance = this.ptyInstanceMap.get(pid);
213
- ptyInstance?.resize(columns, rows);
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 debugLogger = getDebugLogger();
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(this.ptyServiceCenter);
262
- const $callback: (callId: number, ...args) => void = (getRPCService(PTY_SERVICE_PROXY_CALLBACK_PROTOCOL) as any)
263
- .$callback;
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.debugLogger.log('ptyServiceCenter: new connections coming in');
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.debugLogger.log('ptyServiceCenter: listening on', this.serverListenOptions);
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(connection: net.Socket) {
307
- const serverConnection = createSocketConnection(connection);
308
- this.ptyServiceCenter.setConnection(serverConnection);
309
- connection.on('close', () => {
310
- this.ptyServiceCenter.removeConnection(serverConnection);
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
- unixLikeTerminal = userInfo().shell;
175
+ const info = userInfo();
176
+ if (info.shell) {
177
+ unixLikeTerminal = info.shell;
178
+ }
176
179
  } catch (err) {}
177
180
  }
178
181