@opensumi/ide-terminal-next 2.14.4 → 2.15.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 (119) hide show
  1. package/lib/browser/component/terminal.view.d.ts.map +1 -1
  2. package/lib/browser/component/terminal.view.js +7 -1
  3. package/lib/browser/component/terminal.view.js.map +1 -1
  4. package/lib/browser/component/terminal.widget.d.ts.map +1 -1
  5. package/lib/browser/component/terminal.widget.js +12 -3
  6. package/lib/browser/component/terminal.widget.js.map +1 -1
  7. package/lib/browser/contribution/index.d.ts +1 -0
  8. package/lib/browser/contribution/index.d.ts.map +1 -1
  9. package/lib/browser/contribution/index.js +1 -0
  10. package/lib/browser/contribution/index.js.map +1 -1
  11. package/lib/browser/contribution/terminal.preference.d.ts +6 -0
  12. package/lib/browser/contribution/terminal.preference.d.ts.map +1 -0
  13. package/lib/browser/contribution/terminal.preference.js +17 -0
  14. package/lib/browser/contribution/terminal.preference.js.map +1 -0
  15. package/lib/browser/index.d.ts.map +1 -1
  16. package/lib/browser/index.js +21 -1
  17. package/lib/browser/index.js.map +1 -1
  18. package/lib/browser/terminal.api.d.ts.map +1 -1
  19. package/lib/browser/terminal.api.js +11 -10
  20. package/lib/browser/terminal.api.js.map +1 -1
  21. package/lib/browser/terminal.client.d.ts +33 -16
  22. package/lib/browser/terminal.client.d.ts.map +1 -1
  23. package/lib/browser/terminal.client.js +248 -113
  24. package/lib/browser/terminal.client.js.map +1 -1
  25. package/lib/browser/terminal.contribution.d.ts +7 -0
  26. package/lib/browser/terminal.contribution.d.ts.map +1 -0
  27. package/lib/browser/terminal.contribution.js +32 -0
  28. package/lib/browser/terminal.contribution.js.map +1 -0
  29. package/lib/browser/terminal.controller.d.ts +14 -3
  30. package/lib/browser/terminal.controller.d.ts.map +1 -1
  31. package/lib/browser/terminal.controller.js +44 -9
  32. package/lib/browser/terminal.controller.js.map +1 -1
  33. package/lib/browser/terminal.internal.service.d.ts +6 -2
  34. package/lib/browser/terminal.internal.service.d.ts.map +1 -1
  35. package/lib/browser/terminal.internal.service.js +27 -0
  36. package/lib/browser/terminal.internal.service.js.map +1 -1
  37. package/lib/browser/terminal.profile.d.ts +28 -0
  38. package/lib/browser/terminal.profile.d.ts.map +1 -0
  39. package/lib/browser/terminal.profile.internal.d.ts +16 -0
  40. package/lib/browser/terminal.profile.internal.d.ts.map +1 -0
  41. package/lib/browser/terminal.profile.internal.js +106 -0
  42. package/lib/browser/terminal.profile.internal.js.map +1 -0
  43. package/lib/browser/terminal.profile.js +146 -0
  44. package/lib/browser/terminal.profile.js.map +1 -0
  45. package/lib/browser/terminal.service.d.ts +7 -4
  46. package/lib/browser/terminal.service.d.ts.map +1 -1
  47. package/lib/browser/terminal.service.js +35 -19
  48. package/lib/browser/terminal.service.js.map +1 -1
  49. package/lib/browser/xterm.d.ts +24 -0
  50. package/lib/browser/xterm.d.ts.map +1 -0
  51. package/lib/browser/xterm.js +55 -0
  52. package/lib/browser/xterm.js.map +1 -0
  53. package/lib/common/client.d.ts +4 -2
  54. package/lib/common/client.d.ts.map +1 -1
  55. package/lib/common/client.js +2 -1
  56. package/lib/common/client.js.map +1 -1
  57. package/lib/common/controller.d.ts +17 -1
  58. package/lib/common/controller.d.ts.map +1 -1
  59. package/lib/common/controller.js.map +1 -1
  60. package/lib/common/error.d.ts +8 -0
  61. package/lib/common/error.d.ts.map +1 -1
  62. package/lib/common/error.js +5 -1
  63. package/lib/common/error.js.map +1 -1
  64. package/lib/common/extension.d.ts +28 -2
  65. package/lib/common/extension.d.ts.map +1 -1
  66. package/lib/common/extension.js +6 -1
  67. package/lib/common/extension.js.map +1 -1
  68. package/lib/common/index.d.ts +2 -0
  69. package/lib/common/index.d.ts.map +1 -1
  70. package/lib/common/index.js +2 -0
  71. package/lib/common/index.js.map +1 -1
  72. package/lib/common/preference.d.ts +94 -0
  73. package/lib/common/preference.d.ts.map +1 -1
  74. package/lib/common/preference.js +140 -1
  75. package/lib/common/preference.js.map +1 -1
  76. package/lib/common/process.d.ts +8 -0
  77. package/lib/common/process.d.ts.map +1 -0
  78. package/lib/common/process.js +3 -0
  79. package/lib/common/process.js.map +1 -0
  80. package/lib/common/profile.d.ts +101 -0
  81. package/lib/common/profile.d.ts.map +1 -0
  82. package/lib/common/profile.js +28 -0
  83. package/lib/common/profile.js.map +1 -0
  84. package/lib/common/pty.d.ts +142 -24
  85. package/lib/common/pty.d.ts.map +1 -1
  86. package/lib/common/pty.js +2 -2
  87. package/lib/common/pty.js.map +1 -1
  88. package/lib/common/service.d.ts +11 -6
  89. package/lib/common/service.d.ts.map +1 -1
  90. package/lib/common/service.js.map +1 -1
  91. package/lib/node/index.d.ts.map +1 -1
  92. package/lib/node/index.js +6 -1
  93. package/lib/node/index.js.map +1 -1
  94. package/lib/node/pty.d.ts +29 -15
  95. package/lib/node/pty.d.ts.map +1 -1
  96. package/lib/node/pty.js +117 -41
  97. package/lib/node/pty.js.map +1 -1
  98. package/lib/node/shell.d.ts +11 -1
  99. package/lib/node/shell.d.ts.map +1 -1
  100. package/lib/node/shell.js +89 -9
  101. package/lib/node/shell.js.map +1 -1
  102. package/lib/node/{terminal-process.service.d.ts → terminal.process.service.d.ts} +1 -1
  103. package/lib/node/terminal.process.service.d.ts.map +1 -0
  104. package/lib/node/{terminal-process.service.js → terminal.process.service.js} +1 -1
  105. package/lib/node/{terminal-process.service.js.map → terminal.process.service.js.map} +1 -1
  106. package/lib/node/terminal.profile.service.d.ts +19 -0
  107. package/lib/node/terminal.profile.service.d.ts.map +1 -0
  108. package/lib/node/terminal.profile.service.js +229 -0
  109. package/lib/node/terminal.profile.service.js.map +1 -0
  110. package/lib/node/terminal.service.client.d.ts +8 -1
  111. package/lib/node/terminal.service.client.d.ts.map +1 -1
  112. package/lib/node/terminal.service.client.js +40 -13
  113. package/lib/node/terminal.service.client.js.map +1 -1
  114. package/lib/node/terminal.service.d.ts +7 -7
  115. package/lib/node/terminal.service.d.ts.map +1 -1
  116. package/lib/node/terminal.service.js +41 -23
  117. package/lib/node/terminal.service.js.map +1 -1
  118. package/package.json +15 -15
  119. package/lib/node/terminal-process.service.d.ts.map +0 -1
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ /* ---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TerminalProfileServiceNode = exports.ITerminalProfileServiceNode = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const platform_1 = require("@opensumi/ide-core-common/lib/platform");
10
+ const di_1 = require("@opensumi/di");
11
+ const shell_1 = require("./shell");
12
+ const ide_core_node_1 = require("@opensumi/ide-core-node");
13
+ const fs_extra_1 = require("fs-extra");
14
+ const path = (0, tslib_1.__importStar)(require("@opensumi/ide-core-common/lib/path"));
15
+ function applyConfigProfilesToMap(configProfiles, profilesMap) {
16
+ var _a;
17
+ if (!configProfiles) {
18
+ return;
19
+ }
20
+ for (const [profileName, value] of Object.entries(configProfiles)) {
21
+ if (value === null || (!('path' in value) && !('source' in value))) {
22
+ profilesMap.delete(profileName);
23
+ }
24
+ else {
25
+ value.icon = value.icon || ((_a = profilesMap.get(profileName)) === null || _a === void 0 ? void 0 : _a.icon);
26
+ profilesMap.set(profileName, value);
27
+ }
28
+ }
29
+ }
30
+ exports.ITerminalProfileServiceNode = Symbol('ITerminalProfileServiceNode');
31
+ let TerminalProfileServiceNode = class TerminalProfileServiceNode {
32
+ constructor() { }
33
+ detectAvailableProfiles(options) {
34
+ if (options.preference) {
35
+ // 说明用户有设置 perference 中的 profile
36
+ // 目前 Node 端无法获取 browser 层的配置,所以需要前端传进来
37
+ this._perferenceProfiles = options.preference;
38
+ }
39
+ if (platform_1.isWindows) {
40
+ return this._detectWindowsProfiles(options);
41
+ }
42
+ return this._detectUnixProfiles(options);
43
+ }
44
+ _getPreferenceProfiles() {
45
+ return this._perferenceProfiles || {};
46
+ }
47
+ async _detectWindowsProfiles(options) {
48
+ const defaultProfileName = 'windowsDefault';
49
+ const configProfiles = this._getPreferenceProfiles();
50
+ const { autoDetect } = options;
51
+ // Determine the correct System32 path. We want to point to Sysnative
52
+ // when the 32-bit version of VS Code is running on a 64-bit machine.
53
+ // The reason for this is because PowerShell's important PSReadline
54
+ // module doesn't work if this is not the case. See #27915.
55
+ const is32ProcessOn64Windows = process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
56
+ const system32Path = `${process.env['windir']}\\${is32ProcessOn64Windows ? 'Sysnative' : 'System32'}`;
57
+ await this.initializeWindowsProfiles();
58
+ const detectedProfiles = new Map();
59
+ // Add auto detected profiles
60
+ if (autoDetect) {
61
+ detectedProfiles.set('PowerShell', {
62
+ source: "PowerShell" /* Pwsh */,
63
+ // icon: Codicon.terminalPowershell,
64
+ isAutoDetected: true,
65
+ });
66
+ detectedProfiles.set('Windows PowerShell', {
67
+ path: `${system32Path}\\WindowsPowerShell\\v1.0\\powershell.exe`,
68
+ // icon: Codicon.terminalPowershell,
69
+ isAutoDetected: true,
70
+ });
71
+ detectedProfiles.set('Git Bash', {
72
+ source: "Git Bash" /* GitBash */,
73
+ isAutoDetected: true,
74
+ });
75
+ detectedProfiles.set('Cygwin', {
76
+ path: [
77
+ `${process.env['HOMEDRIVE']}\\cygwin64\\bin\\bash.exe`,
78
+ `${process.env['HOMEDRIVE']}\\cygwin\\bin\\bash.exe`,
79
+ ],
80
+ args: ['--login'],
81
+ isAutoDetected: true,
82
+ });
83
+ detectedProfiles.set('Command Prompt', {
84
+ path: `${system32Path}\\cmd.exe`,
85
+ // icon: Codicon.terminalCmd,
86
+ isAutoDetected: true,
87
+ });
88
+ }
89
+ applyConfigProfilesToMap(configProfiles, detectedProfiles);
90
+ const resultProfiles = this.transformToTerminalProfiles(detectedProfiles.entries(), defaultProfileName);
91
+ // TODO: 暂不引入 WSL 的相关逻辑
92
+ // const useWslProfiles = ;
93
+ // let useWSLexe = false;
94
+ // if (getWindowsBuildNumber() >= 16299) {
95
+ // useWSLexe = true;
96
+ // }
97
+ // if (autoDetect || (!autoDetect && useWslProfiles)) {
98
+ // const wslPath = `${system32Path}\\${useWSLexe ? 'wsl' : 'bash'}.exe`;
99
+ // }
100
+ return resultProfiles;
101
+ }
102
+ async initializeWindowsProfiles() {
103
+ if (this.profileSources) {
104
+ return;
105
+ }
106
+ this.profileSources = new Map();
107
+ this.profileSources.set('Git Bash', {
108
+ profileName: 'Git Bash',
109
+ paths: shell_1.WINDOWS_GIT_BASH_PATHS,
110
+ args: ['--login'],
111
+ });
112
+ this.profileSources.set('PowerShell', {
113
+ profileName: 'PowerShell',
114
+ paths: await (0, shell_1.getPowershellPaths)(),
115
+ // icon: ThemeIcon.asThemeIcon(Codicon.terminalPowershell),
116
+ });
117
+ }
118
+ async _detectUnixProfiles(options) {
119
+ const defaultProfileName = 'unixDefault';
120
+ const { autoDetect } = options;
121
+ const configProfiles = this._getPreferenceProfiles();
122
+ const detectedProfiles = new Map();
123
+ if (autoDetect) {
124
+ const contents = (await (0, fs_extra_1.readFile)('/etc/shells')).toString();
125
+ const profiles = contents.split('\n').filter((e) => e.trim().indexOf('#') !== 0 && e.trim().length > 0);
126
+ const counts = new Map();
127
+ for (const profile of profiles) {
128
+ let profileName = path.basename(profile);
129
+ let count = counts.get(profileName) || 0;
130
+ count++;
131
+ if (count > 1) {
132
+ profileName = `${profileName} (${count})`;
133
+ }
134
+ counts.set(profileName, count);
135
+ detectedProfiles.set(profileName, { path: profile, isAutoDetected: true });
136
+ }
137
+ }
138
+ applyConfigProfilesToMap(configProfiles, detectedProfiles);
139
+ return await this.transformToTerminalProfiles(detectedProfiles.entries(), defaultProfileName);
140
+ }
141
+ async validateProfilePaths(profileName, defaultProfileName, potentialPaths, args, env, overrideName, isAutoDetected) {
142
+ if (potentialPaths.length === 0) {
143
+ return Promise.resolve(undefined);
144
+ }
145
+ const potentialPath = potentialPaths.shift();
146
+ if (potentialPath === '') {
147
+ // 如果是空的,则跳过
148
+ return this.validateProfilePaths(profileName, defaultProfileName, potentialPaths, args, env, overrideName, isAutoDetected);
149
+ }
150
+ const profile = {
151
+ profileName,
152
+ path: potentialPath,
153
+ args,
154
+ env,
155
+ overrideName,
156
+ isAutoDetected,
157
+ isDefault: profileName === defaultProfileName,
158
+ };
159
+ // For non-absolute paths, check if it's available on $PATH
160
+ if (path.basename(potentialPath) === potentialPath) {
161
+ // The executable isn't an absolute path, try find it on the PATH
162
+ const executable = await (0, shell_1.findExecutable)(potentialPath, undefined, undefined, undefined);
163
+ if (!executable) {
164
+ return this.validateProfilePaths(profileName, defaultProfileName, potentialPaths, args, env, overrideName, isAutoDetected);
165
+ }
166
+ return profile;
167
+ }
168
+ const result = await (0, shell_1.exists)(potentialPath);
169
+ if (result) {
170
+ return profile;
171
+ }
172
+ return this.validateProfilePaths(profileName, defaultProfileName, potentialPaths, args, env, overrideName, isAutoDetected);
173
+ }
174
+ async transformToTerminalProfiles(entries, defaultProfileName) {
175
+ var _a;
176
+ const resultProfiles = [];
177
+ for (const [profileName, profile] of entries) {
178
+ if (profile === null) {
179
+ continue;
180
+ }
181
+ let originalPaths = [];
182
+ let args;
183
+ let icon;
184
+ if ('source' in profile) {
185
+ const source = (_a = this.profileSources) === null || _a === void 0 ? void 0 : _a.get(profile.source);
186
+ if (!source) {
187
+ continue;
188
+ }
189
+ originalPaths = source.paths;
190
+ // if there are configured args, override the default ones
191
+ args = profile.args || source.args;
192
+ if (profile.icon) {
193
+ // icon = validateIcon(profile.icon);
194
+ }
195
+ else if (source.icon) {
196
+ icon = source.icon;
197
+ }
198
+ }
199
+ else {
200
+ originalPaths = Array.isArray(profile.path) ? profile.path : [profile.path];
201
+ args = platform_1.isWindows ? profile.args : Array.isArray(profile.args) ? profile.args : undefined;
202
+ // icon = validateIcon(profile.icon);
203
+ }
204
+ // TODO: use (await this.variableResolver.resolveArray(originalPaths))
205
+ const paths = originalPaths.slice();
206
+ const validatedProfile = await this.validateProfilePaths(profileName, defaultProfileName, paths, args, {});
207
+ if (validatedProfile) {
208
+ validatedProfile.isAutoDetected = profile.isAutoDetected;
209
+ validatedProfile.icon = icon;
210
+ validatedProfile.color = profile.color;
211
+ resultProfiles.push(validatedProfile);
212
+ }
213
+ else {
214
+ this.logger.log('profile not validated', profileName, originalPaths);
215
+ }
216
+ }
217
+ return resultProfiles;
218
+ }
219
+ };
220
+ (0, tslib_1.__decorate)([
221
+ (0, di_1.Autowired)(ide_core_node_1.INodeLogger),
222
+ (0, tslib_1.__metadata)("design:type", Object)
223
+ ], TerminalProfileServiceNode.prototype, "logger", void 0);
224
+ TerminalProfileServiceNode = (0, tslib_1.__decorate)([
225
+ (0, di_1.Injectable)(),
226
+ (0, tslib_1.__metadata)("design:paramtypes", [])
227
+ ], TerminalProfileServiceNode);
228
+ exports.TerminalProfileServiceNode = TerminalProfileServiceNode;
229
+ //# sourceMappingURL=terminal.profile.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.profile.service.js","sourceRoot":"","sources":["../../src/node/terminal.profile.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { RPCService } from '@opensumi/ide-connection';
2
2
  import { IShellLaunchConfig, ITerminalServiceClient, INodePtyInstance, ITerminalError } from '../common';
