navy 4.1.2-rc.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/cli/config/index.js +57 -241
  2. package/lib/cli/config/wrapper.js +12 -36
  3. package/lib/cli/develop.js +63 -167
  4. package/lib/cli/doctor/clean-compose-files.js +19 -73
  5. package/lib/cli/doctor/index.js +34 -154
  6. package/lib/cli/doctor/invalid-compose-config.js +20 -110
  7. package/lib/cli/doctor/invalid-state.js +22 -115
  8. package/lib/cli/doctor/util.js +26 -93
  9. package/lib/cli/external-ip.js +9 -39
  10. package/lib/cli/health.js +18 -67
  11. package/lib/cli/https.js +92 -0
  12. package/lib/cli/import.js +22 -59
  13. package/lib/cli/index.js +11 -17
  14. package/lib/cli/lan-ip.js +18 -60
  15. package/lib/cli/launch.js +46 -127
  16. package/lib/cli/live.js +37 -111
  17. package/lib/cli/local-ip.js +16 -53
  18. package/lib/cli/logs.js +7 -35
  19. package/lib/cli/open.js +11 -45
  20. package/lib/cli/program.js +145 -167
  21. package/lib/cli/ps.js +36 -105
  22. package/lib/cli/refresh-config.js +18 -62
  23. package/lib/cli/run.js +8 -39
  24. package/lib/cli/status.js +41 -201
  25. package/lib/cli/updates.js +68 -160
  26. package/lib/cli/util/get-or-initialise-navy.js +14 -57
  27. package/lib/cli/util/import.js +33 -83
  28. package/lib/cli/util/index.js +10 -12
  29. package/lib/cli/util/reconfigure.js +12 -102
  30. package/lib/cli/wait-for-healthy.js +53 -100
  31. package/lib/config-provider.js +25 -127
  32. package/lib/config-providers/filesystem/index.js +58 -235
  33. package/lib/config-providers/npm/__tests__/util.js +3 -6
  34. package/lib/config-providers/npm/index.js +60 -231
  35. package/lib/config-providers/npm/util.js +6 -9
  36. package/lib/config.js +39 -76
  37. package/lib/driver-logging.js +23 -28
  38. package/lib/driver.js +5 -7
  39. package/lib/drivers/docker-compose/client.js +64 -172
  40. package/lib/drivers/docker-compose/index.js +153 -464
  41. package/lib/errors.js +27 -61
  42. package/lib/http-proxy.js +72 -158
  43. package/lib/index.js +26 -29
  44. package/lib/middleware/add-service-proxy-config.js +76 -0
  45. package/lib/middleware/develop.js +9 -23
  46. package/lib/middleware/helpers.js +20 -25
  47. package/lib/middleware/port-override.js +15 -37
  48. package/lib/middleware/set-env-vars.js +14 -18
  49. package/lib/middleware/set-image.js +12 -18
  50. package/lib/middleware/set-logging-driver.js +14 -18
  51. package/lib/middleware/tag-override.js +11 -19
  52. package/lib/navy/default-middleware.js +13 -27
  53. package/lib/navy/index.js +438 -1761
  54. package/lib/navy/middleware.js +15 -100
  55. package/lib/navy/plugin-interface.js +28 -108
  56. package/lib/navy/state.js +58 -147
  57. package/lib/navy/util.js +2 -1
  58. package/lib/service.js +5 -3
  59. package/lib/util/__tests__/external-ip.js +20 -96
  60. package/lib/util/__tests__/registry-client.js +11 -24
  61. package/lib/util/__tests__/service-host.js +19 -116
  62. package/lib/util/docker-client.js +10 -13
  63. package/lib/util/exec-async.js +9 -27
  64. package/lib/util/external-ip.js +48 -126
  65. package/lib/util/fs.js +7 -6
  66. package/lib/util/get-lan-ip.js +15 -52
  67. package/lib/util/has-update.js +23 -73
  68. package/lib/util/https.js +213 -0
  69. package/lib/util/navyrc.js +12 -50
  70. package/lib/util/registry-client.js +41 -112
  71. package/lib/util/service-host.js +40 -129
  72. package/lib/util/table.js +11 -21
  73. package/package.json +14 -14
  74. package/LICENSE +0 -21
  75. package/lib/middleware/add-virtual-hosts.js +0 -147
