@rushstack/terminal 0.15.4 → 0.17.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.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,38 @@
1
1
  {
2
2
  "name": "@rushstack/terminal",
3
3
  "entries": [
4
+ {
5
+ "version": "0.17.0",
6
+ "tag": "@rushstack/terminal_v0.17.0",
7
+ "date": "Tue, 30 Sep 2025 20:33:51 GMT",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "comment": "Add `ProblemCollector extends TerminalWritable` API which matches and collects VS Code style problem matchers"
12
+ }
13
+ ],
14
+ "dependency": [
15
+ {
16
+ "comment": "Updating dependency \"@rushstack/node-core-library\" to `5.15.0`"
17
+ },
18
+ {
19
+ "comment": "Updating dependency \"@rushstack/problem-matcher\" to `0.1.0`"
20
+ }
21
+ ]
22
+ }
23
+ },
24
+ {
25
+ "version": "0.16.0",
26
+ "tag": "@rushstack/terminal_v0.16.0",
27
+ "date": "Thu, 11 Sep 2025 00:22:31 GMT",
28
+ "comments": {
29
+ "minor": [
30
+ {
31
+ "comment": "(BREAKING CHANGE) Remove support for legacy `IColorableSequence` parameters passed to `Terminal` insance `write*` functions. Note that types for `IColorableSequence` were removed with #3176 in 2022."
32
+ }
33
+ ]
34
+ }
35
+ },
4
36
  {
5
37
  "version": "0.15.4",
6
38
  "tag": "@rushstack/terminal_v0.15.4",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # Change Log - @rushstack/terminal
2
2
 
3
- This log was last generated on Wed, 23 Jul 2025 20:55:57 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 30 Sep 2025 20:33:51 GMT and should not be manually modified.
4
+
5
+ ## 0.17.0
6
+ Tue, 30 Sep 2025 20:33:51 GMT
7
+
8
+ ### Minor changes
9
+
10
+ - Add `ProblemCollector extends TerminalWritable` API which matches and collects VS Code style problem matchers
11
+
12
+ ## 0.16.0
13
+ Thu, 11 Sep 2025 00:22:31 GMT
14
+
15
+ ### Minor changes
16
+
17
+ - (BREAKING CHANGE) Remove support for legacy `IColorableSequence` parameters passed to `Terminal` insance `write*` functions. Note that types for `IColorableSequence` were removed with #3176 in 2022.
4
18
 
5
19
  ## 0.15.4
6
20
  Wed, 23 Jul 2025 20:55:57 GMT
@@ -11,6 +11,9 @@
11
11
  /// <reference types="node" />
12
12
 
13
13
  import type { Brand } from '@rushstack/node-core-library';
14
+ import type { IProblem } from '@rushstack/problem-matcher';
15
+ import type { IProblemMatcher } from '@rushstack/problem-matcher';
16
+ import type { IProblemMatcherJson } from '@rushstack/problem-matcher';
14
17
  import { NewlineKind } from '@rushstack/node-core-library';
15
18
  import { Writable } from 'stream';
16
19
  import { WritableOptions } from 'stream';
@@ -286,6 +289,34 @@ export declare interface IPrefixProxyTerminalProviderOptionsBase {
286
289
  terminalProvider: ITerminalProvider;
287
290
  }
288
291
 
292
+ /**
293
+ * Collects problems (errors/warnings/info) encountered during an operation.
294
+ *
295
+ * @beta
296
+ */
297
+ export declare interface IProblemCollector {
298
+ /**
299
+ * Returns the collected problems so far.
300
+ */
301
+ get problems(): ReadonlySet<IProblem>;
302
+ }
303
+
304
+ /**
305
+ * Constructor options for {@link ProblemCollector}.
306
+ * @beta
307
+ */
308
+ export declare interface IProblemCollectorOptions extends ITerminalWritableOptions {
309
+ /**
310
+ * The set of matchers that will be applied to each incoming line. Must contain at least one item.
311
+ */
312
+ matchers?: IProblemMatcher[];
313
+ /**
314
+ * VS Code style problem matcher definitions. These will be converted to
315
+ * {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} definitions.
316
+ */
317
+ matcherJson?: IProblemMatcherJson[];
318
+ }
319
+
289
320
  /**
290
321
  * Constructor options for {@link SplitterTransform}.
291
322
  *
@@ -734,6 +765,35 @@ export declare class PrintUtilities {
734
765
  static printMessageInBox(message: string, terminal: ITerminal, boxWidth?: number): void;
735
766
  }
736
767
 
768
+ /**
769
+ * A {@link TerminalWritable} that consumes line-oriented terminal output and extracts structured
770
+ * problems using one or more {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} instances.
771
+ *
772
+ * @remarks
773
+ * This collector expects that each incoming {@link ITerminalChunk} represents a single line terminated
774
+ * by a `"\n"` character (for example when preceded by {@link StderrLineTransform} / `StdioLineTransform`).
775
+ * If a chunk does not end with a newline an error is thrown to surface incorrect pipeline wiring early.
776
+ *
777
+ * @beta
778
+ */
779
+ export declare class ProblemCollector extends TerminalWritable implements IProblemCollector {
780
+ private readonly _matchers;
781
+ private readonly _problems;
782
+ constructor(options: IProblemCollectorOptions);
783
+ /**
784
+ * {@inheritdoc IProblemCollector}
785
+ */
786
+ get problems(): ReadonlySet<IProblem>;
787
+ /**
788
+ * {@inheritdoc TerminalWritable}
789
+ */
790
+ protected onWriteChunk(chunk: ITerminalChunk): void;
791
+ /**
792
+ * {@inheritdoc TerminalWritable}
793
+ */
794
+ protected onClose(): void;
795
+ }
796
+
737
797
  /**
738
798
  * For use with {@link TextRewriterTransform}, this rewriter removes ANSI escape codes
739
799
  * including colored text.
@@ -948,7 +1008,7 @@ export declare class StringBufferTerminalProvider implements ITerminalProvider {
948
1008
  * @beta
949
1009
  */
950
1010
  export declare class Terminal implements ITerminal {
951
- private _providers;
1011
+ private readonly _providers;
952
1012
  constructor(provider: ITerminalProvider);
953
1013
  /**
954
1014
  * {@inheritdoc ITerminal.registerProvider}
@@ -999,7 +1059,6 @@ export declare class Terminal implements ITerminal {
999
1059
  */
1000
1060
  writeDebugLine(...messageParts: TerminalWriteParameters): void;
1001
1061
  private _writeSegmentsToProviders;
1002
- private _serializeLegacyColorableSequence;
1003
1062
  private _normalizeWriteParameters;
1004
1063
  }
1005
1064
 
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.52.8"
8
+ "packageVersion": "7.52.11"
9
9
  }
10
10
  ]
11
11
  }
