@opensumi/ide-terminal-next 2.17.9 → 2.18.1

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 (157) hide show
  1. package/lib/browser/component/tab.item.d.ts.map +1 -1
  2. package/lib/browser/component/tab.item.js +33 -12
  3. package/lib/browser/component/tab.item.js.map +1 -1
  4. package/lib/browser/component/tab.module.less +41 -12
  5. package/lib/browser/component/tab.view.d.ts.map +1 -1
  6. package/lib/browser/component/tab.view.js +25 -7
  7. package/lib/browser/component/tab.view.js.map +1 -1
  8. package/lib/browser/component/terminal.view.d.ts.map +1 -1
  9. package/lib/browser/component/terminal.view.js +25 -24
  10. package/lib/browser/component/terminal.view.js.map +1 -1
  11. package/lib/browser/contribution/terminal.menu.d.ts.map +1 -1
  12. package/lib/browser/contribution/terminal.menu.js +3 -4
  13. package/lib/browser/contribution/terminal.menu.js.map +1 -1
  14. package/lib/browser/index.d.ts.map +1 -1
  15. package/lib/browser/index.js +0 -5
  16. package/lib/browser/index.js.map +1 -1
  17. package/lib/browser/links/link-manager.d.ts.map +1 -1
  18. package/lib/browser/links/link-manager.js +11 -12
  19. package/lib/browser/links/link-manager.js.map +1 -1
  20. package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -1
  21. package/lib/browser/links/validated-local-link-provider.js +1 -2
  22. package/lib/browser/links/validated-local-link-provider.js.map +1 -1
  23. package/lib/browser/terminal.addon.d.ts.map +1 -1
  24. package/lib/browser/terminal.addon.js +3 -1
  25. package/lib/browser/terminal.addon.js.map +1 -1
  26. package/lib/browser/terminal.api.d.ts +8 -7
  27. package/lib/browser/terminal.api.d.ts.map +1 -1
  28. package/lib/browser/terminal.api.js +31 -17
  29. package/lib/browser/terminal.api.js.map +1 -1
  30. package/lib/browser/terminal.client.d.ts +7 -4
  31. package/lib/browser/terminal.client.d.ts.map +1 -1
  32. package/lib/browser/terminal.client.js +21 -45
  33. package/lib/browser/terminal.client.js.map +1 -1
  34. package/lib/browser/terminal.context-menu.d.ts +2 -0
  35. package/lib/browser/terminal.context-menu.d.ts.map +1 -1
  36. package/lib/browser/terminal.context-menu.js +23 -4
  37. package/lib/browser/terminal.context-menu.js.map +1 -1
  38. package/lib/browser/terminal.controller.d.ts +16 -7
  39. package/lib/browser/terminal.controller.d.ts.map +1 -1
  40. package/lib/browser/terminal.controller.js +169 -33
  41. package/lib/browser/terminal.controller.js.map +1 -1
  42. package/lib/browser/terminal.input.js +2 -2
  43. package/lib/browser/terminal.input.js.map +1 -1
  44. package/lib/browser/terminal.internal.service.d.ts +6 -6
  45. package/lib/browser/terminal.internal.service.d.ts.map +1 -1
  46. package/lib/browser/terminal.internal.service.js +6 -25
  47. package/lib/browser/terminal.internal.service.js.map +1 -1
  48. package/lib/browser/terminal.profile.d.ts +18 -9
  49. package/lib/browser/terminal.profile.d.ts.map +1 -1
  50. package/lib/browser/terminal.profile.internal.d.ts.map +1 -1
  51. package/lib/browser/terminal.profile.internal.js +4 -6
  52. package/lib/browser/terminal.profile.internal.js.map +1 -1
  53. package/lib/browser/terminal.profile.js +59 -9
  54. package/lib/browser/terminal.profile.js.map +1 -1
  55. package/lib/browser/terminal.restore.d.ts.map +1 -1
  56. package/lib/browser/terminal.restore.js +3 -1
  57. package/lib/browser/terminal.restore.js.map +1 -1
  58. package/lib/browser/terminal.search.d.ts.map +1 -1
  59. package/lib/browser/terminal.search.js +6 -0
  60. package/lib/browser/terminal.search.js.map +1 -1
  61. package/lib/browser/terminal.service.d.ts +5 -17
  62. package/lib/browser/terminal.service.d.ts.map +1 -1
  63. package/lib/browser/terminal.service.js +6 -79
  64. package/lib/browser/terminal.service.js.map +1 -1
  65. package/lib/browser/terminal.view.d.ts +5 -3
  66. package/lib/browser/terminal.view.d.ts.map +1 -1
  67. package/lib/browser/terminal.view.js +9 -5
  68. package/lib/browser/terminal.view.js.map +1 -1
  69. package/lib/browser/xterm.d.ts +2 -1
  70. package/lib/browser/xterm.d.ts.map +1 -1
  71. package/lib/browser/xterm.js.map +1 -1
  72. package/lib/common/api.d.ts +3 -2
  73. package/lib/common/api.d.ts.map +1 -1
  74. package/lib/common/client.d.ts +19 -1
  75. package/lib/common/client.d.ts.map +1 -1
  76. package/lib/common/client.js +2 -1
  77. package/lib/common/client.js.map +1 -1
  78. package/lib/common/controller.d.ts +20 -5
  79. package/lib/common/controller.d.ts.map +1 -1
  80. package/lib/common/controller.js.map +1 -1
  81. package/lib/common/environmentVariable.d.ts +2 -3
  82. package/lib/common/environmentVariable.d.ts.map +1 -1
  83. package/lib/common/environmentVariable.js.map +1 -1
  84. package/lib/common/environmentVariableCollection.d.ts +2 -3
  85. package/lib/common/environmentVariableCollection.d.ts.map +1 -1
  86. package/lib/common/environmentVariableCollection.js +2 -2
  87. package/lib/common/environmentVariableCollection.js.map +1 -1
  88. package/lib/common/extension.d.ts +3 -0
  89. package/lib/common/extension.d.ts.map +1 -1
  90. package/lib/common/extension.js.map +1 -1
  91. package/lib/common/profile.d.ts +6 -9
  92. package/lib/common/profile.d.ts.map +1 -1
  93. package/lib/common/profile.js +1 -2
  94. package/lib/common/profile.js.map +1 -1
  95. package/lib/common/pty.d.ts +92 -11
  96. package/lib/common/pty.d.ts.map +1 -1
  97. package/lib/common/pty.js +40 -1
  98. package/lib/common/pty.js.map +1 -1
  99. package/lib/common/render.d.ts +5 -0
  100. package/lib/common/render.d.ts.map +1 -1
  101. package/lib/common/render.js.map +1 -1
  102. package/lib/common/resize.d.ts +2 -0
  103. package/lib/common/resize.d.ts.map +1 -1
  104. package/lib/common/service.d.ts +8 -11
  105. package/lib/common/service.d.ts.map +1 -1
  106. package/lib/common/service.js.map +1 -1
  107. package/lib/common/xterm.d.ts +16 -0
  108. package/lib/common/xterm.d.ts.map +1 -0
  109. package/lib/common/xterm.js +3 -0
  110. package/lib/common/xterm.js.map +1 -0
  111. package/lib/node/index.d.ts.map +1 -1
  112. package/lib/node/index.js +5 -0
  113. package/lib/node/index.js.map +1 -1
  114. package/lib/node/pty.d.ts +9 -5
  115. package/lib/node/pty.d.ts.map +1 -1
  116. package/lib/node/pty.js +13 -10
  117. package/lib/node/pty.js.map +1 -1
  118. package/lib/node/pty.manager.d.ts +52 -0
  119. package/lib/node/pty.manager.d.ts.map +1 -0
  120. package/lib/node/pty.manager.js +149 -0
  121. package/lib/node/pty.manager.js.map +1 -0
  122. package/lib/node/pty.manager.remote.d.ts +10 -0
  123. package/lib/node/pty.manager.remote.d.ts.map +1 -0
  124. package/lib/node/pty.manager.remote.js +92 -0
  125. package/lib/node/pty.manager.remote.js.map +1 -0
  126. package/lib/node/pty.proxy.d.ts +45 -0
  127. package/lib/node/pty.proxy.d.ts.map +1 -0
  128. package/lib/node/pty.proxy.js +255 -0
  129. package/lib/node/pty.proxy.js.map +1 -0
  130. package/lib/node/pty.proxy.remote.exec.d.ts +2 -0
  131. package/lib/node/pty.proxy.remote.exec.d.ts.map +1 -0
  132. package/lib/node/pty.proxy.remote.exec.js +7 -0
  133. package/lib/node/pty.proxy.remote.exec.js.map +1 -0
  134. package/lib/node/shell.d.ts +1 -1
  135. package/lib/node/shell.d.ts.map +1 -1
  136. package/lib/node/shell.js +14 -15
  137. package/lib/node/shell.js.map +1 -1
  138. package/lib/node/terminal.profile.service.d.ts.map +1 -1
  139. package/lib/node/terminal.profile.service.js +4 -6
  140. package/lib/node/terminal.profile.service.js.map +1 -1
  141. package/lib/node/terminal.service.client.d.ts +3 -8
  142. package/lib/node/terminal.service.client.d.ts.map +1 -1
  143. package/lib/node/terminal.service.client.js +8 -39
  144. package/lib/node/terminal.service.client.js.map +1 -1
  145. package/lib/node/terminal.service.d.ts +3 -2
  146. package/lib/node/terminal.service.d.ts.map +1 -1
  147. package/lib/node/terminal.service.js +36 -10
  148. package/lib/node/terminal.service.js.map +1 -1
  149. package/package.json +16 -16
  150. package/lib/browser/terminal.contribution.d.ts +0 -7
  151. package/lib/browser/terminal.contribution.d.ts.map +0 -1
  152. package/lib/browser/terminal.contribution.js +0 -32
  153. package/lib/browser/terminal.contribution.js.map +0 -1
  154. package/lib/common/menu.d.ts +0 -5
  155. package/lib/common/menu.d.ts.map +0 -1
  156. package/lib/common/menu.js +0 -9
  157. package/lib/common/menu.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xterm.d.ts","sourceRoot":"","sources":["../../src/common/xterm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAElD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,IAAI,CAAC;IACb,GAAG,IAAI,IAAI,CAAC;IACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,WAAW,IAAI,IAAI,CAAC;IACpB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC9C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=xterm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xterm.js","sourceRoot":"","sources":["../../src/common/xterm.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgBrD,qBACa,qBAAsB,SAAQ,UAAU;IACnD,SAAS,EAAE,QAAQ,EAAE,CAqBnB;IAEF,YAAY;;;QASV;CACH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAiBrD,qBACa,qBAAsB,SAAQ,UAAU;IACnD,SAAS,EAAE,QAAQ,EAAE,CAyBnB;IAEF,YAAY;;;QASV;CACH"}