@@ -1,507 +1,196 @@
1
- 'use strict';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
4
 
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
-
7
- var _promise = require('babel-runtime/core-js/promise');
8
-
9
- var _promise2 = _interopRequireDefault(_promise);
10
-
11
- var _regenerator = require('babel-runtime/regenerator');
12
-
13
- var _regenerator2 = _interopRequireDefault(_regenerator);
14
-
15
- var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
16
-
17
- var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
18
-
19
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
20
-
21
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
22
-
23
- var _keys = require('babel-runtime/core-js/object/keys');
24
-
25
- var _keys2 = _interopRequireDefault(_keys);
26
-
27
8
  exports.default = createDockerComposeDriver;
28
9
 
29
- var _jsYaml = require('js-yaml');
10
+ var _jsYaml = _interopRequireDefault(require("js-yaml"));
30
11
 
31
- var _jsYaml2 = _interopRequireDefault(_jsYaml);
12
+ var _fs = _interopRequireDefault(require("../../util/fs"));
32
13
 
33
- var _fs = require('../../util/fs');
14
+ var _dockerClient = _interopRequireDefault(require("../../util/docker-client"));
34
15
 
35
- var _fs2 = _interopRequireDefault(_fs);
16
+ var _client = require("./client");
36
17
 
37
- var _dockerClient = require('../../util/docker-client');
18
+ var _service = require("../../service");
38
19
 
39
- var _dockerClient2 = _interopRequireDefault(_dockerClient);
40
-
41
- var _client = require('./client');
42
-
43
- var _service = require('../../service');
44
-
45
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
-
47
- var debug = require('debug')('navy:docker-compose');
20
+ const debug = require('debug')('navy:docker-compose');
48
21
 
49
22
  function getArgsFromOptions(opts, argMap) {
50
- return (0, _keys2.default)(opts).map(function (key) {
51
- return argMap[key];
52
- }).filter(function (arg) {
53
- return arg;
54
- });
23
+ return Object.keys(opts).map(key => argMap[key]).filter(arg => arg);
55
24
  }
56
25
 
57
- var launchArgMap = {
26
+ const launchArgMap = {
58
27
  noDeps: '--no-deps',
59
28
  forceRecreate: '--force-recreate'
60
29
  };
61
30
 
62
31
  function createDockerComposeDriver(navy) {
63
- var _createComposeClient = (0, _client.createComposeClient)(navy),
64
- exec = _createComposeClient.exec,
65
- getCompiledDockerComposePath = _createComposeClient.getCompiledDockerComposePath;
66
-
67
- var driver = {
68
- launch: function launch(services) {
69
- var _this = this;
70
-
71
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
72
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
73
- var additionalArgs;
74
- return _regenerator2.default.wrap(function _callee$(_context) {
75
- while (1) {
76
- switch (_context.prev = _context.next) {
77
- case 0:
78
- additionalArgs = [];
79
-
80
-
81
- debug('Got launch', services, opts);
82
-
83
- if (opts) {
84
- additionalArgs.push.apply(additionalArgs, (0, _toConsumableArray3.default)(getArgsFromOptions(opts, launchArgMap)));
85
- debug('Resolve opts to args', additionalArgs);
86
- }
87
-
88
- if (!services) {
89
- services = [];
90
- }
91
-
92
- _context.next = 6;
93
- return exec('up', ['-d'].concat(additionalArgs, (0, _toConsumableArray3.default)(services)));
94
-
95
- case 6:
96
- case 'end':
97
- return _context.stop();
98
- }
99
- }
100
- }, _callee, _this);
101
- }))();
32
+ const {
33
+ exec,
34
+ getCompiledDockerComposePath
35
+ } = (0, _client.createComposeClient)(navy);
36
+ const driver = {
37
+ async launch(services, opts = {}) {
38
+ const additionalArgs = [];
39
+ debug('Got launch', services, opts);
40
+
41
+ if (opts) {
42
+ additionalArgs.push(...getArgsFromOptions(opts, launchArgMap));
43
+ debug('Resolve opts to args', additionalArgs);
44
+ }
45
+
46
+ if (!services) {
47
+ services = [];
48
+ }
49
+
50
+ await exec('up', ['-d', ...additionalArgs, ...services]);
102
51
  },
103
- destroy: function destroy() {
104
- var _this2 = this;
105
-
106
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
107
- return _regenerator2.default.wrap(function _callee2$(_context2) {
108
- while (1) {
109
- switch (_context2.prev = _context2.next) {
110
- case 0:
111
- _context2.next = 2;
112
- return exec('kill');
113
-
114
- case 2:
115
- _context2.next = 4;
116
- return exec('down', ['-v']);
117
-
118
- case 4:
119
- case 'end':
120
- return _context2.stop();
121
- }
122
- }
123
- }, _callee2, _this2);
124
- }))();
52
+
53
+ async destroy() {
54
+ await exec('kill');
55
+ await exec('down', ['-v']);
125
56
  },