@@ -0,0 +1,13 @@
1
+ import type { IProblem } from '@rushstack/problem-matcher';
2
+ /**
3
+ * Collects problems (errors/warnings/info) encountered during an operation.
4
+ *
5
+ * @beta
6
+ */
7
+ export interface IProblemCollector {
8
+ /**
9
+ * Returns the collected problems so far.
10
+ */
11
+ get problems(): ReadonlySet<IProblem>;
12
+ }
13
+ //# sourceMappingURL=IProblemCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProblemCollector.d.ts","sourceRoot":"","sources":["../src/IProblemCollector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;CACvC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
3
+ // See LICENSE in the project root for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=IProblemCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProblemCollector.js","sourceRoot":"","sources":["../src/IProblemCollector.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type { IProblem } from '@rushstack/problem-matcher';\n\n/**\n * Collects problems (errors/warnings/info) encountered during an operation.\n *\n * @beta\n */\nexport interface IProblemCollector {\n /**\n * Returns the collected problems so far.\n */\n get problems(): ReadonlySet<IProblem>;\n}\n"]}
@@ -0,0 +1,48 @@
1
+ import type { IProblemMatcher, IProblemMatcherJson, IProblem } from '@rushstack/problem-matcher';
2
+ import type { ITerminalChunk } from './ITerminalChunk';
3
+ import { type ITerminalWritableOptions, TerminalWritable } from './TerminalWritable';
4
+ import type { IProblemCollector } from './IProblemCollector';
5
+ /**
6
+ * Constructor options for {@link ProblemCollector}.
7
+ * @beta
8
+ */
9
+ export interface IProblemCollectorOptions extends ITerminalWritableOptions {
10
+ /**
11
+ * The set of matchers that will be applied to each incoming line. Must contain at least one item.
12
+ */
13
+ matchers?: IProblemMatcher[];
14
+ /**
15
+ * VS Code style problem matcher definitions. These will be converted to
16
+ * {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} definitions.
17
+ */
18
+ matcherJson?: IProblemMatcherJson[];
19
+ }
20
+ /**
21
+ * A {@link TerminalWritable} that consumes line-oriented terminal output and extracts structured
22
+ * problems using one or more {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} instances.
23
+ *
24
+ * @remarks
25
+ * This collector expects that each incoming {@link ITerminalChunk} represents a single line terminated
26
+ * by a `"\n"` character (for example when preceded by {@link StderrLineTransform} / `StdioLineTransform`).
27
+ * If a chunk does not end with a newline an error is thrown to surface incorrect pipeline wiring early.
28
+ *
29
+ * @beta
30
+ */
31
+ export declare class ProblemCollector extends TerminalWritable implements IProblemCollector {
32
+ private readonly _matchers;
33
+ private readonly _problems;
34
+ constructor(options: IProblemCollectorOptions);
35
+ /**
36
+ * {@inheritdoc IProblemCollector}
37
+ */
38
+ get problems(): ReadonlySet<IProblem>;
39
+ /**
40
+ * {@inheritdoc TerminalWritable}
41
+ */
42
+ protected onWriteChunk(chunk: ITerminalChunk): void;
43
+ /**
44
+ * {@inheritdoc TerminalWritable}
45
+ */
46
+ protected onClose(): void;
47
+ }
48
+ //# sourceMappingURL=ProblemCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProblemCollector.d.ts","sourceRoot":"","sources":["../src/ProblemCollector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,iBAAiB;IACjF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;gBAEnC,OAAO,EAAE,wBAAwB;IAoBpD;;OAEG;IACH,IAAW,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,CAE3C;IAED;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAsBnD;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;CAgB1B"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
3
+ // See LICENSE in the project root for license information.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ProblemCollector = void 0;
6
+ const problem_matcher_1 = require("@rushstack/problem-matcher");
7
+ const TerminalWritable_1 = require("./TerminalWritable");
8
+ /**
9
+ * A {@link TerminalWritable} that consumes line-oriented terminal output and extracts structured
10
+ * problems using one or more {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} instances.
11
+ *
12
+ * @remarks
13
+ * This collector expects that each incoming {@link ITerminalChunk} represents a single line terminated
14
+ * by a `"\n"` character (for example when preceded by {@link StderrLineTransform} / `StdioLineTransform`).
15
+ * If a chunk does not end with a newline an error is thrown to surface incorrect pipeline wiring early.
16
+ *
17
+ * @beta
18
+ */
19
+ class ProblemCollector extends TerminalWritable_1.TerminalWritable {
20
+ constructor(options) {
21
+ super(options);
22
+ this._problems = new Set();
23
+ if (!options ||
24
+ ((!options.matchers || options.matchers.length === 0) &&
25
+ (!options.matcherJson || options.matcherJson.length === 0))) {
26
+ throw new Error('ProblemCollector requires at least one problem matcher.');
27
+ }
28
+ const fromJson = options.matcherJson
29
+ ? (0, problem_matcher_1.parseProblemMatchersJson)(options.matcherJson)
30
+ : [];
31
+ this._matchers = [...(options.matchers || []), ...fromJson];
32
+ if (this._matchers.length === 0) {
33
+ throw new Error('ProblemCollector requires at least one problem matcher.');
34
+ }
35
+ }
36
+ /**
37
+ * {@inheritdoc IProblemCollector}
38
+ */
39
+ get problems() {
40
+ return this._problems;
41
+ }
42
+ /**
43
+ * {@inheritdoc TerminalWritable}
44
+ */
45
+ onWriteChunk(chunk) {
46
+ const text = chunk.text;
47
+ if (text.length === 0 || text[text.length - 1] !== '\n') {
48
+ throw new Error('ProblemCollector expects chunks that were split into newline terminated lines. ' +
49
+ 'Invalid input: ' +
50
+ JSON.stringify(text));
51
+ }
52
+ for (const matcher of this._matchers) {
53
+ const problem = matcher.exec(text);
54
+ if (problem) {
55
+ const finalized = {
56
+ ...problem,
57
+ matcherName: matcher.name
58
+ };
59
+ this._problems.add(finalized);
60
+ }
61
+ }
62
+ }
63
+ /**
64
+ * {@inheritdoc TerminalWritable}
65
+ */
66
+ onClose() {
67
+ for (const matcher of this._matchers) {
68
+ if (matcher.flush) {
69
+ const flushed = matcher.flush();
70
+ if (flushed && flushed.length > 0) {
71
+ for (const problem of flushed) {
72
+ const finalized = {
73
+ ...problem,
74
+ matcherName: matcher.name
75
+ };
76
+ this._problems.add(finalized);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ exports.ProblemCollector = ProblemCollector;
84
+ //# sourceMappingURL=ProblemCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProblemCollector.js","sourceRoot":"","sources":["../src/ProblemCollector.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,gEAAsE;AAItE,yDAAqF;AAmBrF;;;;;;;;;;GAUG;AACH,MAAa,gBAAiB,SAAQ,mCAAgB;IAIpD,YAAmB,OAAiC;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHA,cAAS,GAAkB,IAAI,GAAG,EAAE,CAAC;QAKpD,IACE,CAAC,OAAO;YACR,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;gBACnD,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAC7D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,QAAQ,GAAsB,OAAO,CAAC,WAAW;YACrD,CAAC,CAAC,IAAA,0CAAwB,EAAC,OAAO,CAAC,WAAW,CAAC;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,KAAqB;QAC1C,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,iFAAiF;gBAC/E,iBAAiB;gBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAa;oBAC1B,GAAG,OAAO;oBACV,WAAW,EAAE,OAAO,CAAC,IAAI;iBAC1B,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACO,OAAO;QACf,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAe,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;wBAC9B,MAAM,SAAS,GAAa;4BAC1B,GAAG,OAAO;4BACV,WAAW,EAAE,OAAO,CAAC,IAAI;yBAC1B,CAAC;wBACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA3ED,4CA2EC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { parseProblemMatchersJson } from '@rushstack/problem-matcher';\nimport type { IProblemMatcher, IProblemMatcherJson, IProblem } from '@rushstack/problem-matcher';\n\nimport type { ITerminalChunk } from './ITerminalChunk';\nimport { type ITerminalWritableOptions, TerminalWritable } from './TerminalWritable';\nimport type { IProblemCollector } from './IProblemCollector';\n\n/**\n * Constructor options for {@link ProblemCollector}.\n * @beta\n */\nexport interface IProblemCollectorOptions extends ITerminalWritableOptions {\n /**\n * The set of matchers that will be applied to each incoming line. Must contain at least one item.\n */\n matchers?: IProblemMatcher[];\n /**\n * VS Code style problem matcher definitions. These will be converted to\n * {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} definitions.\n */\n matcherJson?: IProblemMatcherJson[];\n}\n\n/**\n * A {@link TerminalWritable} that consumes line-oriented terminal output and extracts structured\n * problems using one or more {@link @rushstack/problem-matcher#IProblemMatcher | IProblemMatcher} instances.\n *\n * @remarks\n * This collector expects that each incoming {@link ITerminalChunk} represents a single line terminated\n * by a `\"\\n\"` character (for example when preceded by {@link StderrLineTransform} / `StdioLineTransform`).\n * If a chunk does not end with a newline an error is thrown to surface incorrect pipeline wiring early.\n *\n * @beta\n */\nexport class ProblemCollector extends TerminalWritable implements IProblemCollector {\n private readonly _matchers: IProblemMatcher[];\n private readonly _problems: Set<IProblem> = new Set();\n\n public constructor(options: IProblemCollectorOptions) {\n super(options);\n\n if (\n !options ||\n ((!options.matchers || options.matchers.length === 0) &&\n (!options.matcherJson || options.matcherJson.length === 0))\n ) {\n throw new Error('ProblemCollector requires at least one problem matcher.');\n }\n\n const fromJson: IProblemMatcher[] = options.matcherJson\n ? parseProblemMatchersJson(options.matcherJson)\n : [];\n this._matchers = [...(options.matchers || []), ...fromJson];\n if (this._matchers.length === 0) {\n throw new Error('ProblemCollector requires at least one problem matcher.');\n }\n }\n\n /**\n * {@inheritdoc IProblemCollector}\n */\n public get problems(): ReadonlySet<IProblem> {\n return this._problems;\n }\n\n /**\n * {@inheritdoc TerminalWritable}\n */\n protected onWriteChunk(chunk: ITerminalChunk): void {\n const text: string = chunk.text;\n if (text.length === 0 || text[text.length - 1] !== '\\n') {\n throw new Error(\n 'ProblemCollector expects chunks that were split into newline terminated lines. ' +\n 'Invalid input: ' +\n JSON.stringify(text)\n );\n }\n\n for (const matcher of this._matchers) {\n const problem: IProblem | false = matcher.exec(text);\n if (problem) {\n const finalized: IProblem = {\n ...problem,\n matcherName: matcher.name\n };\n this._problems.add(finalized);\n }\n }\n }\n\n /**\n * {@inheritdoc TerminalWritable}\n */\n protected onClose(): void {\n for (const matcher of this._matchers) {\n if (matcher.flush) {\n const flushed: IProblem[] = matcher.flush();\n if (flushed && flushed.length > 0) {\n for (const problem of flushed) {\n const finalized: IProblem = {\n ...problem,\n matcherName: matcher.name\n };\n this._problems.add(finalized);\n }\n }\n }\n }\n }\n}\n"]}
package/lib/Terminal.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { ITerminal, TerminalWriteParameters } from './ITerminal';
6
6
  * @beta
7
7
  */
8
8
  export declare class Terminal implements ITerminal {
9
- private _providers;
9
+ private readonly _providers;
10
10
  constructor(provider: ITerminalProvider);
11
11
  /**
12
12
  * {@inheritdoc ITerminal.registerProvider}
@@ -57,7 +57,6 @@ export declare class Terminal implements ITerminal {
57
57
  */
58
58
  writeDebugLine(...messageParts: TerminalWriteParameters): void;
59
59
  private _writeSegmentsToProviders;
60
- private _serializeLegacyColorableSequence;
61
60
  private _normalizeWriteParameters;
62
61
  }
63
62
  //# sourceMappingURL=Terminal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Terminal.d.ts","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,KAAK,EAAE,SAAS,EAAyB,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAsC7F;;;;GAIG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,UAAU,CAAyB;gBAExB,QAAQ,EAAE,iBAAiB;IAK9C;;OAEG;IACI,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI1D;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAM5D;;OAEG;IACI,KAAK,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAK5D;;OAEG;IACI,SAAS,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKhE;;OAEG;IACI,YAAY,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAcnE;;OAEG;IACI,gBAAgB,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAcvE;;OAEG;IACI,UAAU,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAYjE;;OAEG;IACI,cAAc,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAYrE;;OAEG;IACI,YAAY,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKnE;;OAEG;IACI,gBAAgB,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKvE;;OAEG;IACI,UAAU,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKjE;;OAEG;IACI,cAAc,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKrE,OAAO,CAAC,yBAAyB;IA6DjC,OAAO,CAAC,iCAAiC;IA6KzC,OAAO,CAAC,yBAAyB;CAelC"}
1
+ {"version":3,"file":"Terminal.d.ts","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,KAAK,EAAE,SAAS,EAAyB,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG7F;;;;GAIG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAEjC,QAAQ,EAAE,iBAAiB;IAI9C;;OAEG;IACI,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI1D;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI5D;;OAEG;IACI,KAAK,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAK5D;;OAEG;IACI,SAAS,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKhE;;OAEG;IACI,YAAY,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAcnE;;OAEG;IACI,gBAAgB,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAcvE;;OAEG;IACI,UAAU,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAYjE;;OAEG;IACI,cAAc,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAYrE;;OAEG;IACI,YAAY,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKnE;;OAEG;IACI,gBAAgB,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKvE;;OAEG;IACI,UAAU,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKjE;;OAEG;IACI,cAAc,CAAC,GAAG,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAKrE,OAAO,CAAC,yBAAyB;IA0CjC,OAAO,CAAC,yBAAyB;CAelC"}
package/lib/Terminal.js CHANGED
@@ -6,33 +6,6 @@ exports.Terminal = void 0;
6
6
  const ITerminalProvider_1 = require("./ITerminalProvider");
7
7
  const Colorize_1 = require("./Colorize");
8
8
  const AnsiEscape_1 = require("./AnsiEscape");
9
- /**
10
- * Colors used with {@link ILegacyColorableSequence}.
11
- */
12
- var ColorValue;
13
- (function (ColorValue) {
14
- ColorValue[ColorValue["Black"] = 0] = "Black";
15
- ColorValue[ColorValue["Red"] = 1] = "Red";
16
- ColorValue[ColorValue["Green"] = 2] = "Green";
17
- ColorValue[ColorValue["Yellow"] = 3] = "Yellow";
18
- ColorValue[ColorValue["Blue"] = 4] = "Blue";
19
- ColorValue[ColorValue["Magenta"] = 5] = "Magenta";
20
- ColorValue[ColorValue["Cyan"] = 6] = "Cyan";
21
- ColorValue[ColorValue["White"] = 7] = "White";
22
- ColorValue[ColorValue["Gray"] = 8] = "Gray";
23
- })(ColorValue || (ColorValue = {}));
24
- /**
25
- * Text styles used with {@link ILegacyColorableSequence}.
26
- */
27
- var TextAttribute;
28
- (function (TextAttribute) {
29
- TextAttribute[TextAttribute["Bold"] = 0] = "Bold";
30
- TextAttribute[TextAttribute["Dim"] = 1] = "Dim";
31
- TextAttribute[TextAttribute["Underline"] = 2] = "Underline";
32
- TextAttribute[TextAttribute["Blink"] = 3] = "Blink";
33
- TextAttribute[TextAttribute["InvertColor"] = 4] = "InvertColor";
34
- TextAttribute[TextAttribute["Hidden"] = 5] = "Hidden";
35
- })(TextAttribute || (TextAttribute = {}));
36
9
  /**
37
10
  * This class facilitates writing to a console.
38
11
  *
@@ -40,8 +13,7 @@ var TextAttribute;
40
13
  */
41
14
  class Terminal {
42
15
  constructor(provider) {
43
- this._providers = new Set();
44
- this._providers.add(provider);
16
+ this._providers = new Set([provider]);
45
17
  }
46
18
  /**
47
19
  * {@inheritdoc ITerminal.registerProvider}
@@ -53,9 +25,7 @@ class Terminal {
53
25
  * {@inheritdoc ITerminal.unregisterProvider}
54
26
  */
55
27
  unregisterProvider(provider) {
56
- if (this._providers.has(provider)) {
57
- this._providers.delete(provider);
58
- }
28
+ this._providers.delete(provider);
59
29
  }
60
30
  /**
61
31
  * {@inheritdoc ITerminal.write}
@@ -132,26 +102,7 @@ class Terminal {
132
102
  this._writeSegmentsToProviders(parts, ITerminalProvider_1.TerminalProviderSeverity.debug, true);
133
103
  }
134
104
  _writeSegmentsToProviders(segments, severity, followedByEol) {
135
- const linesSegments = [[]];
136
- let currentLineSegments = linesSegments[0];
137
- for (const segment of segments) {
138
- if (typeof segment === 'string') {
139
- currentLineSegments.push(segment);
140
- }
141
- else {
142
- if (segment.isEol) {
143
- linesSegments.push([]);
144
- currentLineSegments = linesSegments[linesSegments.length - 1];
145
- }
146
- else {
147
- currentLineSegments.push(this._serializeLegacyColorableSequence(segment));
148
- }
149
- }
150
- }
151
- const lines = [];
152
- for (const lineSegments of linesSegments) {
153
- lines.push(lineSegments.join(''));
154
- }
105
+ const lines = [segments.join('')];
155
106
  if (followedByEol) {
156
107
  lines.push('');
157
108
  }
@@ -184,151 +135,6 @@ class Terminal {
184
135
  provider.write(textToWrite, severity);
185
136
  }
186
137
  }
187
- _serializeLegacyColorableSequence(segment) {
188
- const startColorCodes = [];
189
- const endColorCodes = [];
190
- switch (segment.foregroundColor) {
191
- case ColorValue.Black: {
192
- startColorCodes.push(Colorize_1.SgrParameterAttribute.BlackForeground);
193
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
194
- break;
195
- }
196
- case ColorValue.Red: {
197
- startColorCodes.push(Colorize_1.SgrParameterAttribute.RedForeground);
198
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
199
- break;
200
- }
201
- case ColorValue.Green: {
202
- startColorCodes.push(Colorize_1.SgrParameterAttribute.GreenForeground);
203
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
204
- break;
205
- }
206
- case ColorValue.Yellow: {
207
- startColorCodes.push(Colorize_1.SgrParameterAttribute.YellowForeground);
208
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
209
- break;
210
- }
211
- case ColorValue.Blue: {
212
- startColorCodes.push(Colorize_1.SgrParameterAttribute.BlueForeground);
213
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
214
- break;
215
- }
216
- case ColorValue.Magenta: {
217
- startColorCodes.push(Colorize_1.SgrParameterAttribute.MagentaForeground);
218
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
219
- break;
220
- }
221
- case ColorValue.Cyan: {
222
- startColorCodes.push(Colorize_1.SgrParameterAttribute.CyanForeground);
223
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
224
- break;
225
- }
226
- case ColorValue.White: {
227
- startColorCodes.push(Colorize_1.SgrParameterAttribute.WhiteForeground);
228
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
229
- break;
230
- }
231
- case ColorValue.Gray: {
232
- startColorCodes.push(Colorize_1.SgrParameterAttribute.GrayForeground);
233
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultForeground);
234
- break;
235
- }
236
- }
237
- switch (segment.backgroundColor) {
238
- case ColorValue.Black: {
239
- startColorCodes.push(Colorize_1.SgrParameterAttribute.BlackBackground);
240
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
241
- break;
242
- }
243
- case ColorValue.Red: {
244
- startColorCodes.push(Colorize_1.SgrParameterAttribute.RedBackground);
245
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
246
- break;
247
- }
248
- case ColorValue.Green: {
249
- startColorCodes.push(Colorize_1.SgrParameterAttribute.GreenBackground);
250
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
251
- break;
252
- }
253
- case ColorValue.Yellow: {
254
- startColorCodes.push(Colorize_1.SgrParameterAttribute.YellowBackground);
255
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
256
- break;
257
- }
258
- case ColorValue.Blue: {
259
- startColorCodes.push(Colorize_1.SgrParameterAttribute.BlueBackground);
260
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
261
- break;
262
- }
263
- case ColorValue.Magenta: {
264
- startColorCodes.push(Colorize_1.SgrParameterAttribute.MagentaBackground);
265
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
266
- break;
267
- }
268
- case ColorValue.Cyan: {
269
- startColorCodes.push(Colorize_1.SgrParameterAttribute.CyanBackground);
270
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
271
- break;
272
- }
273
- case ColorValue.White: {
274
- startColorCodes.push(Colorize_1.SgrParameterAttribute.WhiteBackground);
275
- endColorCodes.push(Colorize_1.SgrParameterAttribute.DefaultBackground);
276
- break;
277
- }
278
- case ColorValue.Gray: {
279
- startColorCodes.push(Colorize_1.SgrParameterAttribute.GrayBackground);
280
- endColorCodes.push(49);
281
- break;
282
- }
283
- }
284
- if (segment.textAttributes) {
285
- for (const textAttribute of segment.textAttributes) {
286
- switch (textAttribute) {
287
- case TextAttribute.Bold: {
288
- startColorCodes.push(Colorize_1.SgrParameterAttribute.Bold);
289
- endColorCodes.push(Colorize_1.SgrParameterAttribute.NormalColorOrIntensity);
290
- break;
291
- }
292
- case TextAttribute.Dim: {
293
- startColorCodes.push(Colorize_1.SgrParameterAttribute.Dim);
294
- endColorCodes.push(Colorize_1.SgrParameterAttribute.NormalColorOrIntensity);
295
- break;
296
- }
297
- case TextAttribute.Underline: {
298
- startColorCodes.push(Colorize_1.SgrParameterAttribute.Underline);
299
- endColorCodes.push(Colorize_1.SgrParameterAttribute.UnderlineOff);
300
- break;
301
- }
302
- case TextAttribute.Blink: {
303
- startColorCodes.push(Colorize_1.SgrParameterAttribute.Blink);
304
- endColorCodes.push(Colorize_1.SgrParameterAttribute.BlinkOff);
305
- break;
306
- }
307
- case TextAttribute.InvertColor: {
308
- startColorCodes.push(Colorize_1.SgrParameterAttribute.InvertColor);
309
- endColorCodes.push(Colorize_1.SgrParameterAttribute.InvertColorOff);
310
- break;
311
- }
312
- case TextAttribute.Hidden: {
313
- startColorCodes.push(Colorize_1.SgrParameterAttribute.Hidden);
314
- endColorCodes.push(Colorize_1.SgrParameterAttribute.HiddenOff);
315
- break;
316
- }
317
- }
318
- }
319
- }
320
- const resultSegments = [];
321
- for (let j = 0; j < startColorCodes.length; j++) {
322
- const code = startColorCodes[j];
323
- resultSegments.push(AnsiEscape_1.AnsiEscape.getEscapeSequenceForAnsiCode(code));
324
- }
325
- resultSegments.push(segment.text);
326
- for (let j = endColorCodes.length - 1; j >= 0; j--) {
327
- const code = endColorCodes[j];
328
- resultSegments.push(AnsiEscape_1.AnsiEscape.getEscapeSequenceForAnsiCode(code));
329
- }
330
- return resultSegments.join('');
331
- }
332
138
  _normalizeWriteParameters(parameters) {
333
139
  if (parameters.length === 0) {
334
140
  return { parts: [], options: {} };
@@ -1 +1 @@
1
- {"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { type ITerminalProvider, TerminalProviderSeverity } from './ITerminalProvider';\nimport { Colorize, SgrParameterAttribute } from './Colorize';\nimport type { ITerminal, ITerminalWriteOptions, TerminalWriteParameters } from './ITerminal';\nimport { AnsiEscape } from './AnsiEscape';\n\n/**\n * Colors used with {@link ILegacyColorableSequence}.\n */\nenum ColorValue {\n Black,\n Red,\n Green,\n Yellow,\n Blue,\n Magenta,\n Cyan,\n White,\n Gray\n}\n\n/**\n * Text styles used with {@link ILegacyColorableSequence}.\n */\nenum TextAttribute {\n Bold,\n Dim,\n Underline,\n Blink,\n InvertColor,\n Hidden\n}\n\ninterface ILegacyColorableSequence {\n text: string;\n isEol?: boolean;\n foregroundColor?: ColorValue;\n backgroundColor?: ColorValue;\n textAttributes?: TextAttribute[];\n}\n\n/**\n * This class facilitates writing to a console.\n *\n * @beta\n */\nexport class Terminal implements ITerminal {\n private _providers: Set<ITerminalProvider>;\n\n public constructor(provider: ITerminalProvider) {\n this._providers = new Set<ITerminalProvider>();\n this._providers.add(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.registerProvider}\n */\n public registerProvider(provider: ITerminalProvider): void {\n this._providers.add(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.unregisterProvider}\n */\n public unregisterProvider(provider: ITerminalProvider): void {\n if (this._providers.has(provider)) {\n this._providers.delete(provider);\n }\n }\n\n /**\n * {@inheritdoc ITerminal.write}\n */\n public write(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeLine}\n */\n public writeLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarning}\n */\n public writeWarning(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarningLine}\n */\n public writeWarningLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeError}\n */\n public writeError(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeErrorLine}\n */\n public writeErrorLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerbose}\n */\n public writeVerbose(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerboseLine}\n */\n public writeVerboseLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebug}\n */\n public writeDebug(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebugLine}\n */\n public writeDebugLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, true);\n }\n\n private _writeSegmentsToProviders(\n segments: (string | ILegacyColorableSequence)[],\n severity: TerminalProviderSeverity,\n followedByEol: boolean\n ): void {\n const linesSegments: string[][] = [[]];\n let currentLineSegments: string[] = linesSegments[0];\n for (const segment of segments) {\n if (typeof segment === 'string') {\n currentLineSegments.push(segment);\n } else {\n if (segment.isEol) {\n linesSegments.push([]);\n currentLineSegments = linesSegments[linesSegments.length - 1];\n } else {\n currentLineSegments.push(this._serializeLegacyColorableSequence(segment));\n }\n }\n }\n\n const lines: string[] = [];\n for (const lineSegments of linesSegments) {\n lines.push(lineSegments.join(''));\n }\n\n if (followedByEol) {\n lines.push('');\n }\n\n let linesWithoutColor: string[] | undefined;\n\n const concatenatedLinesWithColorByNewlineChar: Map<string, string> = new Map();\n const concatenatedLinesWithoutColorByNewlineChar: Map<string, string> = new Map();\n for (const provider of this._providers) {\n let textToWrite: string | undefined;\n const eol: string = provider.eolCharacter;\n if (provider.supportsColor) {\n textToWrite = concatenatedLinesWithColorByNewlineChar.get(eol);\n if (!textToWrite) {\n textToWrite = lines.join(eol);\n concatenatedLinesWithColorByNewlineChar.set(eol, textToWrite);\n }\n } else {\n textToWrite = concatenatedLinesWithoutColorByNewlineChar.get(eol);\n if (!textToWrite) {\n if (!linesWithoutColor) {\n linesWithoutColor = [];\n for (const line of lines) {\n linesWithoutColor.push(AnsiEscape.removeCodes(line));\n }\n }\n\n textToWrite = linesWithoutColor.join(eol);\n concatenatedLinesWithoutColorByNewlineChar.set(eol, textToWrite);\n }\n }\n\n provider.write(textToWrite, severity);\n }\n }\n\n private _serializeLegacyColorableSequence(segment: ILegacyColorableSequence): string {\n const startColorCodes: number[] = [];\n const endColorCodes: number[] = [];\n switch (segment.foregroundColor) {\n case ColorValue.Black: {\n startColorCodes.push(SgrParameterAttribute.BlackForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Red: {\n startColorCodes.push(SgrParameterAttribute.RedForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Green: {\n startColorCodes.push(SgrParameterAttribute.GreenForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Yellow: {\n startColorCodes.push(SgrParameterAttribute.YellowForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Blue: {\n startColorCodes.push(SgrParameterAttribute.BlueForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Magenta: {\n startColorCodes.push(SgrParameterAttribute.MagentaForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Cyan: {\n startColorCodes.push(SgrParameterAttribute.CyanForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.White: {\n startColorCodes.push(SgrParameterAttribute.WhiteForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Gray: {\n startColorCodes.push(SgrParameterAttribute.GrayForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n }\n\n switch (segment.backgroundColor) {\n case ColorValue.Black: {\n startColorCodes.push(SgrParameterAttribute.BlackBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Red: {\n startColorCodes.push(SgrParameterAttribute.RedBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Green: {\n startColorCodes.push(SgrParameterAttribute.GreenBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Yellow: {\n startColorCodes.push(SgrParameterAttribute.YellowBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Blue: {\n startColorCodes.push(SgrParameterAttribute.BlueBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Magenta: {\n startColorCodes.push(SgrParameterAttribute.MagentaBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Cyan: {\n startColorCodes.push(SgrParameterAttribute.CyanBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.White: {\n startColorCodes.push(SgrParameterAttribute.WhiteBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Gray: {\n startColorCodes.push(SgrParameterAttribute.GrayBackground);\n endColorCodes.push(49);\n break;\n }\n }\n\n if (segment.textAttributes) {\n for (const textAttribute of segment.textAttributes) {\n switch (textAttribute) {\n case TextAttribute.Bold: {\n startColorCodes.push(SgrParameterAttribute.Bold);\n endColorCodes.push(SgrParameterAttribute.NormalColorOrIntensity);\n break;\n }\n\n case TextAttribute.Dim: {\n startColorCodes.push(SgrParameterAttribute.Dim);\n endColorCodes.push(SgrParameterAttribute.NormalColorOrIntensity);\n break;\n }\n\n case TextAttribute.Underline: {\n startColorCodes.push(SgrParameterAttribute.Underline);\n endColorCodes.push(SgrParameterAttribute.UnderlineOff);\n break;\n }\n\n case TextAttribute.Blink: {\n startColorCodes.push(SgrParameterAttribute.Blink);\n endColorCodes.push(SgrParameterAttribute.BlinkOff);\n break;\n }\n\n case TextAttribute.InvertColor: {\n startColorCodes.push(SgrParameterAttribute.InvertColor);\n endColorCodes.push(SgrParameterAttribute.InvertColorOff);\n break;\n }\n\n case TextAttribute.Hidden: {\n startColorCodes.push(SgrParameterAttribute.Hidden);\n endColorCodes.push(SgrParameterAttribute.HiddenOff);\n break;\n }\n }\n }\n }\n\n const resultSegments: string[] = [];\n for (let j: number = 0; j < startColorCodes.length; j++) {\n const code: number = startColorCodes[j];\n resultSegments.push(AnsiEscape.getEscapeSequenceForAnsiCode(code));\n }\n\n resultSegments.push(segment.text);\n\n for (let j: number = endColorCodes.length - 1; j >= 0; j--) {\n const code: number = endColorCodes[j];\n resultSegments.push(AnsiEscape.getEscapeSequenceForAnsiCode(code));\n }\n\n return resultSegments.join('');\n }\n\n private _normalizeWriteParameters(parameters: TerminalWriteParameters): {\n parts: string[];\n options: ITerminalWriteOptions;\n } {\n if (parameters.length === 0) {\n return { parts: [], options: {} };\n } else {\n const lastParameter: string | ITerminalWriteOptions = parameters[parameters.length - 1];\n if (typeof lastParameter === 'string') {\n return { parts: parameters as string[], options: {} };\n } else {\n return { parts: parameters.slice(0, -1) as string[], options: lastParameter };\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { type ITerminalProvider, TerminalProviderSeverity } from './ITerminalProvider';\nimport { Colorize } from './Colorize';\nimport type { ITerminal, ITerminalWriteOptions, TerminalWriteParameters } from './ITerminal';\nimport { AnsiEscape } from './AnsiEscape';\n\n/**\n * This class facilitates writing to a console.\n *\n * @beta\n */\nexport class Terminal implements ITerminal {\n private readonly _providers: Set<ITerminalProvider>;\n\n public constructor(provider: ITerminalProvider) {\n this._providers = new Set<ITerminalProvider>([provider]);\n }\n\n /**\n * {@inheritdoc ITerminal.registerProvider}\n */\n public registerProvider(provider: ITerminalProvider): void {\n this._providers.add(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.unregisterProvider}\n */\n public unregisterProvider(provider: ITerminalProvider): void {\n this._providers.delete(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.write}\n */\n public write(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeLine}\n */\n public writeLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarning}\n */\n public writeWarning(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarningLine}\n */\n public writeWarningLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeError}\n */\n public writeError(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeErrorLine}\n */\n public writeErrorLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerbose}\n */\n public writeVerbose(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerboseLine}\n */\n public writeVerboseLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebug}\n */\n public writeDebug(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebugLine}\n */\n public writeDebugLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, true);\n }\n\n private _writeSegmentsToProviders(\n segments: string[],\n severity: TerminalProviderSeverity,\n followedByEol: boolean\n ): void {\n const lines: string[] = [segments.join('')];\n if (followedByEol) {\n lines.push('');\n }\n\n let linesWithoutColor: string[] | undefined;\n\n const concatenatedLinesWithColorByNewlineChar: Map<string, string> = new Map();\n const concatenatedLinesWithoutColorByNewlineChar: Map<string, string> = new Map();\n for (const provider of this._providers) {\n let textToWrite: string | undefined;\n const eol: string = provider.eolCharacter;\n if (provider.supportsColor) {\n textToWrite = concatenatedLinesWithColorByNewlineChar.get(eol);\n if (!textToWrite) {\n textToWrite = lines.join(eol);\n concatenatedLinesWithColorByNewlineChar.set(eol, textToWrite);\n }\n } else {\n textToWrite = concatenatedLinesWithoutColorByNewlineChar.get(eol);\n if (!textToWrite) {\n if (!linesWithoutColor) {\n linesWithoutColor = [];\n for (const line of lines) {\n linesWithoutColor.push(AnsiEscape.removeCodes(line));\n }\n }\n\n textToWrite = linesWithoutColor.join(eol);\n concatenatedLinesWithoutColorByNewlineChar.set(eol, textToWrite);\n }\n }\n\n provider.write(textToWrite, severity);\n }\n }\n\n private _normalizeWriteParameters(parameters: TerminalWriteParameters): {\n parts: string[];\n options: ITerminalWriteOptions;\n } {\n if (parameters.length === 0) {\n return { parts: [], options: {} };\n } else {\n const lastParameter: string | ITerminalWriteOptions = parameters[parameters.length - 1];\n if (typeof lastParameter === 'string') {\n return { parts: parameters as string[], options: {} };\n } else {\n return { parts: parameters.slice(0, -1) as string[], options: lastParameter };\n }\n }\n }\n}\n"]}
package/lib/index.d.ts CHANGED
@@ -33,4 +33,6 @@ export { StringBufferTerminalProvider, type IStringBufferOutputOptions } from '.
33
33
  export { PrefixProxyTerminalProvider, type IPrefixProxyTerminalProviderOptions, type IDynamicPrefixProxyTerminalProviderOptions, type IPrefixProxyTerminalProviderOptionsBase, type IStaticPrefixProxyTerminalProviderOptions } from './PrefixProxyTerminalProvider';
34
34
  export { NoOpTerminalProvider } from './NoOpTerminalProvider';
35
35
  export { TerminalStreamWritable, type ITerminalStreamWritableOptions } from './TerminalStreamWritable';
36
+ export { ProblemCollector, type IProblemCollectorOptions } from './ProblemCollector';
37
+ export type { IProblemCollector } from './IProblemCollector';
36
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,KAAK,qCAAqC,EAC1C,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,KAAK,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,KAAK,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,KAAK,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,KAAK,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAClF,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,KAAK,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EACL,4BAA4B,EAC5B,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,KAAK,mCAAmC,EACxC,KAAK,0CAA0C,EAC/C,KAAK,uCAAuC,EAC5C,KAAK,yCAAyC,EAC/C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,KAAK,8BAA8B,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,KAAK,qCAAqC,EAC1C,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,KAAK,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,KAAK,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,KAAK,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,KAAK,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAClF,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,KAAK,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EACL,4BAA4B,EAC5B,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,KAAK,mCAAmC,EACxC,KAAK,0CAA0C,EAC/C,KAAK,uCAAuC,EAC5C,KAAK,yCAAyC,EAC/C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,KAAK,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACrF,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
3
3
  // See LICENSE in the project root for license information.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.TerminalStreamWritable = exports.NoOpTerminalProvider = exports.PrefixProxyTerminalProvider = exports.StringBufferTerminalProvider = exports.ConsoleTerminalProvider = exports.TerminalProviderSeverity = exports.Colorize = exports.Terminal = exports.AnsiEscape = exports.TextRewriterTransform = exports.TextRewriter = exports.TerminalWritable = exports.TerminalTransform = exports.StdioWritable = exports.StdioSummarizer = exports.StderrLineTransform = exports.SplitterTransform = exports.RemoveColorsTextRewriter = exports.PrintUtilities = exports.DEFAULT_CONSOLE_WIDTH = exports.NormalizeNewlinesTextRewriter = exports.MockWritable = exports.TerminalChunkKind = exports.DiscardStdoutTransform = exports.CallbackWritable = void 0;
5
+ exports.ProblemCollector = exports.TerminalStreamWritable = exports.NoOpTerminalProvider = exports.PrefixProxyTerminalProvider = exports.StringBufferTerminalProvider = exports.ConsoleTerminalProvider = exports.TerminalProviderSeverity = exports.Colorize = exports.Terminal = exports.AnsiEscape = exports.TextRewriterTransform = exports.TextRewriter = exports.TerminalWritable = exports.TerminalTransform = exports.StdioWritable = exports.StdioSummarizer = exports.StderrLineTransform = exports.SplitterTransform = exports.RemoveColorsTextRewriter = exports.PrintUtilities = exports.DEFAULT_CONSOLE_WIDTH = exports.NormalizeNewlinesTextRewriter = exports.MockWritable = exports.TerminalChunkKind = exports.DiscardStdoutTransform = exports.CallbackWritable = void 0;
6
6
  /// <reference types="node" preserve="true" />
7
7
  /**
8
8
  * This library implements a system for processing human readable text that
@@ -62,4 +62,6 @@ var NoOpTerminalProvider_1 = require("./NoOpTerminalProvider");
62
62
  Object.defineProperty(exports, "NoOpTerminalProvider", { enumerable: true, get: function () { return NoOpTerminalProvider_1.NoOpTerminalProvider; } });
63
63
  var TerminalStreamWritable_1 = require("./TerminalStreamWritable");
64
64
  Object.defineProperty(exports, "TerminalStreamWritable", { enumerable: true, get: function () { return TerminalStreamWritable_1.TerminalStreamWritable; } });
65
+ var ProblemCollector_1 = require("./ProblemCollector");
66
+ Object.defineProperty(exports, "ProblemCollector", { enumerable: true, get: function () { return ProblemCollector_1.ProblemCollector; } });
65
67
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,8CAA8C;AAE9C;;;;;;;;GAQG;AAEH,uDAAqF;AAA7C,oHAAA,gBAAgB,OAAA;AACxD,mEAAuG;AAAzD,gIAAA,sBAAsB,OAAA;AACpE,mDAA0E;AAAjE,mHAAA,iBAAiB,OAAA;AAC1B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iFAGyC;AADvC,8IAAA,6BAA6B,OAAA;AAE/B,mDAAyE;AAAhE,uHAAA,qBAAqB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAC9C,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,yDAAwF;AAA/C,sHAAA,iBAAiB,OAAA;AAC1D,2DAA4F;AAAlD,yHAAA,mBAAmB,OAAA;AAC7D,qDAAkF;AAA3C,kHAAA,eAAe,OAAA;AACtD,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,yDAAwF;AAA/C,sHAAA,iBAAiB,OAAA;AAC1D,uDAAqF;AAA7C,oHAAA,gBAAgB,OAAA;AACxD,+CAAsE;AAArC,4GAAA,YAAY,OAAA;AAC7C,iEAAoG;AAAvD,8HAAA,qBAAqB,OAAA;AAClE,2CAAkF;AAAzE,wGAAA,UAAU,OAAA;AAEnB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,yDAAuF;AAAtD,6HAAA,wBAAwB,OAAA;AACzD,qEAA0G;AAAjG,kIAAA,uBAAuB,OAAA;AAChC,+EAGwC;AAFtC,4IAAA,4BAA4B,OAAA;AAG9B,6EAMuC;AALrC,0IAAA,2BAA2B,OAAA;AAM7B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAuG;AAA9F,gIAAA,sBAAsB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n/// <reference types=\"node\" preserve=\"true\" />\n\n/**\n * This library implements a system for processing human readable text that\n * will be output by console applications.\n *\n * @remarks\n * See the {@link TerminalWritable} documentation for an overview of the major concepts.\n *\n * @packageDocumentation\n */\n\nexport { type ICallbackWritableOptions, CallbackWritable } from './CallbackWritable';\nexport { type IDiscardStdoutTransformOptions, DiscardStdoutTransform } from './DiscardStdoutTransform';\nexport { TerminalChunkKind, type ITerminalChunk } from './ITerminalChunk';\nexport { MockWritable } from './MockWritable';\nexport {\n type INormalizeNewlinesTextRewriterOptions,\n NormalizeNewlinesTextRewriter\n} from './NormalizeNewlinesTextRewriter';\nexport { DEFAULT_CONSOLE_WIDTH, PrintUtilities } from './PrintUtilities';\nexport { RemoveColorsTextRewriter } from './RemoveColorsTextRewriter';\nexport { type ISplitterTransformOptions, SplitterTransform } from './SplitterTransform';\nexport { type IStdioLineTransformOptions, StderrLineTransform } from './StdioLineTransform';\nexport { type IStdioSummarizerOptions, StdioSummarizer } from './StdioSummarizer';\nexport { StdioWritable } from './StdioWritable';\nexport { type ITerminalTransformOptions, TerminalTransform } from './TerminalTransform';\nexport { type ITerminalWritableOptions, TerminalWritable } from './TerminalWritable';\nexport { type TextRewriterState, TextRewriter } from './TextRewriter';\nexport { type ITextRewriterTransformOptions, TextRewriterTransform } from './TextRewriterTransform';\nexport { AnsiEscape, type IAnsiEscapeConvertForTestsOptions } from './AnsiEscape';\nexport type { ITerminal, TerminalWriteParameters, ITerminalWriteOptions } from './ITerminal';\nexport { Terminal } from './Terminal';\nexport { Colorize } from './Colorize';\nexport { type ITerminalProvider, TerminalProviderSeverity } from './ITerminalProvider';\nexport { ConsoleTerminalProvider, type IConsoleTerminalProviderOptions } from './ConsoleTerminalProvider';\nexport {\n StringBufferTerminalProvider,\n type IStringBufferOutputOptions\n} from './StringBufferTerminalProvider';\nexport {\n PrefixProxyTerminalProvider,\n type IPrefixProxyTerminalProviderOptions,\n type IDynamicPrefixProxyTerminalProviderOptions,\n type IPrefixProxyTerminalProviderOptionsBase,\n type IStaticPrefixProxyTerminalProviderOptions\n} from './PrefixProxyTerminalProvider';\nexport { NoOpTerminalProvider } from './NoOpTerminalProvider';\nexport { TerminalStreamWritable, type ITerminalStreamWritableOptions } from './TerminalStreamWritable';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,8CAA8C;AAE9C;;;;;;;;GAQG;AAEH,uDAAqF;AAA7C,oHAAA,gBAAgB,OAAA;AACxD,mEAAuG;AAAzD,gIAAA,sBAAsB,OAAA;AACpE,mDAA0E;AAAjE,mHAAA,iBAAiB,OAAA;AAC1B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iFAGyC;AADvC,8IAAA,6BAA6B,OAAA;AAE/B,mDAAyE;AAAhE,uHAAA,qBAAqB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAC9C,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,yDAAwF;AAA/C,sHAAA,iBAAiB,OAAA;AAC1D,2DAA4F;AAAlD,yHAAA,mBAAmB,OAAA;AAC7D,qDAAkF;AAA3C,kHAAA,eAAe,OAAA;AACtD,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,yDAAwF;AAA/C,sHAAA,iBAAiB,OAAA;AAC1D,uDAAqF;AAA7C,oHAAA,gBAAgB,OAAA;AACxD,+CAAsE;AAArC,4GAAA,YAAY,OAAA;AAC7C,iEAAoG;AAAvD,8HAAA,qBAAqB,OAAA;AAClE,2CAAkF;AAAzE,wGAAA,UAAU,OAAA;AAEnB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,yDAAuF;AAAtD,6HAAA,wBAAwB,OAAA;AACzD,qEAA0G;AAAjG,kIAAA,uBAAuB,OAAA;AAChC,+EAGwC;AAFtC,4IAAA,4BAA4B,OAAA;AAG9B,6EAMuC;AALrC,0IAAA,2BAA2B,OAAA;AAM7B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAuG;AAA9F,gIAAA,sBAAsB,OAAA;AAC/B,uDAAqF;AAA5E,oHAAA,gBAAgB,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n/// <reference types=\"node\" preserve=\"true\" />\n\n/**\n * This library implements a system for processing human readable text that\n * will be output by console applications.\n *\n * @remarks\n * See the {@link TerminalWritable} documentation for an overview of the major concepts.\n *\n * @packageDocumentation\n */\n\nexport { type ICallbackWritableOptions, CallbackWritable } from './CallbackWritable';\nexport { type IDiscardStdoutTransformOptions, DiscardStdoutTransform } from './DiscardStdoutTransform';\nexport { TerminalChunkKind, type ITerminalChunk } from './ITerminalChunk';\nexport { MockWritable } from './MockWritable';\nexport {\n type INormalizeNewlinesTextRewriterOptions,\n NormalizeNewlinesTextRewriter\n} from './NormalizeNewlinesTextRewriter';\nexport { DEFAULT_CONSOLE_WIDTH, PrintUtilities } from './PrintUtilities';\nexport { RemoveColorsTextRewriter } from './RemoveColorsTextRewriter';\nexport { type ISplitterTransformOptions, SplitterTransform } from './SplitterTransform';\nexport { type IStdioLineTransformOptions, StderrLineTransform } from './StdioLineTransform';\nexport { type IStdioSummarizerOptions, StdioSummarizer } from './StdioSummarizer';\nexport { StdioWritable } from './StdioWritable';\nexport { type ITerminalTransformOptions, TerminalTransform } from './TerminalTransform';\nexport { type ITerminalWritableOptions, TerminalWritable } from './TerminalWritable';\nexport { type TextRewriterState, TextRewriter } from './TextRewriter';\nexport { type ITextRewriterTransformOptions, TextRewriterTransform } from './TextRewriterTransform';\nexport { AnsiEscape, type IAnsiEscapeConvertForTestsOptions } from './AnsiEscape';\nexport type { ITerminal, TerminalWriteParameters, ITerminalWriteOptions } from './ITerminal';\nexport { Terminal } from './Terminal';\nexport { Colorize } from './Colorize';\nexport { type ITerminalProvider, TerminalProviderSeverity } from './ITerminalProvider';\nexport { ConsoleTerminalProvider, type IConsoleTerminalProviderOptions } from './ConsoleTerminalProvider';\nexport {\n StringBufferTerminalProvider,\n type IStringBufferOutputOptions\n} from './StringBufferTerminalProvider';\nexport {\n PrefixProxyTerminalProvider,\n type IPrefixProxyTerminalProviderOptions,\n type IDynamicPrefixProxyTerminalProviderOptions,\n type IPrefixProxyTerminalProviderOptionsBase,\n type IStaticPrefixProxyTerminalProviderOptions\n} from './PrefixProxyTerminalProvider';\nexport { NoOpTerminalProvider } from './NoOpTerminalProvider';\nexport { TerminalStreamWritable, type ITerminalStreamWritableOptions } from './TerminalStreamWritable';\nexport { ProblemCollector, type IProblemCollectorOptions } from './ProblemCollector';\nexport type { IProblemCollector } from './IProblemCollector';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/terminal",
3
- "version": "0.15.4",
3
+ "version": "0.17.0",
4
4
  "description": "User interface primitives for console applications",
5
5
  "main": "lib/index.js",
6
6
  "typings": "dist/terminal.d.ts",
@@ -12,10 +12,11 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "supports-color": "~8.1.1",
15
- "@rushstack/node-core-library": "5.14.0"
15
+ "@rushstack/node-core-library": "5.15.0",
16
+ "@rushstack/problem-matcher": "0.1.0"
16
17
  },
17
18
  "devDependencies": {
18
- "@rushstack/heft": "0.74.0",
19
+ "@rushstack/heft": "0.74.3",
19
20
  "@types/supports-color": "8.1.3",
20
21
  "eslint": "~9.25.1",
21
22
  "decoupled-local-node-rig": "1.0.0"