0.4.0 allowed timeout to be set via environment and option

master
Kebler Network System Administrator 2021-03-10 10:17:02 -08:00
parent 77f3054c01
commit 468f560046
3 changed files with 18 additions and 11 deletions

View File

@ -2,7 +2,11 @@ import Watcher from '../src/watcher'
import onDeath from 'ondeath' import onDeath from 'ondeath'
(async () => { (async () => {
let options = {source:'./example/repo/**', ignored:['**/dontwatch.js'],ignoreList:['./example/repo/.gitignore']} let options = {
source:'./example/repo/**',
ignored:['**/dontwatch.js'],
ignoreList:['./example/repo/.gitignore'],
readyTimeout:null}
// let options = {source:'./readme.md'} // let options = {source:'./readme.md'}
// let options = {source:'./example/*'} // let options = {source:'./example/*'}

View File

@ -1,6 +1,6 @@
{ {
"name": "@uci-utils/watcher", "name": "@uci-utils/watcher",
"version": "0.3.0", "version": "0.4.0",
"description": "File System Watcher Class that emits events", "description": "File System Watcher Class that emits events",
"main": "src/watcher.js", "main": "src/watcher.js",
"scripts": { "scripts": {
@ -30,15 +30,15 @@
}, },
"homepage": "https://github.com/uCOMmandIt/uci-utils#readme", "homepage": "https://github.com/uCOMmandIt/uci-utils#readme",
"dependencies": { "dependencies": {
"@uci-utils/logger": "0.0.16", "@uci-utils/logger": "0.0.18",
"@uci-utils/read-lines": "^0.2.2", "@uci-utils/read-lines": "^0.2.2",
"chokidar": "^3.0.2" "chokidar": "^3.5.1"
}, },
"devDependencies": { "devDependencies": {
"chai": "^4.2.0", "chai": "^4.3.3",
"esm": "^3.2.25", "esm": "^3.2.25",
"mocha": "^6.2.0", "mocha": "^8.3.1",
"nodemon": "^1.19.1", "nodemon": "^2.0.7",
"ondeath": "^1.0.0" "ondeath": "^1.0.0"
} }
} }

View File

@ -9,7 +9,8 @@ import logger from '@uci-utils/logger'
let log = {} let log = {}
const READY_TIMEOUT = 2000 const READY_TIMEOUT = 10000 //default
class Watcher extends Emitter { class Watcher extends Emitter {
constructor(opts={}) { constructor(opts={}) {
@ -17,6 +18,7 @@ class Watcher extends Emitter {
log = logger({ package:'@uci-utils/watcher', class:'Watcher', file:'src/watcher.js'}) log = logger({ package:'@uci-utils/watcher', class:'Watcher', file:'src/watcher.js'})
opts.unlinkDir = Object.hasOwnProperty(opts.unlinkDir) ? opts.unlinkDir : true opts.unlinkDir = Object.hasOwnProperty(opts.unlinkDir) ? opts.unlinkDir : true
this.opts = opts this.opts = opts
this.timeout = process.env.READY_TIMEOUT || opts.readyTimeout || READY_TIMEOUT
this._ignored = [] this._ignored = []
this._ready=false this._ready=false
this.watching=false this.watching=false
@ -44,10 +46,11 @@ class Watcher extends Emitter {
this.opts = opts // save options this.opts = opts // save options
resolve() resolve()
}) })
log.debug(`initial scanning, timeout in ${this.timeout}ms`)
let readyTimeout = setTimeout(() =>{ let readyTimeout = setTimeout(() =>{
log.fatal({options:opts, timeout:READY_TIMEOUT, msg:'Timeout: unable to complete initial scan'}) log.fatal({options:opts, timeout:this.timeout, msg:'Timeout: unable to complete initial scan'})
reject('timeout during intial scan') reject('timeout during initial scan')
},READY_TIMEOUT) },this.timeout)
} }
else { else {
log.fatal('MUST provide a source directory(s) option to watch') log.fatal('MUST provide a source directory(s) option to watch')