navy 6.0.0 → 7.0.0-alpha.2

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 (149) hide show
  1. package/lib/__tests__/config-provider.js +75 -0
  2. package/lib/__tests__/config.js +130 -0
  3. package/lib/__tests__/driver-logging.js +148 -0
  4. package/lib/__tests__/driver.js +19 -0
  5. package/lib/__tests__/errors.js +49 -0
  6. package/lib/__tests__/http-proxy.js +214 -0
  7. package/lib/__tests__/index.js +25 -0
  8. package/lib/__tests__/service.js +16 -0
  9. package/lib/cli/__tests__/develop.js +239 -0
  10. package/lib/cli/__tests__/external-ip.js +68 -0
  11. package/lib/cli/__tests__/health.js +257 -0
  12. package/lib/cli/__tests__/https.js +210 -0
  13. package/lib/cli/__tests__/import.js +110 -0
  14. package/lib/cli/__tests__/index.js +118 -0
  15. package/lib/cli/__tests__/lan-ip.js +90 -0
  16. package/lib/cli/__tests__/launch.js +179 -0
  17. package/lib/cli/__tests__/live.js +155 -0
  18. package/lib/cli/__tests__/local-ip.js +72 -0
  19. package/lib/cli/__tests__/logs.js +52 -0
  20. package/lib/cli/__tests__/open.js +65 -0
  21. package/lib/cli/__tests__/program.js +472 -0
  22. package/lib/cli/__tests__/ps.js +345 -0
  23. package/lib/cli/__tests__/refresh-config.js +95 -0
  24. package/lib/cli/__tests__/run.js +54 -0
  25. package/lib/cli/__tests__/status.js +204 -0
  26. package/lib/cli/__tests__/updates.js +243 -0
  27. package/lib/cli/__tests__/wait-for-healthy.js +134 -0
  28. package/lib/cli/config/__tests__/index.js +275 -0
  29. package/lib/cli/config/__tests__/wrapper.js +53 -0
  30. package/lib/cli/config/index.js +19 -37
  31. package/lib/cli/config/wrapper.js +0 -6
  32. package/lib/cli/develop.js +7 -21
  33. package/lib/cli/doctor/__tests__/clean-compose-files.js +78 -0
  34. package/lib/cli/doctor/__tests__/index.js +67 -0
  35. package/lib/cli/doctor/__tests__/invalid-compose-config.js +103 -0
  36. package/lib/cli/doctor/__tests__/invalid-state.js +83 -0
  37. package/lib/cli/doctor/__tests__/util.js +91 -0
  38. package/lib/cli/doctor/clean-compose-files.js +5 -13
  39. package/lib/cli/doctor/index.js +0 -12
  40. package/lib/cli/doctor/invalid-compose-config.js +0 -4
  41. package/lib/cli/doctor/invalid-state.js +0 -6
  42. package/lib/cli/doctor/util.js +0 -10
  43. package/lib/cli/external-ip.js +0 -4
  44. package/lib/cli/health.js +0 -12
  45. package/lib/cli/https.js +9 -25
  46. package/lib/cli/import.js +0 -12
  47. package/lib/cli/index.js +0 -9
  48. package/lib/cli/lan-ip.js +2 -8
  49. package/lib/cli/launch.js +0 -9
  50. package/lib/cli/live.js +6 -16
  51. package/lib/cli/local-ip.js +2 -7
  52. package/lib/cli/logs.js +0 -3
  53. package/lib/cli/open.js +2 -7
  54. package/lib/cli/program.js +73 -101
  55. package/lib/cli/ps.js +1 -21
  56. package/lib/cli/refresh-config.js +0 -7
  57. package/lib/cli/run.js +0 -3
  58. package/lib/cli/status.js +0 -11
  59. package/lib/cli/updates.js +0 -22
  60. package/lib/cli/util/__tests__/get-or-initialise-navy.js +66 -0
  61. package/lib/cli/util/__tests__/import.js +123 -0
  62. package/lib/cli/util/__tests__/index.js +17 -0
  63. package/lib/cli/util/__tests__/merge-action-options.js +47 -0
  64. package/lib/cli/util/__tests__/reconfigure.js +78 -0
  65. package/lib/cli/util/get-or-initialise-navy.js +0 -7
  66. package/lib/cli/util/import.js +0 -9
  67. package/lib/cli/util/index.js +0 -2
  68. package/lib/cli/util/merge-action-options.js +20 -0
  69. package/lib/cli/util/reconfigure.js +0 -4
  70. package/lib/cli/wait-for-healthy.js +0 -21
  71. package/lib/client/registry/__tests__/get-credentials.js +62 -0
  72. package/lib/client/registry/__tests__/get-endpoint.js +124 -0
  73. package/lib/client/registry/__tests__/get-fat-manifest.js +67 -0
  74. package/lib/client/registry/__tests__/get-token.js +66 -0
  75. package/lib/client/registry/__tests__/helpers.js +26 -0
  76. package/lib/client/registry/get-credentials.js +3 -9
  77. package/lib/client/registry/get-endpoint.js +29 -63
  78. package/lib/client/registry/get-fat-manifest.js +2 -9
  79. package/lib/client/registry/get-token.js +2 -13
  80. package/lib/client/registry/helpers.js +0 -4
  81. package/lib/config-provider.js +0 -12
  82. package/lib/config-providers/filesystem/__tests__/index.js +176 -0
  83. package/lib/config-providers/filesystem/index.js +5 -23
  84. package/lib/config-providers/npm/__tests__/index.js +226 -0
  85. package/lib/config-providers/npm/__tests__/util.js +1 -2
  86. package/lib/config-providers/npm/index.js +12 -35
  87. package/lib/config-providers/npm/util.js +0 -3
  88. package/lib/config.js +4 -19
  89. package/lib/domain/__tests__/container-image.js +81 -0
  90. package/lib/domain/__tests__/oci-api-specification.js +23 -0
  91. package/lib/domain/container-image.js +8 -21
  92. package/lib/domain/oci-api-specification.js +3 -5
  93. package/lib/driver-logging.js +0 -19
  94. package/lib/driver.js +0 -4
  95. package/lib/drivers/docker-compose/__tests__/client.js +249 -0
  96. package/lib/drivers/docker-compose/__tests__/index.js +430 -0
  97. package/lib/drivers/docker-compose/client.js +0 -16
  98. package/lib/drivers/docker-compose/index.js +7 -49
  99. package/lib/errors.js +0 -10
  100. package/lib/http-proxy.js +28 -23
  101. package/lib/index.js +1 -9
  102. package/lib/middleware/__tests__/add-service-proxy-config.js +258 -0
  103. package/lib/middleware/__tests__/develop.js +120 -0
  104. package/lib/middleware/__tests__/helpers.js +154 -0
  105. package/lib/middleware/__tests__/port-override.js +125 -0
  106. package/lib/middleware/__tests__/set-env-vars.js +94 -0
  107. package/lib/middleware/__tests__/set-image.js +76 -0
  108. package/lib/middleware/__tests__/set-logging-driver.js +94 -0
  109. package/lib/middleware/__tests__/tag-override.js +92 -0
  110. package/lib/middleware/add-service-proxy-config.js +8 -16
  111. package/lib/middleware/develop.js +2 -5
  112. package/lib/middleware/helpers.js +6 -12
  113. package/lib/middleware/port-override.js +5 -8
  114. package/lib/middleware/set-env-vars.js +6 -6
  115. package/lib/middleware/set-image.js +4 -5
  116. package/lib/middleware/set-logging-driver.js +6 -6
  117. package/lib/middleware/tag-override.js +4 -6
  118. package/lib/navy/__tests__/default-middleware.js +40 -0
  119. package/lib/navy/__tests__/index.js +1612 -0
  120. package/lib/navy/__tests__/middleware.js +71 -0
  121. package/lib/navy/__tests__/plugin-interface.js +121 -0
  122. package/lib/navy/__tests__/state.js +103 -0
  123. package/lib/navy/__tests__/util.js +24 -0
  124. package/lib/navy/default-middleware.js +0 -10
  125. package/lib/navy/index.js +83 -138
  126. package/lib/navy/middleware.js +0 -6
  127. package/lib/navy/plugin-interface.js +2 -10
  128. package/lib/navy/state.js +12 -24
  129. package/lib/navy/util.js +0 -1
  130. package/lib/service.js +2 -3
  131. package/lib/util/__tests__/exec-async.js +83 -0
  132. package/lib/util/__tests__/external-ip.js +97 -2
  133. package/lib/util/__tests__/get-lan-ip.js +46 -0
  134. package/lib/util/__tests__/has-update.js +136 -0
  135. package/lib/util/__tests__/https.js +301 -0
  136. package/lib/util/__tests__/navyrc.js +45 -0
  137. package/lib/util/__tests__/service-host.js +63 -5
  138. package/lib/util/__tests__/table.js +44 -0
  139. package/lib/util/docker-client.js +2 -10
  140. package/lib/util/exec-async.js +0 -4
  141. package/lib/util/external-ip.js +8 -12
  142. package/lib/util/fs.js +1 -6
  143. package/lib/util/get-lan-ip.js +0 -5
  144. package/lib/util/has-update.js +2 -14
  145. package/lib/util/https.js +11 -55
  146. package/lib/util/navyrc.js +0 -5
  147. package/lib/util/service-host.js +0 -17
  148. package/lib/util/table.js +0 -6
  149. package/package.json +14 -13
