@opensumi/ide-core-common 2.21.13 → 2.22.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 (159) hide show
  1. package/lib/command.d.ts +15 -5
  2. package/lib/command.d.ts.map +1 -1
  3. package/lib/command.js +11 -1
  4. package/lib/command.js.map +1 -1
  5. package/lib/const/application.d.ts +6 -1
  6. package/lib/const/application.d.ts.map +1 -1
  7. package/lib/const/application.js +8 -3
  8. package/lib/const/application.js.map +1 -1
  9. package/lib/declare.d.ts +2 -2
  10. package/lib/declare.d.ts.map +1 -1
  11. package/lib/editor.d.ts +4 -0
  12. package/lib/editor.d.ts.map +1 -1
  13. package/lib/electron.d.ts +1 -1
  14. package/lib/electron.d.ts.map +1 -1
  15. package/lib/event-bus/event-bus-types.d.ts +1 -1
  16. package/lib/event-bus/event-bus-types.d.ts.map +1 -1
  17. package/lib/event-bus/event-bus.js.map +1 -1
  18. package/lib/event-bus/event-decorator.js.map +1 -1
  19. package/lib/extension.schema.d.ts +1 -1
  20. package/lib/extension.schema.d.ts.map +1 -1
  21. package/lib/hash-calculate/WASMInterface.d.ts +2 -2
  22. package/lib/hash-calculate/WASMInterface.d.ts.map +1 -1
  23. package/lib/hash-calculate/hash-calculate.js.map +1 -1
  24. package/lib/hash-calculate/util.d.ts +2 -2
  25. package/lib/hash-calculate/util.d.ts.map +1 -1
  26. package/lib/json-schema.d.ts +9 -0
  27. package/lib/json-schema.d.ts.map +1 -1
  28. package/lib/keyboard/keymap.d.ts +1 -1
  29. package/lib/keyboard/keymap.d.ts.map +1 -1
  30. package/lib/localize.d.ts +1 -1
  31. package/lib/localize.d.ts.map +1 -1
  32. package/lib/log.d.ts +2 -2
  33. package/lib/log.d.ts.map +1 -1
  34. package/lib/mime.d.ts +6 -6
  35. package/lib/module.js.map +1 -1
  36. package/lib/preferences/preference-schema.d.ts +13 -3
  37. package/lib/preferences/preference-schema.d.ts.map +1 -1
  38. package/lib/preferences/preference-schema.js +11 -1
  39. package/lib/preferences/preference-schema.js.map +1 -1
  40. package/lib/preferences/preference-scope.d.ts +8 -1
  41. package/lib/preferences/preference-scope.d.ts.map +1 -1
  42. package/lib/preferences/preference-scope.js +11 -2
  43. package/lib/preferences/preference-scope.js.map +1 -1
  44. package/lib/problem-matcher.d.ts +1 -1
  45. package/lib/problem-matcher.d.ts.map +1 -1
  46. package/lib/problem-matcher.js.map +1 -1
  47. package/lib/problem-pattern.d.ts +4 -2
  48. package/lib/problem-pattern.d.ts.map +1 -1
  49. package/lib/problem-pattern.js +24 -1
  50. package/lib/problem-pattern.js.map +1 -1
  51. package/lib/reference.d.ts +2 -1
  52. package/lib/reference.d.ts.map +1 -1
  53. package/lib/reference.js +11 -6
  54. package/lib/reference.js.map +1 -1
  55. package/lib/reporter.js.map +1 -1
  56. package/lib/storage.d.ts +1 -1
  57. package/lib/storage.d.ts.map +1 -1
  58. package/lib/storage.js.map +1 -1
  59. package/lib/task-definition.js.map +1 -1
  60. package/lib/types/common.d.ts +1 -1
  61. package/lib/types/common.d.ts.map +1 -1
  62. package/lib/types/editor.d.ts +2 -2
  63. package/lib/types/editor.d.ts.map +1 -1
  64. package/lib/types/file-watch.d.ts +1 -1
  65. package/lib/types/file-watch.d.ts.map +1 -1
  66. package/lib/types/markers/markers-manager.d.ts.map +1 -1
  67. package/lib/types/markers/markers-manager.js +4 -10
  68. package/lib/types/markers/markers-manager.js.map +1 -1
  69. package/lib/types/markers/markers.d.ts +2 -0
  70. package/lib/types/markers/markers.d.ts.map +1 -1
  71. package/lib/types/markers/markers.js.map +1 -1
  72. package/package.json +7 -6
  73. package/src/LifeCyclePhase.ts +6 -0
  74. package/src/application-error.ts +77 -0
  75. package/src/application-props.ts +28 -0
  76. package/src/application.lifecycle.ts +15 -0
  77. package/src/browser-fs/ensure-dir.ts +46 -0
  78. package/src/browser-fs/util.ts +52 -0
  79. package/src/clipboard.ts +31 -0
  80. package/src/command.ts +726 -0
  81. package/src/commands/terminal.ts +0 -0
  82. package/src/comparers.ts +152 -0
  83. package/src/connection.ts +7 -0
  84. package/src/const/application.ts +11 -0
  85. package/src/const/index.ts +1 -0
  86. package/src/contribution-provider.ts +47 -0
  87. package/src/credential.ts +21 -0
  88. package/src/crypto.ts +8 -0
  89. package/src/declare.ts +3 -0
  90. package/src/di-helper/domain-helper.ts +48 -0
  91. package/src/di-helper/index.ts +1 -0
  92. package/src/editor.ts +6 -0
  93. package/src/electron.ts +168 -0
  94. package/src/env.ts +1 -0
  95. package/src/event-bus/basic-event.ts +3 -0
  96. package/src/event-bus/event-bus-types.ts +68 -0
  97. package/src/event-bus/event-bus.ts +57 -0
  98. package/src/event-bus/event-decorator.ts +32 -0
  99. package/src/event-bus/index.ts +4 -0
  100. package/src/extension.schema.ts +16 -0
  101. package/src/hash-calculate/WASMInterface.ts +266 -0
  102. package/src/hash-calculate/hash-calculate.ts +53 -0
  103. package/src/hash-calculate/lockedCreate.ts +17 -0
  104. package/src/hash-calculate/md5.wasm.json +1 -0
  105. package/src/hash-calculate/mutex.ts +30 -0
  106. package/src/hash-calculate/util.ts +190 -0
  107. package/src/id-generator.ts +15 -0
  108. package/src/index.ts +39 -0
  109. package/src/json-schema.ts +80 -0
  110. package/src/keyboard/index.ts +2 -0
  111. package/src/keyboard/keyboard-layout-provider.ts +46 -0
  112. package/src/keyboard/keymap.ts +224 -0
  113. package/src/line-text.ts +93 -0
  114. package/src/localize.ts +203 -0
  115. package/src/log.ts +338 -0
  116. package/src/markdown.ts +8 -0
  117. package/src/menu.ts +31 -0
  118. package/src/mime.ts +8 -0
  119. package/src/mocks/electron/browserMock.ts +10 -0
  120. package/src/mocks/electron/ipcRenderer.ts +30 -0
  121. package/src/module.ts +31 -0
  122. package/src/network.ts +47 -0
  123. package/src/node/cli.ts +5 -0
  124. package/src/node/port.ts +134 -0
  125. package/src/preferences/index.ts +2 -0
  126. package/src/preferences/preference-schema.ts +122 -0
  127. package/src/preferences/preference-scope.ts +65 -0
  128. package/src/problem-matcher.ts +389 -0
  129. package/src/problem-pattern.ts +574 -0
  130. package/src/range.ts +24 -0
  131. package/src/reference.ts +141 -0
  132. package/src/reporter.ts +64 -0
  133. package/src/settings/general.ts +5 -0
  134. package/src/settings/index.ts +3 -0
  135. package/src/settings/search.ts +7 -0
  136. package/src/settings/terminal.ts +9 -0
  137. package/src/storage.ts +99 -0
  138. package/src/task-definition.ts +172 -0
  139. package/src/theme.ts +7 -0
  140. package/src/types/accessibility.ts +4 -0
  141. package/src/types/application.ts +14 -0
  142. package/src/types/authentication.ts +120 -0
  143. package/src/types/common.ts +14 -0
  144. package/src/types/dnd.ts +8 -0
  145. package/src/types/editor.ts +246 -0
  146. package/src/types/extension.ts +96 -0
  147. package/src/types/file-watch.ts +100 -0
  148. package/src/types/file.ts +262 -0
  149. package/src/types/index.ts +15 -0
  150. package/src/types/markdown.ts +10 -0
  151. package/src/types/markers/index.ts +2 -0
  152. package/src/types/markers/markers-manager.ts +392 -0
  153. package/src/types/markers/markers.ts +125 -0
  154. package/src/types/message.ts +6 -0
  155. package/src/types/reporter.ts +96 -0
  156. package/src/types/statusbar.ts +6 -0
  157. package/src/types/string.ts +3 -0
  158. package/src/utils/index.ts +1 -0
  159. package/src/utils/ipc.ts +28 -0