package/lib/node/index.js CHANGED
@@ -6,6 +6,7 @@ const di_1 = require("@opensumi/di");
6
6
  const ide_core_node_1 = require("@opensumi/ide-core-node");
7
7
  const common_1 = require("../common");
8
8
  const pty_1 = require("./pty");
9
+ const pty_manager_1 = require("./pty.manager");
9
10
  const terminal_process_service_1 = require("./terminal.process.service");
10
11
  const terminal_profile_service_1 = require("./terminal.profile.service");
11
12
  const terminal_service_1 = require("./terminal.service");
@@ -34,6 +35,10 @@ let TerminalNodePtyModule = class TerminalNodePtyModule extends ide_core_node_1.
34
35
  token: terminal_profile_service_1.ITerminalProfileServiceNode,
35
36
  useClass: terminal_profile_service_1.TerminalProfileServiceNode,
36
37
  },
38
+ {
39
+ token: pty_manager_1.PtyServiceManagerToken,
40
+ useClass: pty_manager_1.PtyServiceManager,
41
+ },
37
42
  ];
38
43
  this.backServices = [
39
44
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,2DAAqD;AAErD,sCAMmB;AAEnB,+BAAgD;AAChD,yEAAwE;AACxE,yEAAqG;AACrG,yDAAyD;AACzD,uEAAsE;AAGtE,IAAa,qBAAqB,GAAlC,MAAa,qBAAsB,SAAQ,0BAAU;IAArD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,6BAAoB;gBAC3B,QAAQ,EAAE,sCAAmB;aAC9B;YACD;gBACE,KAAK,EAAE,+BAAsB;gBAC7B,QAAQ,EAAE,mDAAyB;aACpC;YACD;gBACE,KAAK,EAAE,gCAAuB;gBAC9B,QAAQ,EAAE,qDAA0B;aACrC;YACD;gBACE,KAAK,EAAE,iBAAW;gBAClB,QAAQ,EAAE,gBAAU;aACrB;YACD;gBACE,KAAK,EAAE,sDAA2B;gBAClC,QAAQ,EAAE,qDAA0B;aACrC;SACF,CAAC;QAEF,iBAAY,GAAG;YACb;gBACE,WAAW,EAAE,6BAAoB;gBACjC,KAAK,EAAE,+BAAsB;aAC9B;YACD;gBACE,WAAW,EAAE,6BAAoB;gBACjC,KAAK,EAAE,gCAAuB;aAC/B;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAlCY,qBAAqB;IADjC,IAAA,eAAU,GAAE;GACA,qBAAqB,CAkCjC;AAlCY,sDAAqB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,2DAAqD;AAErD,sCAMmB;AAEnB,+BAAgD;AAChD,+CAA0E;AAC1E,yEAAwE;AACxE,yEAAqG;AACrG,yDAAyD;AACzD,uEAAsE;AAGtE,IAAa,qBAAqB,GAAlC,MAAa,qBAAsB,SAAQ,0BAAU;IAArD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,6BAAoB;gBAC3B,QAAQ,EAAE,sCAAmB;aAC9B;YACD;gBACE,KAAK,EAAE,+BAAsB;gBAC7B,QAAQ,EAAE,mDAAyB;aACpC;YACD;gBACE,KAAK,EAAE,gCAAuB;gBAC9B,QAAQ,EAAE,qDAA0B;aACrC;YACD;gBACE,KAAK,EAAE,iBAAW;gBAClB,QAAQ,EAAE,gBAAU;aACrB;YACD;gBACE,KAAK,EAAE,sDAA2B;gBAClC,QAAQ,EAAE,qDAA0B;aACrC;YACD;gBACE,KAAK,EAAE,oCAAsB;gBAC7B,QAAQ,EAAE,+BAAiB;aAC5B;SACF,CAAC;QAEF,iBAAY,GAAG;YACb;gBACE,WAAW,EAAE,6BAAoB;gBACjC,KAAK,EAAE,+BAAsB;aAC9B;YACD;gBACE,WAAW,EAAE,6BAAoB;gBACjC,KAAK,EAAE,gCAAuB;aAC/B;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAtCY,qBAAqB;IADjC,IAAA,eAAU,GAAE;GACA,qBAAqB,CAsCjC;AAtCY,sDAAqB"}
package/lib/node/pty.d.ts CHANGED
@@ -1,13 +1,16 @@
1
- import { Disposable } from '@opensumi/ide-core-node';
1
+ import * as pty from 'node-pty';
2
+ import { Disposable, INodeLogger } from '@opensumi/ide-core-node';
2
3
  import { IShellLaunchConfig, ITerminalLaunchError } from '../common';
3
4
  import { IProcessReadyEvent, IProcessExitEvent } from '../common/process';
4
5
  import { IPtyProcess } from '../common/pty';
6
+ import { IPtyServiceManager } from './pty.manager';
5
7
  export declare const IPtyService: unique symbol;
6
8
  export declare class PtyService extends Disposable {
7
9
  id: string;
8
- private readonly shellLaunchConfig;
9
- private readonly logger;
10
- private readonly _ptyOptions;
10
+ readonly shellLaunchConfig: IShellLaunchConfig;
11
+ protected readonly logger: INodeLogger;
12
+ protected readonly ptyServiceManager: IPtyServiceManager;
13
+ protected readonly _ptyOptions: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions;
11
14
  private _ptyProcess;
12
15
  private readonly _onData;
13
16
  readonly onData: import("@opensumi/ide-core-node").Event<string>;
@@ -15,6 +18,7 @@ export declare class PtyService extends Disposable {
15
18
  readonly onReady: import("@opensumi/ide-core-node").Event<IProcessReadyEvent>;
16
19
  private readonly _onExit;
17
20
  readonly onExit: import("@opensumi/ide-core-node").Event<IProcessExitEvent>;
21
+ private readonly sessionId;
18
22
  private readonly _onProcessChange;
19
23
  readonly onProcessChange: import("@opensumi/ide-core-node").Event<string>;
20
24
  private previouslyProcess;
@@ -24,7 +28,7 @@ export declare class PtyService extends Disposable {
24
28
  _validateCwd(): Promise<ITerminalLaunchError | undefined>;
25
29
  _validateExecutable(): Promise<ITerminalLaunchError | undefined>;
26
30
  start(): Promise<ITerminalLaunchError | undefined>;
27
- private setupPtyProcess;
31
+ protected setupPtyProcess(): Promise<void>;
28
32
  private _sendProcessId;
29
33
  parseCwd(): string;
30
34
  getShellName(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,qBACa,UAAW,SAAQ,UAAU;IAyBrB,EAAE,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAvBjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,QAAQ,CAAC,MAAM,kDAAsB;IAErC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,QAAQ,CAAC,OAAO,8DAAuB;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,QAAQ,CAAC,MAAM,6DAAsB;IAErC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,QAAQ,CAAC,eAAe,kDAA+B;IAEvD,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,IAAI,GAAG,4BAEN;gBAEkB,EAAE,EAAE,MAAM,EAAmB,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAqB3G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,YAAY,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAuBzD,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAiChE,KAAK,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;YAoD1C,eAAe;IAiC7B,OAAO,CAAC,cAAc;IAMtB,QAAQ;IASR,YAAY;IAIZ,MAAM;IAIN,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQjC,SAAS,CAAC,IAAI,EAAE,MAAM;CAGvB"}
1
+ {"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAIhC,OAAO,EAAE,UAAU,EAAW,WAAW,EAAmB,MAAM,yBAAyB,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAA0B,MAAM,eAAe,CAAC;AAG3E,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,qBACa,UAAW,SAAQ,UAAU;IA+BrB,EAAE,EAAE,MAAM;aAAkB,iBAAiB,EAAE,kBAAkB;IA7BpF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAGvC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAEzD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC;IACjF,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,QAAQ,CAAC,MAAM,kDAAsB;IAErC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,QAAQ,CAAC,OAAO,8DAAuB;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,QAAQ,CAAC,MAAM,6DAAsB;IAGrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,QAAQ,CAAC,eAAe,kDAA+B;IAEvD,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,IAAI,GAAG,4BAEN;gBAEkB,EAAE,EAAE,MAAM,EAAkB,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAsB1G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,YAAY,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAuBzD,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAiChE,KAAK,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;cAoDxC,eAAe;IAqC/B,OAAO,CAAC,cAAc;IAMtB,QAAQ;IASR,YAAY;IAIZ,MAAM;IAIN,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IASjC,SAAS,CAAC,IAAI,EAAE,MAAM;CAGvB"}
package/lib/node/pty.js CHANGED
@@ -10,13 +10,11 @@ const tslib_1 = require("tslib");
10
10
  const fs_1 = require("fs");
11
11
  const os_1 = tslib_1.__importDefault(require("os"));
12
12
  const omit_1 = tslib_1.__importDefault(require("lodash/omit"));
13
- const pty = tslib_1.__importStar(require("node-pty"));
14
13
  const osLocale = tslib_1.__importStar(require("os-locale"));
15
14
  const di_1 = require("@opensumi/di");
16
- const path = tslib_1.__importStar(require("@opensumi/ide-core-common/lib/path"));
17
- const platform_1 = require("@opensumi/ide-core-common/lib/platform");
18
15
  const ide_core_node_1 = require("@opensumi/ide-core-node");
19
16
  const shell_path_1 = require("@opensumi/ide-core-node/lib/bootstrap/shell-path");
17
+ const pty_manager_1 = require("./pty.manager");
20
18
  const shell_1 = require("./shell");
21
19
  exports.IPtyService = Symbol('IPtyService');
22
20
  let PtyService = class PtyService extends ide_core_node_1.Disposable {
@@ -33,8 +31,8 @@ let PtyService = class PtyService extends ide_core_node_1.Disposable {
33
31
  this._onProcessChange = new ide_core_node_1.Emitter();
34
32
  this.onProcessChange = this._onProcessChange.event;
35
33
  let name;
36
- if (platform_1.isWindows) {
37
- name = path.basename(this.shellLaunchConfig.executable || '');
34
+ if (ide_core_node_1.isWindows) {
35
+ name = ide_core_node_1.path.basename(this.shellLaunchConfig.executable || '');
38
36
  }
39
37
  else {
40
38
  // Using 'xterm-256color' here helps ensure that the majority of Linux distributions will use a
@@ -49,6 +47,7 @@ let PtyService = class PtyService extends ide_core_node_1.Disposable {
49
47
  cols,
50
48
  rows,
51
49
  };
50
+ this.sessionId = id;
52
51
  }
53
52
  get pty() {
54
53
  return this._ptyProcess;
@@ -108,7 +107,7 @@ let PtyService = class PtyService extends ide_core_node_1.Disposable {
108
107
  catch (err) {
109
108
  if ((err === null || err === void 0 ? void 0 : err.code) === 'ENOENT') {
110
109
  // The executable isn't an absolute path, try find it on the PATH or CWD
111
- const envPaths = options.env && options.env.PATH ? options.env.PATH.split(path.delimiter) : undefined;
110
+ const envPaths = options.env && options.env.PATH ? options.env.PATH.split(ide_core_node_1.path.delimiter) : undefined;
112
111
  const executable = await (0, shell_1.findExecutable)(options.executable, cwd, envPaths);
113
112
  if (!executable) {
114
113
  return {
@@ -167,10 +166,10 @@ let PtyService = class PtyService extends ide_core_node_1.Disposable {
167
166
  async setupPtyProcess() {
168
167
  const options = this.shellLaunchConfig;
169
168
  const args = options.args || [];
170
- const ptyProcess = pty.spawn(options.executable, args, this._ptyOptions);
171
- this.addDispose(ptyProcess.onData((e) => {
169
+ const ptyProcess = await this.ptyServiceManager.spawn(options.executable, args, this._ptyOptions, this.sessionId);
170
+ this.addDispose(ptyProcess.onData(async (e) => {
172
171
  this._onData.fire(e);
173
- const processName = ptyProcess.process;
172
+ const processName = await ptyProcess.getProcessDynamically();
174
173
  if (processName !== this.previouslyProcess) {
175
174
  this.previouslyProcess = processName;
176
175
  this._onProcessChange.fire(processName);
@@ -182,7 +181,7 @@ let PtyService = class PtyService extends ide_core_node_1.Disposable {
182
181
  }));
183
182
  ptyProcess.bin = options.executable;
184
183
  ptyProcess.launchConfig = options;
185
- ptyProcess.parsedName = path.basename(options.executable);
184
+ ptyProcess.parsedName = ide_core_node_1.path.basename(options.executable);
186
185
  this._sendProcessId(ptyProcess.pid);
187
186
  this._ptyProcess = ptyProcess;
188
187
  }
@@ -226,6 +225,10 @@ tslib_1.__decorate([
226
225
  (0, di_1.Autowired)(ide_core_node_1.INodeLogger),
227
226
  tslib_1.__metadata("design:type", Object)
228
227
  ], PtyService.prototype, "logger", void 0);
228
+ tslib_1.__decorate([
229
+ (0, di_1.Autowired)(pty_manager_1.PtyServiceManagerToken),
230
+ tslib_1.__metadata("design:type", Object)
231
+ ], PtyService.prototype, "ptyServiceManager", void 0);
229
232
  PtyService = tslib_1.__decorate([
230
233
  (0, di_1.Injectable)({ multiple: true }),
231
234
  tslib_1.__metadata("design:paramtypes", [String, Object, Number, Number])
@@ -1 +1 @@
1
- {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import * as pty from 'node-pty';
2
+ import { INodeLogger } from '@opensumi/ide-core-node';
3
+ import { IPtyProcessProxy, IPtyProxyRPCService } from '../common';
4
+ export declare const PtyServiceManagerToken: unique symbol;
5
+ /**
6
+ * 在 IDE 容器中运行,具体分为两类实现。通过 DI 注入替换来做到两种模式的替换
7
+ * 1.与远程容器通信,完成终端的创建连接一些列事情 - 双容器架构
8
+ * 2.直接走同进程调用,操作终端 - 传统架构
9
+ */
10
+ export interface IPtyServiceManager {
11
+ spawn(file: string, args: string[] | string, options: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions, sessionId?: string): Promise<IPtyProcessProxy>;
12
+ onData(pid: number, listener: (e: string) => any): pty.IDisposable;
13
+ onExit(pid: number, listener: (e: {
14
+ exitCode: number;
15
+ signal?: number;
16
+ }) => any): pty.IDisposable;
17
+ on(pid: number, event: 'data', listener: (data: string) => void): void;
18
+ on(pid: number, event: 'exit', listener: (exitCode: number, signal?: number) => void): void;
19
+ on(pid: number, event: any, listener: (data: any) => void): void;
20
+ resize(pid: number, columns: number, rows: number): void;
21
+ write(pid: number, data: string): void;
22
+ pause(pid: number): void;
23
+ resume(pid: number): void;
24
+ kill(pid: number, signal?: string): void;
25
+ getProcess(pid: any): Promise<string>;
26
+ checkSession(sessionId: string): Promise<boolean>;
27
+ }
28
+ export declare class PtyServiceManager implements IPtyServiceManager {
29
+ protected callId: number;
30
+ protected callbackMap: Map<number, (...args: any[]) => void>;
31
+ protected ptyServiceProxy: IPtyProxyRPCService;
32
+ protected logger: INodeLogger;
33
+ constructor();
34
+ protected initLocal(): void;
35
+ private addNewCallback;
36
+ spawn(file: string, args: string[] | string, options: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions, sessionId?: string): Promise<IPtyProcessProxy>;
37
+ getProcess(pid: any): Promise<string>;
38
+ onData(pid: number, listener: (e: string) => any): pty.IDisposable;
39
+ onExit(pid: number, listener: (e: {
40
+ exitCode: number;
41
+ signal?: number;
42
+ }) => any): pty.IDisposable;
43
+ on(pid: number, event: 'data', listener: (data: string) => void): void;
44
+ on(pid: number, event: 'exit', listener: (exitCode: number, signal?: number) => void): void;
45
+ resize(pid: number, columns: number, rows: number): void;
46
+ write(pid: number, data: string): void;
47
+ kill(pid: number, signal?: string): void;
48
+ pause(pid: number): void;
49
+ resume(pid: number): void;
50
+ checkSession(sessionId: string): Promise<boolean>;
51
+ }
52
+ //# sourceMappingURL=pty.manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.manager.d.ts","sourceRoot":"","sources":["../../src/node/pty.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PtyServiceManager = exports.PtyServiceManagerToken = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_core_node_1 = require("@opensumi/ide-core-node");
7
+ const pty_proxy_1 = require("./pty.proxy");
8
+ exports.PtyServiceManagerToken = Symbol('PtyServiceManager');
9
+ // 记录终端输入到输出的时间戳,主要是用于统计 Pty 处理 + IDE <--> Pty 的IPC 耗时
10
+ let timeCaptureTmp = 0;
11
+ // 终端的命令可能会有多行输出,避免后面几次输出也被用于时间差计算统计,因此一次 write,一次统计
12
+ let timeCaptureFilter = false;
13
+ // 标准单容器架构 - 在 IDE 容器中运行,PtyService 也在 IDE 进程中运行
14
+ // 如果需要用到双容器远程架构,可以查看 PtyServiceManagerRemote 的实现
15
+ let PtyServiceManager = class PtyServiceManager {
16
+ // Pty 运行在 IDE Server 上,因此可以直接调用
17
+ constructor() {
18
+ this.callId = 0;
19
+ this.callbackMap = new Map();
20
+ this.initLocal();
21
+ }
22
+ initLocal() {
23
+ const callback = async (callId, ...args) => {
24
+ const callback = this.callbackMap.get(callId);
25
+ if (!callback) {
26
+ return Promise.reject(new Error(`no found callback: ${callId}`));
27
+ }
28
+ callback(...args);
29
+ };
30
+ this.ptyServiceProxy = new pty_proxy_1.PtyServiceProxy(callback);
31
+ }
32
+ // 维护一个 CallbackMap,用于在 PtyServiceProxy 中远程调用回调
33
+ // 因为在 RPC 调用中本身是没法直接传递回调 Function 的,所以需要在远程调用中传递 callId,在本地调用中通过 callId 获取回调
34
+ addNewCallback(pid, callback) {
35
+ const callId = this.callId++;
36
+ this.callbackMap.set(callId, callback);
37
+ const disposable = {
38
+ dispose: () => {
39
+ this.callbackMap.delete(callId);
40
+ },
41
+ };
42
+ return { callId, disposable };
43
+ }
44
+ async spawn(file, args, options, sessionId) {
45
+ const iPtyRemoteProxy = (await this.ptyServiceProxy.$spawn(file, args, options, sessionId));
46
+ // 局部功能的 Ipty, 代理所有常量
47
+ return new PtyProcessProxy(iPtyRemoteProxy, this);
48
+ }
49
+ async getProcess(pid) {
50
+ return await this.ptyServiceProxy.$getProcess(pid);
51
+ }
52
+ // 实现 Ipty 的需要回调的逻辑接口,同时注入
53
+ onData(pid, listener) {
54
+ const monitorListener = (resString) => {
55
+ listener(resString);
56
+ if (timeCaptureFilter) {
57
+ const timeDiff = new Date().getTime() - timeCaptureTmp;
58
+ this.logger.log(`PtyServiceManager.onData: ${timeDiff}ms data: ${resString.substring(0, 100)}`);
59
+ timeCaptureFilter = false;
60
+ }
61
+ };
62
+ const { callId, disposable } = this.addNewCallback(pid, monitorListener);
63
+ this.ptyServiceProxy.$onData(callId, pid);
64
+ return disposable;
65
+ }
66
+ onExit(pid, listener) {
67
+ const { callId, disposable } = this.addNewCallback(pid, listener);
68
+ this.ptyServiceProxy.$onExit(callId, pid);
69
+ return disposable;
70
+ }
71
+ on(pid, event, listener) {
72
+ const { callId } = this.addNewCallback(pid, listener);
73
+ this.ptyServiceProxy.$on(callId, pid, event);
74
+ }
75
+ resize(pid, columns, rows) {
76
+ this.ptyServiceProxy.$resize(pid, columns, rows);
77
+ }
78
+ write(pid, data) {
79
+ timeCaptureTmp = new Date().getTime();
80
+ if (data.includes('=')) {
81
+ // 使用 '=' 作为触发本地通信统计的标识
82
+ timeCaptureFilter = true;
83
+ }
84
+ this.ptyServiceProxy.$write(pid, data);
85
+ }
86
+ kill(pid, signal) {
87
+ this.ptyServiceProxy.$kill(pid, signal);
88
+ }
89
+ pause(pid) {
90
+ this.ptyServiceProxy.$pause(pid);
91
+ }
92
+ resume(pid) {
93
+ this.ptyServiceProxy.$resume(pid);
94
+ }
95
+ async checkSession(sessionId) {
96
+ return await this.ptyServiceProxy.$checkSession(sessionId);
97
+ }
98
+ };
99
+ tslib_1.__decorate([
100
+ (0, di_1.Autowired)(ide_core_node_1.INodeLogger),
101
+ tslib_1.__metadata("design:type", Object)
102
+ ], PtyServiceManager.prototype, "logger", void 0);
103
+ PtyServiceManager = tslib_1.__decorate([
104
+ (0, di_1.Injectable)(),
105
+ tslib_1.__metadata("design:paramtypes", [])
106
+ ], PtyServiceManager);
107
+ exports.PtyServiceManager = PtyServiceManager;
108
+ // Pty 进程的 Remote 代理
109
+ // 实现了 IPtyProcessProxy 背后是 NodePty 的 INodePty, 因此可以做到和本地化直接调用 NodePty 的代码兼容
110
+ class PtyProcessProxy {
111
+ constructor(iptyProxy, ptyServiceManager) {
112
+ this.ptyServiceManager = ptyServiceManager;
113
+ this.pid = iptyProxy.pid;
114
+ this.cols = iptyProxy.cols;
115
+ this.rows = iptyProxy.rows;
116
+ this._process = iptyProxy.process;
117
+ this.handleFlowControl = iptyProxy.handleFlowControl;
118
+ this.onData = (listener) => this.ptyServiceManager.onData(this.pid, listener);
119
+ this.onExit = (listener) => this.ptyServiceManager.onExit(this.pid, listener);
120
+ }
121
+ get process() {
122
+ return this._process;
123
+ }
124
+ // 获取实时的ProcessName
125
+ async getProcessDynamically() {
126
+ const process = await this.ptyServiceManager.getProcess(this.pid);
127
+ this._process = process;
128
+ return process;
129
+ }
130
+ on(event, listener) {
131
+ this.ptyServiceManager.on(this.pid, event, listener);
132
+ }
133
+ resize(columns, rows) {
134
+ this.ptyServiceManager.resize(this.pid, columns, rows);
135
+ }
136
+ write(data) {
137
+ this.ptyServiceManager.write(this.pid, data);
138
+ }
139
+ kill(signal) {
140
+ this.ptyServiceManager.kill(this.pid, signal);
141
+ }
142
+ pause() {
143
+ this.ptyServiceManager.pause(this.pid);
144
+ }
145
+ resume() {
146
+ this.ptyServiceManager.resume(this.pid);
147
+ }
148
+ }
149
+ //# sourceMappingURL=pty.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.manager.js","sourceRoot":"","sources":["../../src/node/pty.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { SocketConnectOpts } from 'net';
3
+ import { PtyServiceManager } from './pty.manager';
4
+ export declare class PtyServiceManagerRemote extends PtyServiceManager {
5
+ constructor(connectOpts?: SocketConnectOpts);
6
+ private initRPCService;
7
+ private initRemoteConnectionMode;
8
+ protected initLocal(): void;
9
+ }
10
+ //# sourceMappingURL=pty.manager.remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.manager.remote.d.ts","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":";AAAA,OAAY,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAc7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,qBACa,uBAAwB,SAAQ,iBAAiB;gBAEpC,WAAW,GAAE,iBAA2D;IAKhG,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,wBAAwB;IAgChC,SAAS,CAAC,SAAS;CAGpB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PtyServiceManagerRemote = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const net_1 = tslib_1.__importDefault(require("net"));
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_connection_1 = require("@opensumi/ide-connection");
8
+ const node_1 = require("@opensumi/ide-connection/lib/node");
9
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
10
+ const common_1 = require("../common");
11
+ const pty_manager_1 = require("./pty.manager");
12
+ // 双容器架构 - 在IDE容器中远程运行,与DEV Server上的PtyService通信
13
+ // 继承自PtyServiceManager,覆写了创建PtyProxyService连接的方法,用于需要远程连接PtyService的场景
14
+ // 具体需要根据应用场景,通过DI注入覆盖PtyServiceManager使用
15
+ let PtyServiceManagerRemote = class PtyServiceManagerRemote extends pty_manager_1.PtyServiceManager {
16
+ // Pty运行在单独的容器上,通过Socket连接,可以自定义Socket连接参数
17
+ constructor(connectOpts = { port: common_1.PTY_SERVICE_PROXY_SERVER_PORT }) {
18
+ super();
19
+ this.initRemoteConnectionMode(connectOpts);
20
+ }
21
+ initRPCService(socket) {
22
+ const clientCenter = new ide_connection_1.RPCServiceCenter();
23
+ const { getRPCService: clientGetRPCService, createRPCService } = (0, ide_connection_1.initRPCService)(clientCenter);
24
+ const getService = clientGetRPCService(common_1.PTY_SERVICE_PROXY_PROTOCOL);
25
+ this.ptyServiceProxy = getService;
26
+ let callbackDisposed = false;
27
+ // 处理回调
28
+ createRPCService(common_1.PTY_SERVICE_PROXY_CALLBACK_PROTOCOL, {
29
+ $callback: async (callId, ...args) => {
30
+ if (callbackDisposed) {
31
+ // 在这里做一下Dispose的处理,在Dispose之后回调不再被执行
32
+ // TODO: 但是按照我的理解,在removeConnection之后这里就完全不应该被执行,但却被执行了,是为什么呢?
33
+ return;
34
+ }
35
+ const callback = this.callbackMap.get(callId);
36
+ if (!callback) {
37
+ // 这里callbackMap的callId对应的回调方法被注销,但是依然被调用了,这种情况不应该发生
38
+ this.logger.warn('PtyServiceManager not found callback:', callId);
39
+ }
40
+ else {
41
+ callback(...args);
42
+ }
43
+ },
44
+ });
45
+ const messageConnection = (0, node_1.createSocketConnection)(socket);
46
+ clientCenter.setConnection(messageConnection);
47
+ return ide_core_common_1.Disposable.create(() => {
48
+ callbackDisposed = true;
49
+ clientCenter.removeConnection(messageConnection);
50
+ });
51
+ }
52
+ initRemoteConnectionMode(connectOpts) {
53
+ const socket = new net_1.default.Socket();
54
+ let rpcServiceDisposable;
55
+ // UNIX Socket 连接监听,成功连接后再创建RPC服务
56
+ socket.on('connect', () => {
57
+ this.logger.log('PtyServiceManagerRemote connected');
58
+ rpcServiceDisposable === null || rpcServiceDisposable === void 0 ? void 0 : rpcServiceDisposable.dispose();
59
+ rpcServiceDisposable = this.initRPCService(socket);
60
+ });
61
+ // UNIX Socket 连接失败或者断开,此时需要等待 1.5s 后重新连接
62
+ socket.on('close', () => {
63
+ this.logger.log('PtyServiceManagerRemote connect failed, will reconnect after 2s');
64
+ rpcServiceDisposable === null || rpcServiceDisposable === void 0 ? void 0 : rpcServiceDisposable.dispose();
65
+ global.setTimeout(() => {
66
+ try {
67
+ socket.connect(connectOpts);
68
+ }
69
+ catch (e) {
70
+ this.logger.warn(e);
71
+ }
72
+ }, 2000);
73
+ });
74
+ try {
75
+ socket.connect(connectOpts);
76
+ }
77
+ catch (e) {
78
+ // 连接错误的时候会抛出异常,此时自动重连,同时需要 catch 错误
79
+ this.logger.warn(e);
80
+ }
81
+ }
82
+ initLocal() {
83
+ // override 空置父类的方法,因为不需要LocalInit,使用RemoteInit替代
84
+ }
85
+ };
86
+ PtyServiceManagerRemote = tslib_1.__decorate([
87
+ (0, di_1.Injectable)(),
88
+ tslib_1.__param(0, (0, di_1.Optional)()),
89
+ tslib_1.__metadata("design:paramtypes", [Object])
90
+ ], PtyServiceManagerRemote);
91
+ exports.PtyServiceManagerRemote = PtyServiceManagerRemote;
92
+ //# sourceMappingURL=pty.manager.remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.manager.remote.js","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /// <reference types="node" />
2
+ import { ListenOptions } from 'net';
3
+ import * as pty from 'node-pty';
4
+ import { IPtyProxyRPCService } from '../common';
5
+ /**
6
+ * NOTE: 这里面的Session通常是短Session 也就是OpenSumi里面Session `${clientId}|${sessionId}` 的sessionId部分
7
+ * 因为ClientId在每次刷新都会变化,而SessionId可以被持久化保存,后续按照之前的SessionID连接Pty的时候就可以做到Terminal Resume
8
+ *
9
+ * PtyServiceProxy是真实运行的托管着NodePty的代理
10
+ */
11
+ export declare class PtyServiceProxy implements IPtyProxyRPCService {
12
+ private ptyInstanceMap;
13
+ private ptyDataCacheMap;
14
+ private ptySessionMap;
15
+ private ptyDisposableMap;
16
+ private readonly debugLogger;
17
+ private $callback;
18
+ constructor(callback: (callId: number, ...args: any[]) => void);
19
+ private checkProcess;
20
+ $checkSession(sessionId: string): boolean;
21
+ $spawn(file: string, args: string[] | string, options: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions, longSessionId?: string): any;
22
+ $onData(callId: number, pid: number): void;
23
+ $onExit(callId: number, pid: number): void;
24
+ $on(callId: number, pid: number, event: any): void;
25
+ $resize(pid: number, columns: number, rows: number): void;
26
+ $write(pid: number, data: string): void;
27
+ $kill(pid: number, signal?: string): void;
28
+ $pause(pid: number): void;
29
+ $resume(pid: number): void;
30
+ $getProcess(pid: number): string;
31
+ }
32
+ export declare class PtyServiceProxyRPCProvider {
33
+ private ptyServiceProxy;
34
+ private readonly ptyServiceCenter;
35
+ private readonly debugLogger;
36
+ private serverListenOptions;
37
+ private server;
38
+ constructor(listenOptions?: ListenOptions);
39
+ initServer(): void;
40
+ private createSocket;
41
+ private bindProcessHandler;
42
+ private setProxyConnection;
43
+ get $ptyServiceProxy(): PtyServiceProxy;
44
+ }
45
+ //# sourceMappingURL=pty.proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.proxy.d.ts","sourceRoot":"","sources":["../../src/node/pty.proxy.ts"],"names":[],"mappings":";AAEA,OAAY,EAAE,aAAa,EAAU,MAAM,KAAK,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAMhC,OAAO,EACL,mBAAmB,EAKpB,MAAM,WAAW,CAAC;AAgCnB;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IAEzD,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,eAAe,CAAoC;IAE3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAwC;IAEhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,SAAS,CAA+C;gBAEpD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,OAAA,KAAK,IAAI;IAKvD,OAAO,CAAC,YAAY;IASpB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IASzC,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EACvB,OAAO,EAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,sBAAsB,EACzD,aAAa,CAAC,EAAE,MAAM,GACrB,GAAG;IA6DN,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAwB1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAOlD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMvC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAIjC;AAGD,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,GAAE,aAAuD;IAY3E,UAAU;IAKjB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAQ1B,IAAW,gBAAgB,IAAI,eAAe,CAE7C;CACF"}