@ica-dev/healthcheck
Advanced tools
Comparing version 0.0.2 to 0.0.3
{ | ||
"name": "@ica-dev/healthcheck", | ||
"private": false, | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "", | ||
@@ -10,2 +10,5 @@ "main": "src/index.js", | ||
}, | ||
"scripts": { | ||
"test": "jest" | ||
}, | ||
"author": "Itch", | ||
@@ -15,3 +18,6 @@ "license": "MIT", | ||
"rxjs": "^6.3.3" | ||
}, | ||
"devDependencies": { | ||
"jest": "^23.6.0" | ||
} | ||
} |
const { BehaviorSubject } = require('rxjs') | ||
const { map, distinctUntilChanged } = require('rxjs/operators') | ||
function createServiceStore(service, dependsOn = [], prev = {}) { | ||
return { | ||
service, | ||
count: (prev.count || 0) + 1, | ||
dependsOn, | ||
} | ||
} | ||
function getAllDependencies(dependsOn, services) { | ||
return dependsOn.reduce((sum, dep) => { | ||
const service = services[dep] | ||
if (service && service.dependsOn.length > 0) { | ||
return [...sum, dep, ...getAllDependencies(service.dependsOn, services)] | ||
} | ||
return [...sum, dep] | ||
}, []) | ||
} | ||
module.exports = function tracker() { | ||
@@ -12,6 +30,10 @@ const services$ = new BehaviorSubject({}) | ||
...services, | ||
[service]: (services[service] || 0) + 1, | ||
[service]: createServiceStore(service, dependsOn, services[service]), | ||
}) | ||
return services$.pipe( | ||
map(services => dependsOn.every(dep => (services[dep] || 0) > 0)), | ||
map(services => | ||
getAllDependencies(dependsOn, services).every( | ||
dep => services[dep] && services[dep].count > 0, | ||
), | ||
), | ||
distinctUntilChanged(), | ||
@@ -18,0 +40,0 @@ ) |
Sorry, the diff of this file is not supported yet
150406
10
270
1