@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 +1 @@
1
- {"version":3,"names":["trailingSlashes","ServiceInterceptor","options","uri","normalizeOptions","validateOptions","services","webex","internal","service","resource","waitForService","name","then","serviceUrl","generateUri","catch","reject","Error","formattedService","replace","formattedResource","api","Interceptor"],"sources":["service.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\nconst trailingSlashes = /(?:^\\/)|(?:\\/$)/;\n\n/**\n * @class\n */\nexport default class ServiceInterceptor extends Interceptor {\n /**\n * @returns {ServiceInterceptor}\n */\n static create() {\n /* eslint no-invalid-this: [0] */\n return new ServiceInterceptor({webex: this});\n }\n\n /* eslint-disable no-param-reassign */\n /**\n * @see Interceptor#onRequest\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n onRequest(options) {\n // Validate that the PTO includes a uri property.\n if (options.uri) {\n return options;\n }\n\n // Normalize and validate the PTO.\n this.normalizeOptions(options);\n this.validateOptions(options);\n\n // Destructure commonly referenced namespaces.\n const {services} = this.webex.internal;\n const {service, resource} = options;\n\n // Attempt to collect the service url.\n return services.waitForService({name: service})\n .then((serviceUrl) => {\n // Generate the combined service url and resource.\n options.uri = this.generateUri(serviceUrl, resource);\n\n return options;\n })\n .catch(() => Promise.reject(new Error(\n `service-interceptor: '${service}' is not a known service`\n )));\n }\n\n /* eslint-disable class-methods-use-this */\n /**\n * Generate a usable request uri string from a service url and a resouce.\n *\n * @param {string} serviceUrl - The service url.\n * @param {string} [resource] - The resouce to be appended to the service url.\n * @returns {string} - The combined service url and resource.\n */\n generateUri(serviceUrl, resource = '') {\n const formattedService = serviceUrl.replace(trailingSlashes, '');\n const formattedResource = resource.replace(trailingSlashes, '');\n\n return `${formattedService}/${formattedResource}`;\n }\n\n /**\n * Normalizes request options relative to service identification.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n normalizeOptions(options) {\n // Validate if the api property is used.\n if (options.api) {\n // Assign the service property the value of the api property if necessary.\n options.service = options.service || options.api;\n delete options.api;\n }\n }\n\n /**\n * Validates that the appropriate options for this interceptor are present.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n validateOptions(options) {\n if (!options.resource) {\n throw new Error('a `resource` parameter is required');\n }\n\n if (!options.service) {\n throw new Error('a valid \\'service\\' parameter is required');\n }\n }\n /* eslint-enable class-methods-use-this, no-param-reassign */\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA,IAAMA,eAAe,GAAG,iBAAxB;AAEA;AACA;AACA;;IACqBC,kB;;;;;;;;;;;;;IASnB;;IACA;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MAAA;;MACjB;MACA,IAAIA,OAAO,CAACC,GAAZ,EAAiB;QACf,OAAOD,OAAP;MACD,CAJgB,CAMjB;;;MACA,KAAKE,gBAAL,CAAsBF,OAAtB;MACA,KAAKG,eAAL,CAAqBH,OAArB,EARiB,CAUjB;;MACA,IAAOI,QAAP,GAAmB,KAAKC,KAAL,CAAWC,QAA9B,CAAOF,QAAP;MACA,IAAOG,OAAP,GAA4BP,OAA5B,CAAOO,OAAP;MAAA,IAAgBC,QAAhB,GAA4BR,OAA5B,CAAgBQ,QAAhB,CAZiB,CAcjB;;MACA,OAAOJ,QAAQ,CAACK,cAAT,CAAwB;QAACC,IAAI,EAAEH;MAAP,CAAxB,EACJI,IADI,CACC,UAACC,UAAD,EAAgB;QACpB;QACAZ,OAAO,CAACC,GAAR,GAAc,KAAI,CAACY,WAAL,CAAiBD,UAAjB,EAA6BJ,QAA7B,CAAd;QAEA,OAAOR,OAAP;MACD,CANI,EAOJc,KAPI,CAOE;QAAA,OAAM,iBAAQC,MAAR,CAAe,IAAIC,KAAJ,iCACDT,OADC,8BAAf,CAAN;MAAA,CAPF,CAAP;IAUD;IAED;;IACA;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,qBAAYK,UAAZ,EAAuC;MAAA,IAAfJ,QAAe,uEAAJ,EAAI;MACrC,IAAMS,gBAAgB,GAAGL,UAAU,CAACM,OAAX,CAAmBpB,eAAnB,EAAoC,EAApC,CAAzB;MACA,IAAMqB,iBAAiB,GAAGX,QAAQ,CAACU,OAAT,CAAiBpB,eAAjB,EAAkC,EAAlC,CAA1B;MAEA,iBAAUmB,gBAAV,cAA8BE,iBAA9B;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBnB,OAAjB,EAA0B;MACxB;MACA,IAAIA,OAAO,CAACoB,GAAZ,EAAiB;QACf;QACApB,OAAO,CAACO,OAAR,GAAkBP,OAAO,CAACO,OAAR,IAAmBP,OAAO,CAACoB,GAA7C;QACA,OAAOpB,OAAO,CAACoB,GAAf;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBpB,OAAhB,EAAyB;MACvB,IAAI,CAACA,OAAO,CAACQ,QAAb,EAAuB;QACrB,MAAM,IAAIQ,KAAJ,CAAU,oCAAV,CAAN;MACD;;MAED,IAAI,CAAChB,OAAO,CAACO,OAAb,EAAsB;QACpB,MAAM,IAAIS,KAAJ,CAAU,2CAAV,CAAN;MACD;IACF;IACD;;;;;IAtFA;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIjB,kBAAJ,CAAuB;QAACM,KAAK,EAAE;MAAR,CAAvB,CAAP;IACD;;;EAP6CgB,qB"}
1
+ {"version":3,"names":["trailingSlashes","ServiceInterceptor","options","uri","normalizeOptions","validateOptions","services","webex","internal","service","resource","waitForService","name","then","serviceUrl","generateUri","catch","reject","Error","formattedService","replace","formattedResource","api","Interceptor"],"sources":["service.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\nconst trailingSlashes = /(?:^\\/)|(?:\\/$)/;\n\n/**\n * @class\n */\nexport default class ServiceInterceptor extends Interceptor {\n /**\n * @returns {ServiceInterceptor}\n */\n static create() {\n /* eslint no-invalid-this: [0] */\n return new ServiceInterceptor({webex: this});\n }\n\n /* eslint-disable no-param-reassign */\n /**\n * @see Interceptor#onRequest\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n onRequest(options) {\n // Validate that the PTO includes a uri property.\n if (options.uri) {\n return options;\n }\n\n // Normalize and validate the PTO.\n this.normalizeOptions(options);\n this.validateOptions(options);\n\n // Destructure commonly referenced namespaces.\n const {services} = this.webex.internal;\n const {service, resource} = options;\n\n // Attempt to collect the service url.\n return services\n .waitForService({name: service})\n .then((serviceUrl) => {\n // Generate the combined service url and resource.\n options.uri = this.generateUri(serviceUrl, resource);\n\n return options;\n })\n .catch(() =>\n Promise.reject(new Error(`service-interceptor: '${service}' is not a known service`))\n );\n }\n\n /* eslint-disable class-methods-use-this */\n /**\n * Generate a usable request uri string from a service url and a resouce.\n *\n * @param {string} serviceUrl - The service url.\n * @param {string} [resource] - The resouce to be appended to the service url.\n * @returns {string} - The combined service url and resource.\n */\n generateUri(serviceUrl, resource = '') {\n const formattedService = serviceUrl.replace(trailingSlashes, '');\n const formattedResource = resource.replace(trailingSlashes, '');\n\n return `${formattedService}/${formattedResource}`;\n }\n\n /**\n * Normalizes request options relative to service identification.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n normalizeOptions(options) {\n // Validate if the api property is used.\n if (options.api) {\n // Assign the service property the value of the api property if necessary.\n options.service = options.service || options.api;\n delete options.api;\n }\n }\n\n /**\n * Validates that the appropriate options for this interceptor are present.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n validateOptions(options) {\n if (!options.resource) {\n throw new Error('a `resource` parameter is required');\n }\n\n if (!options.service) {\n throw new Error(\"a valid 'service' parameter is required\");\n }\n }\n /* eslint-enable class-methods-use-this, no-param-reassign */\n}\n"],"mappings":";;;;;;;;;;;;;;;AAIA;AAA6C;AAAA;AAE7C,IAAMA,eAAe,GAAG,iBAAiB;;AAEzC;AACA;AACA;AAFA,IAGqBC,kBAAkB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OASrC;IACA;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAO,EAAE;MAAA;MACjB;MACA,IAAIA,OAAO,CAACC,GAAG,EAAE;QACf,OAAOD,OAAO;MAChB;;MAEA;MACA,IAAI,CAACE,gBAAgB,CAACF,OAAO,CAAC;MAC9B,IAAI,CAACG,eAAe,CAACH,OAAO,CAAC;;MAE7B;MACA,IAAOI,QAAQ,GAAI,IAAI,CAACC,KAAK,CAACC,QAAQ,CAA/BF,QAAQ;MACf,IAAOG,OAAO,GAAcP,OAAO,CAA5BO,OAAO;QAAEC,QAAQ,GAAIR,OAAO,CAAnBQ,QAAQ;;MAExB;MACA,OAAOJ,QAAQ,CACZK,cAAc,CAAC;QAACC,IAAI,EAAEH;MAAO,CAAC,CAAC,CAC/BI,IAAI,CAAC,UAACC,UAAU,EAAK;QACpB;QACAZ,OAAO,CAACC,GAAG,GAAG,KAAI,CAACY,WAAW,CAACD,UAAU,EAAEJ,QAAQ,CAAC;QAEpD,OAAOR,OAAO;MAChB,CAAC,CAAC,CACDc,KAAK,CAAC;QAAA,OACL,iBAAQC,MAAM,CAAC,IAAIC,KAAK,iCAA0BT,OAAO,8BAA2B,CAAC;MAAA,EACtF;IACL;;IAEA;IACA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,qBAAYK,UAAU,EAAiB;MAAA,IAAfJ,QAAQ,uEAAG,EAAE;MACnC,IAAMS,gBAAgB,GAAGL,UAAU,CAACM,OAAO,CAACpB,eAAe,EAAE,EAAE,CAAC;MAChE,IAAMqB,iBAAiB,GAAGX,QAAQ,CAACU,OAAO,CAACpB,eAAe,EAAE,EAAE,CAAC;MAE/D,iBAAUmB,gBAAgB,cAAIE,iBAAiB;IACjD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,0BAAiBnB,OAAO,EAAE;MACxB;MACA,IAAIA,OAAO,CAACoB,GAAG,EAAE;QACf;QACApB,OAAO,CAACO,OAAO,GAAGP,OAAO,CAACO,OAAO,IAAIP,OAAO,CAACoB,GAAG;QAChD,OAAOpB,OAAO,CAACoB,GAAG;MACpB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,yBAAgBpB,OAAO,EAAE;MACvB,IAAI,CAACA,OAAO,CAACQ,QAAQ,EAAE;QACrB,MAAM,IAAIQ,KAAK,CAAC,oCAAoC,CAAC;MACvD;MAEA,IAAI,CAAChB,OAAO,CAACO,OAAO,EAAE;QACpB,MAAM,IAAIS,KAAK,CAAC,yCAAyC,CAAC;MAC5D;IACF;IACA;EAAA;IAAA;IAAA;IAvFA;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIjB,kBAAkB,CAAC;QAACM,KAAK,EAAE;MAAI,CAAC,CAAC;IAC9C;EAAC;EAAA;AAAA,EAP6CgB,qBAAW;AAAA"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  _Object$defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
-
9
7
  exports.default = void 0;
10
8
  // Metrics for service catalog
11
9
  var _default = {
@@ -1 +1 @@
1
- {"version":3,"names":["JS_SDK_SERVICE_NOT_FOUND"],"sources":["metrics.js"],"sourcesContent":["// Metrics for service catalog\nexport default {\n JS_SDK_SERVICE_NOT_FOUND: 'JS_SDK_SERVICE_NOT_FOUND'\n};\n"],"mappings":";;;;;;;;;AAAA;eACe;EACbA,wBAAwB,EAAE;AADb,C"}
1
+ {"version":3,"names":["JS_SDK_SERVICE_NOT_FOUND"],"sources":["metrics.js"],"sourcesContent":["// Metrics for service catalog\nexport default {\n JS_SDK_SERVICE_NOT_FOUND: 'JS_SDK_SERVICE_NOT_FOUND',\n};\n"],"mappings":";;;;;;;AAAA;AAAA,eACe;EACbA,wBAAwB,EAAE;AAC5B,CAAC;AAAA"}
@@ -1,59 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
4
-
5
4
  var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
6
-
7
5
  var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
8
-
9
6
  var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
10
-
11
7
  var _Object$keys3 = require("@babel/runtime-corejs2/core-js/object/keys");
12
-
13
8
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
14
-
15
9
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
16
-
17
10
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
18
-
19
11
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
20
-
21
12
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
22
-
23
13
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
24
-
25
14
  _Object$defineProperty(exports, "__esModule", {
26
15
  value: true
27
16
  });
28
-
29
17
  exports.default = void 0;
30
-
31
18
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
32
-
33
19
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
34
-
35
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
36
-
37
21
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
38
-
39
22
  var _url = _interopRequireDefault(require("url"));
40
-
41
23
  var _ampersandState = _interopRequireDefault(require("ampersand-state"));
42
-
43
24
  var _serviceUrl = _interopRequireDefault(require("./service-url"));
44
-
45
25
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys3(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
46
-
47
26
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
48
-
49
27
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
50
-
51
28
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
52
-
53
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
54
-
29
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
55
30
  /* eslint-disable no-underscore-dangle */
56
-
57
31
  /**
58
32
  * @class
59
33
  */
@@ -98,7 +72,6 @@ var ServiceCatalog = _ampersandState.default.extend({
98
72
  return [];
99
73
  }]
100
74
  },
101
-
102
75
  /**
103
76
  * @private
104
77
  * Search the service url array to locate a `ServiceUrl`
@@ -113,7 +86,6 @@ var ServiceCatalog = _ampersandState.default.extend({
113
86
  return serviceUrl.name === name;
114
87
  });
115
88
  },
116
-
117
89
  /**
118
90
  * @private
119
91
  * Generate an array of `ServiceUrl`s that is organized from highest auth
@@ -123,7 +95,6 @@ var ServiceCatalog = _ampersandState.default.extend({
123
95
  _listServiceUrls: function _listServiceUrls() {
124
96
  return [].concat((0, _toConsumableArray2.default)(this.serviceGroups.override), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.discovery));
125
97
  },
126
-
127
98
  /**
128
99
  * @private
129
100
  * Safely load one or more `ServiceUrl`s into this `Services` instance.
@@ -133,19 +104,16 @@ var ServiceCatalog = _ampersandState.default.extend({
133
104
  */
134
105
  _loadServiceUrls: function _loadServiceUrls(serviceGroup, services) {
135
106
  var _this = this;
136
-
137
107
  // declare namespaces outside of loop
138
108
  var existingService;
139
109
  services.forEach(function (service) {
140
110
  existingService = _this._getUrl(service.name, serviceGroup);
141
-
142
111
  if (!existingService) {
143
112
  _this.serviceGroups[serviceGroup].push(service);
144
113
  }
145
114
  });
146
115
  return this;
147
116
  },
148
-
149
117
  /**
150
118
  * @private
151
119
  * Safely unload one or more `ServiceUrl`s into this `Services` instance
@@ -155,19 +123,16 @@ var ServiceCatalog = _ampersandState.default.extend({
155
123
  */
156
124
  _unloadServiceUrls: function _unloadServiceUrls(serviceGroup, services) {
157
125
  var _this2 = this;
158
-
159
126
  // declare namespaces outside of loop
160
127
  var existingService;
161
128
  services.forEach(function (service) {
162
129
  existingService = _this2._getUrl(service.name, serviceGroup);
163
-
164
130
  if (existingService) {
165
131
  _this2.serviceGroups[serviceGroup].splice(_this2.serviceGroups[serviceGroup].indexOf(existingService), 1);
166
132
  }
167
133
  });
168
134
  return this;
169
135
  },
170
-
171
136
  /**
172
137
  * Clear all collected catalog data and reset catalog status.
173
138
  *
@@ -187,7 +152,6 @@ var ServiceCatalog = _ampersandState.default.extend({
187
152
  ready: false
188
153
  };
189
154
  },
190
-
191
155
  /**
192
156
  * Search over all service groups to find a cluster id based
193
157
  * on a given url.
@@ -196,27 +160,20 @@ var ServiceCatalog = _ampersandState.default.extend({
196
160
  */
197
161
  findClusterId: function findClusterId(url) {
198
162
  var incomingUrlObj = _url.default.parse(url);
199
-
200
163
  var serviceUrlObj;
201
-
202
164
  for (var _i = 0, _Object$keys = (0, _keys.default)(this.serviceGroups); _i < _Object$keys.length; _i++) {
203
165
  var key = _Object$keys[_i];
204
-
205
166
  var _iterator = _createForOfIteratorHelper(this.serviceGroups[key]),
206
- _step;
207
-
167
+ _step;
208
168
  try {
209
169
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
210
170
  var service = _step.value;
211
171
  serviceUrlObj = _url.default.parse(service.defaultUrl);
212
-
213
172
  var _iterator2 = _createForOfIteratorHelper(service.hosts),
214
- _step2;
215
-
173
+ _step2;
216
174
  try {
217
175
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
218
176
  var _host = _step2.value;
219
-
220
177
  if (incomingUrlObj.hostname === _host.host && _host.id) {
221
178
  return _host.id;
222
179
  }
@@ -226,27 +183,24 @@ var ServiceCatalog = _ampersandState.default.extend({
226
183
  } finally {
227
184
  _iterator2.f();
228
185
  }
229
-
230
186
  if (serviceUrlObj.hostname === incomingUrlObj.hostname && service.hosts.length > 0) {
231
187
  // no exact match, so try to grab the first home cluster
232
188
  var _iterator3 = _createForOfIteratorHelper(service.hosts),
233
- _step3;
234
-
189
+ _step3;
235
190
  try {
236
191
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
237
192
  var host = _step3.value;
238
-
239
193
  if (host.homeCluster) {
240
194
  return host.id;
241
195
  }
242
- } // no match found still, so return the first entry
196
+ }
243
197
 
198
+ // no match found still, so return the first entry
244
199
  } catch (err) {
245
200
  _iterator3.e(err);
246
201
  } finally {
247
202
  _iterator3.f();
248
203
  }
249
-
250
204
  return service.hosts[0].id;
251
205
  }
252
206
  }
@@ -256,10 +210,8 @@ var ServiceCatalog = _ampersandState.default.extend({
256
210
  _iterator.f();
257
211
  }
258
212
  }
259
-
260
213
  return undefined;
261
214
  },
262
-
263
215
  /**
264
216
  * Search over all service groups and return a service value from a provided
265
217
  * clusterId. Currently, this method will return either a service name, or a
@@ -276,28 +228,24 @@ var ServiceCatalog = _ampersandState.default.extend({
276
228
  */
277
229
  findServiceFromClusterId: function findServiceFromClusterId() {
278
230
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
279
- clusterId = _ref.clusterId,
280
- _ref$priorityHost = _ref.priorityHost,
281
- priorityHost = _ref$priorityHost === void 0 ? true : _ref$priorityHost,
282
- serviceGroup = _ref.serviceGroup;
283
-
231
+ clusterId = _ref.clusterId,
232
+ _ref$priorityHost = _ref.priorityHost,
233
+ priorityHost = _ref$priorityHost === void 0 ? true : _ref$priorityHost,
234
+ serviceGroup = _ref.serviceGroup;
284
235
  var serviceUrls = typeof serviceGroup === 'string' ? this.serviceGroups[serviceGroup] || [] : [].concat((0, _toConsumableArray2.default)(this.serviceGroups.override), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.discovery));
285
236
  var identifiedServiceUrl = serviceUrls.find(function (serviceUrl) {
286
237
  return serviceUrl.hosts.find(function (host) {
287
238
  return host.id === clusterId;
288
239
  });
289
240
  });
290
-
291
241
  if (identifiedServiceUrl) {
292
242
  return {
293
243
  name: identifiedServiceUrl.name,
294
244
  url: identifiedServiceUrl.get(priorityHost, clusterId)
295
245
  };
296
246
  }
297
-
298
247
  return undefined;
299
248
  },
300
-
301
249
  /**
302
250
  * Find a service based on the provided url.
303
251
  * @param {string} url - Must be parsable by `Url`
@@ -305,23 +253,19 @@ var ServiceCatalog = _ampersandState.default.extend({
305
253
  */
306
254
  findServiceUrlFromUrl: function findServiceUrlFromUrl(url) {
307
255
  var incomingUrlObj = _url.default.parse(url);
308
-
309
256
  var serviceUrls = [].concat((0, _toConsumableArray2.default)(this.serviceGroups.discovery), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.override));
310
257
  return serviceUrls.find(function (serviceUrl) {
311
258
  if (incomingUrlObj.hostname === _url.default.parse(serviceUrl.defaultUrl).hostname) {
312
259
  return true;
313
260
  }
314
-
315
261
  if (serviceUrl.hosts.find(function (host) {
316
262
  return host.host === incomingUrlObj.hostname;
317
263
  })) {
318
264
  return true;
319
265
  }
320
-
321
266
  return false;
322
267
  });
323
268
  },
324
-
325
269
  /**
326
270
  * Finds an allowed domain that matches a specific url.
327
271
  *
@@ -330,16 +274,13 @@ var ServiceCatalog = _ampersandState.default.extend({
330
274
  */
331
275
  findAllowedDomain: function findAllowedDomain(url) {
332
276
  var urlObj = _url.default.parse(url);
333
-
334
277
  if (!urlObj.host) {
335
278
  return undefined;
336
279
  }
337
-
338
280
  return this.allowedDomains.find(function (allowedDomain) {
339
281
  return urlObj.host.includes(allowedDomain);
340
282
  });
341
283
  },
342
-
343
284
  /**
344
285
  * Get a service url from the current services list by name.
345
286
  * @param {string} name
@@ -349,10 +290,8 @@ var ServiceCatalog = _ampersandState.default.extend({
349
290
  */
350
291
  get: function get(name, priorityHost, serviceGroup) {
351
292
  var serviceUrl = this._getUrl(name, serviceGroup);
352
-
353
293
  return serviceUrl ? serviceUrl.get(priorityHost) : undefined;
354
294
  },
355
-
356
295
  /**
357
296
  * Get the current allowed domains list.
358
297
  *
@@ -361,7 +300,6 @@ var ServiceCatalog = _ampersandState.default.extend({
361
300
  getAllowedDomains: function getAllowedDomains() {
362
301
  return (0, _toConsumableArray2.default)(this.allowedDomains);
363
302
  },
364
-
365
303
  /**
366
304
  * Creates an object where the keys are the service names
367
305
  * and the values are the service urls.
@@ -372,16 +310,13 @@ var ServiceCatalog = _ampersandState.default.extend({
372
310
  list: function list(priorityHost, serviceGroup) {
373
311
  var output = {};
374
312
  var serviceUrls = typeof serviceGroup === 'string' ? this.serviceGroups[serviceGroup] || [] : [].concat((0, _toConsumableArray2.default)(this.serviceGroups.discovery), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.override));
375
-
376
313
  if (serviceUrls) {
377
314
  serviceUrls.forEach(function (serviceUrl) {
378
315
  output[serviceUrl.name] = serviceUrl.get(priorityHost);
379
316
  });
380
317
  }
381
-
382
318
  return output;
383
319
  },
384
-
385
320
  /**
386
321
  * Mark a priority host service url as failed.
387
322
  * This will mark the host associated with the
@@ -397,18 +332,14 @@ var ServiceCatalog = _ampersandState.default.extend({
397
332
  */
398
333
  markFailedUrl: function markFailedUrl(url, noPriorityHosts) {
399
334
  var _this3 = this;
400
-
401
335
  var serviceUrl = this._getUrl((0, _keys.default)(this.list()).find(function (key) {
402
336
  return _this3._getUrl(key).failHost(url);
403
337
  }));
404
-
405
338
  if (!serviceUrl) {
406
339
  return undefined;
407
340
  }
408
-
409
341
  return noPriorityHosts ? serviceUrl.get(false) : serviceUrl.get(true);
410
342
  },
411
-
412
343
  /**
413
344
  * Set the allowed domains for the catalog.
414
345
  *
@@ -418,7 +349,6 @@ var ServiceCatalog = _ampersandState.default.extend({
418
349
  setAllowedDomains: function setAllowedDomains(allowedDomains) {
419
350
  this.allowedDomains = (0, _toConsumableArray2.default)(allowedDomains);
420
351
  },
421
-
422
352
  /**
423
353
  * Update the current list of `ServiceUrl`s against a provided
424
354
  * service hostmap.
@@ -430,19 +360,15 @@ var ServiceCatalog = _ampersandState.default.extend({
430
360
  */
431
361
  updateServiceUrls: function updateServiceUrls(serviceGroup, serviceHostmap) {
432
362
  var _this4 = this;
433
-
434
363
  var currentServiceUrls = this.serviceGroups[serviceGroup];
435
364
  var unusedUrls = currentServiceUrls.filter(function (serviceUrl) {
436
365
  return serviceHostmap.every(function (item) {
437
366
  return item.name !== serviceUrl.name;
438
367
  });
439
368
  });
440
-
441
369
  this._unloadServiceUrls(serviceGroup, unusedUrls);
442
-
443
370
  serviceHostmap.forEach(function (serviceObj) {
444
371
  var service = _this4._getUrl(serviceObj.name, serviceGroup);
445
-
446
372
  if (service) {
447
373
  service.defaultUrl = serviceObj.defaultUrl;
448
374
  service.hosts = serviceObj.hosts || [];
@@ -454,7 +380,6 @@ var ServiceCatalog = _ampersandState.default.extend({
454
380
  this.trigger(serviceGroup);
455
381
  return this;
456
382
  },
457
-
458
383
  /**
459
384
  * Wait until the service catalog is available,
460
385
  * or reject after a timeout of 60 seconds.
@@ -464,16 +389,13 @@ var ServiceCatalog = _ampersandState.default.extend({
464
389
  */
465
390
  waitForCatalog: function waitForCatalog(serviceGroup, timeout) {
466
391
  var _this5 = this;
467
-
468
392
  return new _promise.default(function (resolve, reject) {
469
393
  if (_this5.status[serviceGroup].ready) {
470
394
  resolve();
471
395
  }
472
-
473
396
  var timeoutTimer = setTimeout(function () {
474
397
  return reject(new Error("services: timeout occured while waiting for '".concat(serviceGroup, "' catalog to populate")));
475
398
  }, timeout ? timeout * 1000 : 60000);
476
-
477
399
  _this5.once(serviceGroup, function () {
478
400
  clearTimeout(timeoutTimer);
479
401
  resolve();
@@ -482,8 +404,6 @@ var ServiceCatalog = _ampersandState.default.extend({
482
404
  }
483
405
  });
484
406
  /* eslint-enable no-underscore-dangle */
485
-
486
-
487
407
  var _default = ServiceCatalog;
488
408
  exports.default = _default;
489
409
  //# sourceMappingURL=service-catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","name","serviceGroup","serviceUrls","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","existingService","forEach","service","push","_unloadServiceUrls","splice","indexOf","clean","length","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","key","defaultUrl","hosts","host","hostname","id","homeCluster","undefined","findServiceFromClusterId","clusterId","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","failHost","setAllowedDomains","updateServiceUrls","serviceHostmap","currentServiceUrls","unusedUrls","filter","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","resolve","reject","timeoutTimer","setTimeout","Error","once","clearTimeout"],"sources":["service-catalog.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport ServiceUrl from './service-url';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: ['object', true, (() => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: []\n }))],\n status: ['object', true, (() => ({\n discovery: {\n ready: false,\n collecting: false\n },\n override: {\n ready: false,\n collecting: false\n },\n preauth: {\n ready: false,\n collecting: false\n },\n postauth: {\n ready: false,\n collecting: false\n },\n signin: {\n ready: false,\n collecting: false\n }\n }))],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, (() => [])]\n },\n\n /**\n * @private\n * Search the service url array to locate a `ServiceUrl`\n * class object based on its name.\n * @param {string} name\n * @param {string} [serviceGroup]\n * @returns {ServiceUrl}\n */\n _getUrl(name, serviceGroup) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n return serviceUrls.find((serviceUrl) => serviceUrl.name === name);\n },\n\n /**\n * @private\n * Generate an array of `ServiceUrl`s that is organized from highest auth\n * level to lowest auth level.\n * @returns {Array<ServiceUrl>} - array of `ServiceUrl`s\n */\n _listServiceUrls() {\n return [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n },\n\n /**\n * @private\n * Safely load one or more `ServiceUrl`s into this `Services` instance.\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _loadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n\n return this;\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceUrl`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _unloadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService), 1\n );\n }\n });\n\n return this;\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean() {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string} - ClusterId of a given url\n */\n findClusterId(url) {\n const incomingUrlObj = Url.parse(url);\n let serviceUrlObj;\n\n for (const key of Object.keys(this.serviceGroups)) {\n for (const service of this.serviceGroups[key]) {\n serviceUrlObj = Url.parse(service.defaultUrl);\n\n for (const host of service.hosts) {\n if (incomingUrlObj.hostname === host.host && host.id) {\n return host.id;\n }\n }\n\n if (serviceUrlObj.hostname === incomingUrlObj.hostname &&\n service.hosts.length > 0) {\n // no exact match, so try to grab the first home cluster\n for (const host of service.hosts) {\n if (host.homeCluster) {\n return host.id;\n }\n }\n\n // no match found still, so return the first entry\n return service.hosts[0].id;\n }\n }\n }\n\n return undefined;\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId. Currently, this method will return either a service name, or a\n * service url depending on the `value` parameter. If the `value` parameter\n * is set to `name`, it will return a service name to be utilized within the\n * Services plugin methods.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {boolean} [params.priorityHost = true] - returns priority host url if true\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId({clusterId, priorityHost = true, serviceGroup} = {}) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n const identifiedServiceUrl = serviceUrls.find(\n (serviceUrl) => serviceUrl.hosts.find(\n (host) => host.id === clusterId\n )\n );\n\n if (identifiedServiceUrl) {\n return {\n name: identifiedServiceUrl.name,\n url: identifiedServiceUrl.get(priorityHost, clusterId)\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {serviceUrl} - ServiceUrl assocated with provided url\n */\n findServiceUrlFromUrl(url) {\n const incomingUrlObj = Url.parse(url);\n const serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n return serviceUrls.find(\n (serviceUrl) => {\n if (incomingUrlObj.hostname ===\n Url.parse(serviceUrl.defaultUrl).hostname) {\n return true;\n }\n\n if (serviceUrl.hosts.find((host) => host.host === incomingUrlObj.hostname)) {\n return true;\n }\n\n return false;\n }\n );\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url) {\n const urlObj = Url.parse(url);\n\n if (!urlObj.host) {\n return undefined;\n }\n\n return this.allowedDomains.find(\n (allowedDomain) => urlObj.host.includes(allowedDomain)\n );\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} name\n * @param {boolean} priorityHost\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(name, priorityHost, serviceGroup) {\n const serviceUrl = this._getUrl(name, serviceGroup);\n\n return (serviceUrl) ? serviceUrl.get(priorityHost) : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains() {\n return [...this.allowedDomains];\n },\n\n /**\n * Creates an object where the keys are the service names\n * and the values are the service urls.\n * @param {boolean} priorityHost - use the highest priority if set to `true`\n * @param {string} [serviceGroup]\n * @returns {Record<string, string>}\n */\n list(priorityHost, serviceGroup) {\n const output = {};\n\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n if (serviceUrls) {\n serviceUrls.forEach((serviceUrl) => {\n output[serviceUrl.name] = serviceUrl.get(priorityHost);\n });\n }\n\n return output;\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceUrl` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceUrls` host array,\n * or the `ServiceUrls` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @param {boolean} noPriorityHosts\n * @returns {string}\n */\n markFailedUrl(url, noPriorityHosts) {\n const serviceUrl = this._getUrl(Object.keys(this.list()).find(\n (key) => this._getUrl(key).failHost(url)\n ));\n\n if (!serviceUrl) {\n return undefined;\n }\n\n return (noPriorityHosts) ? serviceUrl.get(false) : serviceUrl.get(true);\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains) {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n * Update the current list of `ServiceUrl`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {object} serviceHostmap\n * @returns {Services}\n */\n updateServiceUrls(serviceGroup, serviceHostmap) {\n const currentServiceUrls = this.serviceGroups[serviceGroup];\n\n const unusedUrls = currentServiceUrls.filter(\n (serviceUrl) => serviceHostmap.every(\n (item) => item.name !== serviceUrl.name\n )\n );\n\n this._unloadServiceUrls(serviceGroup, unusedUrls);\n\n serviceHostmap.forEach((serviceObj) => {\n const service = this._getUrl(serviceObj.name, serviceGroup);\n\n if (service) {\n service.defaultUrl = serviceObj.defaultUrl;\n service.hosts = serviceObj.hosts || [];\n }\n else {\n this._loadServiceUrls(serviceGroup, [new ServiceUrl({\n ...serviceObj\n })]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n\n return this;\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup, timeout) {\n return new Promise((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const timeoutTimer = setTimeout(() => reject(\n new Error(`services: timeout occured while waiting for '${serviceGroup}' catalog to populate`)\n ), (timeout) ? timeout * 1000 : 60000);\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n }\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceCatalog;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;;;;;;;;;;;AAEA;;AACA;AACA;AACA;AACA,IAAMA,cAAc,GAAGC,uBAAA,CAASC,MAAT,CAAgB;EACrCC,SAAS,EAAE,gBAD0B;EAGrCC,KAAK,EAAE;IACLC,aAAa,EAAE,CAAC,QAAD,EAAW,IAAX,EAAkB;MAAA,OAAO;QACtCC,SAAS,EAAE,EAD2B;QAEtCC,QAAQ,EAAE,EAF4B;QAGtCC,OAAO,EAAE,EAH6B;QAItCC,QAAQ,EAAE,EAJ4B;QAKtCC,MAAM,EAAE;MAL8B,CAAP;IAAA,CAAlB,CADV;IAQLC,MAAM,EAAE,CAAC,QAAD,EAAW,IAAX,EAAkB;MAAA,OAAO;QAC/BL,SAAS,EAAE;UACTM,KAAK,EAAE,KADE;UAETC,UAAU,EAAE;QAFH,CADoB;QAK/BN,QAAQ,EAAE;UACRK,KAAK,EAAE,KADC;UAERC,UAAU,EAAE;QAFJ,CALqB;QAS/BL,OAAO,EAAE;UACPI,KAAK,EAAE,KADA;UAEPC,UAAU,EAAE;QAFL,CATsB;QAa/BJ,QAAQ,EAAE;UACRG,KAAK,EAAE,KADC;UAERC,UAAU,EAAE;QAFJ,CAbqB;QAiB/BH,MAAM,EAAE;UACNE,KAAK,EAAE,KADD;UAENC,UAAU,EAAE;QAFN;MAjBuB,CAAP;IAAA,CAAlB,CARH;IA8BLC,OAAO,EAAE,CAAC,SAAD,EAAY,KAAZ,EAAmB,KAAnB,CA9BJ;IA+BLC,cAAc,EAAE,CAAC,OAAD,EAAU,KAAV,EAAkB;MAAA,OAAM,EAAN;IAAA,CAAlB;EA/BX,CAH8B;;EAqCrC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,OA7CqC,mBA6C7BC,IA7C6B,EA6CvBC,YA7CuB,EA6CT;IAC1B,IAAMC,WAAW,GAAI,OAAOD,YAAP,KAAwB,QAAzB,GAClB,KAAKb,aAAL,CAAmBa,YAAnB,KAAoC,EADlB,8CAGb,KAAKb,aAAL,CAAmBE,QAHN,oCAIb,KAAKF,aAAL,CAAmBI,QAJN,oCAKb,KAAKJ,aAAL,CAAmBK,MALN,oCAMb,KAAKL,aAAL,CAAmBG,OANN,oCAOb,KAAKH,aAAL,CAAmBC,SAPN,EAApB;IAUA,OAAOa,WAAW,CAACC,IAAZ,CAAiB,UAACC,UAAD;MAAA,OAAgBA,UAAU,CAACJ,IAAX,KAAoBA,IAApC;IAAA,CAAjB,CAAP;EACD,CAzDoC;;EA2DrC;AACF;AACA;AACA;AACA;AACA;EACEK,gBAjEqC,8BAiElB;IACjB,kDACK,KAAKjB,aAAL,CAAmBE,QADxB,oCAEK,KAAKF,aAAL,CAAmBI,QAFxB,oCAGK,KAAKJ,aAAL,CAAmBK,MAHxB,oCAIK,KAAKL,aAAL,CAAmBG,OAJxB,oCAKK,KAAKH,aAAL,CAAmBC,SALxB;EAOD,CAzEoC;;EA2ErC;AACF;AACA;AACA;AACA;AACA;AACA;EACEiB,gBAlFqC,4BAkFpBL,YAlFoB,EAkFNM,QAlFM,EAkFI;IAAA;;IACvC;IACA,IAAIC,eAAJ;IAEAD,QAAQ,CAACE,OAAT,CAAiB,UAACC,OAAD,EAAa;MAC5BF,eAAe,GAAG,KAAI,CAACT,OAAL,CAAaW,OAAO,CAACV,IAArB,EAA2BC,YAA3B,CAAlB;;MAEA,IAAI,CAACO,eAAL,EAAsB;QACpB,KAAI,CAACpB,aAAL,CAAmBa,YAAnB,EAAiCU,IAAjC,CAAsCD,OAAtC;MACD;IACF,CAND;IAQA,OAAO,IAAP;EACD,CA/FoC;;EAiGrC;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,kBAxGqC,8BAwGlBX,YAxGkB,EAwGJM,QAxGI,EAwGM;IAAA;;IACzC;IACA,IAAIC,eAAJ;IAEAD,QAAQ,CAACE,OAAT,CAAiB,UAACC,OAAD,EAAa;MAC5BF,eAAe,GAAG,MAAI,CAACT,OAAL,CAAaW,OAAO,CAACV,IAArB,EAA2BC,YAA3B,CAAlB;;MAEA,IAAIO,eAAJ,EAAqB;QACnB,MAAI,CAACpB,aAAL,CAAmBa,YAAnB,EAAiCY,MAAjC,CACE,MAAI,CAACzB,aAAL,CAAmBa,YAAnB,EAAiCa,OAAjC,CAAyCN,eAAzC,CADF,EAC6D,CAD7D;MAGD;IACF,CARD;IAUA,OAAO,IAAP;EACD,CAvHoC;;EAyHrC;AACF;AACA;AACA;AACA;EACEO,KA9HqC,mBA8H7B;IACN,KAAK3B,aAAL,CAAmBG,OAAnB,CAA2ByB,MAA3B,GAAoC,CAApC;IACA,KAAK5B,aAAL,CAAmBK,MAAnB,CAA0BuB,MAA1B,GAAmC,CAAnC;IACA,KAAK5B,aAAL,CAAmBI,QAAnB,CAA4BwB,MAA5B,GAAqC,CAArC;IACA,KAAKtB,MAAL,CAAYH,OAAZ,GAAsB;MAACI,KAAK,EAAE;IAAR,CAAtB;IACA,KAAKD,MAAL,CAAYD,MAAZ,GAAqB;MAACE,KAAK,EAAE;IAAR,CAArB;IACA,KAAKD,MAAL,CAAYF,QAAZ,GAAuB;MAACG,KAAK,EAAE;IAAR,CAAvB;EACD,CArIoC;;EAuIrC;AACF;AACA;AACA;AACA;AACA;EACEsB,aA7IqC,yBA6IvBC,GA7IuB,EA6IlB;IACjB,IAAMC,cAAc,GAAGC,YAAA,CAAIC,KAAJ,CAAUH,GAAV,CAAvB;;IACA,IAAII,aAAJ;;IAEA,gCAAkB,mBAAY,KAAKlC,aAAjB,CAAlB,kCAAmD;MAA9C,IAAMmC,GAAG,mBAAT;;MAA8C,2CAC3B,KAAKnC,aAAL,CAAmBmC,GAAnB,CAD2B;MAAA;;MAAA;QACjD,oDAA+C;UAAA,IAApCb,OAAoC;UAC7CY,aAAa,GAAGF,YAAA,CAAIC,KAAJ,CAAUX,OAAO,CAACc,UAAlB,CAAhB;;UAD6C,4CAG1Bd,OAAO,CAACe,KAHkB;UAAA;;UAAA;YAG7C,uDAAkC;cAAA,IAAvBC,KAAuB;;cAChC,IAAIP,cAAc,CAACQ,QAAf,KAA4BD,KAAI,CAACA,IAAjC,IAAyCA,KAAI,CAACE,EAAlD,EAAsD;gBACpD,OAAOF,KAAI,CAACE,EAAZ;cACD;YACF;UAP4C;YAAA;UAAA;YAAA;UAAA;;UAS7C,IAAIN,aAAa,CAACK,QAAd,KAA2BR,cAAc,CAACQ,QAA1C,IACFjB,OAAO,CAACe,KAAR,CAAcT,MAAd,GAAuB,CADzB,EAC4B;YAC1B;YAD0B,4CAEPN,OAAO,CAACe,KAFD;YAAA;;YAAA;cAE1B,uDAAkC;gBAAA,IAAvBC,IAAuB;;gBAChC,IAAIA,IAAI,CAACG,WAAT,EAAsB;kBACpB,OAAOH,IAAI,CAACE,EAAZ;gBACD;cACF,CANyB,CAQ1B;;YAR0B;cAAA;YAAA;cAAA;YAAA;;YAS1B,OAAOlB,OAAO,CAACe,KAAR,CAAc,CAAd,EAAiBG,EAAxB;UACD;QACF;MAtBgD;QAAA;MAAA;QAAA;MAAA;IAuBlD;;IAED,OAAOE,SAAP;EACD,CA3KoC;;EA6KrC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,wBA3LqC,sCA2LyC;IAAA,+EAAJ,EAAI;IAAA,IAApDC,SAAoD,QAApDA,SAAoD;IAAA,6BAAzCC,YAAyC;IAAA,IAAzCA,YAAyC,kCAA1B,IAA0B;IAAA,IAApBhC,YAAoB,QAApBA,YAAoB;;IAC5E,IAAMC,WAAW,GAAI,OAAOD,YAAP,KAAwB,QAAzB,GAClB,KAAKb,aAAL,CAAmBa,YAAnB,KAAoC,EADlB,8CAEb,KAAKb,aAAL,CAAmBE,QAFN,oCAGb,KAAKF,aAAL,CAAmBI,QAHN,oCAIb,KAAKJ,aAAL,CAAmBK,MAJN,oCAKb,KAAKL,aAAL,CAAmBG,OALN,oCAMb,KAAKH,aAAL,CAAmBC,SANN,EAApB;IASA,IAAM6C,oBAAoB,GAAGhC,WAAW,CAACC,IAAZ,CAC3B,UAACC,UAAD;MAAA,OAAgBA,UAAU,CAACqB,KAAX,CAAiBtB,IAAjB,CACd,UAACuB,IAAD;QAAA,OAAUA,IAAI,CAACE,EAAL,KAAYI,SAAtB;MAAA,CADc,CAAhB;IAAA,CAD2B,CAA7B;;IAMA,IAAIE,oBAAJ,EAA0B;MACxB,OAAO;QACLlC,IAAI,EAAEkC,oBAAoB,CAAClC,IADtB;QAELkB,GAAG,EAAEgB,oBAAoB,CAACC,GAArB,CAAyBF,YAAzB,EAAuCD,SAAvC;MAFA,CAAP;IAID;;IAED,OAAOF,SAAP;EACD,CAnNoC;;EAqNrC;AACF;AACA;AACA;AACA;EACEM,qBA1NqC,iCA0NflB,GA1Ne,EA0NV;IACzB,IAAMC,cAAc,GAAGC,YAAA,CAAIC,KAAJ,CAAUH,GAAV,CAAvB;;IACA,IAAMhB,WAAW,8CACZ,KAAKd,aAAL,CAAmBC,SADP,oCAEZ,KAAKD,aAAL,CAAmBG,OAFP,oCAGZ,KAAKH,aAAL,CAAmBK,MAHP,oCAIZ,KAAKL,aAAL,CAAmBI,QAJP,oCAKZ,KAAKJ,aAAL,CAAmBE,QALP,EAAjB;IAQA,OAAOY,WAAW,CAACC,IAAZ,CACL,UAACC,UAAD,EAAgB;MACd,IAAIe,cAAc,CAACQ,QAAf,KACFP,YAAA,CAAIC,KAAJ,CAAUjB,UAAU,CAACoB,UAArB,EAAiCG,QADnC,EAC6C;QAC3C,OAAO,IAAP;MACD;;MAED,IAAIvB,UAAU,CAACqB,KAAX,CAAiBtB,IAAjB,CAAsB,UAACuB,IAAD;QAAA,OAAUA,IAAI,CAACA,IAAL,KAAcP,cAAc,CAACQ,QAAvC;MAAA,CAAtB,CAAJ,EAA4E;QAC1E,OAAO,IAAP;MACD;;MAED,OAAO,KAAP;IACD,CAZI,CAAP;EAcD,CAlPoC;;EAoPrC;AACF;AACA;AACA;AACA;AACA;EACEU,iBA1PqC,6BA0PnBnB,GA1PmB,EA0Pd;IACrB,IAAMoB,MAAM,GAAGlB,YAAA,CAAIC,KAAJ,CAAUH,GAAV,CAAf;;IAEA,IAAI,CAACoB,MAAM,CAACZ,IAAZ,EAAkB;MAChB,OAAOI,SAAP;IACD;;IAED,OAAO,KAAKhC,cAAL,CAAoBK,IAApB,CACL,UAACoC,aAAD;MAAA,OAAmBD,MAAM,CAACZ,IAAP,CAAYc,QAAZ,CAAqBD,aAArB,CAAnB;IAAA,CADK,CAAP;EAGD,CApQoC;;EAsQrC;AACF;AACA;AACA;AACA;AACA;AACA;EACEJ,GA7QqC,eA6QjCnC,IA7QiC,EA6Q3BiC,YA7Q2B,EA6QbhC,YA7Qa,EA6QC;IACpC,IAAMG,UAAU,GAAG,KAAKL,OAAL,CAAaC,IAAb,EAAmBC,YAAnB,CAAnB;;IAEA,OAAQG,UAAD,GAAeA,UAAU,CAAC+B,GAAX,CAAeF,YAAf,CAAf,GAA8CH,SAArD;EACD,CAjRoC;;EAmRrC;AACF;AACA;AACA;AACA;EACEW,iBAxRqC,+BAwRjB;IAClB,wCAAW,KAAK3C,cAAhB;EACD,CA1RoC;;EA4RrC;AACF;AACA;AACA;AACA;AACA;AACA;EACE4C,IAnSqC,gBAmShCT,YAnSgC,EAmSlBhC,YAnSkB,EAmSJ;IAC/B,IAAM0C,MAAM,GAAG,EAAf;IAEA,IAAMzC,WAAW,GAAI,OAAOD,YAAP,KAAwB,QAAzB,GAClB,KAAKb,aAAL,CAAmBa,YAAnB,KAAoC,EADlB,8CAGb,KAAKb,aAAL,CAAmBC,SAHN,oCAIb,KAAKD,aAAL,CAAmBG,OAJN,oCAKb,KAAKH,aAAL,CAAmBK,MALN,oCAMb,KAAKL,aAAL,CAAmBI,QANN,oCAOb,KAAKJ,aAAL,CAAmBE,QAPN,EAApB;;IAUA,IAAIY,WAAJ,EAAiB;MACfA,WAAW,CAACO,OAAZ,CAAoB,UAACL,UAAD,EAAgB;QAClCuC,MAAM,CAACvC,UAAU,CAACJ,IAAZ,CAAN,GAA0BI,UAAU,CAAC+B,GAAX,CAAeF,YAAf,CAA1B;MACD,CAFD;IAGD;;IAED,OAAOU,MAAP;EACD,CAvToC;;EAyTrC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,aAtUqC,yBAsUvB1B,GAtUuB,EAsUlB2B,eAtUkB,EAsUD;IAAA;;IAClC,IAAMzC,UAAU,GAAG,KAAKL,OAAL,CAAa,mBAAY,KAAK2C,IAAL,EAAZ,EAAyBvC,IAAzB,CAC9B,UAACoB,GAAD;MAAA,OAAS,MAAI,CAACxB,OAAL,CAAawB,GAAb,EAAkBuB,QAAlB,CAA2B5B,GAA3B,CAAT;IAAA,CAD8B,CAAb,CAAnB;;IAIA,IAAI,CAACd,UAAL,EAAiB;MACf,OAAO0B,SAAP;IACD;;IAED,OAAQe,eAAD,GAAoBzC,UAAU,CAAC+B,GAAX,CAAe,KAAf,CAApB,GAA4C/B,UAAU,CAAC+B,GAAX,CAAe,IAAf,CAAnD;EACD,CAhVoC;;EAkVrC;AACF;AACA;AACA;AACA;AACA;EACEY,iBAxVqC,6BAwVnBjD,cAxVmB,EAwVH;IAChC,KAAKA,cAAL,oCAA0BA,cAA1B;EACD,CA1VoC;;EA4VrC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEkD,iBArWqC,6BAqWnB/C,YArWmB,EAqWLgD,cArWK,EAqWW;IAAA;;IAC9C,IAAMC,kBAAkB,GAAG,KAAK9D,aAAL,CAAmBa,YAAnB,CAA3B;IAEA,IAAMkD,UAAU,GAAGD,kBAAkB,CAACE,MAAnB,CACjB,UAAChD,UAAD;MAAA,OAAgB6C,cAAc,CAACI,KAAf,CACd,UAACC,IAAD;QAAA,OAAUA,IAAI,CAACtD,IAAL,KAAcI,UAAU,CAACJ,IAAnC;MAAA,CADc,CAAhB;IAAA,CADiB,CAAnB;;IAMA,KAAKY,kBAAL,CAAwBX,YAAxB,EAAsCkD,UAAtC;;IAEAF,cAAc,CAACxC,OAAf,CAAuB,UAAC8C,UAAD,EAAgB;MACrC,IAAM7C,OAAO,GAAG,MAAI,CAACX,OAAL,CAAawD,UAAU,CAACvD,IAAxB,EAA8BC,YAA9B,CAAhB;;MAEA,IAAIS,OAAJ,EAAa;QACXA,OAAO,CAACc,UAAR,GAAqB+B,UAAU,CAAC/B,UAAhC;QACAd,OAAO,CAACe,KAAR,GAAgB8B,UAAU,CAAC9B,KAAX,IAAoB,EAApC;MACD,CAHD,MAIK;QACH,MAAI,CAACnB,gBAAL,CAAsBL,YAAtB,EAAoC,CAAC,IAAIuD,mBAAJ,mBAChCD,UADgC,EAAD,CAApC;MAGD;IACF,CAZD;IAcA,KAAK7D,MAAL,CAAYO,YAAZ,EAA0BN,KAA1B,GAAkC,IAAlC;IACA,KAAK8D,OAAL,CAAaxD,YAAb;IAEA,OAAO,IAAP;EACD,CAlYoC;;EAoYrC;AACF;AACA;AACA;AACA;AACA;AACA;EACEyD,cA3YqC,0BA2YtBzD,YA3YsB,EA2YR0D,OA3YQ,EA2YC;IAAA;;IACpC,OAAO,qBAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;MACtC,IAAI,MAAI,CAACnE,MAAL,CAAYO,YAAZ,EAA0BN,KAA9B,EAAqC;QACnCiE,OAAO;MACR;;MAED,IAAME,YAAY,GAAGC,UAAU,CAAC;QAAA,OAAMF,MAAM,CAC1C,IAAIG,KAAJ,wDAA0D/D,YAA1D,2BAD0C,CAAZ;MAAA,CAAD,EAE3B0D,OAAD,GAAYA,OAAO,GAAG,IAAtB,GAA6B,KAFD,CAA/B;;MAIA,MAAI,CAACM,IAAL,CAAUhE,YAAV,EAAwB,YAAM;QAC5BiE,YAAY,CAACJ,YAAD,CAAZ;QACAF,OAAO;MACR,CAHD;IAID,CAbM,CAAP;EAcD;AA1ZoC,CAAhB,CAAvB;AA4ZA;;;eAEe7E,c"}
1
+ {"version":3,"names":["ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","name","serviceGroup","serviceUrls","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","existingService","forEach","service","push","_unloadServiceUrls","splice","indexOf","clean","length","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","key","defaultUrl","hosts","host","hostname","id","homeCluster","undefined","findServiceFromClusterId","clusterId","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","failHost","setAllowedDomains","updateServiceUrls","serviceHostmap","currentServiceUrls","unusedUrls","filter","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","resolve","reject","timeoutTimer","setTimeout","Error","once","clearTimeout"],"sources":["service-catalog.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport ServiceUrl from './service-url';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: [\n 'object',\n true,\n () => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: [],\n }),\n ],\n status: [\n 'object',\n true,\n () => ({\n discovery: {\n ready: false,\n collecting: false,\n },\n override: {\n ready: false,\n collecting: false,\n },\n preauth: {\n ready: false,\n collecting: false,\n },\n postauth: {\n ready: false,\n collecting: false,\n },\n signin: {\n ready: false,\n collecting: false,\n },\n }),\n ],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, () => []],\n },\n\n /**\n * @private\n * Search the service url array to locate a `ServiceUrl`\n * class object based on its name.\n * @param {string} name\n * @param {string} [serviceGroup]\n * @returns {ServiceUrl}\n */\n _getUrl(name, serviceGroup) {\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n\n return serviceUrls.find((serviceUrl) => serviceUrl.name === name);\n },\n\n /**\n * @private\n * Generate an array of `ServiceUrl`s that is organized from highest auth\n * level to lowest auth level.\n * @returns {Array<ServiceUrl>} - array of `ServiceUrl`s\n */\n _listServiceUrls() {\n return [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n },\n\n /**\n * @private\n * Safely load one or more `ServiceUrl`s into this `Services` instance.\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _loadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n\n return this;\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceUrl`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _unloadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService),\n 1\n );\n }\n });\n\n return this;\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean() {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string} - ClusterId of a given url\n */\n findClusterId(url) {\n const incomingUrlObj = Url.parse(url);\n let serviceUrlObj;\n\n for (const key of Object.keys(this.serviceGroups)) {\n for (const service of this.serviceGroups[key]) {\n serviceUrlObj = Url.parse(service.defaultUrl);\n\n for (const host of service.hosts) {\n if (incomingUrlObj.hostname === host.host && host.id) {\n return host.id;\n }\n }\n\n if (serviceUrlObj.hostname === incomingUrlObj.hostname && service.hosts.length > 0) {\n // no exact match, so try to grab the first home cluster\n for (const host of service.hosts) {\n if (host.homeCluster) {\n return host.id;\n }\n }\n\n // no match found still, so return the first entry\n return service.hosts[0].id;\n }\n }\n }\n\n return undefined;\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId. Currently, this method will return either a service name, or a\n * service url depending on the `value` parameter. If the `value` parameter\n * is set to `name`, it will return a service name to be utilized within the\n * Services plugin methods.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {boolean} [params.priorityHost = true] - returns priority host url if true\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId({clusterId, priorityHost = true, serviceGroup} = {}) {\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n\n const identifiedServiceUrl = serviceUrls.find((serviceUrl) =>\n serviceUrl.hosts.find((host) => host.id === clusterId)\n );\n\n if (identifiedServiceUrl) {\n return {\n name: identifiedServiceUrl.name,\n url: identifiedServiceUrl.get(priorityHost, clusterId),\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {serviceUrl} - ServiceUrl assocated with provided url\n */\n findServiceUrlFromUrl(url) {\n const incomingUrlObj = Url.parse(url);\n const serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override,\n ];\n\n return serviceUrls.find((serviceUrl) => {\n if (incomingUrlObj.hostname === Url.parse(serviceUrl.defaultUrl).hostname) {\n return true;\n }\n\n if (serviceUrl.hosts.find((host) => host.host === incomingUrlObj.hostname)) {\n return true;\n }\n\n return false;\n });\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url) {\n const urlObj = Url.parse(url);\n\n if (!urlObj.host) {\n return undefined;\n }\n\n return this.allowedDomains.find((allowedDomain) => urlObj.host.includes(allowedDomain));\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} name\n * @param {boolean} priorityHost\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(name, priorityHost, serviceGroup) {\n const serviceUrl = this._getUrl(name, serviceGroup);\n\n return serviceUrl ? serviceUrl.get(priorityHost) : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains() {\n return [...this.allowedDomains];\n },\n\n /**\n * Creates an object where the keys are the service names\n * and the values are the service urls.\n * @param {boolean} priorityHost - use the highest priority if set to `true`\n * @param {string} [serviceGroup]\n * @returns {Record<string, string>}\n */\n list(priorityHost, serviceGroup) {\n const output = {};\n\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override,\n ];\n\n if (serviceUrls) {\n serviceUrls.forEach((serviceUrl) => {\n output[serviceUrl.name] = serviceUrl.get(priorityHost);\n });\n }\n\n return output;\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceUrl` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceUrls` host array,\n * or the `ServiceUrls` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @param {boolean} noPriorityHosts\n * @returns {string}\n */\n markFailedUrl(url, noPriorityHosts) {\n const serviceUrl = this._getUrl(\n Object.keys(this.list()).find((key) => this._getUrl(key).failHost(url))\n );\n\n if (!serviceUrl) {\n return undefined;\n }\n\n return noPriorityHosts ? serviceUrl.get(false) : serviceUrl.get(true);\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains) {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n * Update the current list of `ServiceUrl`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {object} serviceHostmap\n * @returns {Services}\n */\n updateServiceUrls(serviceGroup, serviceHostmap) {\n const currentServiceUrls = this.serviceGroups[serviceGroup];\n\n const unusedUrls = currentServiceUrls.filter((serviceUrl) =>\n serviceHostmap.every((item) => item.name !== serviceUrl.name)\n );\n\n this._unloadServiceUrls(serviceGroup, unusedUrls);\n\n serviceHostmap.forEach((serviceObj) => {\n const service = this._getUrl(serviceObj.name, serviceGroup);\n\n if (service) {\n service.defaultUrl = serviceObj.defaultUrl;\n service.hosts = serviceObj.hosts || [];\n } else {\n this._loadServiceUrls(serviceGroup, [\n new ServiceUrl({\n ...serviceObj,\n }),\n ]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n\n return this;\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup, timeout) {\n return new Promise((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const timeoutTimer = setTimeout(\n () =>\n reject(\n new Error(\n `services: timeout occured while waiting for '${serviceGroup}' catalog to populate`\n )\n ),\n timeout ? timeout * 1000 : 60000\n );\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n },\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceCatalog;\n"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  _Object$defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
-
9
7
  exports.default = void 0;
10
8
  var _default = {
11
9
  hydra: 'https://api-usgov.webex.com/v1',
@@ -1 +1 @@
1
- {"version":3,"names":["hydra","u2c"],"sources":["service-fed-ramp.js"],"sourcesContent":["\nexport default {\n hydra: 'https://api-usgov.webex.com/v1',\n u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1'\n};\n"],"mappings":";;;;;;;;;eACe;EACbA,KAAK,EAAE,gCADM;EAEbC,GAAG,EAAE;AAFQ,C"}
1
+ {"version":3,"names":["hydra","u2c"],"sources":["service-fed-ramp.js"],"sourcesContent":["export default {\n hydra: 'https://api-usgov.webex.com/v1',\n u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1',\n};\n"],"mappings":";;;;;;;eAAe;EACbA,KAAK,EAAE,gCAAgC;EACvCC,GAAG,EAAE;AACP,CAAC;AAAA"}