Skip to content

Commit 3dc6662

Browse files
committed
fix: code review
1 parent 8f8d046 commit 3dc6662

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

packages/runtime/src/webcontainer/terminal-config.ts

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ export class TerminalPanel implements ITerminal {
6666

6767
private _terminal?: ITerminal;
6868
private _process?: WebContainerProcess;
69-
private _data: string[] = [];
70-
private _input: string[] = [];
69+
private _data: { data: string; type: 'input' | 'echo' }[] = [];
7170
private _onData?: (data: string) => void;
7271

7372
constructor(
@@ -128,24 +127,18 @@ export class TerminalPanel implements ITerminal {
128127
this._terminal.reset();
129128
} else {
130129
this._data = [];
131-
this._input = [];
132130
}
133131
}
134132

135-
/**
136-
* Write data to stdout.
137-
*
138-
* @internal
139-
*/
133+
/** @internal*/
140134
write(data: string) {
141135
if (this._terminal) {
142136
this._terminal.write(data);
143137
} else {
144-
this._data.push(data);
138+
this._data.push({ data, type: 'echo' });
145139
}
146140
}
147141

148-
/** Write data to stdin */
149142
input(data: string) {
150143
if (this.type !== 'terminal') {
151144
throw new Error('Cannot write data to output-only terminal');
@@ -154,11 +147,10 @@ export class TerminalPanel implements ITerminal {
154147
if (this._terminal) {
155148
this._terminal.input(data);
156149
} else {
157-
this._input.push(data);
150+
this._data.push({ data, type: 'input' });
158151
}
159152
}
160153

161-
/** Callback invoked when data is written to stdin */
162154
onData(callback: (data: string) => void) {
163155
if (this._terminal) {
164156
this._terminal.onData(callback);
@@ -187,16 +179,15 @@ export class TerminalPanel implements ITerminal {
187179
* @param terminal The terminal.
188180
*/
189181
attachTerminal(terminal: ITerminal) {
190-
for (const data of this._data) {
191-
terminal.write(data);
192-
}
193-
194-
for (const data of this._input) {
195-
terminal.input(data);
182+
for (const { type, data } of this._data) {
183+
if (type === 'echo') {
184+
terminal.write(data);
185+
} else {
186+
terminal.input(data);
187+
}
196188
}
197189

198190
this._data = [];
199-
this._input = [];
200191
this._terminal = terminal;
201192

202193
if (this._onData) {

0 commit comments

Comments
 (0)