UNPKG

745 BJavaScriptView Raw
1'use strict';
2
3const debug = require('debug')('wait-port');
4const detect = require('./detect-port');
5
6const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
7
8async function waitPort(port, options = {}) {
9 const { retryInterval = 1000, retries = Infinity } = options;
10 let count = 1;
11
12 async function loop() {
13 debug('retries', retries, 'count', count);
14 if (count > retries) {
15 const err = new Error('retries exceeded');
16 err.retries = retries;
17 err.count = count;
18 throw err;
19 }
20 count++;
21 const freePort = await detect(port);
22 if (freePort === port) {
23 await sleep(retryInterval);
24 return loop();
25 }
26 return true;
27 }
28
29 return await loop();
30}
31
32module.exports = waitPort;