1234567891011121314151617181920212223242526272829303132 |
- 'use strict';
- const debug = require('debug')('wait-port');
- const detect = require('./detect-port');
- const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
- async function waitPort(port, options = {}) {
- const { retryInterval = 1000, retries = Infinity } = options;
- let count = 1;
- async function loop() {
- debug('retries', retries, 'count', count);
- if (count > retries) {
- const err = new Error('retries exceeded');
- err.retries = retries;
- err.count = count;
- throw err;
- }
- count++;
- const freePort = await detect(port);
- if (freePort === port) {
- await sleep(retryInterval);
- return loop();
- }
- return true;
- }
- return await loop();
- }
- module.exports = waitPort;
|