@webex/webex-core 3.12.0-webex-services-ready.2 → 3.12.0-webex-services-ready.4
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.
- package/README.md +5 -2
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/lib/batcher.js +1 -1
- package/dist/lib/credentials/credentials.js +1 -1
- package/dist/lib/credentials/token.js +1 -1
- package/dist/lib/domains.js +90 -0
- package/dist/lib/domains.js.map +1 -0
- package/dist/lib/services/service-catalog.js +6 -10
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/services.js +26 -22
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/services-v2/service-catalog.js +6 -12
- package/dist/lib/services-v2/service-catalog.js.map +1 -1
- package/dist/lib/services-v2/services-v2.js +33 -24
- package/dist/lib/services-v2/services-v2.js.map +1 -1
- package/dist/plugins/logger.js +1 -1
- package/dist/webex-core.js +2 -2
- package/package.json +13 -13
- package/src/config.js +17 -0
- package/src/lib/domains.ts +94 -0
- package/src/lib/services/service-catalog.js +6 -10
- package/src/lib/services/services.js +37 -31
- package/src/lib/services-v2/service-catalog.ts +6 -11
- package/src/lib/services-v2/services-v2.ts +41 -31
- package/test/fixtures/activation-email.ts +22 -0
- package/test/integration/spec/services/service-catalog.js +7 -6
- package/test/integration/spec/services/services.js +11 -8
- package/test/integration/spec/services-v2/services-v2.js +11 -8
- package/test/unit/spec/interceptors/auth.js +56 -0
- package/test/unit/spec/services/service-catalog.js +93 -11
- package/test/unit/spec/services/services.js +6 -1
- package/test/unit/spec/services-v2/service-catalog.ts +93 -11
- package/test/unit/spec/services-v2/services-v2.ts +22 -1
- package/test/unit/spec/webex-core.js +0 -2
- package/test/unit/spec/webex-internal-core.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ampersandState","_interopRequireDefault","require","_lodash","_serviceDetail","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","timestamp","allowedDomains","_getAllServiceDetails","serviceGroup","serviceDetails","concat","_toConsumableArray2","default","_getServiceDetail","clusterId","find","serviceDetail","id","_loadServiceDetails","_this","existingService","forEach","service","push","_unloadServiceDetails","_this2","splice","indexOf","clean","findClusterId","url","_allServiceDetails$fi","incomingUrlObj","URL","allServiceDetails","serviceUrls","_ref","host","_unused","undefined","findServiceFromClusterId","_ref2","arguments","serviceName","get","findServiceDetailFromUrl","_ref3","_iterator","_step","serviceUrl","startsWith","baseUrl","err","findAllowedDomain","urlObj","allowedDomain","includes","_unused2","getAllowedDomains","markFailedServiceUrl","serviceDetailWithFailedHost","failHost","setAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceGroups","_this3","currentServiceDetails","unusedServicesDetails","filter","every","_ref4","serviceObj","_serviceObj$serviceUr","sort","b","priority","ServiceDetail","trigger","waitForCatalog","timeout","_this4","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.ts"],"sourcesContent":["import AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\nimport ServiceDetail from './service-detail';\nimport {IServiceDetail, ServiceGroup} from './types';\n\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 timestamp: ['string', false, ''],\n allowedDomains: ['array', false, () => []],\n },\n\n /**\n * @private\n * Get all service details for a given service group or return all details if no group is specified.\n * @param {ServiceGroup} serviceGroup - The name of the service group to retrieve details for.\n * @returns {Array<IServiceDetail>} - An array of service details.\n */\n _getAllServiceDetails(serviceGroup?: ServiceGroup): Array<IServiceDetail> {\n const serviceDetails =\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 serviceDetails;\n },\n\n /**\n * @private\n * Search the service details array to locate a `ServiceDetails`\n * class object based on its id.\n * @param {string} clusterId\n * @param {ServiceGroup} [serviceGroup]\n * @returns {IServiceDetail}\n */\n _getServiceDetail(clusterId: string, serviceGroup?: ServiceGroup): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails(serviceGroup);\n\n return serviceDetails.find((serviceDetail: IServiceDetail) => serviceDetail.id === clusterId);\n },\n\n /**\n * @private\n * Safely load one or more `ServiceDetail`s into this `ServiceCatalog` instance.\n * @param {ServiceGroup} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _loadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceDetail`s into this `Services` instance\n * @param {ServiceGroup} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _unloadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails?.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService),\n 1\n );\n }\n });\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean(): void {\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 | undefined} - ClusterId of a given url\n */\n findClusterId(url: string): string | undefined {\n try {\n const incomingUrlObj = new URL(url);\n const allServiceDetails = this._getAllServiceDetails();\n\n return allServiceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.serviceUrls.find(({host}) => host === incomingUrlObj.host)\n )?.id;\n } catch {\n // If the URL is invalid or can't be found, return undefined\n return undefined;\n }\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {ServiceGroup} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId(\n {clusterId, serviceGroup} = {} as {clusterId: string; serviceGroup?: ServiceGroup}\n ): {name: string; url: string} | undefined {\n const serviceDetails = this._getServiceDetail(clusterId, serviceGroup);\n\n if (serviceDetails) {\n return {\n name: serviceDetails.serviceName,\n url: serviceDetails.get(),\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 {IServiceDetail} - ServiceDetail assocated with provided url\n */\n findServiceDetailFromUrl(url: string): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n return serviceDetails.find(({serviceUrls}) => {\n for (const serviceUrl of serviceUrls) {\n if (url.startsWith(serviceUrl.baseUrl)) {\n return true;\n }\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: string): string {\n try {\n const urlObj = new URL(url);\n\n return this.allowedDomains.find((allowedDomain) => urlObj.host.includes(allowedDomain));\n } catch {\n // If the URL is invalid or can't be found, return undefined\n return undefined;\n }\n },\n\n /**\n * Get a service url from the current services list by name. Return undefined\n * if the service is not found.\n * @param {string} clusterId\n * @param {ServiceGroup} serviceGroup\n * @returns {string | undefined}\n */\n get(clusterId: string, serviceGroup?: ServiceGroup): string | undefined {\n const serviceDetail = this._getServiceDetail(clusterId, serviceGroup);\n\n return serviceDetail ? serviceDetail.get() : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains(): Array<string> {\n return [...this.allowedDomains];\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceDetail` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceDetail` host array,\n * or the `ServiceDetail` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @returns {string}\n */\n markFailedServiceUrl(url: string): string | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n const serviceDetailWithFailedHost = serviceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.failHost(url)\n );\n\n // if we couldn't find the url we wanted to fail, return undefined\n if (!serviceDetailWithFailedHost) {\n return undefined;\n }\n\n return serviceDetailWithFailedHost.get();\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: Array<string>): void {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains: Array<string>): void {\n this.allowedDomains = union(this.allowedDomains, newAllowedDomains);\n },\n\n /**\n * Update the current list of `ServiceDetail`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {ServiceGroup} serviceGroup\n * @param {Array<IServiceDetail>} serviceDetails\n * @param {timestamp<string>} timestamp of the catalog\n * @returns {void}\n */\n updateServiceGroups(\n serviceGroup: ServiceGroup,\n serviceDetails: Array<IServiceDetail>,\n timestamp?: string\n ) {\n const currentServiceDetails = this.serviceGroups[serviceGroup];\n\n const unusedServicesDetails = currentServiceDetails?.filter((serviceDetail) =>\n serviceDetails?.every(({id}) => id !== serviceDetail.id)\n );\n\n this._unloadServiceDetails(serviceGroup, unusedServicesDetails);\n\n serviceDetails?.forEach((serviceObj) => {\n const serviceDetail = this._getServiceDetail(serviceObj.id, serviceGroup);\n serviceObj?.serviceUrls?.sort((a, b) => {\n if (a.priority < 0 && b.priority < 0) return 0;\n if (a.priority < 0) return 1;\n if (b.priority < 0) return -1;\n\n return a.priority - b.priority;\n });\n if (serviceDetail) {\n serviceDetail.serviceUrls = serviceObj.serviceUrls || [];\n } else {\n this._loadServiceDetails(serviceGroup, [new ServiceDetail(serviceObj)]);\n }\n });\n\n this.timestamp = timestamp;\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {ServiceGroup} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup: ServiceGroup, timeout?: number): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\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 validatedTimeout * 1000\n );\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n },\n});\n\nexport default ServiceCatalog;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_ampersandState","_interopRequireDefault","require","_lodash","_serviceDetail","_domains","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","timestamp","allowedDomains","_getAllServiceDetails","serviceGroup","serviceDetails","concat","_toConsumableArray2","default","_getServiceDetail","clusterId","find","serviceDetail","id","_loadServiceDetails","_this","existingService","forEach","service","push","_unloadServiceDetails","_this2","splice","indexOf","clean","findClusterId","url","_allServiceDetails$fi","incomingUrlObj","URL","allServiceDetails","serviceUrls","_ref","host","_unused","undefined","findServiceFromClusterId","_ref2","arguments","serviceName","get","findServiceDetailFromUrl","_ref3","_iterator","_step","serviceUrl","startsWith","baseUrl","err","findAllowedDomain","matchAllowedDomain","getAllowedDomains","markFailedServiceUrl","serviceDetailWithFailedHost","failHost","setAllowedDomains","normalizeAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceGroups","_this3","currentServiceDetails","unusedServicesDetails","filter","every","_ref4","serviceObj","_serviceObj$serviceUr","sort","b","priority","ServiceDetail","trigger","waitForCatalog","timeout","_this4","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.ts"],"sourcesContent":["import AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\nimport ServiceDetail from './service-detail';\nimport {IServiceDetail, ServiceGroup} from './types';\nimport {matchAllowedDomain, normalizeAllowedDomains} from '../domains';\n\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 timestamp: ['string', false, ''],\n allowedDomains: ['array', false, () => []],\n },\n\n /**\n * @private\n * Get all service details for a given service group or return all details if no group is specified.\n * @param {ServiceGroup} serviceGroup - The name of the service group to retrieve details for.\n * @returns {Array<IServiceDetail>} - An array of service details.\n */\n _getAllServiceDetails(serviceGroup?: ServiceGroup): Array<IServiceDetail> {\n const serviceDetails =\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 serviceDetails;\n },\n\n /**\n * @private\n * Search the service details array to locate a `ServiceDetails`\n * class object based on its id.\n * @param {string} clusterId\n * @param {ServiceGroup} [serviceGroup]\n * @returns {IServiceDetail}\n */\n _getServiceDetail(clusterId: string, serviceGroup?: ServiceGroup): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails(serviceGroup);\n\n return serviceDetails.find((serviceDetail: IServiceDetail) => serviceDetail.id === clusterId);\n },\n\n /**\n * @private\n * Safely load one or more `ServiceDetail`s into this `ServiceCatalog` instance.\n * @param {ServiceGroup} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _loadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceDetail`s into this `Services` instance\n * @param {ServiceGroup} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _unloadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails?.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService),\n 1\n );\n }\n });\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean(): void {\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 | undefined} - ClusterId of a given url\n */\n findClusterId(url: string): string | undefined {\n try {\n const incomingUrlObj = new URL(url);\n const allServiceDetails = this._getAllServiceDetails();\n\n return allServiceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.serviceUrls.find(({host}) => host === incomingUrlObj.host)\n )?.id;\n } catch {\n // If the URL is invalid or can't be found, return undefined\n return undefined;\n }\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {ServiceGroup} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId(\n {clusterId, serviceGroup} = {} as {clusterId: string; serviceGroup?: ServiceGroup}\n ): {name: string; url: string} | undefined {\n const serviceDetails = this._getServiceDetail(clusterId, serviceGroup);\n\n if (serviceDetails) {\n return {\n name: serviceDetails.serviceName,\n url: serviceDetails.get(),\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 {IServiceDetail} - ServiceDetail assocated with provided url\n */\n findServiceDetailFromUrl(url: string): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n return serviceDetails.find(({serviceUrls}) => {\n for (const serviceUrl of serviceUrls) {\n if (url.startsWith(serviceUrl.baseUrl)) {\n return true;\n }\n }\n\n return false;\n });\n },\n\n /**\n * Finds an allowed domain that matches a specific url. The url's hostname\n * must be the allowed domain itself or a subdomain of it.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url: string): string {\n return matchAllowedDomain(url, this.allowedDomains);\n },\n\n /**\n * Get a service url from the current services list by name. Return undefined\n * if the service is not found.\n * @param {string} clusterId\n * @param {ServiceGroup} serviceGroup\n * @returns {string | undefined}\n */\n get(clusterId: string, serviceGroup?: ServiceGroup): string | undefined {\n const serviceDetail = this._getServiceDetail(clusterId, serviceGroup);\n\n return serviceDetail ? serviceDetail.get() : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains(): Array<string> {\n return [...this.allowedDomains];\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceDetail` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceDetail` host array,\n * or the `ServiceDetail` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @returns {string}\n */\n markFailedServiceUrl(url: string): string | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n const serviceDetailWithFailedHost = serviceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.failHost(url)\n );\n\n // if we couldn't find the url we wanted to fail, return undefined\n if (!serviceDetailWithFailedHost) {\n return undefined;\n }\n\n return serviceDetailWithFailedHost.get();\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: Array<string>): void {\n this.allowedDomains = normalizeAllowedDomains(allowedDomains);\n },\n\n /**\n *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains: Array<string>): void {\n this.allowedDomains = union(this.allowedDomains, normalizeAllowedDomains(newAllowedDomains));\n },\n\n /**\n * Update the current list of `ServiceDetail`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {ServiceGroup} serviceGroup\n * @param {Array<IServiceDetail>} serviceDetails\n * @param {timestamp<string>} timestamp of the catalog\n * @returns {void}\n */\n updateServiceGroups(\n serviceGroup: ServiceGroup,\n serviceDetails: Array<IServiceDetail>,\n timestamp?: string\n ) {\n const currentServiceDetails = this.serviceGroups[serviceGroup];\n\n const unusedServicesDetails = currentServiceDetails?.filter((serviceDetail) =>\n serviceDetails?.every(({id}) => id !== serviceDetail.id)\n );\n\n this._unloadServiceDetails(serviceGroup, unusedServicesDetails);\n\n serviceDetails?.forEach((serviceObj) => {\n const serviceDetail = this._getServiceDetail(serviceObj.id, serviceGroup);\n serviceObj?.serviceUrls?.sort((a, b) => {\n if (a.priority < 0 && b.priority < 0) return 0;\n if (a.priority < 0) return 1;\n if (b.priority < 0) return -1;\n\n return a.priority - b.priority;\n });\n if (serviceDetail) {\n serviceDetail.serviceUrls = serviceObj.serviceUrls || [];\n } else {\n this._loadServiceDetails(serviceGroup, [new ServiceDetail(serviceObj)]);\n }\n });\n\n this.timestamp = timestamp;\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {ServiceGroup} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup: ServiceGroup, timeout?: number): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\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 validatedTimeout * 1000\n );\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n },\n});\n\nexport default ServiceCatalog;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -42,12 +42,6 @@ var DEFAULT_CLUSTER_IDENTIFIER = process.env.WEBEX_CONVERSATION_DEFAULT_CLUSTER
|
|
|
42
42
|
var CATALOG_CACHE_KEY_V2 = 'services.v2.u2cHostMap';
|
|
43
43
|
var CATALOG_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
44
44
|
|
|
45
|
-
// Maximum time we will wait for the initial catalog collection before letting
|
|
46
|
-
// `services.ready` (and therefore `webex.ready`) fire anyway. A hung request
|
|
47
|
-
// must never leave the app on a permanent spinner - past this point downstream
|
|
48
|
-
// consumers must fall through to their normal error/login paths.
|
|
49
|
-
var SERVICES_INIT_TIMEOUT_MS = 15000;
|
|
50
|
-
|
|
51
45
|
/* eslint-disable no-underscore-dangle */
|
|
52
46
|
/**
|
|
53
47
|
* @class
|
|
@@ -1194,7 +1188,9 @@ var Services = _webexPlugin.default.extend({
|
|
|
1194
1188
|
* @returns {Promise<object>}
|
|
1195
1189
|
*/
|
|
1196
1190
|
_fetchNewServiceHostmap: function _fetchNewServiceHostmap() {
|
|
1197
|
-
var
|
|
1191
|
+
var _this$webex$config2,
|
|
1192
|
+
_this$webex$config2$s,
|
|
1193
|
+
_this1 = this;
|
|
1198
1194
|
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1199
1195
|
from = _ref11.from,
|
|
1200
1196
|
query = _ref11.query,
|
|
@@ -1204,6 +1200,8 @@ var Services = _webexPlugin.default.extend({
|
|
|
1204
1200
|
var resource = from ? "/".concat(from, "/catalog") : '/catalog';
|
|
1205
1201
|
var qs = _objectSpread(_objectSpread({}, query || {}), {}, {
|
|
1206
1202
|
format: 'U2CV2'
|
|
1203
|
+
}, ((_this$webex$config2 = this.webex.config) === null || _this$webex$config2 === void 0 ? void 0 : (_this$webex$config2$s = _this$webex$config2.services) === null || _this$webex$config2$s === void 0 ? void 0 : _this$webex$config2$s.useCatalogOverride) && {
|
|
1204
|
+
useCatalogOverride: true
|
|
1207
1205
|
});
|
|
1208
1206
|
if (forceRefresh) {
|
|
1209
1207
|
qs.timestamp = new Date().getTime();
|
|
@@ -1236,9 +1234,9 @@ var Services = _webexPlugin.default.extend({
|
|
|
1236
1234
|
var _this10 = this;
|
|
1237
1235
|
// Get the catalog and destructure the services config.
|
|
1238
1236
|
var catalog = this._getCatalog();
|
|
1239
|
-
var _this$webex$
|
|
1240
|
-
services = _this$webex$
|
|
1241
|
-
fedramp = _this$webex$
|
|
1237
|
+
var _this$webex$config3 = this.webex.config,
|
|
1238
|
+
services = _this$webex$config3.services,
|
|
1239
|
+
fedramp = _this$webex$config3.fedramp;
|
|
1242
1240
|
|
|
1243
1241
|
// Validate that the services configuration exists.
|
|
1244
1242
|
if (services) {
|
|
@@ -1306,6 +1304,7 @@ var Services = _webexPlugin.default.extend({
|
|
|
1306
1304
|
|
|
1307
1305
|
// Destructure the credentials plugin.
|
|
1308
1306
|
var credentials = this.webex.credentials;
|
|
1307
|
+
var catalog = this._getCatalog();
|
|
1309
1308
|
|
|
1310
1309
|
// Init a promise chain. Must be done as a Promise.resolve() to allow
|
|
1311
1310
|
// credentials#getOrgId() to properly throw.
|
|
@@ -1322,9 +1321,14 @@ var Services = _webexPlugin.default.extend({
|
|
|
1322
1321
|
}).then(function () {
|
|
1323
1322
|
// Validate if the token is authorized.
|
|
1324
1323
|
if (credentials.canAuthorize) {
|
|
1325
|
-
// Attempt to collect the postauth catalog
|
|
1324
|
+
// Attempt to collect the postauth catalog, then mark the catalog
|
|
1325
|
+
// ready. Setting `isReady` here - rather than only in the init
|
|
1326
|
+
// callers - means a slow postauth fetch that loses the gated-init
|
|
1327
|
+
// timeout race still marks the catalog ready once it completes.
|
|
1326
1328
|
return _this11.updateServices({
|
|
1327
1329
|
forceRefresh: refresh
|
|
1330
|
+
}).then(function () {
|
|
1331
|
+
catalog.isReady = true;
|
|
1328
1332
|
}).catch(function () {
|
|
1329
1333
|
_this11.initFailed = true;
|
|
1330
1334
|
_this11.logger.warn('services: cannot retrieve postauth catalog');
|
|
@@ -1436,9 +1440,9 @@ var Services = _webexPlugin.default.extend({
|
|
|
1436
1440
|
case 2:
|
|
1437
1441
|
supertoken = _this14.webex.credentials.supertoken; // Validate if the supertoken exists.
|
|
1438
1442
|
if (supertoken && supertoken.access_token) {
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1443
|
+
// `initServiceCatalogs` marks the catalog ready internally once the
|
|
1444
|
+
// postauth catalog is collected.
|
|
1445
|
+
_this14.initServiceCatalogs().catch(function (error) {
|
|
1442
1446
|
_this14.initFailed = true;
|
|
1443
1447
|
_this14.logger.error("services: failed to init initial services when credentials available, ".concat(error === null || error === void 0 ? void 0 : error.message));
|
|
1444
1448
|
});
|
|
@@ -1474,7 +1478,8 @@ var Services = _webexPlugin.default.extend({
|
|
|
1474
1478
|
// catalogs. We listen for 'loaded' instead of 'ready' because `services.ready`
|
|
1475
1479
|
// now blocks `webex.ready` - listening to 'ready' would deadlock.
|
|
1476
1480
|
this.listenToOnce(this.webex, 'loaded', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
1477
|
-
var
|
|
1481
|
+
var _this15$webex$config, _this15$webex$config$;
|
|
1482
|
+
var warmed, supertoken, initTimeoutMs, initServiceCatalogsTimeout, email;
|
|
1478
1483
|
return _regenerator.default.wrap(function (_context5) {
|
|
1479
1484
|
while (1) switch (_context5.prev = _context5.next) {
|
|
1480
1485
|
case 0:
|
|
@@ -1494,16 +1499,19 @@ var Services = _webexPlugin.default.extend({
|
|
|
1494
1499
|
case 3:
|
|
1495
1500
|
supertoken = _this15.webex.credentials.supertoken; // Race init against a hard timeout so a hung request never leaves
|
|
1496
1501
|
// `services.ready` false forever - that would stall `webex.ready` and
|
|
1497
|
-
// leave
|
|
1498
|
-
|
|
1502
|
+
// leave consumers waiting on it indefinitely. Timeout is configurable via
|
|
1503
|
+
// `config.services.catalogInitTimeout` (defaults to 15s in config).
|
|
1504
|
+
initTimeoutMs = (_this15$webex$config = _this15.webex.config) === null || _this15$webex$config === void 0 ? void 0 : (_this15$webex$config$ = _this15$webex$config.services) === null || _this15$webex$config$ === void 0 ? void 0 : _this15$webex$config$.catalogInitTimeout;
|
|
1505
|
+
initServiceCatalogsTimeout = new _promise.default(function (_, reject) {
|
|
1499
1506
|
setTimeout(function () {
|
|
1500
|
-
return reject(new Error("services: init timed out after ".concat(
|
|
1501
|
-
},
|
|
1507
|
+
return reject(new Error("services: init timed out after ".concat(initTimeoutMs, "ms")));
|
|
1508
|
+
}, initTimeoutMs);
|
|
1502
1509
|
}); // Validate if the supertoken exists.
|
|
1503
1510
|
if (supertoken && supertoken.access_token) {
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1511
|
+
// `initServiceCatalogs` marks the catalog ready internally once the
|
|
1512
|
+
// postauth catalog is collected - even if it loses the timeout race
|
|
1513
|
+
// above, so a slow fetch still eventually flips `catalog.isReady`.
|
|
1514
|
+
_promise.default.race([_this15.initServiceCatalogs(), initServiceCatalogsTimeout]).catch(function (error) {
|
|
1507
1515
|
_this15.initFailed = true;
|
|
1508
1516
|
_this15.logger.error("services: failed to init initial services when credentials available, ".concat(error === null || error === void 0 ? void 0 : error.message));
|
|
1509
1517
|
}).finally(function () {
|
|
@@ -1513,7 +1521,7 @@ var Services = _webexPlugin.default.extend({
|
|
|
1513
1521
|
email = _this15.webex.config.email;
|
|
1514
1522
|
_promise.default.race([_this15.collectPreauthCatalog(email ? {
|
|
1515
1523
|
email: email
|
|
1516
|
-
} : undefined),
|
|
1524
|
+
} : undefined), initServiceCatalogsTimeout]).catch(function (error) {
|
|
1517
1525
|
_this15.initFailed = true;
|
|
1518
1526
|
_this15.logger.error("services: failed to init initial services when no credentials available, ".concat(error === null || error === void 0 ? void 0 : error.message));
|
|
1519
1527
|
}).finally(function () {
|
|
@@ -1524,6 +1532,7 @@ var Services = _webexPlugin.default.extend({
|
|
|
1524
1532
|
// for `canAuthorize` flipping true and then collect the postauth catalog.
|
|
1525
1533
|
_this15.listenToOnce(_this15.webex, 'change:canAuthorize', function () {
|
|
1526
1534
|
if (_this15.webex.canAuthorize && !catalog.status.postauth.ready) {
|
|
1535
|
+
// `initServiceCatalogs` marks the catalog ready internally.
|
|
1527
1536
|
_this15.initServiceCatalogs().catch(function (error) {
|
|
1528
1537
|
_this15.logger.error("services: failed to init service catalogs after auth, ".concat(error === null || error === void 0 ? void 0 : error.message));
|
|
1529
1538
|
});
|
|
@@ -1537,7 +1546,7 @@ var Services = _webexPlugin.default.extend({
|
|
|
1537
1546
|
}, _callee5);
|
|
1538
1547
|
})));
|
|
1539
1548
|
},
|
|
1540
|
-
version: "3.12.0-webex-services-ready.
|
|
1549
|
+
version: "3.12.0-webex-services-ready.4"
|
|
1541
1550
|
});
|
|
1542
1551
|
/* eslint-enable no-underscore-dangle */
|
|
1543
1552
|
var _default = exports.default = Services;
|