3
3
  import { WindowsShellType } from '../common/shell';
4
+ import { IDetectProfileOptions, ITerminalProfile } from '../common/profile';
5
+ import { OperatingSystem } from '@opensumi/ide-core-common/lib/platform';
4
6
  /**
5
7
  * this RPC target: NodePtyTerminalService
6
8
  */
@@ -18,6 +20,7 @@ interface IRPCTerminalService {
18
20
  export declare class TerminalServiceClientImpl extends RPCService<IRPCTerminalService> implements ITerminalServiceClient {
19
21
  private terminalMap;
20
22
  private terminalService;
23
+ private terminalProfileService;
21
24
  private clientId;
22
25
  private logger;
23
26
  setConnectionClientId(clientId: string): void;
@@ -27,7 +30,7 @@ export declare class TerminalServiceClientImpl extends RPCService<IRPCTerminalSe
27
30
  signal?: number;
28
31
  } | number, signal?: number): void;
29
32
  ensureTerminal(terminalIdArr: string[]): boolean;
30
- create2(id: string, options: IShellLaunchConfig): Promise<INodePtyInstance | undefined>;
33
+ create2(id: string, cols: number, rows: number, launchConfig: IShellLaunchConfig): Promise<INodePtyInstance | undefined>;
31
34
  $resolveWindowsShellPath(type: WindowsShellType): Promise<string | undefined>;
