@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21

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 (184) hide show
  1. package/dist/config.js +1 -11
  2. package/dist/config.js.map +1 -1
  3. package/dist/credentials-config.js +44 -64
  4. package/dist/credentials-config.js.map +1 -1
  5. package/dist/index.js +0 -76
  6. package/dist/index.js.map +1 -1
  7. package/dist/interceptors/auth.js +22 -55
  8. package/dist/interceptors/auth.js.map +1 -1
  9. package/dist/interceptors/default-options.js +0 -20
  10. package/dist/interceptors/default-options.js.map +1 -1
  11. package/dist/interceptors/embargo.js +0 -21
  12. package/dist/interceptors/embargo.js.map +1 -1
  13. package/dist/interceptors/network-timing.js +2 -21
  14. package/dist/interceptors/network-timing.js.map +1 -1
  15. package/dist/interceptors/payload-transformer.js +2 -22
  16. package/dist/interceptors/payload-transformer.js.map +1 -1
  17. package/dist/interceptors/rate-limit.js +25 -57
  18. package/dist/interceptors/rate-limit.js.map +1 -1
  19. package/dist/interceptors/redirect.js +4 -33
  20. package/dist/interceptors/redirect.js.map +1 -1
  21. package/dist/interceptors/request-event.js +3 -30
  22. package/dist/interceptors/request-event.js.map +1 -1
  23. package/dist/interceptors/request-logger.js +1 -30
  24. package/dist/interceptors/request-logger.js.map +1 -1
  25. package/dist/interceptors/request-timing.js +3 -22
  26. package/dist/interceptors/request-timing.js.map +1 -1
  27. package/dist/interceptors/response-logger.js +2 -31
  28. package/dist/interceptors/response-logger.js.map +1 -1
  29. package/dist/interceptors/user-agent.js +2 -29
  30. package/dist/interceptors/user-agent.js.map +1 -1
  31. package/dist/interceptors/webex-tracking-id.js +5 -28
  32. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  33. package/dist/interceptors/webex-user-agent.js +5 -38
  34. package/dist/interceptors/webex-user-agent.js.map +1 -1
  35. package/dist/lib/batcher.js +3 -51
  36. package/dist/lib/batcher.js.map +1 -1
  37. package/dist/lib/credentials/credentials.js +39 -119
  38. package/dist/lib/credentials/credentials.js.map +1 -1
  39. package/dist/lib/credentials/grant-errors.js +0 -49
  40. package/dist/lib/credentials/grant-errors.js.map +1 -1
  41. package/dist/lib/credentials/index.js +1 -13
  42. package/dist/lib/credentials/index.js.map +1 -1
  43. package/dist/lib/credentials/scope.js +1 -7
  44. package/dist/lib/credentials/scope.js.map +1 -1
  45. package/dist/lib/credentials/token-collection.js +1 -7
  46. package/dist/lib/credentials/token-collection.js.map +1 -1
  47. package/dist/lib/credentials/token.js +39 -118
  48. package/dist/lib/credentials/token.js.map +1 -1
  49. package/dist/lib/page.js +13 -26
  50. package/dist/lib/page.js.map +1 -1
  51. package/dist/lib/services/constants.js +0 -2
  52. package/dist/lib/services/constants.js.map +1 -1
  53. package/dist/lib/services/index.js +1 -28
  54. package/dist/lib/services/index.js.map +1 -1
  55. package/dist/lib/services/interceptors/server-error.js +2 -23
  56. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  57. package/dist/lib/services/interceptors/service.js +12 -34
  58. package/dist/lib/services/interceptors/service.js.map +1 -1
  59. package/dist/lib/services/metrics.js +0 -2
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +10 -90
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js +0 -2
  64. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  65. package/dist/lib/services/service-host.js +47 -62
  66. package/dist/lib/services/service-host.js.map +1 -1
  67. package/dist/lib/services/service-registry.js +78 -90
  68. package/dist/lib/services/service-registry.js.map +1 -1
  69. package/dist/lib/services/service-state.js +3 -15
  70. package/dist/lib/services/service-state.js.map +1 -1
  71. package/dist/lib/services/service-url.js +4 -25
  72. package/dist/lib/services/service-url.js.map +1 -1
  73. package/dist/lib/services/services.js +122 -238
  74. package/dist/lib/services/services.js.map +1 -1
  75. package/dist/lib/stateless-webex-plugin.js +5 -28
  76. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  77. package/dist/lib/storage/decorators.js +19 -62
  78. package/dist/lib/storage/decorators.js.map +1 -1
  79. package/dist/lib/storage/errors.js +0 -23
  80. package/dist/lib/storage/errors.js.map +1 -1
  81. package/dist/lib/storage/index.js +2 -16
  82. package/dist/lib/storage/index.js.map +1 -1
  83. package/dist/lib/storage/make-webex-plugin-store.js +11 -41
  84. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  85. package/dist/lib/storage/make-webex-store.js +8 -30
  86. package/dist/lib/storage/make-webex-store.js.map +1 -1
  87. package/dist/lib/storage/memory-store-adapter.js +1 -19
  88. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  89. package/dist/lib/webex-core-plugin-mixin.js +9 -29
  90. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  91. package/dist/lib/webex-http-error.js +1 -31
  92. package/dist/lib/webex-http-error.js.map +1 -1
  93. package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
  94. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  95. package/dist/lib/webex-plugin.js +6 -40
  96. package/dist/lib/webex-plugin.js.map +1 -1
  97. package/dist/plugins/logger.js +3 -17
  98. package/dist/plugins/logger.js.map +1 -1
  99. package/dist/webex-core.js +79 -203
  100. package/dist/webex-core.js.map +1 -1
  101. package/dist/webex-internal-core.js +0 -10
  102. package/dist/webex-internal-core.js.map +1 -1
  103. package/package.json +14 -14
  104. package/src/config.js +9 -11
  105. package/src/credentials-config.js +110 -72
  106. package/src/index.js +4 -14
  107. package/src/interceptors/auth.js +36 -37
  108. package/src/interceptors/default-options.js +0 -1
  109. package/src/interceptors/embargo.js +1 -1
  110. package/src/interceptors/payload-transformer.js +1 -2
  111. package/src/interceptors/rate-limit.js +8 -5
  112. package/src/interceptors/redirect.js +14 -8
  113. package/src/interceptors/request-event.js +4 -8
  114. package/src/interceptors/request-logger.js +8 -5
  115. package/src/interceptors/response-logger.js +11 -8
  116. package/src/interceptors/user-agent.js +1 -2
  117. package/src/interceptors/webex-user-agent.js +3 -9
  118. package/src/lib/batcher.js +70 -69
  119. package/src/lib/credentials/credentials.js +112 -122
  120. package/src/lib/credentials/grant-errors.js +6 -7
  121. package/src/lib/credentials/index.js +1 -4
  122. package/src/lib/credentials/scope.js +1 -4
  123. package/src/lib/credentials/token-collection.js +1 -1
  124. package/src/lib/credentials/token.js +86 -80
  125. package/src/lib/page.js +10 -11
  126. package/src/lib/services/constants.js +3 -13
  127. package/src/lib/services/index.js +2 -2
  128. package/src/lib/services/interceptors/server-error.js +12 -7
  129. package/src/lib/services/interceptors/service.js +6 -5
  130. package/src/lib/services/metrics.js +1 -1
  131. package/src/lib/services/service-catalog.js +110 -100
  132. package/src/lib/services/service-fed-ramp.js +1 -2
  133. package/src/lib/services/service-host.js +10 -17
  134. package/src/lib/services/service-registry.js +69 -96
  135. package/src/lib/services/service-state.js +4 -6
  136. package/src/lib/services/service-url.js +24 -23
  137. package/src/lib/services/services.js +260 -251
  138. package/src/lib/stateless-webex-plugin.js +4 -2
  139. package/src/lib/storage/decorators.js +68 -66
  140. package/src/lib/storage/index.js +4 -6
  141. package/src/lib/storage/make-webex-plugin-store.js +34 -21
  142. package/src/lib/storage/make-webex-store.js +6 -7
  143. package/src/lib/storage/memory-store-adapter.js +3 -3
  144. package/src/lib/webex-core-plugin-mixin.js +10 -7
  145. package/src/lib/webex-http-error.js +7 -8
  146. package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
  147. package/src/lib/webex-plugin.js +41 -34
  148. package/src/plugins/logger.js +8 -3
  149. package/src/webex-core.js +185 -116
  150. package/src/webex-internal-core.js +15 -9
  151. package/test/integration/spec/credentials/credentials.js +26 -30
  152. package/test/integration/spec/credentials/token.js +36 -33
  153. package/test/integration/spec/services/service-catalog.js +177 -156
  154. package/test/integration/spec/services/services.js +313 -304
  155. package/test/integration/spec/webex-core.js +98 -86
  156. package/test/unit/spec/_setup.js +26 -18
  157. package/test/unit/spec/credentials/credentials.js +189 -154
  158. package/test/unit/spec/credentials/token.js +94 -76
  159. package/test/unit/spec/interceptors/auth.js +291 -243
  160. package/test/unit/spec/interceptors/default-options.js +36 -24
  161. package/test/unit/spec/interceptors/embargo.js +32 -27
  162. package/test/unit/spec/interceptors/network-timing.js +2 -2
  163. package/test/unit/spec/interceptors/payload-transformer.js +61 -52
  164. package/test/unit/spec/interceptors/rate-limit.js +104 -75
  165. package/test/unit/spec/interceptors/redirect.js +22 -20
  166. package/test/unit/spec/interceptors/request-timing.js +18 -22
  167. package/test/unit/spec/interceptors/user-agent.js +28 -16
  168. package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
  169. package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
  170. package/test/unit/spec/lib/batcher.js +36 -32
  171. package/test/unit/spec/lib/page.js +36 -32
  172. package/test/unit/spec/lib/webex-plugin.js +1 -1
  173. package/test/unit/spec/services/interceptors/server-error.js +67 -90
  174. package/test/unit/spec/services/interceptors/service.js +17 -28
  175. package/test/unit/spec/services/service-catalog.js +19 -27
  176. package/test/unit/spec/services/service-host.js +29 -26
  177. package/test/unit/spec/services/service-registry.js +128 -170
  178. package/test/unit/spec/services/service-state.js +13 -22
  179. package/test/unit/spec/services/service-url.js +24 -43
  180. package/test/unit/spec/services/services.js +85 -41
  181. package/test/unit/spec/storage/persist.js +6 -9
  182. package/test/unit/spec/storage/wait-for-value.js +22 -21
  183. package/test/unit/spec/webex-core.js +78 -57
  184. package/test/unit/spec/webex-internal-core.js +56 -31
