1+ /* eslint-disable operator-linebreak */
12import pLimit from 'p-limit' ;
23import {
34 defaultMinimumIterations ,
@@ -11,7 +12,6 @@ import type {
1112 AddEventListenerOptionsArgument ,
1213 BenchEvents ,
1314 BenchEventsMap ,
14- EventListener ,
1515 Fn ,
1616 FnOptions ,
1717 Hook ,
@@ -49,7 +49,7 @@ export default class Bench extends EventTarget {
4949
5050 signal ?: AbortSignal ;
5151
52- throws : boolean ;
52+ throws = false ;
5353
5454 warmupTime = defaultMinimumWarmupTime ;
5555
@@ -74,7 +74,7 @@ export default class Bench extends EventTarget {
7474 this . time = options . time ?? this . time ;
7575 this . iterations = options . iterations ?? this . iterations ;
7676 this . signal = options . signal ;
77- this . throws = options . throws ?? false ;
77+ this . throws = options . throws ?? this . throws ;
7878 // eslint-disable-next-line @typescript-eslint/no-empty-function
7979 this . setup = options . setup ?? ( ( ) => { } ) ;
8080 // eslint-disable-next-line @typescript-eslint/no-empty-function
@@ -91,9 +91,11 @@ export default class Bench extends EventTarget {
9191 }
9292 }
9393
94- private runTask ( task : Task ) {
95- if ( this . signal ?. aborted ) return task ;
96- return task . run ( ) ;
94+ private async runTask ( task : Task ) : Promise < Task > {
95+ if ( this . signal ?. aborted ) {
96+ return task ;
97+ }
98+ return await task . run ( ) ;
9799 }
98100
99101 /**
@@ -142,7 +144,7 @@ export default class Bench extends EventTarget {
142144 /**
143145 * reset each task and remove its result
144146 */
145- reset ( ) {
147+ reset ( ) : void {
146148 this . dispatchEvent ( createBenchEvent ( 'reset' ) ) ;
147149 for ( const task of this . _tasks . values ( ) ) {
148150 task . reset ( ) ;
@@ -152,7 +154,7 @@ export default class Bench extends EventTarget {
152154 /**
153155 * add a benchmark task to the task map
154156 */
155- add ( name : string , fn : Fn , opts : FnOptions = { } ) {
157+ add ( name : string , fn : Fn , opts : FnOptions = { } ) : this {
156158 const task = new Task ( this , name , fn , opts ) ;
157159 this . _tasks . set ( name , task ) ;
158160 this . dispatchEvent ( createBenchEvent ( 'add' , task ) ) ;
@@ -162,7 +164,7 @@ export default class Bench extends EventTarget {
162164 /**
163165 * remove a benchmark task from the task map
164166 */
165- remove ( name : string ) {
167+ remove ( name : string ) : this {
166168 const task = this . getTask ( name ) ;
167169 if ( task ) {
168170 this . dispatchEvent ( createBenchEvent ( 'remove' , task ) ) ;
@@ -171,44 +173,56 @@ export default class Bench extends EventTarget {
171173 return this ;
172174 }
173175
174- addEventListener <
175- K extends BenchEvents ,
176- T extends EventListener = BenchEventsMap [ K ] ,
177- > ( type : K , listener : T , options ?: AddEventListenerOptionsArgument ) : void {
176+ addEventListener < K extends BenchEvents > (
177+ type : K ,
178+ listener : BenchEventsMap [ K ] ,
179+ options ?: AddEventListenerOptionsArgument ,
180+ ) : void {
178181 super . addEventListener ( type , listener , options ) ;
179182 }
180183
181- removeEventListener <
182- K extends BenchEvents ,
183- T extends EventListener = BenchEventsMap [ K ] ,
184- > ( type : K , listener : T , options ?: RemoveEventListenerOptionsArgument ) {
184+ removeEventListener < K extends BenchEvents > (
185+ type : K ,
186+ listener : BenchEventsMap [ K ] ,
187+ options ?: RemoveEventListenerOptionsArgument ,
188+ ) : void {
185189 super . removeEventListener ( type , listener , options ) ;
186190 }
187191
188192 /**
189193 * table of the tasks results
190194 */
191- table ( convert ?: ( task : Task ) => Record < string , string | number > | undefined ) {
195+ table (
196+ convert ?: ( task : Task ) => Record < string , string | number > | undefined ,
197+ ) : ( Record < string , string | number > | undefined | null ) [ ] {
192198 return this . tasks . map ( ( task ) => {
193199 if ( task . result ) {
194200 if ( task . result . error ) {
195201 throw task . result . error ;
196202 }
197203 return (
204+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
198205 convert ?.( task ) || {
199206 'Task name' : task . name ,
207+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
200208 'Throughput average (ops/s)' : task . result . error
201209 ? 'NaN'
202210 : `${ task . result . throughput . mean . toFixed ( 0 ) } \xb1 ${ task . result . throughput . rme . toFixed ( 2 ) } %` ,
211+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
203212 'Throughput median (ops/s)' : task . result . error
204213 ? 'NaN'
205- : `${ task . result . throughput . p50 ?. toFixed ( 0 ) } ${ Number . parseInt ( task . result . throughput . mad ! . toFixed ( 0 ) , 10 ) > 0 ? ` \xb1 ${ task . result . throughput . mad ! . toFixed ( 0 ) } ` : '' } ` ,
214+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
215+ `${ task . result . throughput . p50 ! . toFixed ( 0 ) } ${ Number . parseInt ( task . result . throughput . mad ! . toFixed ( 0 ) , 10 ) > 0 ? ` \xb1 ${ task . result . throughput . mad ! . toFixed ( 0 ) } ` : '' } ` ,
216+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
206217 'Latency average (ns)' : task . result . error
207218 ? 'NaN'
208219 : `${ ( task . result . latency . mean * 1e6 ) . toFixed ( 2 ) } \xb1 ${ task . result . latency . rme . toFixed ( 2 ) } %` ,
220+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
209221 'Latency median (ns)' : task . result . error
210222 ? 'NaN'
211- : `${ ( task . result . latency . p50 ! * 1e6 ) . toFixed ( 2 ) } ${ Number . parseFloat ( ( task . result . latency . mad ! * 1e6 ) . toFixed ( 2 ) ) > 0 ? ` \xb1 ${ ( task . result . latency . mad ! * 1e6 ) . toFixed ( 2 ) } ` : '' } ` ,
223+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
224+ `${ ( task . result . latency . p50 ! * 1e6 ) . toFixed ( 2 ) } ${ Number . parseFloat ( ( task . result . latency . mad ! * 1e6 ) . toFixed ( 2 ) ) > 0 ? ` \xb1 ${ ( task . result . latency . mad ! * 1e6 ) . toFixed ( 2 ) } ` : '' } ` ,
225+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
212226 Samples : task . result . error
213227 ? 'NaN'
214228 : task . result . latency . samples . length ,
0 commit comments