32
35
  $resolveUnixShellPath(type: string): Promise<string | undefined>;
33
36
  $resolveShellPath(paths: string[]): Promise<string | undefined>;
@@ -36,11 +39,15 @@ export declare class TerminalServiceClientImpl extends RPCService<IRPCTerminalSe
36
39
  path: string;
37
40
  type: WindowsShellType;
38
41
  }>;
42
+ detectAvailableProfiles(options: IDetectProfileOptions): Promise<ITerminalProfile[]>;
43
+ getCodePlatformKey(): Promise<'osx' | 'windows' | 'linux'>;
44
+ getDefaultSystemShell(os: OperatingSystem): Promise<string>;
39
45
  onMessage(id: string, msg: string): void;
40
46
  resize(id: string, rows: number, cols: number): void;
41
47
  disposeById(id: string): void;
42
48
  getProcessId(id: string): number;
43
49
  getShellName(id: string): string;
50
+ getOs(): OperatingSystem;
44
51
  dispose(): void;
45
52
  }
46
53
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.service.client.d.ts","sourceRoot":"","sources":["../../src/node/terminal.service.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,kBAAkB,EAElB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACf,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,gBAAgB,EAAmC,MAAM,iBAAiB,CAAC;AAGpF;;GAEG;AACH,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU,CAAC,mBAAmB,CAAE,YAAW,sBAAsB;IAC9G,OAAO,CAAC,WAAW,CAAgC;IAGnD,OAAO,CAAC,eAAe,CAAuB;IAE9C,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,MAAM,CAAc;IAE5B,qBAAqB,CAAC,QAAQ,EAAE,MAAM;IAKtC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQtC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS3G,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO;IAI1C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAgBvF,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7E,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKhE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,8BAA8B,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAc7D,iCAAiC,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAsB5F,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUxC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI7C,WAAW,CAAC,EAAE,EAAE,MAAM;IAItB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIhC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIhC,OAAO;CAGR"}
1
+ {"version":3,"file":"terminal.service.client.d.ts","sourceRoot":"","sources":["../../src/node/terminal.service.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,kBAAkB,EAElB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACf,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,gBAAgB,EAAmC,MAAM,iBAAiB,CAAC;AAGpF,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAM,MAAM,wCAAwC,CAAC;AAE7E;;GAEG;AACH,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU,CAAC,mBAAmB,CAAE,YAAW,sBAAsB;IAC9G,OAAO,CAAC,WAAW,CAAuC;IAG1D,OAAO,CAAC,eAAe,CAAuB;IAG9C,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,MAAM,CAAc;IAE5B,qBAAqB,CAAC,QAAQ,EAAE,MAAM;IAKtC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQtC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS3G,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO;IAI1C,OAAO,CACX,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAsBlC,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7E,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKhE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,8BAA8B,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAc7D,iCAAiC,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAsBtF,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIpF,kBAAkB,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;IAK1D,qBAAqB,CAAC,EAAE,EAAE,eAAe;IAI/C,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUxC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI7C,WAAW,CAAC,EAAE,EAAE,MAAM;IAItB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIhC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIhC,KAAK,IAAI,eAAe;IAIxB,OAAO;CAGR"}
@@ -8,6 +8,8 @@ const common_1 = require("../common");
8
8
  const ide_core_node_1 = require("@opensumi/ide-core-node");
9
9
  const shell_1 = require("../common/shell");
10
10
  const shell_2 = require("./shell");
11
+ const terminal_profile_service_1 = require("./terminal.profile.service");
12
+ const platform_1 = require("@opensumi/ide-core-common/lib/platform");
11
13
  /**
12
14
  * 标准的后端服务,供前端调用
13
15
  * 目前每个窗口会对应一个 TerminalServiceClientImpl 实例
@@ -41,19 +43,27 @@ let TerminalServiceClientImpl = class TerminalServiceClientImpl extends ide_conn
41
43
  ensureTerminal(terminalIdArr) {
42
44
  return this.terminalService.ensureClientTerminal(this.clientId, terminalIdArr);
43
45
  }
44
- async create2(id, options) {
45
- const pty = await this.terminalService.create2(id, options);
46
- if (pty) {
47
- this.terminalService.setClient(this.clientId, this);
48
- this.logger.log(`client ${id} create ${pty} with options ${JSON.stringify(options)}`);
49
- this.terminalMap.set(id, pty);
50
- return {
51
- id,
52
- pid: pty.pid,
53
- proess: pty.process,
54
- name: pty.parsedName,
55
- shellPath: pty.launchConfig.shellPath,
56
- };
46
+ async create2(id, cols, rows, launchConfig) {
47
+ try {
48
+ const pty = await this.terminalService.create2(id, cols, rows, launchConfig);
49
+ if (pty) {
50
+ this.terminalService.setClient(this.clientId, this);
51
+ this.logger.log(`client ${id} create ${pty} with options `, launchConfig);
52
+ this.terminalMap.set(id, pty);
53
+ return {
54
+ id,
55
+ pid: pty.pid,
56
+ proess: pty.process,
57
+ name: pty.parsedName,
58
+ shellPath: pty.launchConfig.executable,
59
+ };
60
+ }
61
+ else {
62
+ this.logger.log(`cannot create pty instance ${id} `, launchConfig);
63
+ }
64
+ }
65
+ catch (error) {
66
+ this.logger.error(`create pty instance error ${id}`, launchConfig, error);
57
67
  }
58
68
  }
59
69
  async $resolveWindowsShellPath(type) {
@@ -110,6 +120,16 @@ let TerminalServiceClientImpl = class TerminalServiceClientImpl extends ide_conn
110
120
  type: shell_1.WindowsShellType.cmd,
111
121
  };
112
122
  }
123
+ async detectAvailableProfiles(options) {
124
+ return await this.terminalProfileService.detectAvailableProfiles(options);
125
+ }
126
+ async getCodePlatformKey() {
127
+ // follow vscode
128
+ return this.getOs() === platform_1.OperatingSystem.Macintosh ? 'osx' : platform_1.OS === platform_1.OperatingSystem.Windows ? 'windows' : 'linux';
129
+ }
130
+ async getDefaultSystemShell(os) {
131
+ return await (0, shell_2.getSystemShell)(os);
132
+ }
113
133
  onMessage(id, msg) {
114
134
  const { data, params, method } = JSON.parse(msg);
115
135
  if (method === 'resize') {
@@ -131,6 +151,9 @@ let TerminalServiceClientImpl = class TerminalServiceClientImpl extends ide_conn
131
151
  getShellName(id) {
132
152
  return this.terminalService.getShellName(id);
133
153
  }
154
+ getOs() {
155
+ return platform_1.OS;
156
+ }
134
157
  dispose() {
135
158
  this.terminalService.closeClient(this.clientId);
136
159
  }
@@ -139,6 +162,10 @@ let TerminalServiceClientImpl = class TerminalServiceClientImpl extends ide_conn
139
162
  (0, di_1.Autowired)(common_1.ITerminalNodeService),
140
163
  (0, tslib_1.__metadata)("design:type", Object)
141
164
  ], TerminalServiceClientImpl.prototype, "terminalService", void 0);
165
+ (0, tslib_1.__decorate)([
166
+ (0, di_1.Autowired)(terminal_profile_service_1.ITerminalProfileServiceNode),
167
+ (0, tslib_1.__metadata)("design:type", terminal_profile_service_1.TerminalProfileServiceNode)
168
+ ], TerminalServiceClientImpl.prototype, "terminalProfileService", void 0);
142
169
  (0, tslib_1.__decorate)([
143
170
  (0, di_1.Autowired)(ide_core_node_1.INodeLogger),
144
171
  (0, tslib_1.__metadata)("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.service.client.js","sourceRoot":"","sources":["../../src/node/terminal.service.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.service.client.js","sourceRoot":"","sources":["../../src/node/terminal.service.client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { IPty } from '../common/pty';
2
- import { IShellLaunchConfig } from '../common/pty';
1
+ import { IPtyProcess, IShellLaunchConfig } from '../common/pty';
3
2
  import { ITerminalNodeService, ITerminalServiceClient } from '../common';
4
3
  /**
5
4
  * terminal service 的具体实现
@@ -7,11 +6,11 @@ import { ITerminalNodeService, ITerminalServiceClient } from '../common';
7
6
  */
8
7
  export declare class TerminalServiceImpl implements ITerminalNodeService {
9
8
  static TerminalPtyCloseThreshold: number;
10
- private terminalMap;
9
+ private terminalProcessMap;
11
10
  private clientTerminalMap;
12
11
  private clientTerminalThresholdMap;
13
- private ptyService;
14
12
  private serviceClientMap;
13
+ private injector;
15
14
  private logger;
16
15
  private appConfig;
17
16
  private batchedPtyDataMap;
@@ -21,9 +20,10 @@ export declare class TerminalServiceImpl implements ITerminalNodeService {
21
20
  closeClient(clientId: string): void;
22
21
  disposeClient(clientId: string): void;
23
22
  private flushPtyData;
24
- create2(id: string, options: IShellLaunchConfig): Promise<IPty | undefined>;
25
- onMessage(id: any, msg: any): void;
26
- resize(id: any, rows: any, cols: any): void;
23
+ create2(id: string, cols: IShellLaunchConfig): Promise<IPtyProcess | undefined>;
24
+ create2(id: string, cols: number, rows: number, options: IShellLaunchConfig): Promise<IPtyProcess | undefined>;
25
+ onMessage(id: string, msg: string): void;
26
+ resize(id: string, rows: number, cols: number): void;
27
27
  getShellName(id: string): string;
28
28
  getProcessId(id: string): number;
29
29
  disposeById(id: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.service.d.ts","sourceRoot":"","sources":["../../src/node/terminal.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AASzE;;;GAGG;AACH,qBACa,mBAAoB,YAAW,oBAAoB;IAC9D,MAAM,CAAC,yBAAyB,SAAa;IAE7C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,0BAA0B,CAA0C;IAG5E,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,gBAAgB,CAAkD;IAG1E,OAAO,CAAC,MAAM,CAAc;IAG5B,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,mBAAmB,CAA0C;IAE9D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;IAI1D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;IAS9D,WAAW,CAAC,QAAQ,EAAE,MAAM;IAc5B,aAAa,CAAC,QAAQ,EAAE,MAAM;IAYrC,OAAO,CAAC,YAAY;IASP,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;IA2ErD,SAAS,CAAC,EAAE,KAAA,EAAE,GAAG,KAAA;IASjB,MAAM,CAAC,EAAE,KAAA,EAAE,IAAI,KAAA,EAAE,IAAI,KAAA;IAS5B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAQhC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAShC,WAAW,CAAC,EAAE,EAAE,MAAM;IAStB,OAAO;IAMP,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"terminal.service.d.ts","sourceRoot":"","sources":["../../src/node/terminal.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAsB,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAS7F;;;GAGG;AACH,qBACa,mBAAoB,YAAW,oBAAoB;IAC9D,MAAM,CAAC,yBAAyB,SAAa;IAE7C,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,iBAAiB,CAAmD;IAC5E,OAAO,CAAC,0BAA0B,CAA0C;IAE5E,OAAO,CAAC,gBAAgB,CAAkD;IAG1E,OAAO,CAAC,QAAQ,CAAW;IAG3B,OAAO,CAAC,MAAM,CAAc;IAG5B,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,mBAAmB,CAA0C;IAE9D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;IAI1D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;IAS9D,WAAW,CAAC,QAAQ,EAAE,MAAM;IAa5B,aAAa,CAAC,QAAQ,EAAE,MAAM;IAYrC,OAAO,CAAC,YAAY;IASP,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/E,OAAO,CAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAsG5B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASjC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IASpD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAQhC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAQhC,WAAW,CAAC,EAAE,EAAE,MAAM;IAStB,OAAO;IAMP,OAAO,CAAC,WAAW;CAGpB"}
@@ -5,6 +5,7 @@ exports.TerminalServiceImpl = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const di_1 = require("@opensumi/di");
7
7
  const pty_1 = require("./pty");
8
+ const common_1 = require("../common");
8
9
  const ide_core_node_1 = require("@opensumi/ide-core-node");
9
10
  // ref: https://github.com/vercel/hyper/blob/4c90d7555c79fb6dc438fa9549f1d0ef7c7a5aa7/app/session.ts#L27-L32
10
11
  // 批处理字符最大长度
@@ -17,7 +18,7 @@ const BATCH_DURATION_MS = 16;
17
18
  */
18
19
  let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
19
20
  constructor() {
20
- this.terminalMap = new Map();
21
+ this.terminalProcessMap = new Map();
21
22
  this.clientTerminalMap = new Map();
22
23
  this.clientTerminalThresholdMap = new Map();
23
24
  this.serviceClientMap = new Map();
@@ -35,7 +36,6 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
35
36
  return this.clientTerminalMap.has(clientId);
36
37
  }
37
38
  closeClient(clientId) {
38
- // TODO: 实现关闭客户端,调用客户端的 closeClient 方法
39
39
  const closeTimer = global.setTimeout(() => {
40
40
  this.disposeClient(clientId);
41
41
  this.logger.debug(`删除 clientId ${clientId} 窗口的 pty 进程`);
@@ -46,9 +46,9 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
46
46
  disposeClient(clientId) {
47
47
  const terminalMap = this.clientTerminalMap.get(clientId);
48
48
  if (terminalMap) {
49
- terminalMap.forEach((pty, id) => {
50
- this.terminalMap.delete(id);
51
- pty.kill();
49
+ terminalMap.forEach((t, id) => {
50
+ this.terminalProcessMap.delete(id);
51
+ t.kill();
52
52
  });
53
53
  this.clientTerminalMap.delete(clientId);
54
54
  }
@@ -60,19 +60,30 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
60
60
  const serviceClient = this.serviceClientMap.get(clientId);
61
61
  serviceClient.clientMessage(sessionId, ptyData);
62
62
  }
63
- async create2(id, options) {
63
+ async create2(id, _cols, _rows, _launchConfig) {
64
64
  var _a;
65
65
  const clientId = id.split('|')[0];
66
- let terminal;
66
+ let ptyService;
67
+ let cols = _cols;
68
+ let rows = _rows;
69
+ let launchConfig = _launchConfig;
70
+ if (!(typeof cols === 'number')) {
71
+ launchConfig = cols;
72
+ cols = launchConfig.cols;
73
+ rows = launchConfig.rows;
74
+ if (launchConfig.shellPath) {
75
+ launchConfig.executable = launchConfig.shellPath;
76
+ }
77
+ }
67
78
  try {
68
- terminal = (await this.ptyService.create2(options));
69
- this.terminalMap.set(id, terminal);
79
+ ptyService = this.injector.get(pty_1.PtyService, [id, launchConfig, cols, rows]);
80
+ this.terminalProcessMap.set(id, ptyService);
70
81
  // ref: https://hyper.is/blog
71
82
  // 合并 pty 输出的数据,16ms 后发送给客户端,如
72
83
  // 果在 16ms 内没有收到新的数据,或短时间内数据
73
84
  // 超过 BATCH_MAX_SIZE 限定的长度,则立即发送缓
74
85
  // 存的数据,避免因为输出较多时阻塞 RPC 通信
75
- terminal.onData((chunk) => {
86
+ ptyService.onData((chunk) => {
76
87
  if (this.serviceClientMap.has(clientId)) {
77
88
  if (!this.batchedPtyDataMap.has(id)) {
78
89
  this.batchedPtyDataMap.set(id, '');
@@ -95,7 +106,7 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
95
106
  this.logger.warn(`terminal: pty ${clientId} on data not found`);
96
107
  }
97
108
  });
98
- terminal.onExit(({ exitCode, signal }) => {
109
+ ptyService.onExit(({ exitCode, signal }) => {
99
110
  this.logger.debug(`Terminal process exit (instanceId: ${id}) with code ${exitCode}`);
100
111
  if (this.serviceClientMap.has(clientId)) {
101
112
  const serviceClient = this.serviceClientMap.get(clientId);
@@ -108,23 +119,30 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
108
119
  this.logger.warn(`terminal: pty ${clientId} on data not found`);
109
120
  }
110
121
  });
122
+ const error = await ptyService.start();
123
+ if (error) {
124
+ this.logger.error(`Terminal process start error (instanceId: ${id})`, error);
125
+ throw error;
126
+ }
111
127
  if (!this.clientTerminalMap.has(clientId)) {
112
128
  this.clientTerminalMap.set(clientId, new Map());
113
129
  }
114
- (_a = this.clientTerminalMap.get(clientId)) === null || _a === void 0 ? void 0 : _a.set(id, terminal);
130
+ (_a = this.clientTerminalMap.get(clientId)) === null || _a === void 0 ? void 0 : _a.set(id, ptyService);
115
131
  }
116
132
  catch (error) {
117
- this.logger.error(`${id} create terminal error: ${error}, options: ${JSON.stringify(options)}`);
133
+ this.logger.error(`${id} create terminal error: ${JSON.stringify(error)}, options: ${JSON.stringify(launchConfig)}`);
118
134
  if (this.serviceClientMap.has(clientId)) {
119
135
  const serviceClient = this.serviceClientMap.get(clientId);
120
136
  serviceClient.closeClient(id, {
121
137
  id,
122
- message: error.message,
138
+ message: error === null || error === void 0 ? void 0 : error.message,
139
+ type: common_1.ETerminalErrorType.CREATE_FAIL,
123
140
  stopped: true,
141
+ launchConfig,
124
142
  });
125
143
  }
126
144
  }
127
- return terminal;
145
+ return ptyService === null || ptyService === void 0 ? void 0 : ptyService.pty;
128
146
  }
129
147
  onMessage(id, msg) {
130
148
  const terminal = this.getTerminal(id);
@@ -132,28 +150,28 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
132
150
  this.logger.warn(`terminal ${id} onMessage not found`, terminal);
133
151
  return;
134
152
  }
135
- terminal.write(msg);
153
+ terminal.onMessage(msg);
136
154
  }
137
155
  resize(id, rows, cols) {
138
156
  const terminal = this.getTerminal(id);
139
157
  if (!terminal) {
140
158
  return;
141
159
  }
142
- this.ptyService.resize(terminal, rows, cols);
160
+ terminal.resize(rows, cols);
143
161
  }
144
162
  getShellName(id) {
145
163
  const terminal = this.getTerminal(id);
146
164
  if (!terminal) {
147
165
  return 'invalid terminal';
148
166
  }
149
- return terminal.parsedName;
167
+ return terminal.getShellName();
150
168
  }
151
169
  getProcessId(id) {
152
170
  const terminal = this.getTerminal(id);
153
171
  if (!terminal) {
154
172
  return -1;
155
173
  }
156
- return terminal.pid;
174
+ return terminal.getPid();
157
175
  }
158
176
  disposeById(id) {
159
177
  const terminal = this.getTerminal(id);
@@ -168,14 +186,14 @@ let TerminalServiceImpl = TerminalServiceImpl_1 = class TerminalServiceImpl {
168
186
  });
169
187
  }
170
188
  getTerminal(id) {
171
- return this.terminalMap.get(id);
189
+ return this.terminalProcessMap.get(id);
172
190
  }
173
191
  };
174
192
  TerminalServiceImpl.TerminalPtyCloseThreshold = 10 * 1000;
175
193
  (0, tslib_1.__decorate)([
176
- (0, di_1.Autowired)(pty_1.IPtyService),
177
- (0, tslib_1.__metadata)("design:type", pty_1.PtyService)
178
- ], TerminalServiceImpl.prototype, "ptyService", void 0);
194
+ (0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
195
+ (0, tslib_1.__metadata)("design:type", di_1.Injector)
196
+ ], TerminalServiceImpl.prototype, "injector", void 0);
179
197
  (0, tslib_1.__decorate)([
180
198
  (0, di_1.Autowired)(ide_core_node_1.INodeLogger),
181
199
  (0, tslib_1.__metadata)("design:type", Object)