126
- ps: function ps(service) {
127
- var _this3 = this;
128
-
129
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
130
- var projectName, psOptions, ps, inspect;
131
- return _regenerator2.default.wrap(function _callee3$(_context3) {
132
- while (1) {
133
- switch (_context3.prev = _context3.next) {
134
- case 0:
135
- projectName = navy.normalisedName;
136
- psOptions = {
137
- all: true,
138
- filters: {
139
- label: ['com.docker.compose.project=' + projectName]
140
- }
141
- };
142
-
143
- if (service) {
144
- psOptions.filters.label.push('com.docker.compose.service=' + service);
145
- }
146
-
147
- _context3.next = 5;
148
- return _dockerClient2.default.listContainers(psOptions);
149
-
150
- case 5:
151
- ps = _context3.sent;
152
- _context3.next = 8;
153
- return _promise2.default.all(ps.map(function (container) {
154
- return _dockerClient2.default.getContainer(container.Id).inspect();
155
- }));
156
-
157
- case 8:
158
- inspect = _context3.sent;
159
- return _context3.abrupt('return', inspect.map(function (service) {
160
- return {
161
- id: service.Id,
162
- name: service.Config.Labels['com.docker.compose.service'],
163
- image: service.Config.Image,
164
- status: service.State.Running === true ? _service.Status.RUNNING : _service.Status.EXITED,
165
- raw: service
166
- };
167
- }));
168
-
169
- case 10:
170
- case 'end':
171
- return _context3.stop();
172
- }
173
- }
174
- }, _callee3, _this3);
175
- }))();
57
+
58
+ async ps(service) {
59
+ const projectName = navy.normalisedName;
60
+ const psOptions = {
61
+ all: true,
62
+ filters: {
63
+ label: [`com.docker.compose.project=${projectName}`]
64
+ }
65
+ };
66
+
67
+ if (service) {
68
+ psOptions.filters.label.push(`com.docker.compose.service=${service}`);
69
+ }
70
+
71
+ const ps = await _dockerClient.default.listContainers(psOptions);
72
+ const inspect = await Promise.all(ps.map(container => _dockerClient.default.getContainer(container.Id).inspect()));
73
+ return inspect.map(service => ({
74
+ id: service.Id,
75
+ name: service.Config.Labels['com.docker.compose.service'],
76
+ image: service.Config.Image,
77
+ status: service.State.Running === true ? _service.Status.RUNNING : _service.Status.EXITED,
78
+ raw: service
79
+ }));
176
80
  },
177
- start: function start(services) {
178
- var _this4 = this;
179
-
180
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {
181
- return _regenerator2.default.wrap(function _callee4$(_context4) {
182
- while (1) {
183
- switch (_context4.prev = _context4.next) {
184
- case 0:
185
- _context4.next = 2;
186
- return exec('start', services);
187
-
188
- case 2:
189
- case 'end':
190
- return _context4.stop();
191
- }
192
- }
193
- }, _callee4, _this4);
194
- }))();
81
+
82
+ async start(services) {
83
+ await exec('start', services);
195
84
  },
