@opensumi/ide-terminal-next 2.13.9 → 2.14.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.
- package/lib/browser/component/terminal.view.d.ts.map +1 -1
- package/lib/browser/component/terminal.view.js +1 -1
- package/lib/browser/component/terminal.view.js.map +1 -1
- package/lib/browser/component/terminal.widget.d.ts.map +1 -1
- package/lib/browser/component/terminal.widget.js +2 -0
- package/lib/browser/component/terminal.widget.js.map +1 -1
- package/lib/browser/contribution/terminal.menu.d.ts.map +1 -1
- package/lib/browser/contribution/terminal.menu.js +18 -1
- package/lib/browser/contribution/terminal.menu.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +7 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/links/external-link-provider-adapter.d.ts +5 -2
- package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -1
- package/lib/browser/links/external-link-provider-adapter.js +24 -4
- package/lib/browser/links/external-link-provider-adapter.js.map +1 -1
- package/lib/browser/links/link-manager.d.ts +33 -4
- package/lib/browser/links/link-manager.d.ts.map +1 -1
- package/lib/browser/links/link-manager.js +82 -3
- package/lib/browser/links/link-manager.js.map +1 -1
- package/lib/browser/links/link.d.ts +8 -3
- package/lib/browser/links/link.d.ts.map +1 -1
- package/lib/browser/links/link.js +50 -5
- package/lib/browser/links/link.js.map +1 -1
- package/lib/browser/links/protocol-link-provider.d.ts +5 -2
- package/lib/browser/links/protocol-link-provider.d.ts.map +1 -1
- package/lib/browser/links/protocol-link-provider.js +24 -4
- package/lib/browser/links/protocol-link-provider.js.map +1 -1
- package/lib/browser/links/validated-local-link-provider.d.ts +5 -3
- package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -1
- package/lib/browser/links/validated-local-link-provider.js +24 -4
- package/lib/browser/links/validated-local-link-provider.js.map +1 -1
- package/lib/browser/terminal.addon.d.ts +1 -1
- package/lib/browser/terminal.addon.d.ts.map +1 -1
- package/lib/browser/terminal.addon.js +5 -5
- package/lib/browser/terminal.addon.js.map +1 -1
- package/lib/browser/terminal.client.d.ts +3 -1
- package/lib/browser/terminal.client.d.ts.map +1 -1
- package/lib/browser/terminal.client.js +29 -20
- package/lib/browser/terminal.client.js.map +1 -1
- package/lib/browser/terminal.controller.d.ts +4 -0
- package/lib/browser/terminal.controller.d.ts.map +1 -1
- package/lib/browser/terminal.controller.js +23 -0
- package/lib/browser/terminal.controller.js.map +1 -1
- package/lib/browser/terminal.hover.manager.d.ts +13 -0
- package/lib/browser/terminal.hover.manager.d.ts.map +1 -0
- package/lib/browser/terminal.hover.manager.js +83 -0
- package/lib/browser/terminal.hover.manager.js.map +1 -0
- package/lib/browser/terminal.internal.service.d.ts +21 -0
- package/lib/browser/terminal.internal.service.d.ts.map +1 -0
- package/lib/browser/terminal.internal.service.js +93 -0
- package/lib/browser/terminal.internal.service.js.map +1 -0
- package/lib/browser/terminal.service.d.ts +28 -24
- package/lib/browser/terminal.service.d.ts.map +1 -1
- package/lib/browser/terminal.service.js +137 -130
- package/lib/browser/terminal.service.js.map +1 -1
- package/lib/common/client.d.ts +2 -1
- package/lib/common/client.d.ts.map +1 -1
- package/lib/common/commands.d.ts +5 -0
- package/lib/common/commands.d.ts.map +1 -1
- package/lib/common/commands.js +7 -2
- package/lib/common/commands.js.map +1 -1
- package/lib/common/controller.d.ts +7 -0
- package/lib/common/controller.d.ts.map +1 -1
- package/lib/common/controller.js +2 -1
- package/lib/common/controller.js.map +1 -1
- package/lib/common/error.d.ts +1 -0
- package/lib/common/error.d.ts.map +1 -1
- package/lib/common/error.js +5 -1
- package/lib/common/error.js.map +1 -1
- package/lib/common/extension.d.ts +2 -0
- package/lib/common/extension.d.ts.map +1 -1
- package/lib/common/pty.d.ts +79 -22
- package/lib/common/pty.d.ts.map +1 -1
- package/lib/common/pty.js +2 -1
- package/lib/common/pty.js.map +1 -1
- package/lib/common/service.d.ts +1 -1
- package/lib/common/service.d.ts.map +1 -1
- package/lib/common/shell.d.ts +1 -0
- package/lib/common/shell.d.ts.map +1 -1
- package/lib/common/shell.js +2 -2
- package/lib/common/shell.js.map +1 -1
- package/lib/common/utils.d.ts +1 -1
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +3 -3
- package/lib/common/utils.js.map +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +5 -0
- package/lib/node/index.js.map +1 -1
- package/lib/node/pty.d.ts +13 -5
- package/lib/node/pty.d.ts.map +1 -1
- package/lib/node/pty.js +96 -13
- package/lib/node/pty.js.map +1 -1
- package/lib/node/shell.d.ts +8 -0
- package/lib/node/shell.d.ts.map +1 -1
- package/lib/node/shell.js +90 -1
- package/lib/node/shell.js.map +1 -1
- package/lib/node/terminal.service.client.d.ts +20 -7
- package/lib/node/terminal.service.client.d.ts.map +1 -1
- package/lib/node/terminal.service.client.js +56 -18
- package/lib/node/terminal.service.client.js.map +1 -1
- package/lib/node/terminal.service.d.ts +8 -3
- package/lib/node/terminal.service.d.ts.map +1 -1
- package/lib/node/terminal.service.js +80 -25
- package/lib/node/terminal.service.js.map +1 -1
- package/package.json +16 -16
package/lib/common/pty.d.ts
CHANGED
|
@@ -2,12 +2,19 @@ import type vscode from 'vscode';
|
|
|
2
2
|
import { Terminal as XTerm } from 'xterm';
|
|
3
3
|
import { Uri } from '@opensumi/ide-core-common';
|
|
4
4
|
import { WindowsShellType } from './shell';
|
|
5
|
+
import { IPty as INodePty } from 'node-pty';
|
|
6
|
+
import { OperatingSystem } from '@opensumi/ide-core-common/lib/platform';
|
|
7
|
+
import { ITerminalError } from './error';
|
|
8
|
+
export interface IPty extends INodePty {
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated 请使用 `IPty.launchConfig` 的 shellPath 字段
|
|
11
|
+
*/
|
|
12
|
+
bin: string;
|
|
13
|
+
launchConfig: IShellLaunchConfig;
|
|
14
|
+
parsedName: string;
|
|
15
|
+
}
|
|
5
16
|
export declare const ITerminalServicePath = "ITerminalServicePath";
|
|
6
17
|
export declare const ITerminalProcessPath = "ITerminalProcessPath";
|
|
7
|
-
export declare const ITerminalNodeService: unique symbol;
|
|
8
|
-
export declare const ITerminalProcessService: unique symbol;
|
|
9
|
-
export declare const ITerminalServiceClient: unique symbol;
|
|
10
|
-
export declare const IExternlTerminalService: unique symbol;
|
|
11
18
|
export interface Terminal {
|
|
12
19
|
readonly xterm: XTerm;
|
|
13
20
|
/**
|
|
@@ -123,48 +130,63 @@ export interface TerminalOptions {
|
|
|
123
130
|
args?: any;
|
|
124
131
|
beforeCreate?: (terminalId: string) => void;
|
|
125
132
|
}
|
|
133
|
+
export declare const ITerminalNodeService: unique symbol;
|
|
126
134
|
export interface ITerminalNodeService {
|
|
127
|
-
|
|
135
|
+
create2(id: string, options: IShellLaunchConfig): Promise<IPty | undefined>;
|
|
128
136
|
onMessage(id: string, msg: string): void;
|
|
129
137
|
resize(id: string, rows: number, cols: number): any;
|
|
130
138
|
getShellName(id: string): string;
|
|
131
139
|
getProcessId(id: string): number;
|
|
132
|
-
disposeById(id: string):
|
|
133
|
-
dispose():
|
|
134
|
-
setClient(clientId: string, client: ITerminalServiceClient):
|
|
135
|
-
closeClient(clientId: string):
|
|
140
|
+
disposeById(id: string): void;
|
|
141
|
+
dispose(): void;
|
|
142
|
+
setClient(clientId: string, client: ITerminalServiceClient): void;
|
|
143
|
+
closeClient(clientId: string): void;
|
|
136
144
|
ensureClientTerminal(clientId: string, terminalIdArr: string[]): boolean;
|
|
137
145
|
}
|
|
146
|
+
export declare const ITerminalProcessService: unique symbol;
|
|
138
147
|
export interface ITerminalProcessService {
|
|
139
148
|
getEnv(): Promise<{
|
|
140
149
|
[key in string]: string | undefined;
|
|
141
150
|
}>;
|
|
142
151
|
}
|
|
152
|
+
export interface INodePtyInstance {
|
|
153
|
+
id: string;
|
|
154
|
+
name: string;
|
|
155
|
+
pid: number;
|
|
156
|
+
proess: string;
|
|
157
|
+
shellPath?: string;
|
|
158
|
+
}
|
|
159
|
+
export declare const ITerminalServiceClient: unique symbol;
|
|
143
160
|
export interface ITerminalServiceClient {
|
|
144
|
-
|
|
145
|
-
pid: number;
|
|
146
|
-
name: string;
|
|
147
|
-
}> | {
|
|
148
|
-
pid: number;
|
|
149
|
-
name: string;
|
|
150
|
-
};
|
|
161
|
+
create2(id: string, launchConfig: IShellLaunchConfig): Promise<INodePtyInstance | undefined>;
|
|
151
162
|
onMessage(id: string, msg: string): void;
|
|
152
|
-
resize(id: string, rows: number, cols: number):
|
|
153
|
-
disposeById(id: string):
|
|
163
|
+
resize(id: string, rows: number, cols: number): void;
|
|
164
|
+
disposeById(id: string): void;
|
|
154
165
|
getProcessId(id: string): number;
|
|
155
|
-
clientMessage(id:
|
|
156
|
-
closeClient(
|
|
157
|
-
|
|
158
|
-
|
|
166
|
+
clientMessage(id: string, data: any): void;
|
|
167
|
+
closeClient(sessionId: string, data?: ITerminalError | {
|
|
168
|
+
code?: number;
|
|
169
|
+
signal?: number;
|
|
170
|
+
} | number, signal?: number): void;
|
|
171
|
+
setConnectionClientId(clientId: string): void;
|
|
172
|
+
dispose(): void;
|
|
159
173
|
getShellName(id: string): string;
|
|
160
174
|
ensureTerminal(terminalIdArr: string[]): boolean;
|
|
161
175
|
$resolveWindowsShellPath(type: WindowsShellType): Promise<string | undefined>;
|
|
176
|
+
$resolveUnixShellPath(type: string): Promise<string | undefined>;
|
|
177
|
+
$resolvePotentialUnixShellPath(): Promise<string | undefined>;
|
|
178
|
+
$resolvePotentialWindowsShellPath(): Promise<{
|
|
179
|
+
path: string;
|
|
180
|
+
type: WindowsShellType;
|
|
181
|
+
}>;
|
|
182
|
+
$resolveShellPath(paths: string[]): Promise<string | undefined>;
|
|
162
183
|
}
|
|
163
184
|
export interface ITerminalInfo {
|
|
164
185
|
id: string;
|
|
165
186
|
name: string;
|
|
166
187
|
isActive: boolean;
|
|
167
188
|
}
|
|
189
|
+
export declare const IExternlTerminalService: unique symbol;
|
|
168
190
|
/**
|
|
169
191
|
* 使用依赖注入的方式复写这个类型,
|
|
170
192
|
* 支持更多形式的 termial 实现。
|
|
@@ -209,4 +231,39 @@ export interface IExternlTerminalService {
|
|
|
209
231
|
*/
|
|
210
232
|
getProcessId(id: string): Promise<number>;
|
|
211
233
|
}
|
|
234
|
+
export interface IShellLaunchConfig {
|
|
235
|
+
shellPath?: string;
|
|
236
|
+
args?: string[];
|
|
237
|
+
os?: OperatingSystem;
|
|
238
|
+
/**
|
|
239
|
+
* Whether the terminal process environment should be exactly as provided in
|
|
240
|
+
* `TerminalOptions.env`. When this is false (default), the environment will be based on the
|
|
241
|
+
* window's environment and also apply configured platform settings like
|
|
242
|
+
* `terminal.integrated.windows.env` on top. When this is true, the complete environment
|
|
243
|
+
* must be provided as nothing will be inherited from the process or any configuration.
|
|
244
|
+
*/
|
|
245
|
+
strictEnv?: boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Name of the terminal to be set in environment ($TERM variable).
|
|
248
|
+
*/
|
|
249
|
+
name?: string;
|
|
250
|
+
/**
|
|
251
|
+
* Number of intial cols of the pty.
|
|
252
|
+
*/
|
|
253
|
+
cols: number;
|
|
254
|
+
/**
|
|
255
|
+
* Number of initial rows of the pty.
|
|
256
|
+
*/
|
|
257
|
+
rows: number;
|
|
258
|
+
/**
|
|
259
|
+
* Working directory to be set for the child program.
|
|
260
|
+
*/
|
|
261
|
+
cwd?: string | Uri;
|
|
262
|
+
/**
|
|
263
|
+
* Environment to be set for the child program.
|
|
264
|
+
*/
|
|
265
|
+
env?: {
|
|
266
|
+
[key: string]: string | null;
|
|
267
|
+
};
|
|
268
|
+
}
|
|
212
269
|
//# sourceMappingURL=pty.d.ts.map
|
package/lib/common/pty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/common/pty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/common/pty.ts"],"names":[],"mappings":"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"}
|
package/lib/common/pty.js
CHANGED
|
@@ -4,7 +4,8 @@ exports.IExternlTerminalService = exports.ITerminalServiceClient = exports.ITerm
|
|
|
4
4
|
exports.ITerminalServicePath = 'ITerminalServicePath';
|
|
5
5
|
exports.ITerminalProcessPath = 'ITerminalProcessPath';
|
|
6
6
|
exports.ITerminalNodeService = Symbol('ITerminalNodeService');
|
|
7
|
-
exports.ITerminalProcessService = Symbol('
|
|
7
|
+
exports.ITerminalProcessService = Symbol('ITerminalProcessService');
|
|
8
8
|
exports.ITerminalServiceClient = Symbol('ITerminalServiceClient');
|
|
9
|
+
// 搜了一下代码,在 OpenSumi 里已经没有地方引用了
|
|
9
10
|
exports.IExternlTerminalService = Symbol('IExternlTerminalService');
|
|
10
11
|
//# sourceMappingURL=pty.js.map
|
package/lib/common/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/common/pty.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/common/pty.ts"],"names":[],"mappings":";;;AAiBa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AA4I9C,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AActD,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAa5D,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAoCvE,+BAA+B;AAClB,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC"}
|
package/lib/common/service.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/common/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAC3D,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,IAAI,gBAAgB,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;;;;OAQG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,WAAW,CAAC;IAC/D;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/common/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAC3D,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,IAAI,gBAAgB,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;;;;OAQG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,WAAW,CAAC;IAC/D;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,WAAW,CAAC;IAC7D;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAC3E,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,iBAAiB,IAAI,MAAM,CAAC;IAC5B,UAAU,IAAI,gBAAgB,CAAC;IAC/B,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C"}
|
package/lib/common/shell.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/common/shell.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B;;;CAG3C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,KAAK,QAAQ;IACb,YAAY,eAAe;IAC3B,UAAU,aAAa;CACxB"}
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/common/shell.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B;;;CAG3C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,KAAK,QAAQ;IACb,YAAY,eAAe;IAC3B,UAAU,aAAa;CACxB;AAED,oBAAY,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC"}
|
package/lib/common/shell.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WindowsShellType = exports.WINDOWS_DEFAULT_SHELL_PATH_MAPS = void 0;
|
|
4
4
|
exports.WINDOWS_DEFAULT_SHELL_PATH_MAPS = {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
powershell: 'powershell.exe',
|
|
6
|
+
cmd: 'cmd.exe',
|
|
7
7
|
};
|
|
8
8
|
var WindowsShellType;
|
|
9
9
|
(function (WindowsShellType) {
|
package/lib/common/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/common/shell.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAAG;IAC7C,
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/common/shell.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAAG;IAC7C,UAAU,EAAE,gBAAgB;IAC5B,GAAG,EAAE,SAAS;CACf,CAAC;AAEF,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+BAAa,CAAA;IACb,6CAA2B,CAAA;IAC3B,yCAAuB,CAAA;AACzB,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B"}
|
package/lib/common/utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,cAAsC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,cAAuC,CAAC;AAEtE,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,cAAsC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,cAAuC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,cAAe,CAAC"}
|
package/lib/common/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateSessionId = exports.apiActionViewUuid = exports.userActionViewUuid = void 0;
|
|
4
4
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
5
5
|
let i = 0;
|
|
6
6
|
function count() {
|
|
@@ -10,6 +10,6 @@ const userActionViewUuid = () => `UI_View_${(0, ide_core_common_1.uuid)()}${coun
|
|
|
10
10
|
exports.userActionViewUuid = userActionViewUuid;
|
|
11
11
|
const apiActionViewUuid = () => `API_View_${(0, ide_core_common_1.uuid)()}${count()}`;
|
|
12
12
|
exports.apiActionViewUuid = apiActionViewUuid;
|
|
13
|
-
const
|
|
14
|
-
exports.
|
|
13
|
+
const generateSessionId = () => (0, ide_core_common_1.uuid)();
|
|
14
|
+
exports.generateSessionId = generateSessionId;
|
|
15
15
|
//# sourceMappingURL=utils.js.map
|
package/lib/common/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":";;;AAAA,+DAAiD;AAEjD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,SAAS,KAAK;IACZ,OAAO,CAAC,EAAE,CAAC;AACb,CAAC;AAEM,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,WAAW,IAAA,sBAAI,GAAE,GAAG,KAAK,EAAE,EAAE,CAAC;AAAzD,QAAA,kBAAkB,sBAAuC;AAE/D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,YAAY,IAAA,sBAAI,GAAE,GAAG,KAAK,EAAE,EAAE,CAAC;AAAzD,QAAA,iBAAiB,qBAAwC;AAE/D,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":";;;AAAA,+DAAiD;AAEjD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,SAAS,KAAK;IACZ,OAAO,CAAC,EAAE,CAAC;AACb,CAAC;AAEM,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,WAAW,IAAA,sBAAI,GAAE,GAAG,KAAK,EAAE,EAAE,CAAC;AAAzD,QAAA,kBAAkB,sBAAuC;AAE/D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,YAAY,IAAA,sBAAI,GAAE,GAAG,KAAK,EAAE,EAAE,CAAC;AAAzD,QAAA,iBAAiB,qBAAwC;AAE/D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAI,GAAE,CAAC;AAAjC,QAAA,iBAAiB,qBAAgB"}
|
package/lib/node/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAarD,qBACa,qBAAsB,SAAQ,UAAU;IACnD,SAAS,EAAE,QAAQ,EAAE,CAiBnB;IAEF,YAAY;;;QASV;CACH"}
|
package/lib/node/index.js
CHANGED
|
@@ -8,6 +8,7 @@ const terminal_service_1 = require("./terminal.service");
|
|
|
8
8
|
const terminal_service_client_1 = require("./terminal.service.client");
|
|
9
9
|
const common_1 = require("../common");
|
|
10
10
|
const terminal_process_service_1 = require("./terminal-process.service");
|
|
11
|
+
const pty_1 = require("./pty");
|
|
11
12
|
let TerminalNodePtyModule = class TerminalNodePtyModule extends ide_core_node_1.NodeModule {
|
|
12
13
|
constructor() {
|
|
13
14
|
super(...arguments);
|
|
@@ -24,6 +25,10 @@ let TerminalNodePtyModule = class TerminalNodePtyModule extends ide_core_node_1.
|
|
|
24
25
|
token: common_1.ITerminalProcessService,
|
|
25
26
|
useClass: terminal_process_service_1.TerminalProcessServiceImpl,
|
|
26
27
|
},
|
|
28
|
+
{
|
|
29
|
+
token: pty_1.IPtyService,
|
|
30
|
+
useClass: pty_1.PtyService,
|
|
31
|
+
},
|
|
27
32
|
];
|
|
28
33
|
this.backServices = [
|
|
29
34
|
{
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,2DAAqD;AACrD,yDAAyD;AACzD,uEAAsE;AACtE,sCAMmB;AACnB,yEAAwE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,2DAAqD;AACrD,yDAAyD;AACzD,uEAAsE;AACtE,sCAMmB;AACnB,yEAAwE;AACxE,+BAAgD;AAGhD,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;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;AA9BY,qBAAqB;IADjC,IAAA,eAAU,GAAE;GACA,qBAAqB,CA8BjC;AA9BY,sDAAqB"}
|
package/lib/node/pty.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import * as pty from 'node-pty';
|
|
2
|
-
import {
|
|
2
|
+
import { IShellLaunchConfig } from '../common';
|
|
3
|
+
import { IPty } from '../common/pty';
|
|
4
|
+
import { IProcessEnvironment } from '@opensumi/ide-core-common/lib/platform';
|
|
3
5
|
export { pty };
|
|
4
|
-
export
|
|
5
|
-
bin: string;
|
|
6
|
-
}
|
|
6
|
+
export declare const IPtyService: unique symbol;
|
|
7
7
|
export declare class PtyService {
|
|
8
|
-
|
|
8
|
+
private readonly logger;
|
|
9
|
+
_validateCwd(cwd: string): Promise<{
|
|
10
|
+
message: string;
|
|
11
|
+
} | undefined>;
|
|
12
|
+
_validateExecutable(options: IShellLaunchConfig, ptyEnv: IProcessEnvironment, cwd: string): Promise<{
|
|
13
|
+
message: string;
|
|
14
|
+
} | undefined>;
|
|
15
|
+
create2(options: IShellLaunchConfig): Promise<IPty>;
|
|
16
|
+
parseCwd(options: IShellLaunchConfig): string;
|
|
9
17
|
resize(termninal: pty.IPty, rows: number, cols: number): boolean;
|
|
10
18
|
}
|
|
11
19
|
//# sourceMappingURL=pty.d.ts.map
|
package/lib/node/pty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAIhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,CAAC;AAEf,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,qBACa,UAAU;IAErB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAE/B,YAAY,CAAC,GAAG,EAAE,MAAM;;;IAoBxB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM;;;IA+BzF,OAAO,CAAC,OAAO,EAAE,kBAAkB;IAyDzC,QAAQ,CAAC,OAAO,EAAE,kBAAkB;IAOpC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CASvD"}
|
package/lib/node/pty.js
CHANGED
|
@@ -1,17 +1,76 @@
|
|
|
1
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
|
+
*--------------------------------------------------------------------------------------------*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PtyService = exports.pty = void 0;
|
|
7
|
+
exports.PtyService = exports.IPtyService = exports.pty = void 0;
|
|
4
8
|
const tslib_1 = require("tslib");
|
|
5
|
-
|
|
9
|
+
// Some code copied and modified from https://github.com/microsoft/vscode/blob/1.63.0/src/vs/platform/terminal/node/terminalProcess.ts
|
|
6
10
|
const pty = (0, tslib_1.__importStar)(require("node-pty"));
|
|
7
11
|
exports.pty = pty;
|
|
8
12
|
const osLocale = (0, tslib_1.__importStar)(require("os-locale"));
|
|
13
|
+
const os_1 = (0, tslib_1.__importDefault)(require("os"));
|
|
9
14
|
const lodash_omit_1 = (0, tslib_1.__importDefault)(require("lodash.omit"));
|
|
15
|
+
const shell_1 = require("./shell");
|
|
10
16
|
const shell_path_1 = require("@opensumi/ide-core-node/lib/bootstrap/shell-path");
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
const ide_core_node_1 = require("@opensumi/ide-core-node");
|
|
18
|
+
const di_1 = require("@opensumi/di");
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const path = (0, tslib_1.__importStar)(require("@opensumi/ide-core-common/lib/path"));
|
|
21
|
+
exports.IPtyService = Symbol('IPtyService');
|
|
22
|
+
let PtyService = class PtyService {
|
|
23
|
+
async _validateCwd(cwd) {
|
|
24
|
+
if (cwd) {
|
|
25
|
+
try {
|
|
26
|
+
const result = await fs_1.promises.stat(cwd);
|
|
27
|
+
if (!result.isDirectory()) {
|
|
28
|
+
return {
|
|
29
|
+
message: `Starting directory (cwd) "${cwd}" is not a directory`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if ((err === null || err === void 0 ? void 0 : err.code) === 'ENOENT') {
|
|
35
|
+
return {
|
|
36
|
+
message: `Starting directory (cwd) "${cwd}" does not exist`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
async _validateExecutable(options, ptyEnv, cwd) {
|
|
44
|
+
if (!options.shellPath) {
|
|
45
|
+
return {
|
|
46
|
+
message: 'IShellLaunchConfig.shellPath not set',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const result = await fs_1.promises.stat(options.shellPath);
|
|
51
|
+
if (!result.isFile() && !result.isSymbolicLink()) {
|
|
52
|
+
return {
|
|
53
|
+
message: `Path to shell executable "${options.shellPath}" is not a file or a symlink`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if ((err === null || err === void 0 ? void 0 : err.code) === 'ENOENT') {
|
|
59
|
+
// The executable isn't an absolute path, try find it on the PATH or CWD
|
|
60
|
+
const envPaths = options.env && options.env.PATH ? options.env.PATH.split(path.delimiter) : undefined;
|
|
61
|
+
const executable = await (0, shell_1.findExecutable)(options.shellPath, cwd, envPaths, ptyEnv);
|
|
62
|
+
if (!executable) {
|
|
63
|
+
return {
|
|
64
|
+
message: `Path to shell executable "${options.shellPath}" does not exist`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Set the shellPath explicitly here so that node-pty doesn't need to search the
|
|
68
|
+
// $PATH too.
|
|
69
|
+
options.shellPath = executable;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async create2(options) {
|
|
15
74
|
const locale = osLocale.sync();
|
|
16
75
|
let ptyEnv;
|
|
17
76
|
if (options.strictEnv) {
|
|
@@ -38,16 +97,33 @@ class PtyService {
|
|
|
38
97
|
PATH: await (0, shell_path_1.getShellPath)(),
|
|
39
98
|
}, options.env);
|
|
40
99
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
100
|
+
const cwd = this.parseCwd(options);
|
|
101
|
+
const results = await Promise.all([this._validateCwd(cwd), this._validateExecutable(options, ptyEnv, cwd)]);
|
|
102
|
+
const firstError = results.find((r) => r !== undefined);
|
|
103
|
+
if (firstError) {
|
|
104
|
+
this.logger.error(`validate shell launch config failed: ${firstError.message}`);
|
|
105
|
+
throw new Error(firstError.message);
|
|
106
|
+
}
|
|
107
|
+
// above code will validate shellPath and throw if it doesn't exist
|
|
108
|
+
const ptyProcess = pty.spawn(options.shellPath, options.args || [], {
|
|
109
|
+
name: options.name || 'xterm-256color',
|
|
110
|
+
cols: options.cols || 100,
|
|
111
|
+
rows: options.rows || 30,
|
|
112
|
+
cwd,
|
|
46
113
|
env: ptyEnv,
|
|
47
114
|
});
|
|
48
|
-
ptyProcess.bin =
|
|
115
|
+
ptyProcess.bin = options.shellPath;
|
|
116
|
+
ptyProcess.launchConfig = options;
|
|
117
|
+
const match = options.shellPath.match(/[\w|.]+$/);
|
|
118
|
+
ptyProcess.parsedName = match ? match[0] : 'sh';
|
|
49
119
|
return ptyProcess;
|
|
50
120
|
}
|
|
121
|
+
parseCwd(options) {
|
|
122
|
+
if (options.cwd) {
|
|
123
|
+
return typeof options.cwd === 'string' ? options.cwd : options.cwd.fsPath;
|
|
124
|
+
}
|
|
125
|
+
return os_1.default.homedir();
|
|
126
|
+
}
|
|
51
127
|
resize(termninal, rows, cols) {
|
|
52
128
|
try {
|
|
53
129
|
termninal.resize(cols, rows);
|
|
@@ -57,6 +133,13 @@ class PtyService {
|
|
|
57
133
|
}
|
|
58
134
|
return true;
|
|
59
135
|
}
|
|
60
|
-
}
|
|
136
|
+
};
|
|
137
|
+
(0, tslib_1.__decorate)([
|
|
138
|
+
(0, di_1.Autowired)(ide_core_node_1.INodeLogger),
|
|
139
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
140
|
+
], PtyService.prototype, "logger", void 0);
|
|
141
|
+
PtyService = (0, tslib_1.__decorate)([
|
|
142
|
+
(0, di_1.Injectable)()
|
|
143
|
+
], PtyService);
|
|
61
144
|
exports.PtyService = PtyService;
|
|
62
145
|
//# sourceMappingURL=pty.js.map
|
package/lib/node/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/node/pty.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;AAEhG,sIAAsI;AAEtI,2DAAgC;AAavB,kBAAG;AAZZ,iEAAsC;AACtC,yDAAoB;AACpB,2EAA+B;AAG/B,mCAAyC;AACzC,iFAAgF;AAChF,2DAAsD;AACtD,qCAAqD;AACrD,2BAA8B;AAC9B,sFAA2D;AAI9C,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAGjD,IAAa,UAAU,GAAvB,MAAa,UAAU;IAIrB,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,GAAG,EAAE;YACP,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,aAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;oBACzB,OAAO;wBACL,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;qBAChE,CAAC;iBACH;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE;oBAC1B,OAAO;wBACL,OAAO,EAAE,6BAA6B,GAAG,kBAAkB;qBAC5D,CAAC;iBACH;aACF;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,OAA2B,EAAE,MAA2B,EAAE,GAAW;QAC7F,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO;gBACL,OAAO,EAAE,sCAAsC;aAChD,CAAC;SACH;QACD,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,aAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;gBAChD,OAAO;oBACL,OAAO,EAAE,6BAA6B,OAAO,CAAC,SAAS,8BAA8B;iBACtF,CAAC;aACH;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE;gBAC1B,wEAAwE;gBACxE,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvF,MAAM,UAAU,GAAG,MAAM,IAAA,sBAAc,EAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClF,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO;wBACL,OAAO,EAAE,6BAA6B,OAAO,CAAC,SAAS,kBAAkB;qBAC1E,CAAC;iBACH;gBACD,gFAAgF;gBAChF,aAAa;gBACb,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;aAChC;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,MAAiC,CAAC;QAEtC,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,MAAM,GAAG,OAAO,CAAC,GAAgC,CAAC;SACnD;aAAM;YACL,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,EAAE,EACF,IAAA,qBAAI,EAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,YAAY;gBACZ,sBAAsB;gBACtB,eAAe;gBACf,eAAe;gBACf,uBAAuB;gBACvB,mBAAmB;gBACnB,sBAAsB;aACvB,CAAC,EACF;gBACE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ;gBAC3C,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ;gBACzC;;;;;mBAKG;gBACH,IAAI,EAAE,MAAM,IAAA,yBAAY,GAAE;aAC3B,EACD,OAAO,CAAC,GAAG,CACiB,CAAC;SAChC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5G,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACxD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,mEAAmE;QAEnE,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAmB,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;YAC5E,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,gBAAgB;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,GAAG;YACH,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;QACF,UAAmB,CAAC,GAAG,GAAG,OAAO,CAAC,SAAmB,CAAC;QACtD,UAAmB,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5C,MAAM,KAAK,GAAI,OAAO,CAAC,SAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7D,UAAmB,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,OAAO,UAAkB,CAAC;IAC5B,CAAC;IACD,QAAQ,CAAC,OAA2B;QAClC,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;SAC3E;QACD,OAAO,YAAE,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,SAAmB,EAAE,IAAY,EAAE,IAAY;QACpD,IAAI;YACF,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA9HC;IADC,IAAA,cAAS,EAAC,2BAAW,CAAC;;0CACc;AAF1B,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAgItB;AAhIY,gCAAU"}
|
package/lib/node/shell.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { IProcessEnvironment } from '@opensumi/ide-core-common/lib/platform';
|
|
1
2
|
export declare const WINDOWS_GIT_BASH_PATHS: string[];
|
|
3
|
+
export declare const exists: (p: string) => Promise<string | undefined>;
|
|
4
|
+
export declare function findShellExecutableAsync(candidate: string[]): Promise<string | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated use findShellExecutableAsync
|
|
7
|
+
*/
|
|
2
8
|
export declare function findShellExecutable(candidate: string[]): string | undefined;
|
|
9
|
+
export declare function getCaseInsensitive(target: Record<string, any>, key: string): any;
|
|
10
|
+
export declare function findExecutable(command: string, cwd?: string, paths?: string[], env?: IProcessEnvironment): Promise<string | undefined>;
|
|
3
11
|
//# sourceMappingURL=shell.d.ts.map
|
package/lib/node/shell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/node/shell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/node/shell.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAQ7E,eAAO,MAAM,sBAAsB,UAQlC,CAAC;AAEF,eAAO,MAAM,MAAM,MAAa,MAAM,gCAOrC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM/F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAW3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAIhF;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,GAAG,GAAE,mBAAwD,GAC5D,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmD7B"}
|
package/lib/node/shell.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
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
|
+
*--------------------------------------------------------------------------------------------*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findShellExecutable = exports.WINDOWS_GIT_BASH_PATHS = void 0;
|
|
7
|
+
exports.findExecutable = exports.getCaseInsensitive = exports.findShellExecutable = exports.findShellExecutableAsync = exports.exists = exports.WINDOWS_GIT_BASH_PATHS = void 0;
|
|
4
8
|
const tslib_1 = require("tslib");
|
|
9
|
+
// Some code copied and modified from https://github.com/microsoft/vscode/blob/1.63.0/src/vs/platform/terminal/node/terminalEnvironment.ts
|
|
5
10
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
11
|
+
const path = (0, tslib_1.__importStar)(require("@opensumi/ide-core-common/lib/path"));
|
|
12
|
+
const ide_core_node_1 = require("@opensumi/ide-core-node");
|
|
6
13
|
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
14
|
+
// TODO: 用户装在 D 盘的不就识别不对了
|
|
15
|
+
// 要增加一些查找方法,此处需要参考 V 老师的进行改进
|
|
7
16
|
exports.WINDOWS_GIT_BASH_PATHS = [
|
|
8
17
|
`${process.env['ProgramW6432']}\\Git\\bin\\bash.exe`,
|
|
9
18
|
`${process.env['ProgramW6432']}\\Git\\usr\\bin\\bash.exe`,
|
|
@@ -13,6 +22,27 @@ exports.WINDOWS_GIT_BASH_PATHS = [
|
|
|
13
22
|
`${process.env['UserProfile']}\\scoop\\apps\\git-with-openssh\\current\\bin\\bash.exe`,
|
|
14
23
|
`${process.env['AllUsersProfile']}\\scoop\\apps\\git-with-openssh\\current\\bin\\bash.exe`,
|
|
15
24
|
];
|
|
25
|
+
const exists = async (p) => {
|
|
26
|
+
try {
|
|
27
|
+
await fs_1.default.promises.access((0, ide_core_common_1.normalize)(p));
|
|
28
|
+
return p;
|
|
29
|
+
}
|
|
30
|
+
catch (_a) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.exists = exists;
|
|
35
|
+
async function findShellExecutableAsync(candidate) {
|
|
36
|
+
if (candidate.length === 0) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
// return the first exists one
|
|
40
|
+
return Promise.all(candidate.map((v) => findExecutable(v))).then((v) => v.find(Boolean));
|
|
41
|
+
}
|
|
42
|
+
exports.findShellExecutableAsync = findShellExecutableAsync;
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated use findShellExecutableAsync
|
|
45
|
+
*/
|
|
16
46
|
function findShellExecutable(candidate) {
|
|
17
47
|
if (candidate.length === 0) {
|
|
18
48
|
return undefined;
|
|
@@ -25,4 +55,63 @@ function findShellExecutable(candidate) {
|
|
|
25
55
|
}
|
|
26
56
|
}
|
|
27
57
|
exports.findShellExecutable = findShellExecutable;
|
|
58
|
+
function getCaseInsensitive(target, key) {
|
|
59
|
+
const lowercaseKey = key.toLowerCase();
|
|
60
|
+
const equivalentKey = Object.keys(target).find((k) => k.toLowerCase() === lowercaseKey);
|
|
61
|
+
return equivalentKey ? target[equivalentKey] : target[key];
|
|
62
|
+
}
|
|
63
|
+
exports.getCaseInsensitive = getCaseInsensitive;
|
|
64
|
+
async function findExecutable(command, cwd, paths, env = process.env) {
|
|
65
|
+
// If we have an absolute path then we take it.
|
|
66
|
+
if (path.isAbsolute(command)) {
|
|
67
|
+
return (await (0, exports.exists)(command)) ? command : undefined;
|
|
68
|
+
}
|
|
69
|
+
if (cwd === undefined) {
|
|
70
|
+
cwd = process.cwd();
|
|
71
|
+
}
|
|
72
|
+
const dir = path.dirname(command);
|
|
73
|
+
if (dir !== '.') {
|
|
74
|
+
// We have a directory and the directory is relative (see above). Make the path absolute
|
|
75
|
+
// to the current working directory.
|
|
76
|
+
const fullPath = path.join(cwd, command);
|
|
77
|
+
return (await (0, exports.exists)(fullPath)) ? fullPath : undefined;
|
|
78
|
+
}
|
|
79
|
+
const envPath = getCaseInsensitive(env, 'PATH');
|
|
80
|
+
if (paths === undefined && typeof envPath === 'string') {
|
|
81
|
+
paths = envPath.split(path.delimiter);
|
|
82
|
+
}
|
|
83
|
+
// No PATH environment. Make path absolute to the cwd.
|
|
84
|
+
if (paths === undefined || paths.length === 0) {
|
|
85
|
+
const fullPath = path.join(cwd, command);
|
|
86
|
+
return (await (0, exports.exists)(fullPath)) ? fullPath : undefined;
|
|
87
|
+
}
|
|
88
|
+
// We have a simple file name. We get the path variable from the env
|
|
89
|
+
// and try to find the executable on the path.
|
|
90
|
+
for (let pathEntry of paths) {
|
|
91
|
+
// The path entry is absolute.
|
|
92
|
+
let fullPath;
|
|
93
|
+
if (path.isAbsolute(pathEntry)) {
|
|
94
|
+
fullPath = path.join(pathEntry, command);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
fullPath = path.join(cwd, pathEntry, command);
|
|
98
|
+
}
|
|
99
|
+
if (await (0, exports.exists)(fullPath)) {
|
|
100
|
+
return fullPath;
|
|
101
|
+
}
|
|
102
|
+
if (ide_core_node_1.isWindows) {
|
|
103
|
+
let withExtension = fullPath + '.com';
|
|
104
|
+
if (await (0, exports.exists)(withExtension)) {
|
|
105
|
+
return withExtension;
|
|
106
|
+
}
|
|
107
|
+
withExtension = fullPath + '.exe';
|
|
108
|
+
if (await (0, exports.exists)(withExtension)) {
|
|
109
|
+
return withExtension;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const fullPath = path.join(cwd, command);
|
|
114
|
+
return (await (0, exports.exists)(fullPath)) ? fullPath : undefined;
|
|
115
|
+
}
|
|
116
|
+
exports.findExecutable = findExecutable;
|
|
28
117
|
//# sourceMappingURL=shell.js.map
|