procsi 0.6.0 → 0.6.2
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.
|
@@ -5,16 +5,6 @@ interface StdoutLike {
|
|
|
5
5
|
emit?: (event: string) => boolean;
|
|
6
6
|
}
|
|
7
7
|
type ReadFallbackDimensions = () => [number, number] | undefined;
|
|
8
|
-
/**
|
|
9
|
-
* Synchronise stdout.columns/rows and emit a resize event so Ink recalculates
|
|
10
|
-
* layout using current terminal dimensions.
|
|
11
|
-
*
|
|
12
|
-
* Primary source: stdout.getWindowSize().
|
|
13
|
-
* Fallback sources: `stty size` against /dev/tty, then COLUMNS/LINES env vars
|
|
14
|
-
* (for terminals where Node's width/height sources lag until later interaction).
|
|
15
|
-
*
|
|
16
|
-
* Returns true when valid dimensions were applied.
|
|
17
|
-
*/
|
|
18
8
|
export declare function syncStdoutDimensions(stdout: StdoutLike, readFallbackDimensions?: ReadFallbackDimensions): boolean;
|
|
19
9
|
export {};
|
|
20
10
|
//# sourceMappingURL=terminal-size.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-size.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/terminal-size.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AAED,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-size.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/terminal-size.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AAED,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;AAiIjE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,EAClB,sBAAsB,GAAE,sBAA+C,GACtE,OAAO,CA2ET"}
|
|
@@ -63,27 +63,106 @@ function readDimensionsFromStty() {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
+
function readDimensionsFromTput() {
|
|
67
|
+
if (process.platform === "win32") {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
let ttyFd;
|
|
71
|
+
try {
|
|
72
|
+
ttyFd = openSync("/dev/tty", "r");
|
|
73
|
+
const colsResult = spawnSync("tput", ["cols"], {
|
|
74
|
+
stdio: [ttyFd, "pipe", "ignore"],
|
|
75
|
+
encoding: "utf-8",
|
|
76
|
+
});
|
|
77
|
+
const linesResult = spawnSync("tput", ["lines"], {
|
|
78
|
+
stdio: [ttyFd, "pipe", "ignore"],
|
|
79
|
+
encoding: "utf-8",
|
|
80
|
+
});
|
|
81
|
+
if (colsResult.status !== 0 || linesResult.status !== 0) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
const columns = Number(colsResult.stdout?.trim());
|
|
85
|
+
const rows = Number(linesResult.stdout?.trim());
|
|
86
|
+
if (!isPositiveInteger(columns) || !isPositiveInteger(rows)) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return [columns, rows];
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
if (ttyFd !== undefined) {
|
|
96
|
+
closeSync(ttyFd);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
66
100
|
/**
|
|
67
101
|
* Synchronise stdout.columns/rows and emit a resize event so Ink recalculates
|
|
68
102
|
* layout using current terminal dimensions.
|
|
69
103
|
*
|
|
70
104
|
* Primary source: stdout.getWindowSize().
|
|
71
|
-
* Fallback sources: `stty size` against /dev/tty, then
|
|
72
|
-
* (for terminals where Node's width/height sources
|
|
105
|
+
* Fallback sources: `stty size` against /dev/tty, then `tput cols/lines`,
|
|
106
|
+
* then COLUMNS/LINES env vars (for terminals where Node's width/height sources
|
|
107
|
+
* lag until later interaction).
|
|
73
108
|
*
|
|
74
109
|
* Returns true when valid dimensions were applied.
|
|
75
110
|
*/
|
|
76
|
-
|
|
111
|
+
function readDimensionsFallback() {
|
|
112
|
+
return readDimensionsFromStty() ?? readDimensionsFromTput();
|
|
113
|
+
}
|
|
114
|
+
export function syncStdoutDimensions(stdout, readFallbackDimensions = readDimensionsFallback) {
|
|
115
|
+
const fromWindowSize = readDimensionsFromWindowSize(stdout);
|
|
77
116
|
const fromFallback = readFallbackDimensions();
|
|
78
117
|
const fromEnv = readDimensionsFromEnv();
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
118
|
+
const currentColumns = stdout.columns;
|
|
119
|
+
const currentRows = stdout.rows;
|
|
120
|
+
const currentDimensions = isPositiveInteger(currentColumns) && isPositiveInteger(currentRows)
|
|
121
|
+
? [currentColumns, currentRows]
|
|
122
|
+
: undefined;
|
|
123
|
+
const validCandidates = [fromWindowSize, fromFallback, fromEnv].filter(hasValidDimensions);
|
|
124
|
+
if (validCandidates.length === 0) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
let dimensions;
|
|
128
|
+
if (currentDimensions) {
|
|
129
|
+
const [currentCols, currentRows] = currentDimensions;
|
|
130
|
+
const nonShrinkingCandidates = validCandidates.filter(([cols, rows]) => cols >= currentCols && rows >= currentRows);
|
|
131
|
+
if (nonShrinkingCandidates.length === 0) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const firstNonShrinkingCandidate = nonShrinkingCandidates[0];
|
|
135
|
+
if (!firstNonShrinkingCandidate) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
dimensions = nonShrinkingCandidates.reduce((best, candidate) => {
|
|
139
|
+
const [bestCols, bestRows] = best;
|
|
140
|
+
const [candidateCols, candidateRows] = candidate;
|
|
141
|
+
if (candidateCols > bestCols)
|
|
142
|
+
return candidate;
|
|
143
|
+
if (candidateCols === bestCols && candidateRows > bestRows)
|
|
144
|
+
return candidate;
|
|
145
|
+
return best;
|
|
146
|
+
}, firstNonShrinkingCandidate);
|
|
147
|
+
if (dimensions[0] === currentCols && dimensions[1] === currentRows) {
|
|
148
|
+
process.env["COLUMNS"] = String(currentCols);
|
|
149
|
+
process.env["LINES"] = String(currentRows);
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// No current valid dimensions yet: prefer Node's direct window size first,
|
|
155
|
+
// then fallbacks.
|
|
156
|
+
if (hasValidDimensions(fromWindowSize)) {
|
|
157
|
+
dimensions = fromWindowSize;
|
|
158
|
+
}
|
|
159
|
+
else if (hasValidDimensions(fromFallback)) {
|
|
160
|
+
dimensions = fromFallback;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
dimensions = fromEnv;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
87
166
|
if (!hasValidDimensions(dimensions)) {
|
|
88
167
|
return false;
|
|
89
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-size.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/terminal-size.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"terminal-size.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/terminal-size.ts"],"names":[],"mappings":"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"}
|