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.<DependencyHealth></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>''</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.<DependencyHealth></code>
|
42 | **Kind**: instance property of [<code>Copacetic</code>](#Copacetic)
|
43 | **Returns**: <code>Array.<DependencyHealth></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)
|
66 | Adds 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)
|
77 | Removes 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)
|
88 | Polls 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>'5 seconds'</code> |
|
95 | | [parallel] | <code>Boolean</code> | <code>true</code> |
|
96 | | [schedule] | <code>String</code> | <code>'start'</code> |
|
97 |
|
98 | <a name="Copacetic+poll"></a>
|
99 |
|
100 | ### copacetic.poll([dependencies], [interval], [parallel], [schedule]) ⇒ [<code>Copacetic</code>](#Copacetic)
|
101 | Polls 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.<Object></code> | | An explicit set of dependencies to be polled |
|
109 | | [interval] | <code>String</code> | <code>'5 seconds'</code> | |
|
110 | | [parallel] | <code>Boolean</code> | <code>true</code> | Kick of health checks in parallel or series |
|
111 | | [schedule] | <code>String</code> | <code>'start'</code> | Schedule the next check to start (interval - ms) | ms |
|
112 |
|
113 | **Example**
|
114 | ```js
|
115 | copacetic.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()
|
131 | stops 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)
|
137 | Checks 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)
|
148 | Checks 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.<Object></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
|
162 | copacetic.check({ name: 'my-dependency' })
|
163 | ```
|
164 | **Example**
|
165 | ```js
|
166 | copacetic.check({ name: 'my-dependency', retries: 5 })
|
167 | .on('healthy', serviceHealth => { // Do stuff })
|
168 | .on('unhealthy', serviceHealth => { // Handle degraded state })
|
169 | ```
|
170 | **Example**
|
171 | ```js
|
172 | copacetic.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>
|
193 | Checks 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.<Dependency></code> |
|
200 | | parallel | <code>Boolean</code> |
|
201 |
|
202 | <a name="Copacetic+event_healthy"></a>
|
203 |
|
204 | ### "healthy"
|
205 | Health 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"
|
211 | Health 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"
|
217 | Health information on a set of dependencies
|
218 |
|
219 | **Kind**: event emitted by [<code>Copacetic</code>](#Copacetic)
|