196
- stop: function stop(services) {
197
- var _this5 = this;
198
-
199
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
200
- return _regenerator2.default.wrap(function _callee5$(_context5) {
201
- while (1) {
202
- switch (_context5.prev = _context5.next) {
203
- case 0:
204
- _context5.next = 2;
205
- return exec('stop', services);
206
-
207
- case 2:
208
- case 'end':
209
- return _context5.stop();
210
- }
211
- }
212
- }, _callee5, _this5);
213
- }))();
85
+
86
+ async stop(services) {
87
+ await exec('stop', services);
214
88
  },
215
- restart: function restart(services) {
216
- var _this6 = this;
217
-
218
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
219
- return _regenerator2.default.wrap(function _callee6$(_context6) {
220
- while (1) {
221
- switch (_context6.prev = _context6.next) {
222
- case 0:
223
- _context6.next = 2;
224
- return exec('restart', services);
225
-
226
- case 2:
227
- case 'end':
228
- return _context6.stop();
229
- }
230
- }
231
- }, _callee6, _this6);
232
- }))();
89
+
90
+ async restart(services) {
91
+ await exec('restart', services);
233
92
  },
234
- kill: function kill(services) {
235
- var _this7 = this;
236
-
237
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7() {
238
- return _regenerator2.default.wrap(function _callee7$(_context7) {
239
- while (1) {
240
- switch (_context7.prev = _context7.next) {
241
- case 0:
242
- _context7.next = 2;
243
- return exec('kill', services);
244
-
245
- case 2:
246
- case 'end':
247
- return _context7.stop();
248
- }
249
- }
250
- }, _callee7, _this7);
251
- }))();
93
+
94
+ async kill(services) {
95
+ await exec('kill', services);
252
96
  },
253
- rm: function rm(services) {
254
- var _this8 = this;
255
-
256
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() {
257
- return _regenerator2.default.wrap(function _callee8$(_context8) {
258
- while (1) {
259
- switch (_context8.prev = _context8.next) {
260
- case 0:
261
- if (!services) {
262
- services = [];
263
- }
264
-
265
- _context8.next = 3;
266
- return exec('rm', ['-f', '-v'].concat((0, _toConsumableArray3.default)(services)));
267
-
268
- case 3:
269
- case 'end':
270
- return _context8.stop();
271
- }
272
- }
273
- }, _callee8, _this8);
274
- }))();
97
+
98
+ async rm(services) {
99
+ if (!services) {
100
+ services = [];
101
+ }
102
+
103
+ await exec('rm', ['-f', '-v', ...services]);
275
104
  },
276
- update: function update(services) {
277
- var _this9 = this;
278
-
279
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {
280
- var launchedServiceNames, servicesToRelaunch;
281
- return _regenerator2.default.wrap(function _callee9$(_context9) {
282
- while (1) {
283
- switch (_context9.prev = _context9.next) {
284
- case 0:
285
- if (!services) {
286
- services = [];
287
- }
288
-
289
- _context9.next = 3;
290
- return exec('pull', services);
291
-
292
- case 3:
293
- _context9.t0 = toLookupTable;
294
- _context9.next = 6;
295
- return _this9.getLaunchedServiceNames();
296
-
297
- case 6:
298
- _context9.t1 = _context9.sent;
299
- launchedServiceNames = (0, _context9.t0)(_context9.t1);
300
- servicesToRelaunch = services.filter(function (name) {
301
- return launchedServiceNames[name];
302
- });
303
-
304
- if (!servicesToRelaunch.length) {
305
- _context9.next = 12;
306
- break;
307
- }
308
-
309
- _context9.next = 12;
310
- return exec('up', ['-d', '--no-deps'].concat((0, _toConsumableArray3.default)(servicesToRelaunch)));
311
-
312
- case 12:
313
- case 'end':
314
- return _context9.stop();
315
- }
316
- }
317
- }, _callee9, _this9);
318
- }))();
105
+
106
+ async update(services) {
107
+ if (!services) {
108
+ services = [];
109
+ }
110
+
111
+ await exec('pull', services); // only relaunch services which are already running
112
+
113
+ const launchedServiceNames = toLookupTable(await this.getLaunchedServiceNames());
114
+ const servicesToRelaunch = services.filter(name => launchedServiceNames[name]);
115
+
116
+ if (servicesToRelaunch.length) {
117
+ await exec('up', ['-d', '--no-deps', ...servicesToRelaunch]);
118
+ }
319
119
  },
