@opensumi/ide-task 2.12.1-next-079c1930

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 (65) hide show
  1. package/lib/browser/index.d.ts +6 -0
  2. package/lib/browser/index.d.ts.map +1 -0
  3. package/lib/browser/index.js +41 -0
  4. package/lib/browser/index.js.map +1 -0
  5. package/lib/browser/parser.d.ts +316 -0
  6. package/lib/browser/parser.d.ts.map +1 -0
  7. package/lib/browser/parser.js +481 -0
  8. package/lib/browser/parser.js.map +1 -0
  9. package/lib/browser/problem-collector.d.ts +27 -0
  10. package/lib/browser/problem-collector.d.ts.map +1 -0
  11. package/lib/browser/problem-collector.js +61 -0
  12. package/lib/browser/problem-collector.js.map +1 -0
  13. package/lib/browser/problem-line-matcher.d.ts +92 -0
  14. package/lib/browser/problem-line-matcher.d.ts.map +1 -0
  15. package/lib/browser/problem-line-matcher.js +378 -0
  16. package/lib/browser/problem-line-matcher.js.map +1 -0
  17. package/lib/browser/task-config.d.ts +385 -0
  18. package/lib/browser/task-config.d.ts.map +1 -0
  19. package/lib/browser/task-config.js +1427 -0
  20. package/lib/browser/task-config.js.map +1 -0
  21. package/lib/browser/task-preferences.contribution.d.ts +6 -0
  22. package/lib/browser/task-preferences.contribution.d.ts.map +1 -0
  23. package/lib/browser/task-preferences.contribution.js +17 -0
  24. package/lib/browser/task-preferences.contribution.js.map +1 -0
  25. package/lib/browser/task-preferences.d.ts +3 -0
  26. package/lib/browser/task-preferences.d.ts.map +1 -0
  27. package/lib/browser/task-preferences.js +15 -0
  28. package/lib/browser/task-preferences.js.map +1 -0
  29. package/lib/browser/task-preferences.provider.d.ts +6 -0
  30. package/lib/browser/task-preferences.provider.d.ts.map +1 -0
  31. package/lib/browser/task-preferences.provider.js +29 -0
  32. package/lib/browser/task-preferences.provider.js.map +1 -0
  33. package/lib/browser/task.contribution.d.ts +8 -0
  34. package/lib/browser/task.contribution.d.ts.map +1 -0
  35. package/lib/browser/task.contribution.js +35 -0
  36. package/lib/browser/task.contribution.js.map +1 -0
  37. package/lib/browser/task.schema.d.ts +4 -0
  38. package/lib/browser/task.schema.d.ts.map +1 -0
  39. package/lib/browser/task.schema.js +294 -0
  40. package/lib/browser/task.schema.js.map +1 -0
  41. package/lib/browser/task.service.d.ts +43 -0
  42. package/lib/browser/task.service.d.ts.map +1 -0
  43. package/lib/browser/task.service.js +354 -0
  44. package/lib/browser/task.service.js.map +1 -0
  45. package/lib/browser/terminal-task-system.d.ts +80 -0
  46. package/lib/browser/terminal-task-system.d.ts.map +1 -0
  47. package/lib/browser/terminal-task-system.js +391 -0
  48. package/lib/browser/terminal-task-system.js.map +1 -0
  49. package/lib/common/index.d.ts +130 -0
  50. package/lib/common/index.d.ts.map +1 -0
  51. package/lib/common/index.js +7 -0
  52. package/lib/common/index.js.map +1 -0
  53. package/lib/common/task.d.ts +572 -0
  54. package/lib/common/task.d.ts.map +1 -0
  55. package/lib/common/task.js +523 -0
  56. package/lib/common/task.js.map +1 -0
  57. package/lib/index.d.ts +3 -0
  58. package/lib/index.d.ts.map +1 -0
  59. package/lib/index.js +6 -0
  60. package/lib/index.js.map +1 -0
  61. package/lib/node/index.d.ts +6 -0
  62. package/lib/node/index.d.ts.map +1 -0
  63. package/lib/node/index.js +17 -0
  64. package/lib/node/index.js.map +1 -0
  65. package/package.json +33 -0
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalTaskSystem = exports.TerminalTaskExecutor = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
7
+ const task_1 = require("../common/task");
8
+ const common_1 = require("@opensumi/ide-terminal-next/lib/common");
9
+ const ide_variable_1 = require("@opensumi/ide-variable");
10
+ const problem_collector_1 = require("./problem-collector");
11
+ const path_1 = require("@opensumi/ide-core-common/lib/path");
12
+ var TaskStatus;
13
+ (function (TaskStatus) {
14
+ TaskStatus[TaskStatus["PROCESS_INIT"] = 0] = "PROCESS_INIT";
15
+ TaskStatus[TaskStatus["PROCESS_READY"] = 1] = "PROCESS_READY";
16
+ TaskStatus[TaskStatus["PROCESS_RUNNING"] = 2] = "PROCESS_RUNNING";
17
+ TaskStatus[TaskStatus["PROCESS_EXITED"] = 3] = "PROCESS_EXITED";
18
+ })(TaskStatus || (TaskStatus = {}));
19
+ let TerminalTaskExecutor = class TerminalTaskExecutor extends ide_core_common_1.Disposable {
20
+ constructor(terminalOptions, collector, executorId) {
21
+ super();
22
+ this.terminalOptions = terminalOptions;
23
+ this.collector = collector;
24
+ this.executorId = executorId;
25
+ this.exitDefer = new ide_core_common_1.Deferred();
26
+ this._onDidTerminalCreated = new ide_core_common_1.Emitter();
27
+ this._onDidTaskProcessExit = new ide_core_common_1.Emitter();
28
+ this._onDidTerminalWidgetRemove = new ide_core_common_1.Emitter();
29
+ this.onDidTerminalCreated = this._onDidTerminalCreated.event;
30
+ this.onDidTerminalWidgetRemove = this._onDidTerminalWidgetRemove.event;
31
+ this.onDidTaskProcessExit = this._onDidTaskProcessExit.event;
32
+ this.processReady = new ide_core_common_1.Deferred();
33
+ this.processExited = false;
34
+ this.disposableCollection = new ide_core_common_1.DisposableCollection();
35
+ this.taskStatus = TaskStatus.PROCESS_INIT;
36
+ this.addDispose(this.terminalView.onWidgetDisposed((e) => {
37
+ if (this.terminalClient && e.id === this.terminalClient.id) {
38
+ this._onDidTerminalWidgetRemove.fire();
39
+ }
40
+ }));
41
+ }
42
+ terminate() {
43
+ return new Promise((resolve) => {
44
+ if (this.terminalClient) {
45
+ this.terminalClient.dispose();
46
+ if (this.processExited) {
47
+ // 如果在调 terminate 之前进程已经退出,直接删掉 terminalWidget 即可
48
+ this.terminalView.removeWidget(this.terminalClient.id);
49
+ resolve({ success: true });
50
+ }
51
+ else {
52
+ this.terminalService.onExit((e) => {
53
+ var _a;
54
+ if (e.sessionId === ((_a = this.terminalClient) === null || _a === void 0 ? void 0 : _a.id)) {
55
+ this.terminalView.removeWidget(this.terminalClient.id);
56
+ resolve({ success: true });
57
+ }
58
+ });
59
+ }
60
+ }
61
+ else {
62
+ resolve({ success: true });
63
+ }
64
+ });
65
+ }
66
+ onTaskExit(code) {
67
+ const { term, id } = this.terminalClient;
68
+ term.setOption('disableStdin', true);
69
+ term.writeln((0, ide_core_common_1.formatLocalize)('terminal.integrated.exitedWithCode', code));
70
+ term.writeln(`\r\n\x1b[1m${(0, ide_core_common_1.formatLocalize)('reuseTerminal')}\x1b[0m`);
71
+ this._onDidTaskProcessExit.fire(code);
72
+ this.disposableCollection.push(term.onKey(() => {
73
+ this.terminalView.removeWidget(id);
74
+ }));
75
+ }
76
+ createTerminal(reuse) {
77
+ if (reuse && this.terminalClient) {
78
+ this.terminalClient.updateOptions(this.terminalOptions);
79
+ this.terminalClient.reset();
80
+ }
81
+ else {
82
+ this.terminalClient = this.terminalController.createClientWithWidget(Object.assign(Object.assign({}, this.terminalOptions), { closeWhenExited: false, beforeCreate: (terminalId) => {
83
+ this._onDidTerminalCreated.fire(terminalId);
84
+ } }));
85
+ }
86
+ this.terminalController.showTerminalPanel();
87
+ this.addDispose(this.terminalClient.onOutput((e) => {
88
+ this.collector.processLine((0, ide_core_common_1.removeAnsiEscapeCodes)(e.data.toString()));
89
+ }));
90
+ this.disposableCollection.push(this.terminalClient.onExit(async (e) => {
91
+ var _a;
92
+ if (e.id === ((_a = this.terminalClient) === null || _a === void 0 ? void 0 : _a.id)) {
93
+ this.onTaskExit(e.code);
94
+ this.processExited = true;
95
+ this.taskStatus = TaskStatus.PROCESS_EXITED;
96
+ this.exitDefer.resolve({ exitCode: e.code });
97
+ }
98
+ }));
99
+ this.disposableCollection.push(this.terminalService.onExit(async (e) => {
100
+ var _a;
101
+ if (e.sessionId === ((_a = this.terminalClient) === null || _a === void 0 ? void 0 : _a.id)) {
102
+ await this.processReady.promise;
103
+ this.onTaskExit(e.code);
104
+ this.processExited = true;
105
+ this.taskStatus = TaskStatus.PROCESS_EXITED;
106
+ this.exitDefer.resolve({ exitCode: e.code });
107
+ }
108
+ }));
109
+ }
110
+ async execute(task, reuse) {
111
+ var _a, _b, _c, _d, _e;
112
+ this.taskStatus = TaskStatus.PROCESS_READY;
113
+ this.createTerminal(reuse);
114
+ (_a = this.terminalClient) === null || _a === void 0 ? void 0 : _a.term.writeln(`\x1b[1m> Executing task: ${task._label} <\x1b[0m\n`);
115
+ const { shellArgs } = this.terminalOptions;
116
+ // extensionTerminal 由插件自身接管,不需要执行和输出 Command
117
+ if (!this.terminalOptions.isExtensionTerminal) {
118
+ (_b = this.terminalClient) === null || _b === void 0 ? void 0 : _b.term.writeln(`\x1b[1m> Command: ${typeof shellArgs === 'string' ? shellArgs : shellArgs[1]} <\x1b[0m\n`);
119
+ }
120
+ await ((_c = this.terminalClient) === null || _c === void 0 ? void 0 : _c.attached.promise);
121
+ this.taskStatus = TaskStatus.PROCESS_RUNNING;
122
+ this.pid = await ((_d = this.terminalClient) === null || _d === void 0 ? void 0 : _d.pid);
123
+ this.processReady.resolve();
124
+ this.terminalView.selectWidget(this.terminalClient.id);
125
+ (_e = this.terminalClient) === null || _e === void 0 ? void 0 : _e.term.write('\n\x1b[G');
126
+ return this.exitDefer.promise;
127
+ }
128
+ get processId() {
129
+ return this.pid;
130
+ }
131
+ get terminalId() {
132
+ return this.terminalClient && this.terminalClient.id;
133
+ }
134
+ get widgetId() {
135
+ return this.terminalClient && this.terminalClient.widget.id;
136
+ }
137
+ updateTerminalOptions(terminalOptions) {
138
+ this.terminalOptions = terminalOptions;
139
+ }
140
+ updateProblemCollector(collector) {
141
+ this.collector = collector;
142
+ }
143
+ reset() {
144
+ this.disposableCollection.dispose();
145
+ this.taskStatus = TaskStatus.PROCESS_INIT;
146
+ this.exitDefer = new ide_core_common_1.Deferred();
147
+ }
148
+ };
149
+ (0, tslib_1.__decorate)([
150
+ (0, di_1.Autowired)(common_1.ITerminalGroupViewService),
151
+ (0, tslib_1.__metadata)("design:type", Object)
152
+ ], TerminalTaskExecutor.prototype, "terminalView", void 0);
153
+ (0, tslib_1.__decorate)([
154
+ (0, di_1.Autowired)(common_1.ITerminalController),
155
+ (0, tslib_1.__metadata)("design:type", Object)
156
+ ], TerminalTaskExecutor.prototype, "terminalController", void 0);
157
+ (0, tslib_1.__decorate)([
158
+ (0, di_1.Autowired)(common_1.ITerminalService),
159
+ (0, tslib_1.__metadata)("design:type", Object)
160
+ ], TerminalTaskExecutor.prototype, "terminalService", void 0);
161
+ TerminalTaskExecutor = (0, tslib_1.__decorate)([
162
+ (0, di_1.Injectable)({ multiple: true }),
163
+ (0, tslib_1.__metadata)("design:paramtypes", [Object, problem_collector_1.ProblemCollector, Number])
164
+ ], TerminalTaskExecutor);
165
+ exports.TerminalTaskExecutor = TerminalTaskExecutor;
166
+ let TerminalTaskSystem = class TerminalTaskSystem extends ide_core_common_1.Disposable {
167
+ constructor() {
168
+ super(...arguments);
169
+ this.executorId = 0;
170
+ this.activeTaskExecutors = new Map();
171
+ this._onDidStateChange = new ide_core_common_1.Emitter();
172
+ this.taskExecutors = [];
173
+ this.onDidStateChange = this._onDidStateChange.event;
174
+ }
175
+ run(task) {
176
+ this.currentTask = task;
177
+ return this.executeTask(task);
178
+ }
179
+ async buildShellConfig(command) {
180
+ let subCommand = '';
181
+ const commandName = command.name;
182
+ const commandArgs = command.args;
183
+ const subArgs = [];
184
+ const result = [];
185
+ if (commandName) {
186
+ if (typeof commandName === 'string') {
187
+ subCommand = commandName;
188
+ }
189
+ else {
190
+ subCommand = commandName.value;
191
+ }
192
+ }
193
+ subArgs.push(subCommand);
194
+ if (commandArgs) {
195
+ for (const arg of commandArgs) {
196
+ if (typeof arg === 'string') {
197
+ subArgs.push(arg);
198
+ }
199
+ else {
200
+ subArgs.push(arg.value);
201
+ }
202
+ }
203
+ }
204
+ for (const arg of subArgs) {
205
+ if (arg.indexOf(path_1.Path.separator) > -1) {
206
+ result.push(await this.resolveVariables(arg.split(path_1.Path.separator)));
207
+ }
208
+ else {
209
+ result.push(await this.resolveVariable(arg));
210
+ }
211
+ }
212
+ return { shellArgs: ['-c', `${result.join(' ')}`] };
213
+ }
214
+ findAvaiableExecutor() {
215
+ return this.taskExecutors.find((e) => e.taskStatus === TaskStatus.PROCESS_EXITED);
216
+ }
217
+ async executeTask(task) {
218
+ var _a, _b, _c;
219
+ // CustomExecution
220
+ const isCustomExecution = task.command && task.command.runtime === task_1.RuntimeType.CustomExecution;
221
+ const matchers = await this.resolveMatchers(task.configurationProperties.problemMatchers);
222
+ const collector = new problem_collector_1.ProblemCollector(matchers);
223
+ const { shellArgs } = await this.buildShellConfig(task.command);
224
+ const terminalOptions = {
225
+ name: this.createTerminalName(task),
226
+ shellArgs,
227
+ isExtensionTerminal: isCustomExecution,
228
+ env: ((_a = task.command.options) === null || _a === void 0 ? void 0 : _a.env) || {},
229
+ cwd: ((_b = task.command.options) === null || _b === void 0 ? void 0 : _b.cwd) ? await this.resolveVariable((_c = task.command.options) === null || _c === void 0 ? void 0 : _c.cwd) : await this.resolveVariable('${workspaceFolder}'),
230
+ };
231
+ let executor = this.findAvaiableExecutor();
232
+ let reuse = false;
233
+ if (!executor) {
234
+ executor = this.injector.get(TerminalTaskExecutor, [terminalOptions, collector, this.executorId]);
235
+ this.executorId += 1;
236
+ this.taskExecutors.push(executor);
237
+ this.addDispose(executor.onDidTerminalWidgetRemove(() => {
238
+ this.taskExecutors = this.taskExecutors.filter((t) => t.executorId !== executor.executorId);
239
+ }));
240
+ }
241
+ else {
242
+ reuse = true;
243
+ executor.updateProblemCollector(collector);
244
+ executor.updateTerminalOptions(terminalOptions);
245
+ executor.reset();
246
+ }
247
+ if (reuse) {
248
+ // 插件进程中 CustomExecution 会等待前台终端实例创建完成后进行 attach
249
+ // 重用终端的情况下,要再次发出事件确保 attach 成功 (ext.host.task.ts#$onDidStartTask)
250
+ this._onDidStateChange.fire(task_1.TaskEvent.create("start" /* Start */, task, executor.terminalId));
251
+ }
252
+ else {
253
+ this.addDispose(executor.onDidTerminalCreated((terminalId) => {
254
+ // 当 task 使用 CustomExecution 时,发出 TaskEventKind.Start 事件后,插件进程将尝试 attach 这个 Pseudoterminal (ext.host.task.ts#$onDidStartTask)
255
+ // attach 成功便会创建一个 ExtensionTerminal 实例
256
+ // 确保后续调用 $startExtensionTerminal 时已经建立了连接
257
+ this._onDidStateChange.fire(task_1.TaskEvent.create("start" /* Start */, task, terminalId));
258
+ }));
259
+ }
260
+ if (!reuse) {
261
+ this.addDispose(executor.onDidTaskProcessExit((code) => {
262
+ this._onDidStateChange.fire(task_1.TaskEvent.create("processEnded" /* ProcessEnded */, task, code));
263
+ this._onDidStateChange.fire(task_1.TaskEvent.create("end" /* End */, task));
264
+ }));
265
+ }
266
+ const result = executor.execute(task, reuse);
267
+ const mapKey = task.getMapKey();
268
+ this.activeTaskExecutors.set(mapKey, { promise: Promise.resolve(result), task, executor });
269
+ this._onDidStateChange.fire(task_1.TaskEvent.create("active" /* Active */, task));
270
+ await executor.processReady.promise;
271
+ this._onDidStateChange.fire(task_1.TaskEvent.create("processStarted" /* ProcessStarted */, task, executor.processId));
272
+ return {
273
+ task,
274
+ kind: 1 /* Started */,
275
+ promise: result,
276
+ };
277
+ }
278
+ createTerminalName(task) {
279
+ return (0, ide_core_common_1.formatLocalize)('TerminalTaskSystem.terminalName', task.getQualifiedLabel() || task.configurationProperties.name);
280
+ }
281
+ async resolveVariables(value) {
282
+ const result = [];
283
+ for (const item of value) {
284
+ result.push(await this.resolveVariable(item));
285
+ }
286
+ return result.join(path_1.Path.separator);
287
+ }
288
+ async resolveVariable(value) {
289
+ if ((0, ide_core_common_1.isString)(value)) {
290
+ return await this.variableResolver.resolve(value);
291
+ }
292
+ else if (value !== undefined) {
293
+ return {
294
+ value: await this.variableResolver.resolve(value.value),
295
+ quoting: value.quoting,
296
+ };
297
+ }
298
+ else { // This should never happen
299
+ throw new Error('Should never try to resolve undefined.');
300
+ }
301
+ }
302
+ async resolveMatchers(values) {
303
+ if (values === undefined || values === null || values.length === 0) {
304
+ return [];
305
+ }
306
+ const result = [];
307
+ for (const value of values) {
308
+ let matcher;
309
+ if ((0, ide_core_common_1.isString)(value)) {
310
+ if (value[0].startsWith('$')) {
311
+ matcher = this.problemMatcher.get(value.substring(1));
312
+ }
313
+ else {
314
+ matcher = this.problemMatcher.get(value);
315
+ }
316
+ }
317
+ else {
318
+ matcher = value;
319
+ }
320
+ if (!matcher) {
321
+ continue;
322
+ }
323
+ const hasFilePrefix = matcher.filePrefix !== undefined;
324
+ if (!hasFilePrefix) {
325
+ result.push(matcher);
326
+ }
327
+ else {
328
+ const copy = (0, ide_core_common_1.deepClone)(matcher);
329
+ if (hasFilePrefix) {
330
+ copy.filePrefix = await this.resolveVariable(copy.filePrefix);
331
+ }
332
+ result.push(copy);
333
+ }
334
+ }
335
+ return result;
336
+ }
337
+ getActiveTasks() {
338
+ return Array.from(this.activeTaskExecutors.values()).map((e) => e.task);
339
+ }
340
+ async terminate(task) {
341
+ const key = task.getMapKey();
342
+ const activeExecutor = this.activeTaskExecutors.get(key);
343
+ if (!activeExecutor) {
344
+ return Promise.resolve({ task: undefined, success: true });
345
+ }
346
+ const { success } = await activeExecutor.executor.terminate();
347
+ this.activeTaskExecutors.delete(key);
348
+ return { task, success };
349
+ }
350
+ rerun() {
351
+ throw new Error('Method not implemented.');
352
+ }
353
+ isActive() {
354
+ throw new Error('Method not implemented.');
355
+ }
356
+ isActiveSync() {
357
+ throw new Error('Method not implemented.');
358
+ }
359
+ getBusyTasks() {
360
+ throw new Error('Method not implemented.');
361
+ }
362
+ canAutoTerminate() {
363
+ throw new Error('Method not implemented.');
364
+ }
365
+ terminateAll() {
366
+ throw new Error('Method not implemented.');
367
+ }
368
+ revealTask(task) {
369
+ throw new Error('Method not implemented.');
370
+ }
371
+ customExecutionComplete(task, result) {
372
+ throw new Error('Method not implemented.');
373
+ }
374
+ };
375
+ (0, tslib_1.__decorate)([
376
+ (0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
377
+ (0, tslib_1.__metadata)("design:type", di_1.Injector)
378
+ ], TerminalTaskSystem.prototype, "injector", void 0);
379
+ (0, tslib_1.__decorate)([
380
+ (0, di_1.Autowired)(ide_core_common_1.IProblemMatcherRegistry),
381
+ (0, tslib_1.__metadata)("design:type", Object)
382
+ ], TerminalTaskSystem.prototype, "problemMatcher", void 0);
383
+ (0, tslib_1.__decorate)([
384
+ (0, di_1.Autowired)(ide_variable_1.IVariableResolverService),
385
+ (0, tslib_1.__metadata)("design:type", Object)
386
+ ], TerminalTaskSystem.prototype, "variableResolver", void 0);
387
+ TerminalTaskSystem = (0, tslib_1.__decorate)([
388
+ (0, di_1.Injectable)()
389
+ ], TerminalTaskSystem);
390
+ exports.TerminalTaskSystem = TerminalTaskSystem;
391
+ //# sourceMappingURL=terminal-task-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-task-system.js","sourceRoot":"","sources":["../../src/browser/terminal-task-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { IJSONSchemaMap } from '@opensumi/ide-core-browser';
2
+ import { IDisposable, Event, URI, TaskIdentifier, Uri, Deferred } from '@opensumi/ide-core-common';
3
+ import { Task, ConfiguringTask, ContributedTask, TaskSet, KeyedTaskIdentifier, TaskEvent } from './task';
4
+ import { UriComponents } from '@opensumi/ide-editor';
5
+ import { ProblemCollector } from '../browser/problem-collector';
6
+ import { TerminalOptions } from '@opensumi/ide-terminal-next/lib/common';
7
+ interface TaskMap {
8
+ }
9
+ interface TaskFileter {
10
+ version?: string;
11
+ type?: string;
12
+ }
13
+ interface WorkspaceTaskResult {
14
+ set: TaskSet | undefined;
15
+ configurations: {
16
+ byIdentifier: Record<string, ConfiguringTask>;
17
+ } | undefined;
18
+ hasErrors: boolean;
19
+ }
20
+ export interface WorkspaceFolder {
21
+ uri: UriComponents;
22
+ name: string;
23
+ index: number;
24
+ }
25
+ export interface IWorkspaceFolder extends WorkspaceFolder {
26
+ }
27
+ export interface WorkspaceFolderTaskResult extends WorkspaceTaskResult {
28
+ workspaceFolder: IWorkspaceFolder;
29
+ }
30
+ export interface TaskDefinition {
31
+ type?: string;
32
+ required?: string[];
33
+ properties?: IJSONSchemaMap;
34
+ }
35
+ export declare const ITaskService: unique symbol;
36
+ export interface ITaskProvider {
37
+ provideTasks(validTypes?: Record<string, boolean>): Promise<TaskSet>;
38
+ resolveTask(task: ConfiguringTask): Promise<ContributedTask | undefined>;
39
+ }
40
+ export interface ITaskResolver {
41
+ resolve(uri: URI, identifier: string | KeyedTaskIdentifier | undefined): Task | undefined;
42
+ }
43
+ export interface ITaskSummary {
44
+ /**
45
+ * Exit code of the process.
46
+ */
47
+ exitCode?: number;
48
+ }
49
+ export interface IActivateTaskExecutorData {
50
+ executor: ITaskExecutor;
51
+ task: Task;
52
+ promise: Promise<ITaskSummary>;
53
+ }
54
+ export declare const enum TaskExecuteKind {
55
+ Started = 1,
56
+ Active = 2
57
+ }
58
+ export interface ITaskExecuteResult {
59
+ kind: TaskExecuteKind;
60
+ promise: Promise<ITaskSummary>;
61
+ task: Task;
62
+ started?: {
63
+ restartOnFileChanges?: string;
64
+ };
65
+ active?: {
66
+ same: boolean;
67
+ background: boolean;
68
+ };
69
+ }
70
+ export interface TerminateResponse {
71
+ success: boolean;
72
+ code?: TerminateResponseCode;
73
+ error?: any;
74
+ }
75
+ export declare const enum TerminateResponseCode {
76
+ Success = 0,
77
+ Unknown = 1,
78
+ AccessDenied = 2,
79
+ ProcessNotFound = 3
80
+ }
81
+ export interface ExecutorOptions {
82
+ }
83
+ export declare const ITaskExecutor: unique symbol;
84
+ export interface ITaskExecutor {
85
+ executorId: number;
86
+ processId: number | undefined;
87
+ widgetId: string | undefined;
88
+ processReady: Deferred<void>;
89
+ execute(task: Task, reuse?: boolean): Promise<{
90
+ exitCode?: number;
91
+ }>;
92
+ reset(): void;
93
+ terminate(): Promise<{
94
+ success: boolean;
95
+ }>;
96
+ updateTerminalOptions(options: TerminalOptions): void;
97
+ updateProblemCollector(collector: ProblemCollector): void;
98
+ onDidTerminalWidgetRemove: Event<void>;
99
+ onDidTaskProcessExit: Event<number | undefined>;
100
+ }
101
+ export interface TaskTerminateResponse extends TerminateResponse {
102
+ task: Task | undefined;
103
+ }
104
+ export declare const ITaskSystem: unique symbol;
105
+ export interface ITaskSystem {
106
+ onDidStateChange: Event<TaskEvent>;
107
+ run(task: Task | ConfiguringTask): Promise<ITaskExecuteResult>;
108
+ rerun(): ITaskExecuteResult | undefined;
109
+ isActive(): Promise<boolean>;
110
+ isActiveSync(): boolean;
111
+ getActiveTasks(): Task[];
112
+ getBusyTasks(): Task[];
113
+ canAutoTerminate(): boolean;
114
+ terminate(task: Task): Promise<TaskTerminateResponse>;
115
+ terminateAll(): Promise<TaskTerminateResponse[]>;
116
+ revealTask(task: Task): boolean;
117
+ customExecutionComplete(task: Task, result: number): Promise<void>;
118
+ }
119
+ export interface ITaskService {
120
+ run(task: Task | ConfiguringTask): Promise<ITaskSummary>;
121
+ runTaskCommand(): void;
122
+ updateWorkspaceTasks(tasks: TaskMap): void;
123
+ registerTaskProvider(provider: ITaskProvider, type: string): IDisposable;
124
+ tasks(filter?: TaskFileter): Promise<Task[]>;
125
+ getTask(workspaceFolder: Uri, identifier: string | TaskIdentifier, compareId?: boolean): Promise<Task | undefined>;
126
+ terminateTask(key: string): Promise<void>;
127
+ onDidStateChange: Event<TaskEvent>;
128
+ }
129
+ export {};
130
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGzE,UAAU,OAAO;CAAG;AAEpB,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,mBAAmB;IAC3B,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACzB,cAAc,EAAE;QACd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;KAC/C,GAAG,SAAS,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAKxD;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,eAAO,MAAM,YAAY,eAAyB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3F;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC;AAED,0BAAkB,eAAe;IAC/B,OAAO,IAAI;IACX,MAAM,IAAI;CACX;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE;QACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,0BAAkB,qBAAqB;IACrC,OAAO,IAAI;IACX,OAAO,IAAI;IACX,YAAY,IAAI;IAChB,eAAe,IAAI;CACpB;AAGD,MAAM,WAAW,eAAe;CAAG;AAEnC,eAAO,MAAM,aAAa,eAA0B,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3C,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACtD,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1D,yBAAyB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,eAAwB,CAAC;AACjD,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,KAAK,IAAI,kBAAkB,GAAG,SAAS,CAAC;IACxC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,YAAY,IAAI,OAAO,CAAC;IACxB,cAAc,IAAI,IAAI,EAAE,CAAC;IACzB,YAAY,IAAI,IAAI,EAAE,CAAC;IACvB,gBAAgB,IAAI,OAAO,CAAC;IAC5B,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtD,YAAY,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzD,cAAc,IAAI,IAAI,CAAC;IAEvB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3C,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAEzE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7C,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAEnH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACpC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ITaskSystem = exports.ITaskExecutor = exports.ITaskService = void 0;
4
+ exports.ITaskService = Symbol('ITaskService');
5
+ exports.ITaskExecutor = Symbol('ITaskExecutor');
6
+ exports.ITaskSystem = Symbol('ITaskSystem');
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;AA+Ca,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AA0DtC,QAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAoBxC,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}