Skip to content

Commit 4484751

Browse files
save file
1 parent 0aca0f2 commit 4484751

1 file changed

Lines changed: 135 additions & 78 deletions

File tree

utils/misc/nodejs-terminal/v2.0/nodejs-terminal-v2.0.html

Lines changed: 135 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@
280280
var term;
281281
var shell;
282282
var input;
283+
var output;
283284
var user_dir;
284285
var cwd_abs;
285286
var cwd;
@@ -394,7 +395,7 @@
394395
snippet.css.insert_rule([':host {height:100%;}','#root {height:100%}']);
395396
snippet.editor.css.insert_rule([':host {flex:1}','#root {height:100%}']);
396397

397-
snippet.ctx = {snippet,webcontainer,viewport,vm,shell,term};
398+
snippet.ctx = {snippet,webcontainer,viewport,vm,shell,term,input,output};
398399

399400

400401
var attrs = {component:'page'};
@@ -653,8 +654,10 @@
653654
var theme = {};
654655

655656
theme.light = {
656-
foreground : 'black',//'#53676d',
657-
background : 'hsl(45,86%,98%)',//'#fbf3db',
657+
658+
foreground : 'black', //'#53676d',
659+
660+
background : 'hsl(45,86%,98%)', //'#fbf3db',
658661
cursor : '#3a4d53',
659662
selectionBackground : '#cfcebe',
660663
black : '#e9e4d0',
@@ -673,6 +676,7 @@
673676
brightMagenta : '#8f0075',
674677
brightCyan : '#00938d',
675678
brightWhite : '#ffffff'
679+
676680
};
677681

678682

@@ -690,82 +694,85 @@
690694
white : '\x1b[37m',
691695

692696
brightBlack : '\x1b[90m',
693-
brightRed: '\x1b[91m',
694-
brightGreen: '\x1b[92m',
695-
brightYellow: '\x1b[93m',
696-
brightBlue: '\x1b[94m',
697-
brightMagenta: '\x1b[95m',
698-
brightCyan: '\x1b[96m',
699-
brightWhite: '\x1b[97m',
700-
701-
bgRed: '\x1b[41m',
702-
bgGreen: '\x1b[42m',
703-
bgYellow: '\x1b[43m',
704-
bgBlue: '\x1b[44m',
705-
bgMagenta: '\x1b[45m',
706-
bgCyan: '\x1b[46m',
707-
bgWhite: '\x1b[47m',
708-
709-
bgBrightRed : '\x1b[101m',
710-
bgBrightGreen : '\x1b[102m',
711-
bgBrightYellow : '\x1b[103m',
712-
bgBrightBlue : '\x1b[104m',
713-
bgBrightMagenta : '\x1b[105m',
714-
bgBrightCyan : '\x1b[106m',
715-
bgBrightWhite : '\x1b[107m',
716-
717-
bold : '\x1b[1m',
718-
dim : '\x1b[2m',
719-
italic : '\x1b[3m',
720-
underline : '\x1b[4m',
721-
inverse : '\x1b[7m',
722-
hidden : '\x1b[8m',
723-
strikethrough : '\x1b[9m',
724-
725-
gray : '\x1b[38;5;245m',
697+
brightRed : '\x1b[91m',
698+
brightGreen : '\x1b[92m',
699+
brightYellow : '\x1b[93m',
700+
brightBlue : '\x1b[94m',
701+
brightMagenta : '\x1b[95m',
702+
brightCyan : '\x1b[96m',
703+
brightWhite : '\x1b[97m',
704+
705+
bgRed : '\x1b[41m',
706+
bgGreen : '\x1b[42m',
707+
bgYellow : '\x1b[43m',
708+
bgBlue : '\x1b[44m',
709+
bgMagenta : '\x1b[45m',
710+
bgCyan : '\x1b[46m',
711+
bgWhite : '\x1b[47m',
712+
713+
bgBrightRed : '\x1b[101m',
714+
bgBrightGreen : '\x1b[102m',
715+
bgBrightYellow : '\x1b[103m',
716+
bgBrightBlue : '\x1b[104m',
717+
bgBrightMagenta : '\x1b[105m',
718+
bgBrightCyan : '\x1b[106m',
719+
bgBrightWhite : '\x1b[107m',
720+
721+
bold : '\x1b[1m',
722+
dim : '\x1b[2m',
723+
italic : '\x1b[3m',
724+
underline : '\x1b[4m',
725+
inverse : '\x1b[7m',
726+
hidden : '\x1b[8m',
727+
strikethrough : '\x1b[9m',
728+
729+
gray : '\x1b[38;5;245m',
726730

727731
};
728732

729733
var chr = {
730-
warn : '\u26A0',
731-
cross : '\u274C',
732-
stop : '\u1F6D1',
733-
prohibited : '\u1F6AB',
734-
check : '\u2705',
735-
go : '\u1F7E2',
736-
thumb : '\u1F44D',
737-
ok : '\u1F197',
734+
735+
warn : '\u26A0',
736+
cross : '\u274C',
737+
stop : '\u1F6D1',
738+
prohibited : '\u1F6AB',
739+
check : '\u2705',
740+
go : '\u1F7E2',
741+
thumb : '\u1F44D',
742+
ok : '\u1F197',
743+
738744
};
739745

