1
- import crypto from 'crypto' ;
2
- import net from 'net' ;
1
+ import crypto from 'node: crypto' ;
2
+ import net from 'node: net' ;
3
3
import { SharedContext } from '@ava/cooperate' ;
4
4
5
5
const context = new SharedContext ( __filename ) ;
@@ -9,7 +9,7 @@ const reserveRange = async (): Promise<number[]> => {
9
9
let from : number ;
10
10
do {
11
11
from = crypto . randomBytes ( 2 ) . readUInt16BE ( 0 ) ;
12
- } while ( from < 1024 || from > 65520 ) ;
12
+ } while ( from < 1024 || from > 65_520 ) ;
13
13
14
14
const range = Array . from ( { length : 16 } , ( _ , index ) => from + index ) ;
15
15
return context . reserve ( ...range ) ;
@@ -19,20 +19,22 @@ const reserveRange = async (): Promise<number[]> => {
19
19
const confirmAvailable = async ( port : number , options ?: net . ListenOptions ) : Promise < boolean > => new Promise ( ( resolve , reject ) => {
20
20
const server = net . createServer ( ) ;
21
21
server . unref ( ) ;
22
- server . on ( 'error' , ( error : Error & { code : string } ) => {
22
+ server . on ( 'error' , ( error : Error & { code : string } ) => {
23
23
if ( error . code === 'EADDRINUSE' || error . code === 'EACCESS' ) {
24
24
resolve ( false ) ;
25
25
} else {
26
26
reject ( error ) ;
27
27
}
28
28
} ) ;
29
29
server . listen ( { ...options , port} , ( ) => {
30
- server . close ( ( ) => resolve ( true ) ) ;
30
+ server . close ( ( ) => {
31
+ resolve ( true ) ;
32
+ } ) ;
31
33
} ) ;
32
34
} ) ;
33
35
34
36
let available : Promise < number [ ] > = reserveRange ( ) ;
35
- export default async function getPort ( options ?: Omit < net . ListenOptions , 'port' > ) : Promise < number > { // eslint-disable-line @typescript-eslint/ban-types
37
+ export default async function getPort ( options ?: Omit < net . ListenOptions , 'port' > ) : Promise < number > {
36
38
const promise = available ;
37
39
const range = await promise ;
38
40
const port = range . shift ( ) ;
0 commit comments