linecraft 0.5.4 → 0.5.6
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/LICENSE +21 -59
- package/README.md +30 -0
- package/lib/components/code-debug.d.ts +2 -0
- package/lib/components/code-debug.d.ts.map +1 -1
- package/lib/components/code-debug.js +104 -198
- package/lib/components/code-debug.js.map +1 -1
- package/lib/components/code-debug.test.d.ts +2 -0
- package/lib/components/code-debug.test.d.ts.map +1 -0
- package/lib/components/code-debug.test.js +245 -0
- package/lib/components/code-debug.test.js.map +1 -0
- package/lib/components/fill.d.ts +2 -1
- package/lib/components/fill.d.ts.map +1 -1
- package/lib/components/fill.js.map +1 -1
- package/lib/components/progress-bar-grid.d.ts.map +1 -1
- package/lib/components/progress-bar-grid.js +5 -3
- package/lib/components/progress-bar-grid.js.map +1 -1
- package/lib/components/prompt.js +1 -1
- package/lib/components/prompt.js.map +1 -1
- package/lib/components/section.js +1 -1
- package/lib/components/section.js.map +1 -1
- package/lib/components/segments.js +4 -4
- package/lib/components/segments.js.map +1 -1
- package/lib/components/spinner.d.ts +2 -1
- package/lib/components/spinner.d.ts.map +1 -1
- package/lib/components/spinner.js +1 -1
- package/lib/components/spinner.js.map +1 -1
- package/lib/components/styled.d.ts +3 -2
- package/lib/components/styled.d.ts.map +1 -1
- package/lib/components/styled.js +1 -1
- package/lib/components/styled.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/layout/grid.d.ts.map +1 -1
- package/lib/layout/grid.js +1 -2
- package/lib/layout/grid.js.map +1 -1
- package/lib/layout/grid.test.js +3 -3
- package/lib/layout/grid.test.js.map +1 -1
- package/lib/native/region.test.js +1 -1
- package/lib/native/region.test.js.map +1 -1
- package/lib/region-resize.test.js +3 -3
- package/lib/region-resize.test.js.map +1 -1
- package/lib/types.d.ts +6 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/colors.d.ts.map +1 -1
- package/lib/utils/colors.js +50 -8
- package/lib/utils/colors.js.map +1 -1
- package/lib/utils/colors.test.js.map +1 -1
- package/lib/utils/debug-log.js +1 -1
- package/lib/utils/debug-log.js.map +1 -1
- package/lib/utils/terminal-theme.d.ts +17 -28
- package/lib/utils/terminal-theme.d.ts.map +1 -1
- package/lib/utils/terminal-theme.js +66 -38
- package/lib/utils/terminal-theme.js.map +1 -1
- package/lib/utils/text.d.ts +62 -2
- package/lib/utils/text.d.ts.map +1 -1
- package/lib/utils/text.js +396 -37
- package/lib/utils/text.js.map +1 -1
- package/lib/utils/text.test.d.ts +2 -0
- package/lib/utils/text.test.d.ts.map +1 -0
- package/lib/utils/text.test.js +237 -0
- package/lib/utils/text.test.js.map +1 -0
- package/lib/utils/wait-for-spacebar.js +1 -1
- package/lib/utils/wait-for-spacebar.js.map +1 -1
- package/package.json +2 -8
package/LICENSE
CHANGED
|
@@ -1,59 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
b. Organizations
|
|
23
|
-
The organization is Fair Labor Compliant, defined as:
|
|
24
|
-
- The CEO’s (or highest-paid executive’s) total annual compensation is no more than fifteen (15) times the total annual compensation of the organization’s median employee, and
|
|
25
|
-
- Eligibility is assessed on a consolidated basis, including all parent and subsidiary entities under common control or brand identity.
|
|
26
|
-
|
|
27
|
-
Definitions
|
|
28
|
-
- “Total annual compensation” includes wages, bonuses, overtime, equity or stock-based compensation, and employer-provided benefits.
|
|
29
|
-
- “Median employee” refers to the worker whose compensation is the exact midpoint of all workers, including part-time and contract labor when they constitute a majority of operational personnel.
|
|
30
|
-
- “Operational use” means deployment or use of the software in any product, system, or service that provides business value, revenue, or ongoing internal operations beyond evaluation, whether used directly or indirectly, including when incorporated as a dependency or component of another product, system, or service.
|
|
31
|
-
|
|
32
|
-
5. Paid License Requirement
|
|
33
|
-
If an individual or organization does not meet the Fair Compensation Condition at the time of operational use, they must obtain a paid license from the author(s) or an authorized licensing provider such as fllicense.org before such use begins.
|
|
34
|
-
|
|
35
|
-
Unauthorized operational use constitutes copyright infringement.
|
|
36
|
-
|
|
37
|
-
6. Self-Attestation and Documentation
|
|
38
|
-
Licensees utilizing the software under the free-use provisions must self-attest compliance and maintain documentation supporting eligibility. Upon request by the author(s) or a licensing provider, documentation must be provided within 30 days.
|
|
39
|
-
|
|
40
|
-
Failure to provide documentation is considered a material breach of this license.
|
|
41
|
-
|
|
42
|
-
7. Change in Eligibility / Cure Period
|
|
43
|
-
If a licensee’s eligibility changes, they must:
|
|
44
|
-
- Either purchase a paid license within 30 days, or
|
|
45
|
-
- Immediately cease operational use of the software.
|
|
46
|
-
|
|
47
|
-
Restoring eligibility restores the rights granted under this license.
|
|
48
|
-
|
|
49
|
-
8. No Misrepresentation
|
|
50
|
-
Licensees may not claim to be Fair Labor Compliant, nor use the Fair Labor License name or abbreviations in sales, marketing, or investor materials, unless they meet the Fair Compensation Condition.
|
|
51
|
-
|
|
52
|
-
9. No Warranty
|
|
53
|
-
This software is provided “as is”, without warranty of any kind, express or implied, including merchantability, fitness for a particular purpose, and noninfringement. Use is at your own risk.
|
|
54
|
-
|
|
55
|
-
10. Limitation of Liability
|
|
56
|
-
In no event shall the author(s) be liable for any claim, damages, or liability arising from the software or its use.
|
|
57
|
-
|
|
58
|
-
11. Governing Law
|
|
59
|
-
This license is governed by the copyright law applicable in the jurisdiction of the author(s).
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Linecraft Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -142,6 +142,36 @@ ref.delete(); // Remove it
|
|
|
142
142
|
r.destroy(true); // Clean up and restore terminal (true = clear first)
|
|
143
143
|
```
|
|
144
144
|
|
|
145
|
+
## Semantic Themes
|
|
146
|
+
|
|
147
|
+
Linecraft includes a built-in semantic theme system that automatically adapts colors based on whether the terminal is in light or dark mode. Instead of hardcoding ANSI colors, you can use semantic tokens:
|
|
148
|
+
|
|
149
|
+
- `base`: The default text color (gray in both themes)
|
|
150
|
+
- `muted`: Dimmed text for line numbers or separators (dimmed white on dark, dimmed gray on light)
|
|
151
|
+
- `highlight`: Emphasized text (white on dark, bold black on light)
|
|
152
|
+
- `accent`: Primary accent color (bold blue in both themes)
|
|
153
|
+
- `location`: For file paths and locations (magenta in both themes)
|
|
154
|
+
- `success`: Success messages (bright green on dark, green on light)
|
|
155
|
+
- `warning`: Warning messages (bright yellow on dark, bright magenta on light)
|
|
156
|
+
- `error`: Error messages (bright red on dark, red on light)
|
|
157
|
+
- `info`: Informational messages (blue in both themes)
|
|
158
|
+
|
|
159
|
+
You can use these tokens anywhere a `Color` is expected:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
import { Styled } from 'linecraft';
|
|
163
|
+
|
|
164
|
+
// Automatically uses appropriate color based on terminal theme
|
|
165
|
+
const text = Styled({ color: 'base' }, 'Auto-themed text');
|
|
166
|
+
const error = Styled({ color: 'error' }, 'Error message');
|
|
167
|
+
const path = Styled({ color: 'location' }, '/path/to/file.ts');
|
|
168
|
+
|
|
169
|
+
// You can also resolve them manually if needed
|
|
170
|
+
import { autoColor, autoStyle } from 'linecraft';
|
|
171
|
+
const color = autoColor('warning'); // Returns just the color
|
|
172
|
+
const style = autoStyle('accent'); // Returns full TextStyle (color, bold, etc.)
|
|
173
|
+
```
|
|
174
|
+
|
|
145
175
|
## Components
|
|
146
176
|
|
|
147
177
|
### Styled
|
|
@@ -21,6 +21,8 @@ export interface CodeDebugOptions {
|
|
|
21
21
|
errorCode?: string;
|
|
22
22
|
/** Short message to show connected to underline (optional) */
|
|
23
23
|
shortMessage?: string;
|
|
24
|
+
/** Placement of short message: 'left' or 'right' (default: 'right', auto: 'left' when target is near end of long line) */
|
|
25
|
+
shortMessagePlacement?: 'left' | 'right' | 'auto';
|
|
24
26
|
/** Short file path to display */
|
|
25
27
|
filePath: string;
|
|
26
28
|
/** Full resolved file path for clickable link */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-debug.d.ts","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"code-debug.d.ts","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAShE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,qHAAqH;IACrH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0HAA0H;IAC1H,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClD,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA8W9D"}
|
|
@@ -1,123 +1,27 @@
|
|
|
1
1
|
// Code debug component for displaying code errors/warnings with context
|
|
2
2
|
import { callComponent } from '../component.js';
|
|
3
3
|
import { applyStyle } from '../utils/colors.js';
|
|
4
|
-
import { stripAnsi, truncateToWidth, countVisibleChars, splitAtVisiblePos } from '../utils/text.js';
|
|
4
|
+
import { stripAnsi, truncateToWidth, truncateFocusRange, mapColumnToDisplay, countVisibleChars, splitAtVisiblePos } from '../utils/text.js';
|
|
5
5
|
import { fileLink } from '../utils/file-link.js';
|
|
6
6
|
import { Styled } from './styled.js';
|
|
7
7
|
import { grid as Grid } from '../layout/grid.js';
|
|
8
|
-
import {
|
|
9
|
-
function calculateVisibleRange(code, availableWidth, targetStartCol, targetEndCol, maxColumn) {
|
|
10
|
-
const plainCode = stripAnsi(code);
|
|
11
|
-
const codeLength = plainCode.length;
|
|
12
|
-
// If code fits, show everything
|
|
13
|
-
if (codeLength <= availableWidth) {
|
|
14
|
-
return {
|
|
15
|
-
startCol: 1,
|
|
16
|
-
endCol: codeLength,
|
|
17
|
-
hasEllipsisStart: false,
|
|
18
|
-
hasEllipsisEnd: false,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
// If maxColumn is set, we need to ensure we don't show beyond it
|
|
22
|
-
const effectiveMaxCol = maxColumn ? Math.min(maxColumn, codeLength) : codeLength;
|
|
23
|
-
// Calculate how much space we need for the target columns
|
|
24
|
-
const targetWidth = targetEndCol
|
|
25
|
-
? targetEndCol - targetStartCol + 1
|
|
26
|
-
: 1; // Just the arrow
|
|
27
|
-
// If target doesn't fit, we'll need to truncate
|
|
28
|
-
if (targetWidth > availableWidth - 6) { // -6 for ellipsis on both sides if needed
|
|
29
|
-
// Target is too wide, just show middle with ellipsis
|
|
30
|
-
const midPoint = Math.floor((availableWidth - 6) / 2);
|
|
31
|
-
const startCol = Math.max(1, targetStartCol - midPoint);
|
|
32
|
-
const endCol = Math.min(effectiveMaxCol, startCol + availableWidth - 6);
|
|
33
|
-
return {
|
|
34
|
-
startCol,
|
|
35
|
-
endCol,
|
|
36
|
-
hasEllipsisStart: startCol > 1,
|
|
37
|
-
hasEllipsisEnd: endCol < codeLength,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// Try to center the target in the available space
|
|
41
|
-
// First, determine if we'll need ellipsis on both sides
|
|
42
|
-
const willNeedEllipsisStart = targetStartCol > 1 || (targetStartCol === 1 && codeLength > availableWidth);
|
|
43
|
-
const willNeedEllipsisEnd = (targetEndCol ?? targetStartCol) < codeLength || codeLength > availableWidth;
|
|
44
|
-
const ellipsisWidth = (willNeedEllipsisStart ? 3 : 0) + (willNeedEllipsisEnd ? 3 : 0);
|
|
45
|
-
const effectiveAvailableWidth = availableWidth - ellipsisWidth;
|
|
46
|
-
const padding = Math.floor((effectiveAvailableWidth - targetWidth) / 2);
|
|
47
|
-
let startCol = Math.max(1, targetStartCol - padding);
|
|
48
|
-
let endCol = Math.min(effectiveMaxCol, startCol + effectiveAvailableWidth - 1);
|
|
49
|
-
// Adjust if we hit boundaries
|
|
50
|
-
if (endCol - startCol + 1 > effectiveAvailableWidth) {
|
|
51
|
-
endCol = startCol + effectiveAvailableWidth - 1;
|
|
52
|
-
}
|
|
53
|
-
if (endCol > effectiveMaxCol) {
|
|
54
|
-
endCol = effectiveMaxCol;
|
|
55
|
-
startCol = Math.max(1, endCol - effectiveAvailableWidth + 1);
|
|
56
|
-
}
|
|
57
|
-
if (startCol < 1) {
|
|
58
|
-
startCol = 1;
|
|
59
|
-
endCol = Math.min(effectiveMaxCol, effectiveAvailableWidth);
|
|
60
|
-
}
|
|
61
|
-
// Check if we need ellipsis
|
|
62
|
-
const hasEllipsisStart = startCol > 1;
|
|
63
|
-
const hasEllipsisEnd = endCol < codeLength;
|
|
64
|
-
return {
|
|
65
|
-
startCol,
|
|
66
|
-
endCol,
|
|
67
|
-
hasEllipsisStart,
|
|
68
|
-
hasEllipsisEnd,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Truncate code line to show specific column range with ellipsis
|
|
73
|
-
*/
|
|
74
|
-
function truncateCodeLine(code, visibleRange, availableWidth) {
|
|
75
|
-
const { startCol, endCol, hasEllipsisStart, hasEllipsisEnd } = visibleRange;
|
|
76
|
-
const plainCode = stripAnsi(code);
|
|
77
|
-
if (!hasEllipsisStart && !hasEllipsisEnd) {
|
|
78
|
-
// No truncation needed, but ensure it fits
|
|
79
|
-
return truncateToWidth(code, availableWidth);
|
|
80
|
-
}
|
|
81
|
-
// Extract the visible portion (1-based columns in plain text)
|
|
82
|
-
const visiblePlain = plainCode.substring(startCol - 1, endCol);
|
|
83
|
-
// Calculate available width for code (minus ellipsis)
|
|
84
|
-
const ellipsisWidth = (hasEllipsisStart ? 3 : 0) + (hasEllipsisEnd ? 3 : 0);
|
|
85
|
-
const codeWidth = availableWidth - ellipsisWidth;
|
|
86
|
-
// Truncate the visible portion if it's still too wide
|
|
87
|
-
let truncatedPlain = visiblePlain;
|
|
88
|
-
if (stripAnsi(visiblePlain).length > codeWidth) {
|
|
89
|
-
truncatedPlain = truncateToWidth(visiblePlain, codeWidth);
|
|
90
|
-
}
|
|
91
|
-
if (hasEllipsisStart && hasEllipsisEnd) {
|
|
92
|
-
// Truncate both ends - show the visible range portion (no middle ellipsis)
|
|
93
|
-
// The visible range already contains the target columns, just truncate if needed
|
|
94
|
-
return `...${truncatedPlain}...`;
|
|
95
|
-
}
|
|
96
|
-
else if (hasEllipsisStart) {
|
|
97
|
-
return `...${truncatedPlain}`;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return `${truncatedPlain}...`;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
8
|
+
import { autoColor } from '../utils/terminal-theme.js';
|
|
103
9
|
/**
|
|
104
10
|
* CodeDebug component - displays code errors/warnings with context
|
|
105
11
|
*/
|
|
106
12
|
export function CodeDebug(options) {
|
|
107
13
|
return (ctx) => {
|
|
108
|
-
const { startLine, startColumn, endColumn, lineBefore, errorLine, lineAfter, message, errorCode, shortMessage, filePath, fullPath, baseDir, type = 'error', maxColumn, } = options;
|
|
14
|
+
const { startLine, startColumn, endColumn, lineBefore, errorLine, lineAfter, message, errorCode, shortMessage, shortMessagePlacement = 'auto', filePath, fullPath, baseDir, type = 'error', maxColumn, } = options;
|
|
109
15
|
// If availableWidth is Infinity (during Grid measurement), use a reasonable default
|
|
110
16
|
// Otherwise use the actual available width
|
|
111
17
|
const availableWidth = Number.isFinite(ctx.availableWidth) ? ctx.availableWidth : 80;
|
|
112
18
|
// Color scheme based on type
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
info: { primary: 'cyan', secondary: 'brightCyan', message: 'brightCyan' },
|
|
19
|
+
const colorScheme = {
|
|
20
|
+
primary: type,
|
|
21
|
+
message: type,
|
|
117
22
|
};
|
|
118
|
-
const colorScheme = colors[type];
|
|
119
23
|
// Get appropriate line number color based on terminal theme (muted color)
|
|
120
|
-
const
|
|
24
|
+
const lineNumColor = 'muted';
|
|
121
25
|
// Calculate available width for code (reserve space for line numbers, separator, and spaces)
|
|
122
26
|
// Calculate the maximum width needed for any line number that will be displayed
|
|
123
27
|
const lineNumbersToCheck = [startLine];
|
|
@@ -129,68 +33,34 @@ export function CodeDebug(options) {
|
|
|
129
33
|
}
|
|
130
34
|
const lineNumWidth = Math.max(...lineNumbersToCheck.map(n => String(n).length));
|
|
131
35
|
const codeAreaWidth = availableWidth - lineNumWidth - 3; // -3 for " │ " (space, pipe, space)
|
|
132
|
-
//
|
|
36
|
+
// Use truncateFocusRange to show the target range with proper truncation
|
|
133
37
|
const targetEndCol = endColumn ?? startColumn;
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
// Helper to map original column to display position
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
// Visible range is in the middle
|
|
147
|
-
if (originalCol < visibleRange.startCol) {
|
|
148
|
-
return 1; // Before visible, point to start
|
|
149
|
-
}
|
|
150
|
-
else if (originalCol > visibleRange.endCol) {
|
|
151
|
-
return truncatedPlain.length; // After visible, point to end
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// In visible range: position = 4 (for "...") + (col - startCol + 1)
|
|
155
|
-
return 4 + (originalCol - visibleRange.startCol);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else if (visibleRange.hasEllipsisStart) {
|
|
159
|
-
// Format: "...code"
|
|
160
|
-
if (originalCol < visibleRange.startCol) {
|
|
161
|
-
return 1;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
return 4 + (originalCol - visibleRange.startCol);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
else if (visibleRange.hasEllipsisEnd) {
|
|
168
|
-
// Format: "code..."
|
|
169
|
-
if (originalCol > visibleRange.endCol) {
|
|
170
|
-
return truncatedPlain.length;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
return originalCol;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// No ellipsis, direct mapping
|
|
178
|
-
return originalCol;
|
|
179
|
-
}
|
|
38
|
+
const defaultCodeColor = autoColor('base');
|
|
39
|
+
const styledErrorLine = applyStyle(errorLine, { color: defaultCodeColor });
|
|
40
|
+
const truncateResult = truncateFocusRange(styledErrorLine, codeAreaWidth, startColumn, targetEndCol, maxColumn);
|
|
41
|
+
const truncatedErrorLine = truncateResult.text;
|
|
42
|
+
const visibleStartCol = truncateResult.visibleStartCol;
|
|
43
|
+
const visibleEndCol = truncateResult.visibleEndCol;
|
|
44
|
+
const rangeStartCol = truncateResult.rangeStartCol;
|
|
45
|
+
const rangeEndCol = truncateResult.rangeEndCol;
|
|
46
|
+
// Helper to map original column to display position using the actual visible range
|
|
47
|
+
const mapColumnToDisplayLocal = (originalCol) => {
|
|
48
|
+
const result = mapColumnToDisplay(errorLine, truncatedErrorLine, visibleStartCol, visibleEndCol, originalCol, rangeStartCol, rangeEndCol);
|
|
49
|
+
return result;
|
|
180
50
|
};
|
|
181
51
|
// Build the code block lines
|
|
182
52
|
const codeLines = [];
|
|
183
53
|
// Icon and message at the top (Oxlint style)
|
|
184
54
|
// Use grid to handle wrapping automatically
|
|
185
55
|
const icon = type === 'error' ? '✖' : type === 'warning' ? '⚠' : 'ℹ';
|
|
186
|
-
const iconStyled = applyStyle(icon, { color: colorScheme.
|
|
56
|
+
const iconStyled = applyStyle(icon, { color: colorScheme.primary });
|
|
187
57
|
// Build the combined message text: errorCode (if present) + message
|
|
188
58
|
// The errorCode should be underlined and bold, followed by ": ", then the message
|
|
189
59
|
// All parts should have the message color
|
|
190
60
|
let messageText;
|
|
191
61
|
if (errorCode) {
|
|
192
62
|
const errorCodeStyled = applyStyle(errorCode, {
|
|
193
|
-
color: colorScheme.
|
|
63
|
+
color: colorScheme.primary,
|
|
194
64
|
underline: true,
|
|
195
65
|
bold: true
|
|
196
66
|
});
|
|
@@ -226,27 +96,27 @@ export function CodeDebug(options) {
|
|
|
226
96
|
: filePath;
|
|
227
97
|
// Build location line parts
|
|
228
98
|
const curveIndent = ' '.repeat(lineNumWidth + 1);
|
|
229
|
-
const curve = applyStyle('╭─', { color: '
|
|
99
|
+
const curve = applyStyle('╭─', { color: 'muted' });
|
|
230
100
|
const bracketOpen = '[';
|
|
231
101
|
const colon1 = ':';
|
|
232
|
-
//
|
|
233
|
-
const
|
|
234
|
-
const lineNum = applyStyle(String(startLine), { color:
|
|
102
|
+
// Use location color (magenta) for line/column numbers
|
|
103
|
+
const locationNumColor = 'location';
|
|
104
|
+
const lineNum = applyStyle(String(startLine), { color: locationNumColor });
|
|
235
105
|
const colon2 = ':';
|
|
236
|
-
const colNum = applyStyle(String(startColumn), { color:
|
|
106
|
+
const colNum = applyStyle(String(startColumn), { color: locationNumColor });
|
|
237
107
|
const bracketClose = ']';
|
|
238
108
|
// Calculate max width for path: available width minus fixed parts
|
|
239
109
|
// Fixed parts: curveIndent + ╭─ + [ + : + lineNum + : + colNum + ]
|
|
240
110
|
// Note: lineNum and colNum are now styled, so we need to use plain strings for width calculation
|
|
241
111
|
const lineNumPlain = String(startLine);
|
|
242
112
|
const colNumPlain = String(startColumn);
|
|
243
|
-
const fixedParts = curveIndent +
|
|
113
|
+
const fixedParts = curveIndent + '╭─[' + lineNumPlain + ':' + colNumPlain + ']';
|
|
244
114
|
const fixedPartsWidth = countVisibleChars(fixedParts);
|
|
245
115
|
// Ensure pathMaxWidth is finite and reasonable (cap at 40 to prevent extremely long paths)
|
|
246
116
|
const pathMaxWidth = Math.max(10, Math.min(40, availableWidth - fixedPartsWidth));
|
|
247
117
|
// Create clickable file link with styling and max width constraint
|
|
248
118
|
const pathWithLink = fileLink(fullPath, pathText);
|
|
249
|
-
const pathStyled = Styled({ color: '
|
|
119
|
+
const pathStyled = Styled({ color: 'accent', overflow: 'ellipsis-start', max: pathMaxWidth }, pathWithLink);
|
|
250
120
|
// Use Grid with auto columns (content-based width, no padding)
|
|
251
121
|
// Template: [curveIndent (auto)][╭─ (auto)][[ (auto)][path (auto)][: (auto)][line (auto)][: (auto)][column (auto)][] (auto)]
|
|
252
122
|
const locationGrid = Grid({
|
|
@@ -270,50 +140,60 @@ export function CodeDebug(options) {
|
|
|
270
140
|
const beforeLineNum = String(startLine - 1);
|
|
271
141
|
const beforeLineNumPadded = beforeLineNum.padStart(lineNumWidth);
|
|
272
142
|
const truncatedBefore = truncateToWidth(lineBefore, codeAreaWidth);
|
|
273
|
-
// Make non-error lines slightly dimmer
|
|
274
|
-
const dimmedBefore =
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
codeLines.push(applyStyle(`${beforeLineNumPadded} `, { color: lineNumberColor, dim: isDarkTerminal() }) +
|
|
278
|
-
applyStyle('│ ', { color: 'brightBlack' }) + dimmedBefore);
|
|
143
|
+
// Make non-error lines slightly dimmer
|
|
144
|
+
const dimmedBefore = applyStyle(truncatedBefore, { color: 'muted' });
|
|
145
|
+
codeLines.push(applyStyle(`${beforeLineNumPadded} `, { color: lineNumColor }) +
|
|
146
|
+
applyStyle('│ ', { color: 'muted' }) + dimmedBefore);
|
|
279
147
|
}
|
|
280
148
|
// Error line (with space before code)
|
|
281
|
-
//
|
|
149
|
+
// truncatedErrorLine already has the default color applied
|
|
282
150
|
let highlightedErrorLine = truncatedErrorLine;
|
|
151
|
+
// Highlight the error range if endColumn is specified
|
|
283
152
|
if (endColumn && endColumn > startColumn) {
|
|
284
|
-
|
|
285
|
-
const
|
|
153
|
+
// Map columns to display positions in the truncated (and styled) text
|
|
154
|
+
const highlightStart = mapColumnToDisplayLocal(startColumn); // 1-based display position
|
|
155
|
+
const highlightEnd = mapColumnToDisplayLocal(endColumn); // 1-based display position
|
|
286
156
|
// Split at highlight start and end positions (splitAtVisiblePos uses 0-based)
|
|
287
|
-
const { before: beforeHighlight } = splitAtVisiblePos(
|
|
288
|
-
const remainingAfterStart = truncatedErrorLine.substring(beforeHighlight.length);
|
|
157
|
+
const { before: beforeHighlight, after: remainingAfterStart } = splitAtVisiblePos(highlightedErrorLine, highlightStart - 1);
|
|
289
158
|
const highlightLength = highlightEnd - highlightStart + 1;
|
|
290
|
-
const { before: highlightRange } = splitAtVisiblePos(remainingAfterStart, highlightLength);
|
|
291
|
-
|
|
292
|
-
//
|
|
293
|
-
const
|
|
294
|
-
const
|
|
295
|
-
highlightedErrorLine = beforeHighlight +
|
|
159
|
+
const { before: highlightRange, after: afterHighlight } = splitAtVisiblePos(remainingAfterStart, highlightLength);
|
|
160
|
+
// Strip existing ANSI codes from highlight range and apply new highlight color
|
|
161
|
+
// This ensures the highlight color properly overrides the default code color
|
|
162
|
+
const highlightPlain = stripAnsi(highlightRange);
|
|
163
|
+
const highlightedRangeStyled = applyStyle(highlightPlain, { color: 'highlight' });
|
|
164
|
+
highlightedErrorLine = beforeHighlight + highlightedRangeStyled + afterHighlight;
|
|
296
165
|
}
|
|
297
166
|
const errorLineNum = String(startLine);
|
|
298
167
|
const errorLineNumPadded = errorLineNum.padStart(lineNumWidth);
|
|
299
|
-
let errorLineDisplay = applyStyle(`${errorLineNumPadded} `, { color:
|
|
300
|
-
applyStyle('│ ', { color: '
|
|
168
|
+
let errorLineDisplay = applyStyle(`${errorLineNumPadded} `, { color: lineNumColor }) +
|
|
169
|
+
applyStyle('│ ', { color: 'muted' }) + highlightedErrorLine;
|
|
301
170
|
codeLines.push(errorLineDisplay);
|
|
302
171
|
// Underline line (Oxlint style)
|
|
303
172
|
// Format: "[lineNumWidth spaces][1 space][│][1 space][dots][underline]"
|
|
304
173
|
// Calculate positions relative to the code (after "│ ")
|
|
305
|
-
const underlineStartInCode =
|
|
306
|
-
const underlineEndInCode = endColumn ?
|
|
174
|
+
const underlineStartInCode = mapColumnToDisplayLocal(startColumn);
|
|
175
|
+
const underlineEndInCode = endColumn ? mapColumnToDisplayLocal(endColumn) : underlineStartInCode;
|
|
307
176
|
const underlineLength = underlineEndInCode - underlineStartInCode + 1;
|
|
308
|
-
// Spaces to align with the start of the underline
|
|
177
|
+
// Spaces to align with the start of the underline
|
|
178
|
+
// underlineStartInCode is position in truncated text (which is what's displayed after │ )
|
|
179
|
+
// The ellipsis is PART of the displayed text, so we use the position directly
|
|
180
|
+
// Position is 1-based, so spacesBefore = underlineStartInCode - 1
|
|
309
181
|
const spacesBefore = Math.max(0, underlineStartInCode - 1);
|
|
310
182
|
// Underline line: line number width + space + │ + space + spaces + underline
|
|
311
|
-
let indicatorLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: '
|
|
183
|
+
let indicatorLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
312
184
|
' '.repeat(spacesBefore);
|
|
313
185
|
// Calculate connectCol for short message (if present)
|
|
186
|
+
// This is the position where the T-bar (┬) will be, which is the middle of the underline
|
|
187
|
+
// Use positions in the truncated text (which is what's displayed)
|
|
314
188
|
const connectCol = shortMessage && underlineLength > 1
|
|
315
189
|
? underlineStartInCode + Math.floor(underlineLength / 2)
|
|
316
190
|
: underlineStartInCode;
|
|
191
|
+
// Calculate the position of the T-bar within the indicator line (after │ and space)
|
|
192
|
+
// Prefix length: lineNumWidth + 3
|
|
193
|
+
// spacesBefore: number of spaces after prefix
|
|
194
|
+
// Underline starts at: lineNumWidth + 3 + spacesBefore + 1
|
|
195
|
+
// T-bar is at: (start of underline) + (connectCol - underlineStartInCode)
|
|
196
|
+
const connectPosInIndicator = (lineNumWidth + 3) + spacesBefore + (connectCol - underlineStartInCode) + 1;
|
|
317
197
|
const underlineStartCol = underlineStartInCode;
|
|
318
198
|
const underlineEndCol = underlineEndInCode;
|
|
319
199
|
if (endColumn && underlineEndCol > underlineStartCol) {
|
|
@@ -322,7 +202,7 @@ export function CodeDebug(options) {
|
|
|
322
202
|
const underlineLen = underlineLength;
|
|
323
203
|
if (shortMessage) {
|
|
324
204
|
// With short message: T-bar in the middle
|
|
325
|
-
const connectPosInUnderline = connectCol -
|
|
205
|
+
const connectPosInUnderline = connectCol - underlineStartInCode; // Position within the underline
|
|
326
206
|
if (underlineLen >= 3) {
|
|
327
207
|
// Build underline with T-bar: left curve, dashes, T-bar, dashes, right curve
|
|
328
208
|
// Total length = 1 (┖) + left dashes + 1 (┬) + right dashes + 1 (┚) = underlineLen
|
|
@@ -335,8 +215,8 @@ export function CodeDebug(options) {
|
|
|
335
215
|
indicatorLine += applyStyle('┖' + leftPart + '┬' + rightPart + '┚', { color: colorScheme.primary });
|
|
336
216
|
}
|
|
337
217
|
else if (underlineLen === 2) {
|
|
338
|
-
//
|
|
339
|
-
indicatorLine += applyStyle('
|
|
218
|
+
// Exactly 2 characters: just the brackets, no T-bar
|
|
219
|
+
indicatorLine += applyStyle('┖┚', { color: colorScheme.primary });
|
|
340
220
|
}
|
|
341
221
|
else {
|
|
342
222
|
// Single character, just use T
|
|
@@ -357,28 +237,54 @@ export function CodeDebug(options) {
|
|
|
357
237
|
codeLines.push(indicatorLine);
|
|
358
238
|
// Short message connected to underline (if provided)
|
|
359
239
|
if (shortMessage) {
|
|
360
|
-
//
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
240
|
+
// Determine placement: 'auto' means calculate which side has more available space
|
|
241
|
+
let placement = shortMessagePlacement === 'auto'
|
|
242
|
+
? (() => {
|
|
243
|
+
// Available space on left: from start of code area to connectCol
|
|
244
|
+
const availableLeft = connectCol - 1;
|
|
245
|
+
// Available space on right: from connectCol to end of code area
|
|
246
|
+
const availableRight = codeAreaWidth - connectCol;
|
|
247
|
+
// Place on left if left has more space, otherwise right
|
|
248
|
+
return availableLeft >= availableRight ? 'left' : 'right';
|
|
249
|
+
})()
|
|
250
|
+
: shortMessagePlacement;
|
|
251
|
+
if (placement === 'left') {
|
|
252
|
+
// Short message on left: message + connector pointing right (curved up)
|
|
253
|
+
// The ╯ should be at connectPosInIndicator
|
|
254
|
+
const messageWidth = countVisibleChars(shortMessage);
|
|
255
|
+
const linePrefixWidth = lineNumWidth + 3; // lineNumWidth + space + │ + space
|
|
256
|
+
const spacesBeforeMessage = Math.max(0, connectPosInIndicator - linePrefixWidth - messageWidth - 4);
|
|
257
|
+
const shortMessageLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
258
|
+
' '.repeat(spacesBeforeMessage) +
|
|
259
|
+
applyStyle(shortMessage, { color: colorScheme.message }) +
|
|
260
|
+
applyStyle(' ──╯', { color: colorScheme.primary });
|
|
261
|
+
codeLines.push(shortMessageLine);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// Short message on right: connector pointing left (curved up) + message
|
|
265
|
+
// The ╰ should be at connectPosInIndicator
|
|
266
|
+
const linePrefixWidth = lineNumWidth + 3; // lineNumWidth + space + │ + space
|
|
267
|
+
const spacesBeforeConnector = Math.max(0, connectPosInIndicator - linePrefixWidth - 1);
|
|
268
|
+
const shortMessageLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
269
|
+
' '.repeat(spacesBeforeConnector) +
|
|
270
|
+
applyStyle('╰── ', { color: colorScheme.primary }) +
|
|
271
|
+
applyStyle(shortMessage, { color: colorScheme.message });
|
|
272
|
+
codeLines.push(shortMessageLine);
|
|
273
|
+
}
|
|
366
274
|
}
|
|
367
275
|
// Line after (if exists)
|
|
368
276
|
if (lineAfter !== null && lineAfter !== undefined) {
|
|
369
277
|
const afterLineNum = String(startLine + 1);
|
|
370
278
|
const afterLineNumPadded = afterLineNum.padStart(lineNumWidth);
|
|
371
279
|
const truncatedAfter = truncateToWidth(lineAfter, codeAreaWidth);
|
|
372
|
-
// Make non-error lines slightly dimmer
|
|
373
|
-
const dimmedAfter =
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
codeLines.push(applyStyle(`${afterLineNumPadded} `, { color: lineNumberColor, dim: isDarkTerminal() }) +
|
|
377
|
-
applyStyle('│ ', { color: 'brightBlack' }) + dimmedAfter);
|
|
280
|
+
// Make non-error lines slightly dimmer
|
|
281
|
+
const dimmedAfter = applyStyle(truncatedAfter, { color: 'muted' });
|
|
282
|
+
codeLines.push(applyStyle(`${afterLineNumPadded} `, { color: lineNumColor }) +
|
|
283
|
+
applyStyle('│ ', { color: 'muted' }) + dimmedAfter);
|
|
378
284
|
}
|
|
379
285
|
// Bottom curve to close the box (Oxlint style)
|
|
380
286
|
const bottomCurveIndent = ' '.repeat(lineNumWidth + 1);
|
|
381
|
-
const bottomCurve = bottomCurveIndent + applyStyle('╰─', { color: '
|
|
287
|
+
const bottomCurve = bottomCurveIndent + applyStyle('╰─', { color: 'muted' });
|
|
382
288
|
codeLines.push(bottomCurve);
|
|
383
289
|
// Return lines directly (no Section wrapper for Oxlint style)
|
|
384
290
|
return codeLines;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-debug.js","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code-debug.js","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"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"}
|