@@ -675,6 +675,48 @@ export const log = {
675
675
} ,
676
676
} ;
677
677
678
+ const prefix = `${ color . gray ( S_BAR ) } ` ;
679
+ export const stream = {
680
+ message : async ( iterable : Iterable < string > | AsyncIterable < string > , { symbol = color . gray ( S_BAR ) } : LogMessageOptions = { } ) => {
681
+ process . stdout . write ( `${ color . gray ( S_BAR ) } \n${ symbol } ` ) ;
682
+ let lineWidth = 3 ;
683
+ for await ( let chunk of iterable ) {
684
+ chunk = chunk . replace ( / \n / g, `\n${ prefix } ` ) ;
685
+ if ( chunk . includes ( '\n' ) ) {
686
+ lineWidth = 3 + strip ( chunk . slice ( chunk . lastIndexOf ( '\n' ) ) ) . length ;
687
+ }
688
+ const chunkLen = strip ( chunk ) . length ;
689
+ if ( ( lineWidth + chunkLen ) < process . stdout . columns ) {
690
+ lineWidth += chunkLen ;
691
+ process . stdout . write ( chunk ) ;
692
+ } else {
693
+ process . stdout . write ( `\n${ prefix } ${ chunk . trimStart ( ) } ` ) ;
694
+ lineWidth = 3 + strip ( chunk . trimStart ( ) ) . length ;
695
+ }
696
+ }
697
+ process . stdout . write ( '\n' ) ;
698
+ } ,
699
+ info : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
700
+ return stream . message ( iterable , { symbol : color . blue ( S_INFO ) } ) ;
701
+ } ,
702
+ success : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
703
+ return stream . message ( iterable , { symbol : color . green ( S_SUCCESS ) } ) ;
704
+ } ,
705
+ step : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
706
+ return stream . message ( iterable , { symbol : color . green ( S_STEP_SUBMIT ) } ) ;
707
+ } ,
708
+ warn : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
709
+ return stream . message ( iterable , { symbol : color . yellow ( S_WARN ) } ) ;
710
+ } ,
711
+ /** alias for `log.warn()`. */
712
+ warning : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
713
+ return stream . warn ( iterable ) ;
714
+ } ,
715
+ error : ( iterable : Iterable < string > | AsyncIterable < string > ) => {
716
+ return stream . message ( iterable , { symbol : color . red ( S_ERROR ) } ) ;
717
+ } ,
718
+ }
719
+
678
720
export const spinner = ( ) => {
679
721
const frames = unicode ? [ '◒' , '◐' , '◓' , '◑' ] : [ '•' , 'o' , 'O' , '0' ] ;
680
722
const delay = unicode ? 80 : 120 ;
0 commit comments