11import React , { MouseEventHandler } from 'react' ;
2+ // @ts -ignore no types for the package
23import Panel from 'react-flex-panel' ;
34import FontAwesome from 'react-fontawesome' ;
45import classNames from 'classnames' ;
@@ -16,7 +17,7 @@ import {
1617} from "rsocket-core" ;
1718import { Encoders } from "rsocket-core/RSocketEncoding" ;
1819
19- function getRSocketType ( type ) {
20+ function getRSocketType ( type : number ) : string {
2021 for ( const [ name , code ] of Object . entries ( FRAME_TYPES ) ) {
2122 if ( code === type ) {
2223 return name ;
@@ -25,32 +26,33 @@ function getRSocketType(type) {
2526 return toHex ( type ) ;
2627}
2728
28- function toHex ( n ) {
29+ function toHex ( n : number ) : string {
2930 return '0x' + n . toString ( 16 ) ;
3031}
3132
3233function shortFrame ( frame : Frame ) {
3334 const name = getRSocketType ( frame . type ) ;
3435 const flags : string [ ] = [ ] ;
3536 for ( const [ name , flag ] of Object . entries ( FLAGS ) ) {
37+ // noinspection JSBitwiseOperatorUsage
3638 if ( frame . flags & flag ) {
3739 flags . push ( name ) ;
3840 }
3941 }
4042 return `${ name } [${ flags . join ( ", " ) } ]` ;
4143}
4244
43- const padded = ( num , d ) => num . toFixed ( 0 ) . padStart ( d , '0' ) ;
45+ const padded = ( num : number , d : number ) => num . toFixed ( 0 ) . padStart ( d , '0' ) ;
4446
45- const stringToBuffer = str => {
47+ function stringToBuffer ( str : string ) {
4648 const ui8 = new Uint8Array ( str . length ) ;
4749 for ( let i = 0 ; i < str . length ; ++ i ) {
4850 ui8 [ i ] = str . charCodeAt ( i ) ;
4951 }
5052 return ui8 ;
51- } ;
53+ }
5254
53- const TimeStamp = ( { time} ) => {
55+ const TimeStamp = ( { time} : { time : Date } ) => {
5456 const h = time . getHours ( ) ;
5557 const m = time . getMinutes ( ) ;
5658 const s = time . getSeconds ( ) ;
@@ -92,8 +94,8 @@ interface RSocketFrameProps {
9294}
9395
9496class RSocketFrame extends React . Component < RSocketFrameProps , any > {
95- private hexView : HTMLUListElement ;
96- private asciiView : HTMLUListElement ;
97+ private hexView : HTMLUListElement | null = null ;
98+ private asciiView : HTMLUListElement | null = null ;
9799
98100 render ( ) {
99101 const { frame, data, className, ...props } = this . props ;
@@ -107,7 +109,7 @@ class RSocketFrame extends React.Component<RSocketFrameProps, any> {
107109 const row = [ ...( data as any ) . subarray ( pos , pos + 16 ) ] ;
108110 lineNumbers . push ( < li key = { pos } > { pos . toString ( 16 ) . padStart ( numDigits , '0' ) } :</ li > ) ;
109111 hexView . push ( < li key = { pos } >
110- { row . map ( ( byte , i ) => < span key = { i } > { byte . toString ( 16 ) . padStart ( 2 , '0' ) } </ span > ) }
112+ { row . map ( ( byte : number , i ) => < span key = { i } > { byte . toString ( 16 ) . padStart ( 2 , '0' ) } </ span > ) }
111113 { row . length < 16 && [ ...Array ( 16 - row . length ) ] . map ( ( nil , i ) => < span key = { i }
112114 className = "padding" > { " " } </ span > ) }
113115 </ li > ) ;
@@ -172,7 +174,7 @@ class FrameList extends React.Component<any, any> {
172174 < FontAwesome className = "list-button" name = "stop" onClick = { onStop } title = "Stop" />
173175 </ div >
174176 < ul className = "frame-list" onClick = { ( ) => onSelect ( null ) } >
175- { frames . map ( frame =>
177+ { frames . map ( ( frame : WsFrame ) =>
176178 < FrameEntry key = { frame . id }
177179 frame = { frame }
178180 selected = { frame . id === activeId }
@@ -187,7 +189,7 @@ class FrameList extends React.Component<any, any> {
187189 }
188190}
189191
190- const TextViewer = ( { data} ) => (
192+ const TextViewer = ( { data} : { data : string | Uint8Array } ) => (
191193 < div className = "TextViewer tab-pane" >
192194 { data }
193195 </ div >
@@ -197,7 +199,7 @@ const TextViewer = ({data}) => (
197199let cachedEncoders : Encoders < any > = Utf8Encoders
198200let cachedLengthPrefixedFrames : boolean = false ;
199201
200- function tryDeserializeFrameWith ( data : string , buffer : Buffer , lengthPrefixedFrames , encoders : Encoders < any > ) {
202+ function tryDeserializeFrameWith ( data : string , buffer : Buffer , lengthPrefixedFrames : boolean , encoders : Encoders < any > ) {
201203 try {
202204 return lengthPrefixedFrames
203205 ? deserializeFrameWithLength ( buffer , encoders )
@@ -234,7 +236,7 @@ function tryDeserializeFrame(data: string): Frame | undefined {
234236 return undefined ;
235237}
236238
237- const RSocketViewer = ( { frame, data} ) => {
239+ const RSocketViewer = ( { frame, data} : { frame : Frame , data : string } ) => {
238240 try {
239241 return (
240242 < div className = "TextViewer tab-pane" >
@@ -255,7 +257,7 @@ const RSocketViewer = ({frame, data}) => {
255257class FrameView extends React . Component < { wsFrame : WsFrame } , { panel ?: string } > {
256258 constructor ( props : { wsFrame : WsFrame } ) {
257259 super ( props ) ;
258- this . state = { panel : null } ;
260+ this . state = { panel : undefined } ;
259261 }
260262
261263 render ( ) {
@@ -264,8 +266,8 @@ class FrameView extends React.Component<{ wsFrame: WsFrame }, { panel?: string }
264266 const panel = rsocketFrame
265267 ? < RSocketViewer frame = { rsocketFrame } data = { wsFrame . payload } />
266268 : wsFrame . text
267- ? < TextViewer data = { wsFrame . text } />
268- : < TextViewer data = { wsFrame . binary } /> ;
269+ ? < TextViewer data = { wsFrame . text } />
270+ : < TextViewer data = { wsFrame . binary ! } /> ;
269271 return (
270272 < div className = "FrameView" >
271273 { panel }
@@ -302,29 +304,31 @@ interface WebSocketFrame {
302304interface AppState {
303305 frames : WsFrame [ ] ;
304306 capturing : boolean ;
305- activeId : null
307+ activeId ?: number
306308}
307309
308- export default class App extends React . Component < any , AppState > {
310+ export type ChromeHandlers = { [ name : string ] : any } ;
311+
312+ export default class App extends React . Component < { handlers : ChromeHandlers , } , AppState > {
309313 _uniqueId = 0 ;
310- issueTime = null ;
311- issueWallTime = null ;
314+ issueTime ?: number = undefined ;
315+ issueWallTime ?: number = undefined ;
312316
313317 state : AppState = {
314318 frames : [ ] ,
315- activeId : null ,
319+ activeId : undefined ,
316320 capturing : true ,
317321 }
318322
319- getTime ( timestamp ) : Date {
320- if ( this . issueTime == null ) {
323+ getTime ( timestamp : number ) : Date {
324+ if ( this . issueTime === undefined || this . issueWallTime === undefined ) {
321325 this . issueTime = timestamp ;
322326 this . issueWallTime = new Date ( ) . getTime ( ) ;
323327 }
324328 return new Date ( ( timestamp - this . issueTime ) * 1000 + this . issueWallTime ) ;
325329 }
326330
327- constructor ( props ) {
331+ constructor ( props : { handlers : ChromeHandlers , } ) {
328332 super ( props ) ;
329333
330334 props . handlers [ "Network.webSocketFrameReceived" ] = this . frameReceived . bind ( this ) ;
@@ -355,7 +359,7 @@ export default class App extends React.Component<any, AppState> {
355359 ) ;
356360 }
357361
358- selectFrame = id => {
362+ selectFrame = ( id : number ) => {
359363 this . setState ( { activeId : id } ) ;
360364 } ;
361365
@@ -371,7 +375,7 @@ export default class App extends React.Component<any, AppState> {
371375 this . setState ( { capturing : false } ) ;
372376 }
373377
374- addFrame ( type , timestamp , response : WebSocketFrame ) {
378+ addFrame ( type : 'incoming' | 'outgoing' , timestamp : number , response : WebSocketFrame ) {
375379 if ( response . opcode === 1 || response . opcode === 2 ) {
376380 const frame : WsFrame = {
377381 type,
@@ -389,15 +393,15 @@ export default class App extends React.Component<any, AppState> {
389393 }
390394 }
391395
392- frameReceived ( { timestamp, response} : { timestamp : any , response : WebSocketFrame } ) {
393- if ( this . state . capturing === true ) {
394- this . addFrame ( " incoming" , timestamp , response ) ;
396+ frameReceived ( { timestamp, response} : { timestamp : number , response : WebSocketFrame } ) {
397+ if ( this . state . capturing ) {
398+ this . addFrame ( ' incoming' , timestamp , response ) ;
395399 }
396400 }
397401
398- frameSent ( { timestamp, response} : { timestamp : any , response : WebSocketFrame } ) {
399- if ( this . state . capturing === true ) {
400- this . addFrame ( " outgoing" , timestamp , response ) ;
402+ frameSent ( { timestamp, response} : { timestamp : number , response : WebSocketFrame } ) {
403+ if ( this . state . capturing ) {
404+ this . addFrame ( ' outgoing' , timestamp , response ) ;
401405 }
402406 }
403407}
0 commit comments