@theia/markers 1.45.0 → 1.46.0-next.72
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/README.md +33 -33
- package/lib/browser/index.d.ts +2 -2
- package/lib/browser/index.js +29 -29
- package/lib/browser/marker-manager.d.ts +47 -47
- package/lib/browser/marker-manager.js +187 -187
- package/lib/browser/marker-tree-label-provider.d.ts +15 -15
- package/lib/browser/marker-tree-label-provider.js +84 -84
- package/lib/browser/marker-tree-label-provider.spec.d.ts +1 -1
- package/lib/browser/marker-tree-label-provider.spec.js +201 -201
- package/lib/browser/marker-tree-model.d.ts +12 -12
- package/lib/browser/marker-tree-model.js +60 -60
- package/lib/browser/marker-tree.d.ts +42 -42
- package/lib/browser/marker-tree.js +143 -143
- package/lib/browser/problem/problem-composite-tree-node.d.ts +11 -11
- package/lib/browser/problem/problem-composite-tree-node.js +76 -76
- package/lib/browser/problem/problem-composite-tree-node.spec.d.ts +1 -1
- package/lib/browser/problem/problem-composite-tree-node.spec.js +238 -238
- package/lib/browser/problem/problem-container.d.ts +8 -8
- package/lib/browser/problem/problem-container.js +46 -46
- package/lib/browser/problem/problem-contribution.d.ts +51 -51
- package/lib/browser/problem/problem-contribution.js +247 -247
- package/lib/browser/problem/problem-decorations-provider.d.ts +21 -21
- package/lib/browser/problem/problem-decorations-provider.js +95 -95
- package/lib/browser/problem/problem-decorator.d.ts +57 -57
- package/lib/browser/problem/problem-decorator.js +233 -233
- package/lib/browser/problem/problem-frontend-module.d.ts +4 -4
- package/lib/browser/problem/problem-frontend-module.js +55 -55
- package/lib/browser/problem/problem-layout-migrations.d.ts +5 -5
- package/lib/browser/problem/problem-layout-migrations.js +43 -43
- package/lib/browser/problem/problem-manager.d.ts +11 -11
- package/lib/browser/problem/problem-manager.js +53 -53
- package/lib/browser/problem/problem-manager.spec.d.ts +1 -1
- package/lib/browser/problem/problem-manager.spec.js +167 -167
- package/lib/browser/problem/problem-preferences.d.ts +13 -13
- package/lib/browser/problem/problem-preferences.js +56 -56
- package/lib/browser/problem/problem-selection.d.ts +12 -12
- package/lib/browser/problem/problem-selection.js +34 -34
- package/lib/browser/problem/problem-tabbar-decorator.d.ts +42 -42
- package/lib/browser/problem/problem-tabbar-decorator.js +160 -160
- package/lib/browser/problem/problem-tree-model.d.ts +32 -32
- package/lib/browser/problem/problem-tree-model.js +131 -131
- package/lib/browser/problem/problem-tree-model.spec.d.ts +1 -1
- package/lib/browser/problem/problem-tree-model.spec.js +172 -172
- package/lib/browser/problem/problem-utils.d.ts +44 -44
- package/lib/browser/problem/problem-utils.js +84 -84
- package/lib/browser/problem/problem-widget-tab-bar-decorator.d.ts +14 -14
- package/lib/browser/problem/problem-widget-tab-bar-decorator.js +69 -69
- package/lib/browser/problem/problem-widget.d.ts +46 -46
- package/lib/browser/problem/problem-widget.js +235 -235
- package/lib/common/marker.d.ts +16 -16
- package/lib/common/marker.js +31 -31
- package/lib/common/problem-marker.d.ts +9 -9
- package/lib/common/problem-marker.js +27 -27
- package/package.json +6 -6
- package/src/browser/index.ts +18 -18
- package/src/browser/marker-manager.ts +205 -205
- package/src/browser/marker-tree-label-provider.spec.ts +245 -245
- package/src/browser/marker-tree-label-provider.ts +75 -75
- package/src/browser/marker-tree-model.ts +47 -47
- package/src/browser/marker-tree.ts +154 -154
- package/src/browser/problem/problem-composite-tree-node.spec.ts +277 -277
- package/src/browser/problem/problem-composite-tree-node.ts +81 -81
- package/src/browser/problem/problem-container.ts +47 -47
- package/src/browser/problem/problem-contribution.ts +247 -247
- package/src/browser/problem/problem-decorations-provider.ts +72 -72
- package/src/browser/problem/problem-decorator.ts +222 -222
- package/src/browser/problem/problem-frontend-module.ts +64 -64
- package/src/browser/problem/problem-layout-migrations.ts +32 -32
- package/src/browser/problem/problem-manager.spec.ts +216 -216
- package/src/browser/problem/problem-manager.ts +51 -51
- package/src/browser/problem/problem-preferences.ts +64 -64
- package/src/browser/problem/problem-selection.ts +45 -45
- package/src/browser/problem/problem-tabbar-decorator.ts +151 -151
- package/src/browser/problem/problem-tree-model.spec.ts +189 -189
- package/src/browser/problem/problem-tree-model.ts +124 -124
- package/src/browser/problem/problem-utils.ts +90 -90
- package/src/browser/problem/problem-widget-tab-bar-decorator.ts +55 -55
- package/src/browser/problem/problem-widget.tsx +246 -246
- package/src/browser/style/index.css +92 -92
- package/src/common/marker.ts +53 -53
- package/src/common/problem-marker.ts +30 -30
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Event, Emitter } from '@theia/core/lib/common/event';
|
|
2
|
-
import { ProblemManager } from './problem-manager';
|
|
3
|
-
import { TabBarDecorator } from '@theia/core/lib/browser/shell/tab-bar-decorator';
|
|
4
|
-
import { Title, Widget } from '@theia/core/lib/browser';
|
|
5
|
-
import { WidgetDecoration } from '@theia/core/lib/browser/widget-decoration';
|
|
6
|
-
export declare class ProblemWidgetTabBarDecorator implements TabBarDecorator {
|
|
7
|
-
readonly id = "theia-problems-widget-tabbar-decorator";
|
|
8
|
-
protected readonly emitter: Emitter<void>;
|
|
9
|
-
protected readonly problemManager: ProblemManager;
|
|
10
|
-
protected init(): void;
|
|
11
|
-
decorate(title: Title<Widget>): WidgetDecoration.Data[];
|
|
12
|
-
get onDidChangeDecorations(): Event<void>;
|
|
13
|
-
protected fireDidChangeDecorations(): void;
|
|
14
|
-
}
|
|
1
|
+
import { Event, Emitter } from '@theia/core/lib/common/event';
|
|
2
|
+
import { ProblemManager } from './problem-manager';
|
|
3
|
+
import { TabBarDecorator } from '@theia/core/lib/browser/shell/tab-bar-decorator';
|
|
4
|
+
import { Title, Widget } from '@theia/core/lib/browser';
|
|
5
|
+
import { WidgetDecoration } from '@theia/core/lib/browser/widget-decoration';
|
|
6
|
+
export declare class ProblemWidgetTabBarDecorator implements TabBarDecorator {
|
|
7
|
+
readonly id = "theia-problems-widget-tabbar-decorator";
|
|
8
|
+
protected readonly emitter: Emitter<void>;
|
|
9
|
+
protected readonly problemManager: ProblemManager;
|
|
10
|
+
protected init(): void;
|
|
11
|
+
decorate(title: Title<Widget>): WidgetDecoration.Data[];
|
|
12
|
+
get onDidChangeDecorations(): Event<void>;
|
|
13
|
+
protected fireDidChangeDecorations(): void;
|
|
14
|
+
}
|
|
15
15
|
//# sourceMappingURL=problem-widget-tab-bar-decorator.d.ts.map
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2020 Ericsson and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
-
};
|
|
23
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
-
};
|
|
26
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.ProblemWidgetTabBarDecorator = void 0;
|
|
28
|
-
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
-
const event_1 = require("@theia/core/lib/common/event");
|
|
30
|
-
const problem_manager_1 = require("./problem-manager");
|
|
31
|
-
let ProblemWidgetTabBarDecorator = class ProblemWidgetTabBarDecorator {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.id = 'theia-problems-widget-tabbar-decorator';
|
|
34
|
-
this.emitter = new event_1.Emitter();
|
|
35
|
-
}
|
|
36
|
-
init() {
|
|
37
|
-
this.problemManager.onDidChangeMarkers(() => this.fireDidChangeDecorations());
|
|
38
|
-
}
|
|
39
|
-
decorate(title) {
|
|
40
|
-
if (title.owner.id === 'problems') {
|
|
41
|
-
const { infos, warnings, errors } = this.problemManager.getProblemStat();
|
|
42
|
-
const markerCount = infos + warnings + errors;
|
|
43
|
-
return markerCount > 0 ? [{ badge: markerCount }] : [];
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
return [];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
get onDidChangeDecorations() {
|
|
50
|
-
return this.emitter.event;
|
|
51
|
-
}
|
|
52
|
-
fireDidChangeDecorations() {
|
|
53
|
-
this.emitter.fire(undefined);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
__decorate([
|
|
57
|
-
(0, inversify_1.inject)(problem_manager_1.ProblemManager),
|
|
58
|
-
__metadata("design:type", problem_manager_1.ProblemManager)
|
|
59
|
-
], ProblemWidgetTabBarDecorator.prototype, "problemManager", void 0);
|
|
60
|
-
__decorate([
|
|
61
|
-
(0, inversify_1.postConstruct)(),
|
|
62
|
-
__metadata("design:type", Function),
|
|
63
|
-
__metadata("design:paramtypes", []),
|
|
64
|
-
__metadata("design:returntype", void 0)
|
|
65
|
-
], ProblemWidgetTabBarDecorator.prototype, "init", null);
|
|
66
|
-
ProblemWidgetTabBarDecorator = __decorate([
|
|
67
|
-
(0, inversify_1.injectable)()
|
|
68
|
-
], ProblemWidgetTabBarDecorator);
|
|
69
|
-
exports.ProblemWidgetTabBarDecorator = ProblemWidgetTabBarDecorator;
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2020 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.ProblemWidgetTabBarDecorator = void 0;
|
|
28
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
+
const event_1 = require("@theia/core/lib/common/event");
|
|
30
|
+
const problem_manager_1 = require("./problem-manager");
|
|
31
|
+
let ProblemWidgetTabBarDecorator = class ProblemWidgetTabBarDecorator {
|
|
32
|
+
constructor() {
|
|
33
|
+
this.id = 'theia-problems-widget-tabbar-decorator';
|
|
34
|
+
this.emitter = new event_1.Emitter();
|
|
35
|
+
}
|
|
36
|
+
init() {
|
|
37
|
+
this.problemManager.onDidChangeMarkers(() => this.fireDidChangeDecorations());
|
|
38
|
+
}
|
|
39
|
+
decorate(title) {
|
|
40
|
+
if (title.owner.id === 'problems') {
|
|
41
|
+
const { infos, warnings, errors } = this.problemManager.getProblemStat();
|
|
42
|
+
const markerCount = infos + warnings + errors;
|
|
43
|
+
return markerCount > 0 ? [{ badge: markerCount }] : [];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
get onDidChangeDecorations() {
|
|
50
|
+
return this.emitter.event;
|
|
51
|
+
}
|
|
52
|
+
fireDidChangeDecorations() {
|
|
53
|
+
this.emitter.fire(undefined);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, inversify_1.inject)(problem_manager_1.ProblemManager),
|
|
58
|
+
__metadata("design:type", problem_manager_1.ProblemManager)
|
|
59
|
+
], ProblemWidgetTabBarDecorator.prototype, "problemManager", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, inversify_1.postConstruct)(),
|
|
62
|
+
__metadata("design:type", Function),
|
|
63
|
+
__metadata("design:paramtypes", []),
|
|
64
|
+
__metadata("design:returntype", void 0)
|
|
65
|
+
], ProblemWidgetTabBarDecorator.prototype, "init", null);
|
|
66
|
+
ProblemWidgetTabBarDecorator = __decorate([
|
|
67
|
+
(0, inversify_1.injectable)()
|
|
68
|
+
], ProblemWidgetTabBarDecorator);
|
|
69
|
+
exports.ProblemWidgetTabBarDecorator = ProblemWidgetTabBarDecorator;
|
|
70
70
|
//# sourceMappingURL=problem-widget-tab-bar-decorator.js.map
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { ProblemManager } from './problem-manager';
|
|
3
|
-
import { ProblemTreeModel } from './problem-tree-model';
|
|
4
|
-
import { MarkerInfoNode, MarkerNode } from '../marker-tree';
|
|
5
|
-
import { TreeWidget, TreeProps, ContextMenuRenderer, TreeNode, NodeProps, TreeModel, ApplicationShell, Message } from '@theia/core/lib/browser';
|
|
6
|
-
import { DiagnosticSeverity } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
7
|
-
import * as React from '@theia/core/shared/react';
|
|
8
|
-
import { ProblemPreferences } from './problem-preferences';
|
|
9
|
-
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
10
|
-
export declare const PROBLEMS_WIDGET_ID = "problems";
|
|
11
|
-
export declare class ProblemWidget extends TreeWidget {
|
|
12
|
-
readonly model: ProblemTreeModel;
|
|
13
|
-
protected readonly toDisposeOnCurrentWidgetChanged: DisposableCollection;
|
|
14
|
-
protected readonly preferences: ProblemPreferences;
|
|
15
|
-
protected readonly shell: ApplicationShell;
|
|
16
|
-
protected readonly problemManager: ProblemManager;
|
|
17
|
-
constructor(treeProps: TreeProps, model: ProblemTreeModel, contextMenuRenderer: ContextMenuRenderer);
|
|
18
|
-
protected init(): void;
|
|
19
|
-
protected onActivateRequest(msg: Message): void;
|
|
20
|
-
protected updateFollowActiveEditor(): void;
|
|
21
|
-
protected followActiveEditor(): void;
|
|
22
|
-
protected autoRevealFromActiveEditor(): void;
|
|
23
|
-
storeState(): object;
|
|
24
|
-
protected superStoreState(): object;
|
|
25
|
-
restoreState(state: object): void;
|
|
26
|
-
protected superRestoreState(state: object): void;
|
|
27
|
-
protected tapNode(node?: TreeNode): void;
|
|
28
|
-
protected handleCopy(event: ClipboardEvent): void;
|
|
29
|
-
protected handleDown(event: KeyboardEvent): void;
|
|
30
|
-
protected handleUp(event: KeyboardEvent): void;
|
|
31
|
-
protected renderTree(model: TreeModel): React.ReactNode;
|
|
32
|
-
protected renderCaption(node: TreeNode, props: NodeProps): React.ReactNode;
|
|
33
|
-
protected renderTailDecorations(node: TreeNode, props: NodeProps): JSX.Element;
|
|
34
|
-
protected renderRemoveButton(node: TreeNode): React.ReactNode;
|
|
35
|
-
protected decorateMarkerNode(node: MarkerNode): React.ReactNode;
|
|
36
|
-
protected getSeverityClass(severity: DiagnosticSeverity): string;
|
|
37
|
-
protected decorateMarkerFileNode(node: MarkerInfoNode): React.ReactNode;
|
|
38
|
-
}
|
|
39
|
-
export declare class ProblemMarkerRemoveButton extends React.Component<{
|
|
40
|
-
model: ProblemTreeModel;
|
|
41
|
-
node: TreeNode;
|
|
42
|
-
}> {
|
|
43
|
-
render(): React.ReactNode;
|
|
44
|
-
protected readonly remove: (e: React.MouseEvent<HTMLElement>) => void;
|
|
45
|
-
protected doRemove(e: React.MouseEvent<HTMLElement>): void;
|
|
46
|
-
}
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ProblemManager } from './problem-manager';
|
|
3
|
+
import { ProblemTreeModel } from './problem-tree-model';
|
|
4
|
+
import { MarkerInfoNode, MarkerNode } from '../marker-tree';
|
|
5
|
+
import { TreeWidget, TreeProps, ContextMenuRenderer, TreeNode, NodeProps, TreeModel, ApplicationShell, Message } from '@theia/core/lib/browser';
|
|
6
|
+
import { DiagnosticSeverity } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
7
|
+
import * as React from '@theia/core/shared/react';
|
|
8
|
+
import { ProblemPreferences } from './problem-preferences';
|
|
9
|
+
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
10
|
+
export declare const PROBLEMS_WIDGET_ID = "problems";
|
|
11
|
+
export declare class ProblemWidget extends TreeWidget {
|
|
12
|
+
readonly model: ProblemTreeModel;
|
|
13
|
+
protected readonly toDisposeOnCurrentWidgetChanged: DisposableCollection;
|
|
14
|
+
protected readonly preferences: ProblemPreferences;
|
|
15
|
+
protected readonly shell: ApplicationShell;
|
|
16
|
+
protected readonly problemManager: ProblemManager;
|
|
17
|
+
constructor(treeProps: TreeProps, model: ProblemTreeModel, contextMenuRenderer: ContextMenuRenderer);
|
|
18
|
+
protected init(): void;
|
|
19
|
+
protected onActivateRequest(msg: Message): void;
|
|
20
|
+
protected updateFollowActiveEditor(): void;
|
|
21
|
+
protected followActiveEditor(): void;
|
|
22
|
+
protected autoRevealFromActiveEditor(): void;
|
|
23
|
+
storeState(): object;
|
|
24
|
+
protected superStoreState(): object;
|
|
25
|
+
restoreState(state: object): void;
|
|
26
|
+
protected superRestoreState(state: object): void;
|
|
27
|
+
protected tapNode(node?: TreeNode): void;
|
|
28
|
+
protected handleCopy(event: ClipboardEvent): void;
|
|
29
|
+
protected handleDown(event: KeyboardEvent): void;
|
|
30
|
+
protected handleUp(event: KeyboardEvent): void;
|
|
31
|
+
protected renderTree(model: TreeModel): React.ReactNode;
|
|
32
|
+
protected renderCaption(node: TreeNode, props: NodeProps): React.ReactNode;
|
|
33
|
+
protected renderTailDecorations(node: TreeNode, props: NodeProps): JSX.Element;
|
|
34
|
+
protected renderRemoveButton(node: TreeNode): React.ReactNode;
|
|
35
|
+
protected decorateMarkerNode(node: MarkerNode): React.ReactNode;
|
|
36
|
+
protected getSeverityClass(severity: DiagnosticSeverity): string;
|
|
37
|
+
protected decorateMarkerFileNode(node: MarkerInfoNode): React.ReactNode;
|
|
38
|
+
}
|
|
39
|
+
export declare class ProblemMarkerRemoveButton extends React.Component<{
|
|
40
|
+
model: ProblemTreeModel;
|
|
41
|
+
node: TreeNode;
|
|
42
|
+
}> {
|
|
43
|
+
render(): React.ReactNode;
|
|
44
|
+
protected readonly remove: (e: React.MouseEvent<HTMLElement>) => void;
|
|
45
|
+
protected doRemove(e: React.MouseEvent<HTMLElement>): void;
|
|
46
|
+
}
|
|
47
47
|
//# sourceMappingURL=problem-widget.d.ts.map
|