UNPKG

8.51 kBMarkdownView Raw
1<a name="Copacetic"></a>
2
3## Copacetic ⇐ <code>EventEmitter</code>
4**Kind**: global class
5**Extends**: <code>EventEmitter</code>
6
7* [Copacetic](#Copacetic) ⇐ <code>EventEmitter</code>
8 * [new Copacetic([name])](#new_Copacetic_new)
9 * [.isHealthy](#Copacetic+isHealthy) ⇒ <code>Boolean</code>
10 * [.healthInfo](#Copacetic+healthInfo) ⇒ <code>Array.&lt;DependencyHealth&gt;</code>
11 * [.getDependency(dependency)](#Copacetic+getDependency) ⇒ <code>Dependency</code>
12 * [.isDependencyRegistered(dependency)](#Copacetic+isDependencyRegistered) ⇒ <code>Boolean</code>
13 * [.registerDependency(opts)](#Copacetic+registerDependency) ⇒ [<code>Copacetic</code>](#Copacetic)
14 * [.deregisterDependency(name)](#Copacetic+deregisterDependency) ⇒ [<code>Copacetic</code>](#Copacetic)
15 * [.pollAll([interval], [parallel], [schedule])](#Copacetic+pollAll) ⇒ [<code>Copacetic</code>](#Copacetic)
16 * [.poll([dependencies], [interval], [parallel], [schedule])](#Copacetic+poll) ⇒ [<code>Copacetic</code>](#Copacetic)
17 * [.stop()](#Copacetic+stop)
18 * [.checkAll([parallel])](#Copacetic+checkAll) ⇒ [<code>Copacetic</code>](#Copacetic)
19 * [.check([name], [dependencies], [retries], [parallel])](#Copacetic+check) ⇒ [<code>Copacetic</code>](#Copacetic)
20 * [._checkOne(name)](#Copacetic+_checkOne) ⇒ <code>Promise</code>
21 * [._checkMany(dependencies, parallel)](#Copacetic+_checkMany) ⇒ <code>Promise</code>
22 * ["healthy"](#Copacetic+event_healthy)
23 * ["unhealthy"](#Copacetic+event_unhealthy)
24 * ["health"](#Copacetic+event_health)
25
26<a name="new_Copacetic_new"></a>
27
28### new Copacetic([name])
29
30| Param | Type | Default | Description |
31| --- | --- | --- | --- |
32| [name] | <code>String</code> | <code>&#x27;&#x27;</code> | The name of your service |
33
34<a name="Copacetic+isHealthy"></a>
35
36### copacetic.isHealthy ⇒ <code>Boolean</code>
37**Kind**: instance property of [<code>Copacetic</code>](#Copacetic)
38**Returns**: <code>Boolean</code> - Copacetic is healthy when all hard dependencies are healthy
39<a name="Copacetic+healthInfo"></a>
40
41### copacetic.healthInfo ⇒ <code>Array.&lt;DependencyHealth&gt;</code>
42**Kind**: instance property of [<code>Copacetic</code>](#Copacetic)
43**Returns**: <code>Array.&lt;DependencyHealth&gt;</code> - Health information on all dependencies
44<a name="Copacetic+getDependency"></a>
45
46### copacetic.getDependency(dependency) ⇒ <code>Dependency</code>
47**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
48
49| Param | Type |
50| --- | --- |
51| dependency | <code>Dependency</code> \| <code>String</code> |
52
53<a name="Copacetic+isDependencyRegistered"></a>
54
55### copacetic.isDependencyRegistered(dependency) ⇒ <code>Boolean</code>
56**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
57**Returns**: <code>Boolean</code> - Whether the dependency has been registered
58
59| Param | Type |
60| --- | --- |
61| dependency | <code>Dependency</code> \| <code>String</code> |
62
63<a name="Copacetic+registerDependency"></a>
64
65### copacetic.registerDependency(opts) ⇒ [<code>Copacetic</code>](#Copacetic)
66Adds a dependency to a Copacetic instance
67
68**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
69
70| Param | Type | Description |
71| --- | --- | --- |
72| opts | <code>Object</code> | The configuration for a dependency |
73
74<a name="Copacetic+deregisterDependency"></a>
75
76### copacetic.deregisterDependency(name) ⇒ [<code>Copacetic</code>](#Copacetic)
77Removes a dependency from a Copacetic instance
78
79**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
80
81| Param | Type | Description |
82| --- | --- | --- |
83| name | <code>String</code> | The name used to identify a dependency |
84
85<a name="Copacetic+pollAll"></a>
86
87### copacetic.pollAll([interval], [parallel], [schedule]) ⇒ [<code>Copacetic</code>](#Copacetic)
88Polls the health of all registered dependencies
89
90**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
91
92| Param | Type | Default |
93| --- | --- | --- |
94| [interval] | <code>String</code> | <code>&#x27;5 seconds&#x27;</code> |
95| [parallel] | <code>Boolean</code> | <code>true</code> |
96| [schedule] | <code>String</code> | <code>&#x27;start&#x27;</code> |
97
98<a name="Copacetic+poll"></a>
99
100### copacetic.poll([dependencies], [interval], [parallel], [schedule]) ⇒ [<code>Copacetic</code>](#Copacetic)
101Polls the health of a set of dependencies
102
103**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
104**Emits**: [<code>health</code>](#Copacetic+event_health)
105
106| Param | Type | Default | Description |
107| --- | --- | --- | --- |
108| [dependencies] | <code>Array.&lt;Object&gt;</code> | | An explicit set of dependencies to be polled |
109| [interval] | <code>String</code> | <code>&#x27;5 seconds&#x27;</code> | |
110| [parallel] | <code>Boolean</code> | <code>true</code> | Kick of health checks in parallel or series |
111| [schedule] | <code>String</code> | <code>&#x27;start&#x27;</code> | Schedule the next check to start (interval - ms) | ms |
112
113**Example**
114```js
115copacetic.poll({
116 dependencies: [
117 { name: 'my-dep' },
118 { name: 'my-other-dep', retries: 2 }
119 ],
120 schedule: 'end',
121 interval: '1 minute 30 seconds'
122})
123.on('health', (serviceHealth) => {
124 // Do something with the result
125 // [{ name: String, health: Boolean, level: HARD/SOFT, lastCheck: Date }]
126})
127```
128<a name="Copacetic+stop"></a>
129
130### copacetic.stop()
131stops polling registered dependencies
132
133**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
134<a name="Copacetic+checkAll"></a>
135
136### copacetic.checkAll([parallel]) ⇒ [<code>Copacetic</code>](#Copacetic)
137Checks the health of all registered dependencies
138
139**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
140
141| Param | Type | Default | Description |
142| --- | --- | --- | --- |
143| [parallel] | <code>Boolean</code> | <code>true</code> | Kick of health checks in parallel or series |
144
145<a name="Copacetic+check"></a>
146
147### copacetic.check([name], [dependencies], [retries], [parallel]) ⇒ [<code>Copacetic</code>](#Copacetic)
148Checks the health of a set, or single dependency
149
150**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
151**Emits**: [<code>health</code>](#Copacetic+event_health), [<code>healthy</code>](#Copacetic+event_healthy), [<code>unhealthy</code>](#Copacetic+event_unhealthy)
152
153| Param | Type | Default | Description |
154| --- | --- | --- | --- |
155| [name] | <code>String</code> | | The identifier of a single dependency to be checked |
156| [dependencies] | <code>Array.&lt;Object&gt;</code> | | An explicit set of dependencies to be checked |
157| [retries] | <code>Integer</code> | <code>1</code> | How many times should a dependency be checked, until it is deemed unhealthy |
158| [parallel] | <code>Boolean</code> | <code>true</code> | Kick of health checks in parallel or series |
159
160**Example**
161```js
162copacetic.check({ name: 'my-dependency' })
163```
164**Example**
165```js
166copacetic.check({ name: 'my-dependency', retries: 5 })
167.on('healthy', serviceHealth => { // Do stuff })
168.on('unhealthy', serviceHealth => { // Handle degraded state })
169```
170**Example**
171```js
172copacetic.check({ dependencies: [
173 { name: 'my-dep' },
174 { name: 'my-other-dep', retries: 2 }
175] })
176.on('health', (servicesHealth) => {
177 // Do something with the result
178 // [{ name: String, health: Boolean, level: HARD/SOFT, lastCheck: Date }]
179})
180```
181<a name="Copacetic+_checkOne"></a>
182
183### copacetic._checkOne(name) ⇒ <code>Promise</code>
184**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
185
186| Param | Type | Description |
187| --- | --- | --- |
188| name | <code>String</code> | The name used to identify a dependency |
189
190<a name="Copacetic+_checkMany"></a>
191
192### copacetic._checkMany(dependencies, parallel) ⇒ <code>Promise</code>
193Checks an array of dependencies in parallel or sequantially
194
195**Kind**: instance method of [<code>Copacetic</code>](#Copacetic)
196
197| Param | Type |
198| --- | --- |
199| dependencies | <code>Array.&lt;Dependency&gt;</code> |
200| parallel | <code>Boolean</code> |
201
202<a name="Copacetic+event_healthy"></a>
203
204### "healthy"
205Health information on a single dependency
206
207**Kind**: event emitted by [<code>Copacetic</code>](#Copacetic)
208<a name="Copacetic+event_unhealthy"></a>
209
210### "unhealthy"
211Health information on a single dependency
212
213**Kind**: event emitted by [<code>Copacetic</code>](#Copacetic)
214<a name="Copacetic+event_health"></a>
215
216### "health"
217Health information on a set of dependencies
218
219**Kind**: event emitted by [<code>Copacetic</code>](#Copacetic)