@@ -0,0 +1,574 @@
1
+ /** ******************************************************************************
2
+ * Copyright (C) 2018 Red Hat, Inc. and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ // Some code copied and modified from https://github.com/eclipse-theia/theia/tree/v1.14.0/packages/core/src/common/severity.ts
17
+
18
+ import { Diagnostic } from 'vscode';
19
+
20
+ import { Injectable } from '@opensumi/di';
21
+ import { isArray, isString, IDisposable, Disposable, DisposableCollection, URI } from '@opensumi/ide-utils';
22
+
23
+ import { ProblemMatcher } from './problem-matcher';
24
+
25
+ export enum ApplyToKind {
26
+ allDocuments,
27
+ openDocuments,
28
+ closedDocuments,
29
+ }
30
+
31
+ enum DiagnosticSeverity {
32
+ Error = 1,
33
+ Warning = 2,
34
+ Information = 3,
35
+ Hint = 4,
36
+ }
37
+
38
+ export namespace ApplyToKind {
39
+ export function fromString(value: string | undefined): ApplyToKind | undefined {
40
+ if (value) {
41
+ value = value.toLowerCase();
42
+ if (value === 'alldocuments') {
43
+ return ApplyToKind.allDocuments;
44
+ } else if (value === 'opendocuments') {
45
+ return ApplyToKind.openDocuments;
46
+ } else if (value === 'closeddocuments') {
47
+ return ApplyToKind.closedDocuments;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ }
53
+
54
+ export enum ProblemLocationKind {
55
+ File,
56
+ Location,
57
+ }
58
+
59
+ export namespace ProblemLocationKind {
60
+ export function fromString(value: string): ProblemLocationKind | undefined {
61
+ value = value.toLowerCase();
62
+ if (value === 'file') {
63
+ return ProblemLocationKind.File;
64
+ } else if (value === 'location') {
65
+ return ProblemLocationKind.Location;
66
+ } else {
67
+ return undefined;
68
+ }
69
+ }
70
+ }
71
+
72
+ export namespace FileLocationKind {
73
+ export function fromString(value: string): FileLocationKind | undefined {
74
+ value = value.toLowerCase();
75
+ if (value === 'absolute') {
76
+ return FileLocationKind.Absolute;
77
+ } else if (value === 'relative') {
78
+ return FileLocationKind.Relative;
79
+ } else {
80
+ return undefined;
81
+ }
82
+ }
83
+ }
84
+
85
+ export enum FileLocationKind {
86
+ Default,
87
+ Relative,
88
+ Absolute,
89
+ AutoDetect,
90
+ }
91
+
92
+ export interface ProblemPattern {
93
+ regexp?: RegExp | string;
94
+
95
+ kind?: ProblemLocationKind;
96
+
97
+ file?: number;
98
+
99
+ message?: number;
100
+
101
+ location?: number;
102
+
103
+ line?: number;
104
+
105
+ character?: number;
106
+
107
+ endLine?: number;
108
+
109
+ endCharacter?: number;
110
+
111
+ code?: number;
112
+
113
+ severity?: number;
114
+
115
+ loop?: boolean;
116
+ }
117
+
118
+ export interface CheckedProblemPattern extends ProblemPattern {
119
+ /**
120
+ * The regular expression to find a problem in the console output of an
121
+ * executed task.
122
+ */
123
+ regexp: string;
124
+ }
125
+
126
+ export interface NamedProblemPattern extends ProblemPattern {
127
+ /**
128
+ * The name of the problem pattern.
129
+ */
130
+ name: string;
131
+
132
+ /**
133
+ * A human readable label
134
+ */
135
+ label?: string;
136
+ }
137
+
138
+ export namespace CheckedProblemPattern {
139
+ export function is(value: any): value is CheckedProblemPattern {
140
+ const candidate: ProblemPattern = value as ProblemPattern;
141
+ return candidate && isString(candidate.regexp);
142
+ }
143
+ }
144
+
145
+ export type MultiLineCheckedProblemPattern = CheckedProblemPattern[];
146
+
147
+ export namespace MultiLineProblemPattern {
148
+ export function is(value: any): value is MultiLineProblemPattern {
149
+ return value && isArray(value);
150
+ }
151
+ }
152
+ export namespace MultiLineCheckedProblemPattern {
153
+ export function is(value: any): value is MultiLineCheckedProblemPattern {
154
+ if (!MultiLineProblemPattern.is(value)) {
155
+ return false;
156
+ }
157
+ for (const element of value) {
158
+ if (!CheckedProblemPattern.is(element)) {
159
+ return false;
160
+ }
161
+ }
162
+ return true;
163
+ }
164
+ }
165
+
166
+ export namespace NamedProblemPattern {
167
+ export function is(value: any): value is NamedProblemPattern {
168
+ const candidate: NamedProblemPattern = value as NamedProblemPattern;
169
+ return candidate && isString(candidate.name);
170
+ }
171
+ }
172
+
173
+ export interface NamedMultiLineCheckedProblemPattern {
174
+ /**
175
+ * The name of the problem pattern.
176
+ */
177
+ name: string;
178
+
179
+ /**
180
+ * A human readable label
181
+ */
182
+ label?: string;
183
+
184
+ /**
185
+ * The actual patterns
186
+ */
187
+ patterns: MultiLineCheckedProblemPattern;
188
+ }
189
+
190
+ export namespace NamedMultiLineCheckedProblemPattern {
191
+ export function is(value: any): value is NamedMultiLineCheckedProblemPattern {
192
+ const candidate = value as NamedMultiLineCheckedProblemPattern;
193
+ return (
194
+ candidate &&
195
+ isString(candidate.name) &&
196
+ isArray(candidate.patterns) &&
197
+ MultiLineCheckedProblemPattern.is(candidate.patterns)
198
+ );
199
+ }
200
+ }
201
+
202
+ export type MultiLineProblemPattern = ProblemPattern[];
203
+
204
+ export interface NamedMultiLineProblemPattern {
205
+ name: string;
206
+ label: string;
207
+ patterns: MultiLineProblemPattern;
208
+ }
209
+
210
+ export interface ProblemPatternContribution {
211
+ name?: string;
212
+ regexp: string;
213
+
214
+ kind?: string;
215
+ file?: number;
216
+ message?: number;
217
+ location?: number;
218
+ line?: number;
219
+ character?: number;
220
+ column?: number;
221
+ endLine?: number;
222
+ endCharacter?: number;
223
+ endColumn?: number;
224
+ code?: number;
225
+ severity?: number;
226
+ loop?: boolean;
227
+ }
228
+
229
+ export namespace ProblemPattern {
230
+ export function fromProblemPatternContribution(value: ProblemPatternContribution): NamedProblemPattern {
231
+ return {
232
+ name: value.name!,
233
+ regexp: value.regexp,
234
+ kind: value.kind ? ProblemLocationKind.fromString(value.kind) : undefined,
235
+ file: value.file,
236
+ message: value.message,
237
+ location: value.location,
238
+ line: value.line,
239
+ character: value.column || value.character,
240
+ endLine: value.endLine,
241
+ endCharacter: value.endColumn || value.endCharacter,
242
+ code: value.code,
243
+ severity: value.severity,
244
+ loop: value.loop,
245
+ };
246
+ }
247
+ }
248
+
249
+ export interface ProblemMatch {
250
+ resource?: URI;
251
+ description: ProblemMatcher;
252
+ }
253
+
254
+ export interface ProblemMatchData extends ProblemMatch {
255
+ marker: Diagnostic;
256
+ }
257
+
258
+ export function rangeAreEqual(a, b) {
259
+ if (typeof a === 'undefined' && typeof b === 'undefined') {
260
+ return true;
261
+ }
262
+
263
+ return (
264
+ a.start.line === b.start.line &&
265
+ a.start.character === b.start.character &&
266
+ a.end.line === b.end.line &&
267
+ a.end.character === b.end.character
268
+ );
269
+ }
270
+
271
+ function codeAreEquals(
272
+ a?:
273
+ | string
274
+ | number
275
+ | {
276
+ value: string | number;
277
+
278
+ target: any;
279
+ },
280
+ b?:
281
+ | string
282
+ | number
283
+ | {
284
+ value: string | number;
285
+ target: any;
286
+ },
287
+ ) {
288
+ if (typeof a === 'object' && typeof b === 'object') {
289
+ return a.value === b.value && a.target === b.target;
290
+ }
291
+ return a === b;
292
+ }
293
+
294
+ export function diagnosticAreEquals(a?: Diagnostic, b?: Diagnostic) {
295
+ return (
296
+ codeAreEquals(a?.code, b?.code) &&
297
+ a?.message === b?.message &&
298
+ a?.source === b?.source &&
299
+ rangeAreEqual(a?.range, b?.range)
300
+ );
301
+ }
302
+
303
+ export namespace ProblemMatchData {
304
+ export function is(data: ProblemMatch): data is ProblemMatchData {
305
+ return 'marker' in data;
306
+ }
307
+ }
308
+
309
+ export enum Severity {
310
+ Ignore = 0,
311
+ Error = 1,
312
+ Warning = 2,
313
+ Info = 3,
314
+ Log = 4,
315
+ }
316
+
317
+ export namespace Severity {
318
+ const error = 'Errors';
319
+ const warning = 'Warnings';
320
+ const info = 'Info';
321
+ const log = 'Log';
322
+ const ignore = 'All';
323
+
324
+ export function fromValue(value: string | undefined): Severity {
325
+ value = value && value.toLowerCase();
326
+
327
+ if (!value) {
328
+ return Severity.Ignore;
329
+ }
330
+ if (['error', 'errors'].indexOf(value) !== -1) {
331
+ return Severity.Error;
332
+ }
333
+ if (['warn', 'warning', 'warnings'].indexOf(value) !== -1) {
334
+ return Severity.Warning;
335
+ }
336
+ if (value === 'info') {
337
+ return Severity.Info;
338
+ }
339
+ if (value === 'log') {
340
+ return Severity.Log;
341
+ }
342
+
343
+ return Severity.Ignore;
344
+ }
345
+
346
+ export function toDiagnosticSeverity(value: Severity): DiagnosticSeverity {
347
+ switch (value) {
348
+ case Severity.Ignore:
349
+ return DiagnosticSeverity.Hint;
350
+ case Severity.Info:
351
+ return DiagnosticSeverity.Information;
352
+ case Severity.Log:
353
+ return DiagnosticSeverity.Information;
354
+ case Severity.Warning:
355
+ return DiagnosticSeverity.Warning;
356
+ case Severity.Error:
357
+ return DiagnosticSeverity.Error;
358
+ default:
359
+ return DiagnosticSeverity.Error;
360
+ }
361
+ }
362
+
363
+ export function toString(severity: Severity | undefined): string {
364
+ switch (severity) {
365
+ case Severity.Error:
366
+ return error;
367
+ case Severity.Warning:
368
+ return warning;
369
+ case Severity.Info:
370
+ return info;
371
+ case Severity.Log:
372
+ return log;
373
+ default:
374
+ return ignore;
375
+ }
376
+ }
377
+
378
+ export function toArray(): string[] {
379
+ return [ignore, error, warning, info, log];
380
+ }
381
+ }
382
+
383
+ export interface WatchingPattern {
384
+ regexp: RegExp | string;
385
+ file?: number;
386
+ }
387
+
388
+ export const IProblemPatternRegistry = Symbol('ProblemPatternRegistry');
389
+
390
+ export interface IProblemPatternRegistry {
391
+ onReady(): Promise<void>;
392
+ register(value: any | any[]): IDisposable;
393
+ get(key: string): undefined | NamedProblemPattern | NamedProblemPattern[];
394
+ }
395
+
396
+ @Injectable()
397
+ export class ProblemPatternRegistryImpl implements IProblemPatternRegistry {
398
+ private readonly patterns = new Map<string, NamedProblemPattern | NamedProblemPattern[]>();
399
+ private readyPromise: Promise<void>;
400
+
401
+ constructor() {
402
+ this.init();
403
+ }
404
+
405
+ protected init(): void {
406
+ this.fillDefaults();
407
+ this.readyPromise = new Promise<void>((res, rej) => res(undefined));
408
+ }
409
+
410
+ onReady(): Promise<void> {
411
+ return this.readyPromise;
412
+ }
413
+
414
+ /**
415
+ * Add a problem pattern to the registry.
416
+ *
417
+ * @param definition the problem pattern to be added.
418
+ */
419
+ register(value: ProblemPatternContribution | ProblemPatternContribution[]): IDisposable {
420
+ if (Array.isArray(value)) {
421
+ const toDispose = new DisposableCollection();
422
+ value.forEach((problemPatternContribution) => toDispose.push(this.register(problemPatternContribution)));
423
+ return toDispose;
424
+ }
425
+ if (!value.name) {
426
+ // eslint-disable-next-line no-console
427
+ console.error('Only named Problem Patterns can be registered.');
428
+ return Disposable.NULL;
429
+ }
430
+ const problemPattern: NamedProblemPattern = ProblemPattern.fromProblemPatternContribution(value);
431
+ return this.add(problemPattern.name!, problemPattern);
432
+ }
433
+
434
+ /**
435
+ * Finds the problem pattern(s) from the registry with the given name.
436
+ *
437
+ * @param key the name of the problem patterns
438
+ * @return a problem pattern or an array of the problem patterns associated with the name. If no problem patterns are found, `undefined` is returned.
439
+ */
440
+ get(key: string): undefined | NamedProblemPattern | NamedProblemPattern[] {
441
+ if (key.startsWith('$')) {
442
+ return this.patterns.get(key.slice(1));
443
+ }
444
+ return this.patterns.get(key);
445
+ }
446
+
447
+ private add(key: string, value: ProblemPattern | ProblemPattern[]): IDisposable {
448
+ let toAdd: NamedProblemPattern | NamedProblemPattern[];
449
+ if (Array.isArray(value)) {
450
+ toAdd = value.map((v) => Object.assign(v, { name: key }));
451
+ } else {
452
+ toAdd = Object.assign(value, { name: key });
453
+ }
454
+ this.patterns.set(key, toAdd);
455
+ return Disposable.create(() => this.patterns.delete(key));
456
+ }
457
+
458
+ // copied from https://github.com/Microsoft/vscode/blob/1.33.1/src/vs/workbench/contrib/tasks/common/problemMatcher.ts
459
+ private fillDefaults(): void {
460
+ this.add('msCompile', {
461
+ regexp:
462
+ /^(?:\s+\d+\>)?([^\s].*)\((\d+|\d+,\d+|\d+,\d+,\d+,\d+)\)\s*:\s+(error|warning|info)\s+(\w{1,2}\d+)\s*:\s*(.*)$/
463
+ .source,
464
+ kind: ProblemLocationKind.Location,
465
+ file: 1,
466
+ location: 2,
467
+ severity: 3,
468
+ code: 4,
469
+ message: 5,
470
+ });
471
+ this.add('gulp-tsc', {
472
+ regexp: /^([^\s].*)\((\d+|\d+,\d+|\d+,\d+,\d+,\d+)\):\s+(\d+)\s+(.*)$/.source,
473
+ kind: ProblemLocationKind.Location,
474
+ file: 1,
475
+ location: 2,
476
+ code: 3,
477
+ message: 4,
478
+ });
479
+ this.add('cpp', {
480
+ regexp: /^([^\s].*)\((\d+|\d+,\d+|\d+,\d+,\d+,\d+)\):\s+(error|warning|info)\s+(C\d+)\s*:\s*(.*)$/.source,
481
+ kind: ProblemLocationKind.Location,
482
+ file: 1,
483
+ location: 2,
484
+ severity: 3,
485
+ code: 4,
486
+ message: 5,
487
+ });
488
+ this.add('csc', {
489
+ regexp: /^([^\s].*)\((\d+|\d+,\d+|\d+,\d+,\d+,\d+)\):\s+(error|warning|info)\s+(CS\d+)\s*:\s*(.*)$/.source,
490
+ kind: ProblemLocationKind.Location,
491
+ file: 1,
492
+ location: 2,
493
+ severity: 3,
494
+ code: 4,
495
+ message: 5,
496
+ });
497
+ this.add('vb', {
498
+ regexp: /^([^\s].*)\((\d+|\d+,\d+|\d+,\d+,\d+,\d+)\):\s+(error|warning|info)\s+(BC\d+)\s*:\s*(.*)$/.source,
499
+ kind: ProblemLocationKind.Location,
500
+ file: 1,
501
+ location: 2,
502
+ severity: 3,
503
+ code: 4,
504
+ message: 5,
505
+ });
506
+ this.add('lessCompile', {
507
+ regexp: /^\s*(.*) in file (.*) line no. (\d+)$/.source,
508
+ kind: ProblemLocationKind.Location,
509
+ message: 1,
510
+ file: 2,
511
+ line: 3,
512
+ });
513
+ this.add('jshint', {
514
+ regexp: /^(.*):\s+line\s+(\d+),\s+col\s+(\d+),\s(.+?)(?:\s+\((\w)(\d+)\))?$/.source,
515
+ kind: ProblemLocationKind.Location,
516
+ file: 1,
517
+ line: 2,
518
+ character: 3,
519
+ message: 4,
520
+ severity: 5,
521
+ code: 6,
522
+ });
523
+ this.add('jshint-stylish', [
524
+ {
525
+ regexp: /^(.+)$/.source,
526
+ kind: ProblemLocationKind.Location,
527
+ file: 1,
528
+ },
529
+ {
530
+ regexp: /^\s+line\s+(\d+)\s+col\s+(\d+)\s+(.+?)(?:\s+\((\w)(\d+)\))?$/.source,
531
+ line: 1,
532
+ character: 2,
533
+ message: 3,
534
+ severity: 4,
535
+ code: 5,
536
+ loop: true,
537
+ },
538
+ ]);
539
+ this.add('eslint-compact', {
540
+ regexp: /^(.+):\sline\s(\d+),\scol\s(\d+),\s(Error|Warning|Info)\s-\s(.+)\s\((.+)\)$/.source,
541
+ file: 1,
542
+ kind: ProblemLocationKind.Location,
543
+ line: 2,
544
+ character: 3,
545
+ severity: 4,
546
+ message: 5,
547
+ code: 6,
548
+ });
549
+ this.add('eslint-stylish', [
550
+ {
551
+ regexp: /^([^\s].*)$/.source,
552
+ kind: ProblemLocationKind.Location,
553
+ file: 1,
554
+ },
555
+ {
556
+ regexp: /^\s+(\d+):(\d+)\s+(error|warning|info)\s+(.+?)(?:\s\s+(.*))?$/.source,
557
+ line: 1,
558
+ character: 2,
559
+ severity: 3,
560
+ message: 4,
561
+ code: 5,
562
+ loop: true,
563
+ },
564
+ ]);
565
+ this.add('go', {
566
+ regexp: /^([^:]*: )?((.:)?[^:]*):(\d+)(:(\d+))?: (.*)$/.source,
567
+ kind: ProblemLocationKind.Location,
568
+ file: 2,
569
+ line: 4,
570
+ character: 6,
571
+ message: 7,
572
+ });
573
+ }
574
+ }
package/src/range.ts ADDED
@@ -0,0 +1,24 @@
1
+ import type { IPosition, IRange } from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
2
+
3
+ /**
4
+ * position 转换 range
5
+ * @param position
6
+ */
7
+ export function positionToRange(position: IPosition | number): IRange {
8
+ if (typeof position === 'number') {
9
+ return {
10
+ startLineNumber: position,
11
+ endLineNumber: position,
12
+ startColumn: 1,
13
+ endColumn: 1,
14
+ };
15
+ } else {
16
+ const { lineNumber } = position;
17
+ return {
18
+ startLineNumber: lineNumber,
19
+ endLineNumber: lineNumber,
20
+ startColumn: 1,
21
+ endColumn: 1,
22
+ };
23
+ }
24
+ }