@@ -1,21 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
14
-
15
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
16
-
17
11
  var _constants = require("./constants");
18
-
19
12
  /**
20
13
  * The state of a specific catalog to be used by {@link ServiceState}.
21
14
  *
@@ -23,7 +16,6 @@ var _constants = require("./constants");
23
16
  * @property {boolean} CatalogState.collecting - If the catalog is collecting.
24
17
  * @property {boolean} CatalogState.ready - If the catalog is ready.
25
18
  */
26
-
27
19
  /**
28
20
  * @class
29
21
  * @classdesc - Manages the state of the service catalogs for a webex instance.
@@ -38,14 +30,13 @@ var ServiceState = /*#__PURE__*/function () {
38
30
  */
39
31
  function ServiceState() {
40
32
  var _this = this;
41
-
42
33
  (0, _classCallCheck2.default)(this, ServiceState);
43
-
44
34
  // Iterate over the possible catalog names and generate their states.
45
35
  _constants.SERVICE_CATALOGS.forEach(function (catalog) {
46
36
  _this[catalog] = ServiceState.generateCatalogState();
47
37
  });
48
38
  }
39
+
49
40
  /**
50
41
  * Set a catalog to be collecting or not.
51
42
  *
@@ -55,8 +46,6 @@ var ServiceState = /*#__PURE__*/function () {
55
46
  * @param {boolean} collecting - If the target is collecting or not.
56
47
  * @returns {undefined}
57
48
  */
58
-
59
-
60
49
  (0, _createClass2.default)(ServiceState, [{
61
50
  key: "setCollecting",
62
51
  value: function setCollecting(catalog, collecting) {
@@ -66,6 +55,7 @@ var ServiceState = /*#__PURE__*/function () {
66
55
  this[catalog].collecting = collecting;
67
56
  }
68
57
  }
58
+
69
59
  /**
70
60
  * Set a catalog to be ready or not.
71
61
  *
@@ -75,7 +65,6 @@ var ServiceState = /*#__PURE__*/function () {
75
65
  * @param {boolean} ready - If the target is ready or not.
76
66
  * @returns {undefined}
77
67
  */
78
-
79
68
  }, {
80
69
  key: "setReady",
81
70
  value: function setReady(catalog, ready) {
@@ -85,6 +74,7 @@ var ServiceState = /*#__PURE__*/function () {
85
74
  this[catalog].ready = ready;
86
75
  }
87
76
  }
77
+
88
78
  /**
89
79
  * Generate a {@link CatalogState}.
90
80
  *
@@ -93,7 +83,6 @@ var ServiceState = /*#__PURE__*/function () {
93
83
  * @memberof ServiceState
94
84
  * @returns {CatalogState} - The generated {@link CatalogState}.
95
85
  */
96
-
97
86
  }], [{
98
87
  key: "generateCatalogState",
99
88
  value: function generateCatalogState() {
@@ -105,6 +94,5 @@ var ServiceState = /*#__PURE__*/function () {
105
94
  }]);
106
95
  return ServiceState;
107
96
  }();
108
-
109
97
  exports.default = ServiceState;
110
98
  //# sourceMappingURL=service-state.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ServiceState","SERVICE_CATALOGS","forEach","catalog","generateCatalogState","collecting","ready"],"sources":["service-state.js"],"sourcesContent":["import {SERVICE_CATALOGS} from './constants';\n\n/**\n * The state of a specific catalog to be used by {@link ServiceState}.\n *\n * @typedef {Record<string, boolean>} CatalogState\n * @property {boolean} CatalogState.collecting - If the catalog is collecting.\n * @property {boolean} CatalogState.ready - If the catalog is ready.\n */\n\n/**\n * @class\n * @classdesc - Manages the state of the service catalogs for a webex instance.\n */\nexport default class ServiceState {\n /**\n * Generate a new {@link ServiceState}.\n *\n * @public\n * @constructor\n * @memberof ServiceState\n */\n constructor() {\n // Iterate over the possible catalog names and generate their states.\n SERVICE_CATALOGS.forEach(\n (catalog) => {\n this[catalog] = ServiceState.generateCatalogState();\n }\n );\n }\n\n /**\n * Set a catalog to be collecting or not.\n *\n * @public\n * @memberof ServiceState\n * @param {string} catalog - Catalog to target.\n * @param {boolean} collecting - If the target is collecting or not.\n * @returns {undefined}\n */\n setCollecting(catalog, collecting) {\n // Validate that the catalog state exists.\n if (this[catalog]) {\n // Set the 'collecting' status of the catalog state.\n this[catalog].collecting = collecting;\n }\n }\n\n /**\n * Set a catalog to be ready or not.\n *\n * @public\n * @memberof ServiceState\n * @param {string} catalog - Catalog to target.\n * @param {boolean} ready - If the target is ready or not.\n * @returns {undefined}\n */\n setReady(catalog, ready) {\n // Validate that the catalog state exists.\n if (this[catalog]) {\n // Set the 'ready' status of the catalog state.\n this[catalog].ready = ready;\n }\n }\n\n /**\n * Generate a {@link CatalogState}.\n *\n * @public\n * @static\n * @memberof ServiceState\n * @returns {CatalogState} - The generated {@link CatalogState}.\n */\n static generateCatalogState() {\n return {\n collecting: false,\n ready: false\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;IACqBA,Y;EACnB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,wBAAc;IAAA;;IAAA;;IACZ;IACAC,2BAAA,CAAiBC,OAAjB,CACE,UAACC,OAAD,EAAa;MACX,KAAI,CAACA,OAAD,CAAJ,GAAgBH,YAAY,CAACI,oBAAb,EAAhB;IACD,CAHH;EAKD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,uBAAcD,OAAd,EAAuBE,UAAvB,EAAmC;MACjC;MACA,IAAI,KAAKF,OAAL,CAAJ,EAAmB;QACjB;QACA,KAAKA,OAAL,EAAcE,UAAd,GAA2BA,UAA3B;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,kBAASF,OAAT,EAAkBG,KAAlB,EAAyB;MACvB;MACA,IAAI,KAAKH,OAAL,CAAJ,EAAmB;QACjB;QACA,KAAKA,OAAL,EAAcG,KAAd,GAAsBA,KAAtB;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,gCAA8B;MAC5B,OAAO;QACLD,UAAU,EAAE,KADP;QAELC,KAAK,EAAE;MAFF,CAAP;IAID"}
1
+ {"version":3,"names":["ServiceState","SERVICE_CATALOGS","forEach","catalog","generateCatalogState","collecting","ready"],"sources":["service-state.js"],"sourcesContent":["import {SERVICE_CATALOGS} from './constants';\n\n/**\n * The state of a specific catalog to be used by {@link ServiceState}.\n *\n * @typedef {Record<string, boolean>} CatalogState\n * @property {boolean} CatalogState.collecting - If the catalog is collecting.\n * @property {boolean} CatalogState.ready - If the catalog is ready.\n */\n\n/**\n * @class\n * @classdesc - Manages the state of the service catalogs for a webex instance.\n */\nexport default class ServiceState {\n /**\n * Generate a new {@link ServiceState}.\n *\n * @public\n * @constructor\n * @memberof ServiceState\n */\n constructor() {\n // Iterate over the possible catalog names and generate their states.\n SERVICE_CATALOGS.forEach((catalog) => {\n this[catalog] = ServiceState.generateCatalogState();\n });\n }\n\n /**\n * Set a catalog to be collecting or not.\n *\n * @public\n * @memberof ServiceState\n * @param {string} catalog - Catalog to target.\n * @param {boolean} collecting - If the target is collecting or not.\n * @returns {undefined}\n */\n setCollecting(catalog, collecting) {\n // Validate that the catalog state exists.\n if (this[catalog]) {\n // Set the 'collecting' status of the catalog state.\n this[catalog].collecting = collecting;\n }\n }\n\n /**\n * Set a catalog to be ready or not.\n *\n * @public\n * @memberof ServiceState\n * @param {string} catalog - Catalog to target.\n * @param {boolean} ready - If the target is ready or not.\n * @returns {undefined}\n */\n setReady(catalog, ready) {\n // Validate that the catalog state exists.\n if (this[catalog]) {\n // Set the 'ready' status of the catalog state.\n this[catalog].ready = ready;\n }\n }\n\n /**\n * Generate a {@link CatalogState}.\n *\n * @public\n * @static\n * @memberof ServiceState\n * @returns {CatalogState} - The generated {@link CatalogState}.\n */\n static generateCatalogState() {\n return {\n collecting: false,\n ready: false,\n };\n }\n}\n"],"mappings":";;;;;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA,IAIqBA,YAAY;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,wBAAc;IAAA;IAAA;IACZ;IACAC,2BAAgB,CAACC,OAAO,CAAC,UAACC,OAAO,EAAK;MACpC,KAAI,CAACA,OAAO,CAAC,GAAGH,YAAY,CAACI,oBAAoB,EAAE;IACrD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA;IAAA,OASA,uBAAcD,OAAO,EAAEE,UAAU,EAAE;MACjC;MACA,IAAI,IAAI,CAACF,OAAO,CAAC,EAAE;QACjB;QACA,IAAI,CAACA,OAAO,CAAC,CAACE,UAAU,GAAGA,UAAU;MACvC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA;IAAA,OASA,kBAASF,OAAO,EAAEG,KAAK,EAAE;MACvB;MACA,IAAI,IAAI,CAACH,OAAO,CAAC,EAAE;QACjB;QACA,IAAI,CAACA,OAAO,CAAC,CAACG,KAAK,GAAGA,KAAK;MAC7B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,gCAA8B;MAC5B,OAAO;QACLD,UAAU,EAAE,KAAK;QACjBC,KAAK,EAAE;MACT,CAAC;IACH;EAAC;EAAA;AAAA;AAAA"}
@@ -1,21 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _url = _interopRequireDefault(require("url"));
14
-
15
10
  var _ampersandState = _interopRequireDefault(require("ampersand-state"));
16
-
17
11
  /* eslint-disable no-underscore-dangle */
18
-
19
12
  /**
20
13
  * @class
21
14
  */
@@ -28,7 +21,6 @@ var ServiceUrl = _ampersandState.default.extend({
28
21
  }],
29
22
  name: ['string', true, undefined]
30
23
  },
31
-
32
24
  /**
33
25
  * Generate a host url based on the host
34
26
  * uri provided.
@@ -36,14 +28,13 @@ var ServiceUrl = _ampersandState.default.extend({
36
28
  * @returns {string}
37
29
  */
38
30
  _generateHostUrl: function _generateHostUrl(hostUri) {
39
- var url = _url.default.parse(this.defaultUrl); // setting url.hostname will not apply during Url.format(), set host via
40
- // a string literal instead.
41
-
31
+ var url = _url.default.parse(this.defaultUrl);
42
32
 
33
+ // setting url.hostname will not apply during Url.format(), set host via
34
+ // a string literal instead.
43
35
  url.host = "".concat(hostUri).concat(url.port ? ":".concat(url.port) : '');
44
36
  return _url.default.format(url);
45
37
  },
46
-
47
38
  /**
48
39
  * Generate a list of urls based on this
49
40
  * `ServiceUrl`'s known hosts.
@@ -51,7 +42,6 @@ var ServiceUrl = _ampersandState.default.extend({
51
42
  */
52
43
  _getHostUrls: function _getHostUrls() {
53
44
  var _this = this;
54
-
55
45
  return this.hosts.map(function (host) {
56
46
  return {
57
47
  url: _this._generateHostUrl(host.host),
@@ -59,7 +49,6 @@ var ServiceUrl = _ampersandState.default.extend({
59
49
  };
60
50
  });
61
51
  },
62
-
63
52
  /**
64
53
  * Get the current host url with the highest priority. If a clusterId is not
65
54
  * provided, this will only return a URL with a filtered host that has the
@@ -72,7 +61,6 @@ var ServiceUrl = _ampersandState.default.extend({
72
61
  if (this.hosts.length === 0) {
73
62
  return this.defaultUrl;
74
63
  }
75
-
76
64
  var filteredHosts = clusterId ? this.hosts.filter(function (host) {
77
65
  return host.id === clusterId;
78
66
  }) : this.hosts.filter(function (host) {
@@ -90,7 +78,6 @@ var ServiceUrl = _ampersandState.default.extend({
90
78
  return previous.priority > current.priority || !previous.homeCluster ? current : previous;
91
79
  }, {}).host);
92
80
  },
93
-
94
81
  /**
95
82
  * Attempt to mark a host from this `ServiceUrl` as failed and return true
96
83
  * if the provided url has a host that could be successfully marked as failed.
@@ -102,21 +89,16 @@ var ServiceUrl = _ampersandState.default.extend({
102
89
  if (url === this.defaultUrl) {
103
90
  return true;
104
91
  }
105
-
106
92
  var _Url$parse = _url.default.parse(url),
107
- hostname = _Url$parse.hostname;
108
-
93
+ hostname = _Url$parse.hostname;
109
94
  var foundHost = this.hosts.find(function (hostObj) {
110
95
  return hostObj.host === hostname;
111
96
  });
112
-
113
97
  if (foundHost) {
114
98
  foundHost.failed = true;
115
99
  }
116
-
117
100
  return foundHost !== undefined;
118
101
  },
119
-
120
102
  /**
121
103
  * Get the current `defaultUrl` or generate a url using the host with the
122
104
  * highest priority via host rendering.
@@ -129,13 +111,10 @@ var ServiceUrl = _ampersandState.default.extend({
129
111
  if (!priorityHost) {
130
112
  return this.defaultUrl;
131
113
  }
132
-
133
114
  return this._getPriorityHostUrl(clusterId);
134
115
  }
135
116
  });
136
117
  /* eslint-enable no-underscore-dangle */
137
-
138
-
139
118
  var _default = ServiceUrl;
140
119
  exports.default = _default;
141
120
  //# sourceMappingURL=service-url.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ServiceUrl","AmpState","extend","namespace","props","defaultUrl","undefined","hosts","name","_generateHostUrl","hostUri","url","Url","parse","host","port","format","_getHostUrls","map","priority","_getPriorityHostUrl","clusterId","length","filteredHosts","filter","id","homeCluster","aliveHosts","failed","reduce","previous","current","failHost","hostname","foundHost","find","hostObj","get","priorityHost"],"sources":["service-url.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceUrl = AmpState.extend({\n namespace: 'ServiceUrl',\n\n props: {\n defaultUrl: ['string', true, undefined],\n hosts: ['array', false, () => ([])],\n name: ['string', true, undefined]\n },\n\n /**\n * Generate a host url based on the host\n * uri provided.\n * @param {string} hostUri\n * @returns {string}\n */\n _generateHostUrl(hostUri) {\n const url = Url.parse(this.defaultUrl);\n\n // setting url.hostname will not apply during Url.format(), set host via\n // a string literal instead.\n url.host = `${hostUri}${url.port ? `:${url.port}` : ''}`;\n\n return Url.format(url);\n },\n\n /**\n * Generate a list of urls based on this\n * `ServiceUrl`'s known hosts.\n * @returns {string[]}\n */\n _getHostUrls() {\n return this.hosts.map((host) => ({\n url: this._generateHostUrl(host.host),\n priority: host.priority\n }));\n },\n\n /**\n * Get the current host url with the highest priority. If a clusterId is not\n * provided, this will only return a URL with a filtered host that has the\n * `homeCluster` value set to `true`.\n *\n * @param {string} [clusterId] - The clusterId to filter for a priority host.\n * @returns {string} - The priority host url.\n */\n _getPriorityHostUrl(clusterId) {\n if (this.hosts.length === 0) {\n return this.defaultUrl;\n }\n\n let filteredHosts = clusterId ?\n this.hosts.filter((host) => host.id === clusterId) :\n this.hosts.filter((host) => host.homeCluster);\n\n const aliveHosts = filteredHosts.filter(\n (host) => !host.failed\n );\n\n filteredHosts = (aliveHosts.length === 0) ?\n filteredHosts.map(\n (host) => {\n /* eslint-disable-next-line no-param-reassign */\n host.failed = false;\n\n return host;\n }\n ) : aliveHosts;\n\n return this._generateHostUrl(filteredHosts.reduce((previous, current) => (\n (previous.priority > current.priority || !previous.homeCluster) ?\n current : previous\n ), {}).host);\n },\n\n /**\n * Attempt to mark a host from this `ServiceUrl` as failed and return true\n * if the provided url has a host that could be successfully marked as failed.\n *\n * @param {string} url\n * @returns {boolean}\n */\n failHost(url) {\n if (url === this.defaultUrl) {\n return true;\n }\n\n const {hostname} = Url.parse(url);\n const foundHost = this.hosts.find((hostObj) => hostObj.host === hostname);\n\n if (foundHost) {\n foundHost.failed = true;\n }\n\n return (foundHost !== undefined);\n },\n\n /**\n * Get the current `defaultUrl` or generate a url using the host with the\n * highest priority via host rendering.\n *\n * @param {boolean} [priorityHost] - Retrieve the priority host.\n * @param {string} [clusterId] - Cluster to match a host against.\n * @returns {string} - The full service url.\n */\n get(priorityHost, clusterId) {\n if (!priorityHost) {\n return this.defaultUrl;\n }\n\n return this._getPriorityHostUrl(clusterId);\n }\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceUrl;\n"],"mappings":"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"}
1
+ {"version":3,"names":["ServiceUrl","AmpState","extend","namespace","props","defaultUrl","undefined","hosts","name","_generateHostUrl","hostUri","url","Url","parse","host","port","format","_getHostUrls","map","priority","_getPriorityHostUrl","clusterId","length","filteredHosts","filter","id","homeCluster","aliveHosts","failed","reduce","previous","current","failHost","hostname","foundHost","find","hostObj","get","priorityHost"],"sources":["service-url.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceUrl = AmpState.extend({\n namespace: 'ServiceUrl',\n\n props: {\n defaultUrl: ['string', true, undefined],\n hosts: ['array', false, () => []],\n name: ['string', true, undefined],\n },\n\n /**\n * Generate a host url based on the host\n * uri provided.\n * @param {string} hostUri\n * @returns {string}\n */\n _generateHostUrl(hostUri) {\n const url = Url.parse(this.defaultUrl);\n\n // setting url.hostname will not apply during Url.format(), set host via\n // a string literal instead.\n url.host = `${hostUri}${url.port ? `:${url.port}` : ''}`;\n\n return Url.format(url);\n },\n\n /**\n * Generate a list of urls based on this\n * `ServiceUrl`'s known hosts.\n * @returns {string[]}\n */\n _getHostUrls() {\n return this.hosts.map((host) => ({\n url: this._generateHostUrl(host.host),\n priority: host.priority,\n }));\n },\n\n /**\n * Get the current host url with the highest priority. If a clusterId is not\n * provided, this will only return a URL with a filtered host that has the\n * `homeCluster` value set to `true`.\n *\n * @param {string} [clusterId] - The clusterId to filter for a priority host.\n * @returns {string} - The priority host url.\n */\n _getPriorityHostUrl(clusterId) {\n if (this.hosts.length === 0) {\n return this.defaultUrl;\n }\n\n let filteredHosts = clusterId\n ? this.hosts.filter((host) => host.id === clusterId)\n : this.hosts.filter((host) => host.homeCluster);\n\n const aliveHosts = filteredHosts.filter((host) => !host.failed);\n\n filteredHosts =\n aliveHosts.length === 0\n ? filteredHosts.map((host) => {\n /* eslint-disable-next-line no-param-reassign */\n host.failed = false;\n\n return host;\n })\n : aliveHosts;\n\n return this._generateHostUrl(\n filteredHosts.reduce(\n (previous, current) =>\n previous.priority > current.priority || !previous.homeCluster ? current : previous,\n {}\n ).host\n );\n },\n\n /**\n * Attempt to mark a host from this `ServiceUrl` as failed and return true\n * if the provided url has a host that could be successfully marked as failed.\n *\n * @param {string} url\n * @returns {boolean}\n */\n failHost(url) {\n if (url === this.defaultUrl) {\n return true;\n }\n\n const {hostname} = Url.parse(url);\n const foundHost = this.hosts.find((hostObj) => hostObj.host === hostname);\n\n if (foundHost) {\n foundHost.failed = true;\n }\n\n return foundHost !== undefined;\n },\n\n /**\n * Get the current `defaultUrl` or generate a url using the host with the\n * highest priority via host rendering.\n *\n * @param {boolean} [priorityHost] - Retrieve the priority host.\n * @param {string} [clusterId] - Cluster to match a host against.\n * @returns {string} - The full service url.\n */\n get(priorityHost, clusterId) {\n if (!priorityHost) {\n return this.defaultUrl;\n }\n\n return this._getPriorityHostUrl(clusterId);\n },\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceUrl;\n"],"mappings":"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"}