320
- spawnLogStream: function spawnLogStream(services) {
321
- var _this10 = this;
322
-
323
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {
324
- return _regenerator2.default.wrap(function _callee10$(_context10) {
325
- while (1) {
326
- switch (_context10.prev = _context10.next) {
327
- case 0:
328
- if (!services) {
329
- services = [];
330
- }
331
-
332
- _context10.next = 3;
333
- return exec('logs', ['-f', '--tail=250'].concat((0, _toConsumableArray3.default)(services)), { pipeLog: true, maxBuffer: Infinity });
334
-
335
- case 3:
336
- case 'end':
337
- return _context10.stop();
338
- }
339
- }
340
- }, _callee10, _this10);
341
- }))();
120
+
121
+ async spawnLogStream(services) {
122
+ if (!services) {
123
+ services = [];
124
+ }
125
+
126
+ await exec('logs', ['-f', '--tail=250', ...services], {
127
+ pipeLog: true,
128
+ maxBuffer: Infinity
129
+ });
342
130
  },
343
- port: function port(service, privatePort, index) {
344
- var _this11 = this;
345
-
346
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {
347
- var container, portConfig;
348
- return _regenerator2.default.wrap(function _callee11$(_context11) {
349
- while (1) {
350
- switch (_context11.prev = _context11.next) {
351
- case 0:
352
- if (index == null) index = 1;
353
-
354
- _context11.next = 3;
355
- return _this11.ps(service);
356
-
357
- case 3:
358
- container = _context11.sent.pop();
359
-
360
- if (container) {
361
- _context11.next = 6;
362
- break;
363
- }
364
-
365
- return _context11.abrupt('return', null);
366
-
367
- case 6:
368
- portConfig = container.raw.NetworkSettings.Ports[privatePort + '/tcp'];
369
-
370
- if (!(!Array.isArray(portConfig) || portConfig.length === 0)) {
371
- _context11.next = 9;
372
- break;
373
- }
374
-
375
- return _context11.abrupt('return', null);
376
-
377
- case 9:
378
- return _context11.abrupt('return', Number(portConfig[0].HostPort));
379
-
380
- case 10:
381
- case 'end':
382
- return _context11.stop();
383
- }
384
- }
385
- }, _callee11, _this11);
386
- }))();
131
+
132
+ async port(service, privatePort, index) {
133
+ if (index == null) index = 1;
134
+ const container = (await this.ps(service)).pop();
135
+
136
+ if (!container) {
137
+ return null;
138
+ }
139
+
140
+ const portConfig = container.raw.NetworkSettings.Ports[`${privatePort}/tcp`];
141
+
142
+ if (!Array.isArray(portConfig) || portConfig.length === 0) {
143
+ return null;
144
+ }
145
+
146
+ return Number(portConfig[0].HostPort);
387
147
  },
388
- writeConfig: function writeConfig(config) {
389
- var _this12 = this;
390
-
391
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {
392
- var yamlOut;
393
- return _regenerator2.default.wrap(function _callee12$(_context12) {
394
- while (1) {
395
- switch (_context12.prev = _context12.next) {
396
- case 0:
397
- yamlOut = _jsYaml2.default.safeDump(config, { skipInvalid: true });
398
- _context12.next = 3;
399
- return _fs2.default.writeFileAsync(getCompiledDockerComposePath(), yamlOut);
400
-
401
- case 3:
402
-
403
- debug('Wrote docker-compose.tmp.yml', yamlOut);
404
-
405
- case 4:
406
- case 'end':
407
- return _context12.stop();
408
- }
409
- }
410
- }, _callee12, _this12);
411
- }))();
148
+
149
+ async writeConfig(config) {
150
+ const yamlOut = _jsYaml.default.safeDump(config, {
151
+ skipInvalid: true
152
+ });
153
+
154
+ await _fs.default.writeFileAsync(getCompiledDockerComposePath(), yamlOut);
155
+ debug('Wrote docker-compose.tmp.yml', yamlOut);
412
156
  },