740-
const colors = {
741-
// Standard Colors
742-
black: '\x1b[30m',
743-
red: '\x1b[31m',
744-
green: '\x1b[32m',
745-
yellow: '\x1b[33m',
746-
blue: '\x1b[34m',
747-
magenta: '\x1b[35m',
748-
cyan: '\x1b[36m',
749-
white: '\x1b[37m',
750-
751-
// Bright/Bold Colors
752-
brightBlack: '\x1b[1;30m',
753-
brightRed: '\x1b[1;31m',
754-
brightGreen: '\x1b[1;32m',
755-
brightYellow: '\x1b[1;33m',
756-
brightBlue: '\x1b[1;34m',
757-
brightMagenta: '\x1b[1;35m',
758-
brightCyan: '\x1b[1;36m',
759-
brightWhite: '\x1b[1;37m',
760-
761-
// Custom Mahogany (RGB: 150, 40, 20)
762-
mahogany: '\x1b[38;2;150;40;20m',
763-
764-
// Utility
765-
reset: '\x1b[0m'
746+
var colors = {
747+
748+
black : '\x1b[30m',
749+
red : '\x1b[31m',
750+
green : '\x1b[32m',
751+
yellow : '\x1b[33m',
752+
blue : '\x1b[34m',
753+
magenta : '\x1b[35m',
754+
cyan : '\x1b[36m',
755+
white : '\x1b[37m',
756+
757+
brightBlack : '\x1b[1;30m',
758+
brightRed : '\x1b[1;31m',
759+
brightGreen : '\x1b[1;32m',
760+
brightYellow : '\x1b[1;33m',
761+
brightBlue : '\x1b[1;34m',
762+
brightMagenta : '\x1b[1;35m',
763+
brightCyan : '\x1b[1;36m',
764+
brightWhite : '\x1b[1;37m',
765+
// Custom Mahogany (RGB: 150, 40, 20)
766+
mahogany : '\x1b[38;2;150;40;20m',
767+
768+
// Utility
769+
reset : '\x1b[0m',
770+
766771
};
767772

768773

774+
775+
769776
var files = {};
770777

771778
/*
@@ -825,8 +832,25 @@
825832
});
826833

827834

828-
term.log = {};
835+
term.buffer = [];
836+
term.pause = false;
837+
term.flush = ()=>{
829838

839+
term.buffer.forEach(data=>term.write(data));
840+
term.buffer.length = 0;
841+
842+
}//flush
843+
term.resume = (flush=true)=>{
844+
845+
if(flush){
846+
term.flush();
847+
}
848+
term.buffer.length = 0;
849+
term.pause = false;
850+
851+
}//resume
852+
853+
830854
for(let key in colors){
831855

832856
if (key === 'reset') continue;
@@ -866,11 +890,14 @@
866890
term.loadAddon(fitAddon);
867891
term.open(terminal);
868892
fitAddon.fit();
869-
term.write('booting container ...\r\n')
893+
term.write('booting container ... ')
870894
webcontainer = await WebContainer.boot();
871-
895+
term.writeln.green('ok');
896+
872897
mod.stack.complete;
873898

899+
900+
874901
var [result1,result2] = await Promise.all([spawn('node -v',{output:true}),spawn('npm -v',{output:true})]);
875902
if(result1.code==0){
876903
term.write('node '+result1.output);
@@ -891,12 +918,18 @@
891918
});
892919

893920

894-
//await webcontainer.mount(files);
895-
term.write('spawn jsh ...\r\n')
896-
shell = await webcontainer.spawn('jsh');
921+
if(0){
922+
term.write('mount fs ... ');
923+
await webcontainer.mount(files);
924+
term.writeln.green('ok');
925+
}
926+
897927

898928

899-
var output = new WritableStream({
929+
term.write('spawn jsh ... ')
930+
shell = await webcontainer.spawn('jsh');
931+
term.writeln.green('ok');
932+
output = new WritableStream({
900933
write(data){
901934
//console.log(data);
902935
var str = data;
@@ -947,10 +980,34 @@
947980
}
948981
});
949982

950-
term.write(data);
983+
984+
if(term.pause){
985+
term.buffer.push(data);
986+
}else{
987+
term.write(data);
988+
}
951989

952990
}
953991
});
992+
993+
output.buffer = [];
994+
output.pause = false;
995+
output.flush = ()=>{
996+
997+
output.buffer.forEach(data=>term.write(data));
998+
output.buffer.length = 0;
999+
1000+
}//flush
1001+
output.resume = (flush=true)=>{
1002+
1003+
if(flush){
1004+
output.flush();
1005+
}
1006+
output.buffer.length = 0;
1007+
output.pause = false;
1008+
1009+
}//resume
1010+
9541011
shell.output.pipeTo(output);
9551012

9561013
input = shell.input.getWriter();

0 commit comments

Comments
 (0)