@@ -4,20 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _helpers = require("./helpers");
9
-
10
8
  function rewriteService(service, serviceName, serviceState) {
11
9
  if (!serviceState || !serviceState._develop) return service;
12
10
  const _serviceState = serviceState;
13
- return { ...service,
11
+ return {
12
+ ...service,
14
13
  stdin_open: true,
15
14
  volumes: _helpers.middlewareHelpers.addVolumes(service, Object.keys(serviceState._develop.mounts).map(local => `${local}:${_serviceState._develop.mounts[local]}`)),
16
15
  command: serviceState._develop.command ? serviceState._develop.command : service.command
17
16
  };
18
17
  }
19
-
20
18
  var _default = (config, state) => _helpers.middlewareHelpers.rewriteServicesWithState(config, state, rewriteService);
21
-
22
19
  exports.default = _default;
23
20
  module.exports = exports.default;
@@ -4,34 +4,28 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.middlewareHelpers = void 0;
7
-
8
7
  var _lodash = require("lodash");
9
-
10
- const middlewareHelpers = {
8
+ const middlewareHelpers = exports.middlewareHelpers = {
11
9
  rewriteServices(config, serviceMapperFn) {
12
- return { ...config,
10
+ return {
11
+ ...config,
13
12
  services: (0, _lodash.mapValues)(config.services || {}, serviceMapperFn)
14
13
  };
15
14
  },
16
-
17
15
  rewriteServicesWithState(config, state, serviceMapperFn) {
18
16
  const normalisedState = state || {
19
17
  services: {}
20
18
  };
21
-
22
19
  function mapperFn(service, serviceName) {
23
20
  return serviceMapperFn(service, serviceName, normalisedState.services[serviceName]);
24
21
  }
25
-
26
- return { ...config,
22
+ return {
23
+ ...config,
27
24
  services: (0, _lodash.mapValues)(config.services || {}, mapperFn)
28
25
  };
29
26
  },
30
-
31
27
  addVolumes(service, volumes) {
32
28
  const normalisedVolumes = service.volumes || [];
33
29
  return [...normalisedVolumes, ...volumes];
34
30
  }
35
-
36
- };
37
- exports.middlewareHelpers = middlewareHelpers;
31
+ };
@@ -4,24 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _lodash = require("lodash");
9
-
10
8
  function getPortConfig(serviceName, state) {
11
9
  return state.services[serviceName] ? state.services[serviceName]._ports || {} : {};
12
10
  }
13
-
14
- var _default = (config, state) => ({ ...config,
11
+ var _default = (config, state) => ({
12
+ ...config,
15
13
  services: (0, _lodash.mapValues)(config.services, (service, serviceName) => {
16
14
  const portConfig = getPortConfig(serviceName, state);
17
- const hasPortConfig = !!portConfig;
18
15
  const internalPorts = Object.keys(portConfig).filter(internal => !!portConfig[internal]);
19
16
  const inheritedPorts = service.ports ? service.ports.filter(port => internalPorts.indexOf(port) === -1) : [];
20
- return { ...service,
21
- ports: hasPortConfig ? [...inheritedPorts, ...internalPorts.map(internal => `${portConfig[internal]}:${internal}`)] : service.ports
17
+ return {
18
+ ...service,
19
+ ports: [...inheritedPorts, ...internalPorts.map(internal => `${portConfig[internal]}:${internal}`)]
22
20
  };
23
21
  })
24
22
  });
25
-
26
23
  exports.default = _default;
27
24
  module.exports = exports.default;
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _lodash = require("lodash");
9
-
10
- var _default = (config, state) => ({ ...config,
8
+ var _default = (config, state) => ({
9
+ ...config,
11
10
  services: (0, _lodash.mapValues)(config.services, (serviceConfig, serviceName) => {
12
11
  const serviceState = state.services[serviceName] || {};
13
- return { ...serviceConfig,
14
- environment: { ...serviceConfig.environment,
12
+ return {
13
+ ...serviceConfig,
14
+ environment: {
15
+ ...serviceConfig.environment,
15
16
  ...serviceState.environment
16
17
  }
17
18
  };
18
19
  })
19
20
  });
20
-
21
21
  exports.default = _default;
22
22
  module.exports = exports.default;
@@ -4,17 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _lodash = require("lodash");
9
-
10
- var _default = (config, state) => ({ ...config,
8
+ var _default = (config, state) => ({
9
+ ...config,
11
10
  services: (0, _lodash.mapValues)(config.services, (serviceConfig, serviceName) => {
12
11
  const serviceState = state.services[serviceName] || {};
13
- return { ...serviceConfig,
12
+ return {
13
+ ...serviceConfig,
14
14
  image: serviceState.image || serviceConfig.image
15
15
  };
16
16
  })
17
17
  });
18
-
19
18
  exports.default = _default;
20
19
  module.exports = exports.default;
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _lodash = require("lodash");
9
-
10
- var _default = (config, state) => ({ ...config,
8
+ var _default = (config, state) => ({
9
+ ...config,
11
10
  services: (0, _lodash.mapValues)(config.services, (serviceConfig, serviceName) => {
12
11
  const serviceState = state.services[serviceName] || {};
13
- return { ...serviceConfig,
14
- logging: { ...serviceConfig.logging,
12
+ return {
13
+ ...serviceConfig,
14
+ logging: {
15
+ ...serviceConfig.logging,
15
16
  ...serviceState.logging
16
17
  }
17
18
  };
18
19
  })
19
20
  });
20
-
21
21
  exports.default = _default;
22
22
  module.exports = exports.default;
@@ -4,27 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _default = (config, state) => {
9
8
  const newConfig = config;
10
9
  Object.keys(state.services || {}).forEach(function (serviceName) {
11
10
  const serviceConfig = newConfig.services[serviceName];
12
11
  const serviceState = state.services[serviceName];
13
-
14
12
  if (serviceState._tag && serviceConfig) {
15
- let image = serviceConfig.image; // strip existing tag off if it exists
13
+ let image = serviceConfig.image;
16
14
 
15
+ // strip existing tag off if it exists
17
16
  if (image.indexOf(':') !== -1) {
18
17
  image = image.substring(0, image.indexOf(':'));
19
- } // add new tag
20
-
18
+ }
21
19
 
20
+ // add new tag
22
21
  image += ':' + serviceState._tag;
23
22
  serviceConfig.image = image;
24
23
  }
25
24
  });
26
25
  return newConfig;
27
26
  };
28
-
29
27
  exports.default = _default;
30
28
  module.exports = exports.default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _chai = require("chai");
5
+ var _defaultMiddleware = _interopRequireDefault(require("../default-middleware"));
6
+ var _develop = _interopRequireDefault(require("../../middleware/develop"));
7
+ var _tagOverride = _interopRequireDefault(require("../../middleware/tag-override"));
8
+ var _portOverride = _interopRequireDefault(require("../../middleware/port-override"));
9
+ var _setEnvVars = _interopRequireDefault(require("../../middleware/set-env-vars"));
10
+ var _setLoggingDriver = _interopRequireDefault(require("../../middleware/set-logging-driver"));
11
+ var _setImage = _interopRequireDefault(require("../../middleware/set-image"));
12
+ var _addServiceProxyConfig = _interopRequireDefault(require("../../middleware/add-service-proxy-config"));
13
+ /* eslint-env mocha */
14
+
15
+ describe('default-middleware', function () {
16
+ it('should return the standard middleware pipeline in the documented order', function () {
17
+ const fakeNavy = {
18
+ name: 'env',
19
+ normalisedName: 'env'
20
+ };
21
+ const list = (0, _defaultMiddleware.default)(fakeNavy);
22
+ (0, _chai.expect)(list).to.have.lengthOf(7);
23
+ (0, _chai.expect)(list[0]).to.equal(_develop.default);
24
+ (0, _chai.expect)(list[1]).to.equal(_tagOverride.default);
25
+ (0, _chai.expect)(list[2]).to.equal(_portOverride.default);
26
+ (0, _chai.expect)(list[3]).to.equal(_setEnvVars.default);
27
+ (0, _chai.expect)(list[4]).to.equal(_setLoggingDriver.default);
28
+ (0, _chai.expect)(list[5]).to.equal(_setImage.default);
29
+ (0, _chai.expect)(list[6]).to.be.a('function');
30
+ });
31
+ it('should bind the navy through to the addServiceProxy middleware factory', function () {
32
+ const fakeNavy = {
33
+ name: 'env',
34
+ normalisedName: 'env'
35
+ };
36
+ const list = (0, _defaultMiddleware.default)(fakeNavy);
37
+ const expected = (0, _addServiceProxyConfig.default)(fakeNavy);
38
+ (0, _chai.expect)(typeof list[6]).to.equal(typeof expected);
39
+ });
40
+ });