413
- getConfig: function getConfig() {
414
- var _this13 = this;
415
-
416
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13() {
417
- var output, config;
418
- return _regenerator2.default.wrap(function _callee13$(_context13) {
419
- while (1) {
420
- switch (_context13.prev = _context13.next) {
421
- case 0:
422
- _context13.next = 2;
423
- return exec('config', [], { useOriginalDockerComposeFiles: true, noLog: true });
424
-
425
- case 2:
426
- output = _context13.sent;
427
- config = _jsYaml2.default.safeLoad(output);
428
- return _context13.abrupt('return', config);
429
-
430
- case 5:
431
- case 'end':
432
- return _context13.stop();
433
- }
434
- }
435
- }, _callee13, _this13);
436
- }))();
157
+
158
+ async getConfig() {
159
+ const output = await exec('config', [], {
160
+ useOriginalDockerComposeFiles: true,
161
+ noLog: true
162
+ });
163
+
164
+ const config = _jsYaml.default.safeLoad(output);
165
+
166
+ return config;
437
167
  },
438
- getLaunchedServiceNames: function getLaunchedServiceNames() {
439
- var _this14 = this;
440
-
441
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14() {
442
- var projectName, ps, names;
443
- return _regenerator2.default.wrap(function _callee14$(_context14) {
444
- while (1) {
445
- switch (_context14.prev = _context14.next) {
446
- case 0:
447
- projectName = navy.normalisedName;
448
- _context14.next = 3;
449
- return _dockerClient2.default.listContainers({
450
- all: true,
451
- filters: {
452
- label: ['com.docker.compose.project=' + projectName]
453
- }
454
- });
455
-
456
- case 3:
457
- ps = _context14.sent;
458
- names = ps.map(function (container) {
459
- return container.Labels['com.docker.compose.service'];
460
- });
461
- return _context14.abrupt('return', names);
462
-
463
- case 6:
464
- case 'end':
465
- return _context14.stop();
466
- }
467
- }
468
- }, _callee14, _this14);
469
- }))();
168
+
169
+ async getLaunchedServiceNames() {
170
+ const projectName = navy.normalisedName;
171
+ const ps = await _dockerClient.default.listContainers({
172
+ all: true,
173
+ filters: {
174
+ label: [`com.docker.compose.project=${projectName}`]
175
+ }
176
+ });
177
+ const names = ps.map(container => container.Labels['com.docker.compose.service']);
178
+ return names;
470
179
  },
471
- getAvailableServiceNames: function getAvailableServiceNames() {
472
- var _this15 = this;
473
-
474
- return (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15() {
475
- var config;
476
- return _regenerator2.default.wrap(function _callee15$(_context15) {
477
- while (1) {
478
- switch (_context15.prev = _context15.next) {
479
- case 0:
480
- _context15.next = 2;
481
- return driver.getConfig();
482
-
483
- case 2:
484
- config = _context15.sent;
485
- return _context15.abrupt('return', (0, _keys2.default)(config.services));
486
-
487
- case 4:
488
- case 'end':
489
- return _context15.stop();
490
- }
491
- }
492
- }, _callee15, _this15);
493
- }))();
180
+
181
+ async getAvailableServiceNames() {
182
+ const config = await driver.getConfig();
183
+ return Object.keys(config.services);
494
184
  }
495
- };
496
185
 
186
+ };
497
187
  return driver;
498
188
  }
499
189
 
500
190
  function toLookupTable(keys) {
501
- var lookupTable = {};
502
- keys.forEach(function (key) {
503
- return lookupTable[key] = true;
504
- });
191
+ const lookupTable = {};
192
+ keys.forEach(key => lookupTable[key] = true);
505
193
  return lookupTable;
506
194
  }
195
+
507
196
  module.exports = exports.default;