@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":["interceptors","WebexTrackingIdInterceptor","create","RequestEventInterceptor","RateLimitInterceptor","RequestLoggerInterceptor","process","env","ENABLE_NETWORK_LOGGING","ENABLE_VERBOSE_NETWORK_LOGGING","undefined","ResponseLoggerInterceptor","RequestTimingInterceptor","ServiceInterceptor","UserAgentInterceptor","WebexUserAgentInterceptor","AuthInterceptor","KmsDryErrorInterceptor","PayloadTransformerInterceptor","ConversationInterceptor","RedirectInterceptor","HttpStatusInterceptor","error","WebexHttpError","NetworkTimingInterceptor","EmbargoInterceptor","DefaultOptionsInterceptor","preInterceptors","postInterceptors","MAX_FILE_SIZE_IN_MB","WebexCore","AmpState","extend","version","children","internal","WebexInternalCore","constructor","attrs","options","credentials","supertoken","access_token","forEach","path","val","bearerValidator","trim","derived","boundedStorage","deps","fn","makeWebexStore","unboundedStorage","ready","loaded","_children","reduce","name","session","config","type","default","request","setOnce","sessionId","refresh","transform","direction","object","predicates","payloadTransformer","filter","p","ctx","webex","all","map","test","then","shouldTransform","extract","target","data","d","Boolean","promise","alias","applyNamedTransform","resolve","rest","unshift","args","transforms","tx","getWindow","window","initialize","trigger","onLoaded","stopListening","nextTick","listenToAndRun","onReady","prototype","key","listenTo","addInterceptor","ints","interceptor","push","includes","requestDefaults","json","uuid","v4","setConfig","newConfig","token","split","length","console","warn","replace","info","inspect","depth","util","serialize","props","logout","refresh_token","onBeforeLogout","reverse","plugin","catch","err","logger","clear","invalidate","authorization","measure","metrics","sendUnstructured","upload","file","reject","Error","phases","finalize","method","body","uploadProtocol","withCredentials","headers","shunt","EventEmitter","_uploadPhaseInitialize","_uploadPhaseUpload","transferEvents","_uploadPhaseFinalize","res","proxyEvents","debug","fileUploadSizeLimitInBytes","fileUploadSizeLimit","currentFileSizeInBytes","byteLength","_uploadAbortSession","_uploadApplySession","response","url","abortErrorDetails","fileUploadSizeLimitInMB","message","opts","phaseOptions","phaseKey","startsWith","substr","NODE_ENV","on","event","total","retry","mixinWebexInternalCorePlugins","mixinWebexCorePlugins","registerPlugin","registerInternalPlugin"],"sources":["webex-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\nimport util from 'util';\n\nimport {proxyEvents, retry, transferEvents} from '@webex/common';\nimport {HttpStatusInterceptor, defaults as requestDefaults} from '@webex/http-core';\nimport {defaultsDeep, get, isFunction, isString, last, merge, omit, set, unset} from 'lodash';\nimport AmpState from 'ampersand-state';\nimport uuid from 'uuid';\n\nimport AuthInterceptor from './interceptors/auth';\nimport NetworkTimingInterceptor from './interceptors/network-timing';\nimport PayloadTransformerInterceptor from './interceptors/payload-transformer';\nimport RedirectInterceptor from './interceptors/redirect';\nimport RequestEventInterceptor from './interceptors/request-event';\nimport RequestLoggerInterceptor from './interceptors/request-logger';\nimport RequestTimingInterceptor from './interceptors/request-timing';\nimport ResponseLoggerInterceptor from './interceptors/response-logger';\nimport WebexHttpError from './lib/webex-http-error';\nimport UserAgentInterceptor from './interceptors/user-agent';\nimport WebexTrackingIdInterceptor from './interceptors/webex-tracking-id';\nimport WebexUserAgentInterceptor from './interceptors/webex-user-agent';\nimport RateLimitInterceptor from './interceptors/rate-limit';\nimport EmbargoInterceptor from './interceptors/embargo';\nimport DefaultOptionsInterceptor from './interceptors/default-options';\nimport config from './config';\nimport {makeWebexStore} from './lib/storage';\nimport mixinWebexCorePlugins from './lib/webex-core-plugin-mixin';\nimport mixinWebexInternalCorePlugins from './lib/webex-internal-core-plugin-mixin';\nimport WebexInternalCore from './webex-internal-core';\n\n// TODO replace the Interceptor.create with Reflect.construct (\n// Interceptor.create exists because new was really hard to call on an array of\n// constructors)\nconst interceptors = {\n WebexTrackingIdInterceptor: WebexTrackingIdInterceptor.create,\n RequestEventInterceptor: RequestEventInterceptor.create,\n RateLimitInterceptor: RateLimitInterceptor.create,\n /* eslint-disable no-extra-parens */\n RequestLoggerInterceptor: (process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING) ? RequestLoggerInterceptor.create : undefined,\n ResponseLoggerInterceptor: (process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING) ? ResponseLoggerInterceptor.create : undefined,\n /* eslint-enable no-extra-parens */\n RequestTimingInterceptor: RequestTimingInterceptor.create,\n ServiceInterceptor: undefined,\n UserAgentInterceptor: UserAgentInterceptor.create,\n WebexUserAgentInterceptor: WebexUserAgentInterceptor.create,\n AuthInterceptor: AuthInterceptor.create,\n KmsDryErrorInterceptor: undefined,\n PayloadTransformerInterceptor: PayloadTransformerInterceptor.create,\n ConversationInterceptor: undefined,\n RedirectInterceptor: RedirectInterceptor.create,\n HttpStatusInterceptor() {\n return HttpStatusInterceptor.create({\n error: WebexHttpError\n });\n },\n NetworkTimingInterceptor: NetworkTimingInterceptor.create,\n EmbargoInterceptor: EmbargoInterceptor.create,\n DefaultOptionsInterceptor: DefaultOptionsInterceptor.create\n};\n\nconst preInterceptors = [\n 'ResponseLoggerInterceptor',\n 'RequestTimingInterceptor',\n 'RequestEventInterceptor',\n 'WebexTrackingIdInterceptor',\n 'RateLimitInterceptor'\n];\n\nconst postInterceptors = [\n 'HttpStatusInterceptor',\n 'NetworkTimingInterceptor',\n 'EmbargoInterceptor',\n 'RequestLoggerInterceptor',\n 'RateLimitInterceptor'\n];\n\nconst MAX_FILE_SIZE_IN_MB = 2048;\n\n/**\n * @class\n */\nconst WebexCore = AmpState.extend({\n version: PACKAGE_VERSION,\n\n children: {\n internal: WebexInternalCore\n },\n\n constructor(attrs = {}, options) {\n if (typeof attrs === 'string') {\n attrs = {\n credentials: {\n supertoken: {\n // eslint-disable-next-line camelcase\n access_token: attrs\n }\n }\n };\n }\n else {\n // Reminder: order is important here\n [\n 'credentials.authorization',\n 'authorization',\n 'credentials.supertoken.supertoken',\n 'supertoken',\n 'access_token',\n 'credentials.authorization.supertoken'\n ].forEach((path) => {\n const val = get(attrs, path);\n\n if (val) {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n [\n 'credentials',\n 'credentials.authorization'\n ]\n .forEach((path) => {\n const val = get(attrs, path);\n\n if (typeof val === 'string') {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n if (typeof get(attrs, 'credentials.access_token') === 'string') {\n // Send access_token to get validated and corrected and then set it\n set(attrs, 'credentials.access_token', this.bearerValidator(get(attrs, 'credentials.access_token').trim()));\n\n set(attrs, 'credentials.supertoken', attrs.credentials);\n }\n }\n\n return Reflect.apply(AmpState, this, [attrs, options]);\n },\n\n derived: {\n boundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('bounded', this);\n }\n },\n unboundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('unbounded', this);\n }\n },\n ready: {\n deps: ['loaded', 'internal.ready'],\n fn() {\n return this.loaded && Object.keys(this._children).reduce((ready, name) => ready && this[name] && this[name].ready !== false, true);\n }\n }\n },\n\n session: {\n config: {\n type: 'object'\n },\n /**\n * When true, indicates that the initial load from the storage layer is\n * complete\n * @instance\n * @memberof WebexCore\n * @type {boolean}\n */\n loaded: {\n default: false,\n type: 'boolean'\n },\n request: {\n setOnce: true,\n // It's supposed to be a function, but that's not a type defined in\n // Ampersand\n type: 'any'\n },\n sessionId: {\n setOnce: true,\n type: 'string'\n }\n },\n\n /**\n * @instance\n * @memberof WebexCore\n * @param {[type]} args\n * @returns {[type]}\n */\n refresh(...args) {\n return this.credentials.refresh(...args);\n },\n\n /**\n * Applies the directionally appropriate transforms to the specified object\n * @param {string} direction\n * @param {Object} object\n * @returns {Promise}\n */\n transform(direction, object) {\n const predicates = this.config.payloadTransformer.predicates.filter(\n (p) => !p.direction || p.direction === direction\n );\n const ctx = {\n webex: this\n };\n\n return Promise.all(predicates.map((p) => p.test(ctx, object)\n .then((shouldTransform) => {\n if (!shouldTransform) {\n return undefined;\n }\n\n return p.extract(object)\n // eslint-disable-next-line max-nested-callbacks\n .then((target) => ({\n name: p.name,\n target\n }));\n })))\n .then((data) => data\n .filter((d) => Boolean(d))\n // eslint-disable-next-line max-nested-callbacks\n .reduce((promise, {name, target, alias}) => promise.then(() => {\n if (alias) {\n return this.applyNamedTransform(direction, alias, target);\n }\n\n return this.applyNamedTransform(direction, name, target);\n }), Promise.resolve()))\n .then(() => object);\n },\n\n /**\n * Applies the directionally appropriate transform to the specified parameters\n * @param {string} direction\n * @param {Object} ctx\n * @param {string} name\n * @returns {Promise}\n */\n applyNamedTransform(direction, ctx, name, ...rest) {\n if (isString(ctx)) {\n rest.unshift(name);\n name = ctx;\n ctx = {\n webex: this,\n transform: (...args) => this.applyNamedTransform(direction, ctx, ...args)\n };\n }\n\n const transforms = ctx.webex.config.payloadTransformer.transforms.filter(\n (tx) => tx.name === name && (!tx.direction || tx.direction === direction)\n );\n\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n return transforms.reduce((promise, tx) => promise.then(() => {\n if (tx.alias) {\n return ctx.transform(tx.alias, ...rest);\n }\n\n return Promise.resolve(tx.fn(ctx, ...rest));\n }), Promise.resolve())\n .then(() => last(rest));\n },\n\n /**\n * @private\n * @returns {Window}\n */\n getWindow() {\n // eslint-disable-next-line\n return window;\n },\n\n /**\n * Initializer\n *\n * @emits WebexCore#loaded\n * @emits WebexCore#ready\n * @instance\n * @memberof WebexCore\n * @param {Object} attrs\n * @returns {WebexCore}\n */\n initialize(attrs = {}) {\n this.config = merge({}, config, attrs.config);\n\n\n // There's some unfortunateness with the way {@link AmpersandState#children}\n // get initialized. We'll fire the change:config event so that\n // {@link WebexPlugin#initialize()} can use\n // `this.listenToOnce(parent, 'change:config', () => {});` to act on config\n // during initialization\n this.trigger('change:config');\n\n const onLoaded = () => {\n if (this.loaded) {\n /**\n * Fires when all data has been loaded from the storage layer\n * @event loaded\n * @instance\n * @memberof WebexCore\n */\n this.trigger('loaded');\n\n this.stopListening(this, 'change:loaded', onLoaded);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:loaded', onLoaded);\n });\n\n const onReady = () => {\n if (this.ready) {\n /**\n * Fires when all plugins have fully initialized\n * @event ready\n * @instance\n * @memberof WebexCore\n */\n this.trigger('ready');\n\n this.stopListening(this, 'change:ready', onReady);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:ready', onReady);\n });\n\n // Make nested events propagate in a consistent manner\n Object.keys(this.constructor.prototype._children).forEach((key) => {\n this.listenTo(this[key], 'change', (...args) => {\n args.unshift(`change:${key}`);\n this.trigger(...args);\n });\n });\n\n const addInterceptor = (ints, key) => {\n const interceptor = interceptors[key];\n\n if (!isFunction(interceptor)) {\n return ints;\n }\n\n ints.push(Reflect.apply(interceptor, this, []));\n\n return ints;\n };\n\n let ints = [];\n\n ints = preInterceptors.reduce(addInterceptor, ints);\n ints = Object.keys(interceptors)\n .filter((key) => !(preInterceptors.includes(key) || postInterceptors.includes(key)))\n .reduce(addInterceptor, ints);\n ints = postInterceptors.reduce(addInterceptor, ints);\n\n this.request = requestDefaults({\n json: true,\n interceptors: ints\n });\n\n let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(this, 'config.trackingIdBase', uuid.v4())}`;\n\n if (get(this, 'config.trackingIdSuffix')) {\n sessionId += `_${get(this, 'config.trackingIdSuffix')}`;\n }\n\n this.sessionId = sessionId;\n },\n\n /**\n * setConfig\n *\n * Allows updating config\n *\n * @instance\n * @memberof WebexCore\n * @param {Object} newConfig\n * @returns {null}\n */\n setConfig(newConfig = {}) {\n this.config = merge({}, this.config, newConfig);\n },\n\n /**\n *\n * Check if access token is correctly formated and correct if it's not\n * Warn user if token string has errors in it\n * @param {string} token\n * @returns {string}\n */\n bearerValidator(token) {\n if (token.includes('Bearer') && token.split(' ').length - 1 === 0) {\n console.warn(\n `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\\n\\n${token.replace('Bearer', 'Bearer ').replace(/\\s+/g, ' ')}`\n );\n console.info(\"Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine\");\n\n return token.replace('Bearer', 'Bearer ').replace(/\\s+/g, ' ');\n }\n // Allow elseIf return\n // eslint-disable-next-line no-else-return\n else if (token.split(' ').length - 1 > 1) {\n console.warn(\n `Your access token has ${token.split(' ').length - 2} too many spaces, please use this format:\\n\\n${token.replace(/\\s+/g, ' ')}`\n );\n console.info(\"Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine\");\n\n return token.replace(/\\s+/g, ' ');\n }\n\n return token.replace(/\\s+/g, ' '); // Clean it anyway (just in case)\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(omit(this.serialize({\n props: true,\n session: true,\n derived: true\n }), 'boundedStorage', 'unboundedStorage', 'request', 'config'), {depth});\n },\n\n /**\n * Invokes all `onBeforeLogout` handlers in the scope of their plugin, clears\n * all stores, and revokes the access token\n * Note: If you're using the sdk in a server environment, you may be more\n * interested in {@link `webex.internal.mercury.disconnect()`| Mercury#disconnect()}\n * and {@link `webex.internal.device.unregister()`|Device#unregister()}\n * or {@link `webex.phone.unregister()`|Phone#unregister}\n * @instance\n * @memberof WebexCore\n * @param {Object} options Passed as the first argument to all\n * `onBeforeLogout` handlers\n * @returns {Promise}\n */\n logout(options, ...rest) {\n // prefer the refresh token, but for clients that don't have one, fallback\n // to the access token\n const token = this.credentials.supertoken && (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);\n\n options = Object.assign({token}, options);\n\n // onBeforeLogout should be executed in the opposite order in which handlers\n // were registered. In that way, wdm unregister() will be above mercury\n // disconnect(), but disconnect() will execute first.\n // eslint-disable-next-line arrow-body-style\n return this.config.onBeforeLogout.reverse().reduce((promise, {plugin, fn}) => promise.then(() => {\n return Promise.resolve(Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest]))\n // eslint-disable-next-line max-nested-callbacks\n .catch((err) => {\n this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);\n });\n }), Promise.resolve())\n .then(() => Promise.all([\n this.boundedStorage.clear(),\n this.unboundedStorage.clear()\n ]))\n .then(() => this.credentials.invalidate(...rest))\n .then(() => this.authorization && this.authorization.logout && this.authorization.logout(options, ...rest))\n .then(() => this.trigger('client:logout'));\n },\n\n /**\n * General purpose wrapper to submit metrics via the metrics plugin (if the\n * metrics plugin is installed)\n * @instance\n * @memberof WebexCore\n * @returns {Promise}\n */\n measure(...args) {\n if (this.metrics) {\n return this.metrics.sendUnstructured(...args);\n }\n\n return Promise.resolve();\n },\n\n async upload(options) {\n if (!options.file) {\n return Promise.reject(new Error('`options.file` is required'));\n }\n\n options.phases = options.phases || {};\n options.phases.initialize = options.phases.initialize || {};\n options.phases.upload = options.phases.upload || {};\n options.phases.finalize = options.phases.finalize || {};\n\n defaultsDeep(options.phases.initialize, {\n method: 'POST',\n body: {\n uploadProtocol: 'content-length'\n }\n }, omit(options, 'file', 'phases'));\n\n defaultsDeep(options.phases.upload, {\n method: 'PUT',\n json: false,\n withCredentials: false,\n body: options.file,\n headers: {\n 'x-trans-id': uuid.v4(),\n authorization: undefined\n }\n });\n\n defaultsDeep(options.phases.finalize, {\n method: 'POST'\n }, omit(options, 'file', 'phases'));\n\n const shunt = new EventEmitter();\n\n const promise = this._uploadPhaseInitialize(options)\n .then(() => {\n const p = this._uploadPhaseUpload(options);\n\n transferEvents('progress', p, shunt);\n\n return p;\n })\n .then((...args) => this._uploadPhaseFinalize(options, ...args))\n .then((res) => ({...res.body, ...res.headers}));\n\n proxyEvents(shunt, promise);\n\n return promise;\n },\n\n _uploadPhaseInitialize: function _uploadPhaseInitialize(options) {\n this.logger.debug('client: initiating upload session');\n\n return this.request(options.phases.initialize)\n .then((...args) => {\n const fileUploadSizeLimitInBytes = (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;\n const currentFileSizeInBytes = options.file.byteLength;\n\n if (fileUploadSizeLimitInBytes && fileUploadSizeLimitInBytes < currentFileSizeInBytes) {\n return this._uploadAbortSession(currentFileSizeInBytes, ...args);\n }\n\n return this._uploadApplySession(options, ...args);\n })\n .then((res) => {\n this.logger.debug('client: initiated upload session');\n\n return res;\n });\n },\n\n _uploadAbortSession(currentFileSizeInBytes, response) {\n this.logger.debug('client: deleting uploaded file');\n\n return this.request({\n method: 'DELETE',\n url: response.body.url,\n headers: response.options.headers\n }).then(() => {\n this.logger.debug('client: deleting uploaded file complete');\n\n const abortErrorDetails = {\n currentFileSizeInBytes,\n fileUploadSizeLimitInMB: response.body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB,\n message: 'file-upload-size-limit-enabled'\n };\n\n return Promise.reject(new Error(`${JSON.stringify(abortErrorDetails)}`));\n });\n },\n\n _uploadApplySession(options, res) {\n const session = res.body;\n\n ['upload', 'finalize'].reduce((opts, key) => {\n opts[key] = Object.keys(opts[key]).reduce((phaseOptions, phaseKey) => {\n if (phaseKey.startsWith('$')) {\n phaseOptions[phaseKey.substr(1)] = phaseOptions[phaseKey](session);\n Reflect.deleteProperty(phaseOptions, phaseKey);\n }\n\n return phaseOptions;\n }, opts[key]);\n\n return opts;\n }, options.phases);\n },\n\n @retry\n _uploadPhaseUpload(options) {\n this.logger.debug('client: uploading file');\n\n const promise = this.request(options.phases.upload)\n .then((res) => {\n this.logger.debug('client: uploaded file');\n\n return res;\n });\n\n proxyEvents(options.phases.upload.upload, promise);\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV === 'test') {\n promise.on('progress', (event) => {\n this.logger.info('upload progress', event.loaded, event.total);\n });\n }\n\n return promise;\n },\n\n _uploadPhaseFinalize: function _uploadPhaseFinalize(options) {\n this.logger.debug('client: finalizing upload session');\n\n return this.request(options.phases.finalize)\n .then((res) => {\n this.logger.debug('client: finalized upload session');\n\n return res;\n });\n }\n});\n\nWebexCore.version = PACKAGE_VERSION;\n\nmixinWebexInternalCorePlugins(WebexInternalCore, config, interceptors);\nmixinWebexCorePlugins(WebexCore, config, interceptors);\n\nexport default WebexCore;\n\n/**\n * @method registerPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Array<string>} options.proxies\n * @param {Object} options.interceptors\n * @returns {null}\n */\nexport function registerPlugin(name, constructor, options = {}) {\n WebexCore.registerPlugin(name, constructor, options);\n}\n\n/**\n * Registers plugins used by internal products that do not talk to public APIs.\n * @method registerInternalPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Object} options.interceptors\n * @private\n * @returns {null}\n */\nexport function registerInternalPlugin(name, constructor, options) {\n WebexInternalCore.registerPlugin(name, constructor, options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["interceptors","WebexTrackingIdInterceptor","create","RequestEventInterceptor","RateLimitInterceptor","RequestLoggerInterceptor","process","env","ENABLE_NETWORK_LOGGING","ENABLE_VERBOSE_NETWORK_LOGGING","undefined","ResponseLoggerInterceptor","RequestTimingInterceptor","ServiceInterceptor","UserAgentInterceptor","WebexUserAgentInterceptor","AuthInterceptor","KmsDryErrorInterceptor","PayloadTransformerInterceptor","ConversationInterceptor","RedirectInterceptor","HttpStatusInterceptor","error","WebexHttpError","NetworkTimingInterceptor","EmbargoInterceptor","DefaultOptionsInterceptor","preInterceptors","postInterceptors","MAX_FILE_SIZE_IN_MB","WebexCore","AmpState","extend","version","children","internal","WebexInternalCore","constructor","attrs","options","credentials","supertoken","access_token","forEach","path","val","bearerValidator","trim","derived","boundedStorage","deps","fn","makeWebexStore","unboundedStorage","ready","loaded","_children","reduce","name","session","config","type","default","request","setOnce","sessionId","refresh","transform","direction","object","predicates","payloadTransformer","filter","p","ctx","webex","all","map","test","then","shouldTransform","extract","target","data","d","Boolean","promise","alias","applyNamedTransform","resolve","rest","unshift","args","transforms","tx","getWindow","window","initialize","trigger","onLoaded","stopListening","nextTick","listenToAndRun","onReady","prototype","key","listenTo","addInterceptor","ints","interceptor","push","includes","requestDefaults","json","uuid","v4","setConfig","newConfig","token","split","length","console","warn","replace","info","inspect","depth","util","serialize","props","logout","refresh_token","onBeforeLogout","reverse","plugin","catch","err","logger","clear","invalidate","authorization","measure","metrics","sendUnstructured","upload","file","reject","Error","phases","finalize","method","body","uploadProtocol","withCredentials","headers","shunt","EventEmitter","_uploadPhaseInitialize","_uploadPhaseUpload","transferEvents","_uploadPhaseFinalize","res","proxyEvents","debug","fileUploadSizeLimitInBytes","fileUploadSizeLimit","currentFileSizeInBytes","byteLength","_uploadAbortSession","_uploadApplySession","response","url","abortErrorDetails","fileUploadSizeLimitInMB","message","opts","phaseOptions","phaseKey","startsWith","substr","NODE_ENV","on","event","total","retry","mixinWebexInternalCorePlugins","mixinWebexCorePlugins","registerPlugin","registerInternalPlugin"],"sources":["webex-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\nimport util from 'util';\n\nimport {proxyEvents, retry, transferEvents} from '@webex/common';\nimport {HttpStatusInterceptor, defaults as requestDefaults} from '@webex/http-core';\nimport {defaultsDeep, get, isFunction, isString, last, merge, omit, set, unset} from 'lodash';\nimport AmpState from 'ampersand-state';\nimport uuid from 'uuid';\n\nimport AuthInterceptor from './interceptors/auth';\nimport NetworkTimingInterceptor from './interceptors/network-timing';\nimport PayloadTransformerInterceptor from './interceptors/payload-transformer';\nimport RedirectInterceptor from './interceptors/redirect';\nimport RequestEventInterceptor from './interceptors/request-event';\nimport RequestLoggerInterceptor from './interceptors/request-logger';\nimport RequestTimingInterceptor from './interceptors/request-timing';\nimport ResponseLoggerInterceptor from './interceptors/response-logger';\nimport WebexHttpError from './lib/webex-http-error';\nimport UserAgentInterceptor from './interceptors/user-agent';\nimport WebexTrackingIdInterceptor from './interceptors/webex-tracking-id';\nimport WebexUserAgentInterceptor from './interceptors/webex-user-agent';\nimport RateLimitInterceptor from './interceptors/rate-limit';\nimport EmbargoInterceptor from './interceptors/embargo';\nimport DefaultOptionsInterceptor from './interceptors/default-options';\nimport config from './config';\nimport {makeWebexStore} from './lib/storage';\nimport mixinWebexCorePlugins from './lib/webex-core-plugin-mixin';\nimport mixinWebexInternalCorePlugins from './lib/webex-internal-core-plugin-mixin';\nimport WebexInternalCore from './webex-internal-core';\n\n// TODO replace the Interceptor.create with Reflect.construct (\n// Interceptor.create exists because new was really hard to call on an array of\n// constructors)\nconst interceptors = {\n WebexTrackingIdInterceptor: WebexTrackingIdInterceptor.create,\n RequestEventInterceptor: RequestEventInterceptor.create,\n RateLimitInterceptor: RateLimitInterceptor.create,\n /* eslint-disable no-extra-parens */\n RequestLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? RequestLoggerInterceptor.create\n : undefined,\n ResponseLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? ResponseLoggerInterceptor.create\n : undefined,\n /* eslint-enable no-extra-parens */\n RequestTimingInterceptor: RequestTimingInterceptor.create,\n ServiceInterceptor: undefined,\n UserAgentInterceptor: UserAgentInterceptor.create,\n WebexUserAgentInterceptor: WebexUserAgentInterceptor.create,\n AuthInterceptor: AuthInterceptor.create,\n KmsDryErrorInterceptor: undefined,\n PayloadTransformerInterceptor: PayloadTransformerInterceptor.create,\n ConversationInterceptor: undefined,\n RedirectInterceptor: RedirectInterceptor.create,\n HttpStatusInterceptor() {\n return HttpStatusInterceptor.create({\n error: WebexHttpError,\n });\n },\n NetworkTimingInterceptor: NetworkTimingInterceptor.create,\n EmbargoInterceptor: EmbargoInterceptor.create,\n DefaultOptionsInterceptor: DefaultOptionsInterceptor.create,\n};\n\nconst preInterceptors = [\n 'ResponseLoggerInterceptor',\n 'RequestTimingInterceptor',\n 'RequestEventInterceptor',\n 'WebexTrackingIdInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst postInterceptors = [\n 'HttpStatusInterceptor',\n 'NetworkTimingInterceptor',\n 'EmbargoInterceptor',\n 'RequestLoggerInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst MAX_FILE_SIZE_IN_MB = 2048;\n\n/**\n * @class\n */\nconst WebexCore = AmpState.extend({\n version: PACKAGE_VERSION,\n\n children: {\n internal: WebexInternalCore,\n },\n\n constructor(attrs = {}, options) {\n if (typeof attrs === 'string') {\n attrs = {\n credentials: {\n supertoken: {\n // eslint-disable-next-line camelcase\n access_token: attrs,\n },\n },\n };\n } else {\n // Reminder: order is important here\n [\n 'credentials.authorization',\n 'authorization',\n 'credentials.supertoken.supertoken',\n 'supertoken',\n 'access_token',\n 'credentials.authorization.supertoken',\n ].forEach((path) => {\n const val = get(attrs, path);\n\n if (val) {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n ['credentials', 'credentials.authorization'].forEach((path) => {\n const val = get(attrs, path);\n\n if (typeof val === 'string') {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n if (typeof get(attrs, 'credentials.access_token') === 'string') {\n // Send access_token to get validated and corrected and then set it\n set(\n attrs,\n 'credentials.access_token',\n this.bearerValidator(get(attrs, 'credentials.access_token').trim())\n );\n\n set(attrs, 'credentials.supertoken', attrs.credentials);\n }\n }\n\n return Reflect.apply(AmpState, this, [attrs, options]);\n },\n\n derived: {\n boundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('bounded', this);\n },\n },\n unboundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('unbounded', this);\n },\n },\n ready: {\n deps: ['loaded', 'internal.ready'],\n fn() {\n return (\n this.loaded &&\n Object.keys(this._children).reduce(\n (ready, name) => ready && this[name] && this[name].ready !== false,\n true\n )\n );\n },\n },\n },\n\n session: {\n config: {\n type: 'object',\n },\n /**\n * When true, indicates that the initial load from the storage layer is\n * complete\n * @instance\n * @memberof WebexCore\n * @type {boolean}\n */\n loaded: {\n default: false,\n type: 'boolean',\n },\n request: {\n setOnce: true,\n // It's supposed to be a function, but that's not a type defined in\n // Ampersand\n type: 'any',\n },\n sessionId: {\n setOnce: true,\n type: 'string',\n },\n },\n\n /**\n * @instance\n * @memberof WebexCore\n * @param {[type]} args\n * @returns {[type]}\n */\n refresh(...args) {\n return this.credentials.refresh(...args);\n },\n\n /**\n * Applies the directionally appropriate transforms to the specified object\n * @param {string} direction\n * @param {Object} object\n * @returns {Promise}\n */\n transform(direction, object) {\n const predicates = this.config.payloadTransformer.predicates.filter(\n (p) => !p.direction || p.direction === direction\n );\n const ctx = {\n webex: this,\n };\n\n return Promise.all(\n predicates.map((p) =>\n p.test(ctx, object).then((shouldTransform) => {\n if (!shouldTransform) {\n return undefined;\n }\n\n return (\n p\n .extract(object)\n // eslint-disable-next-line max-nested-callbacks\n .then((target) => ({\n name: p.name,\n target,\n }))\n );\n })\n )\n )\n .then((data) =>\n data\n .filter((d) => Boolean(d))\n // eslint-disable-next-line max-nested-callbacks\n .reduce(\n (promise, {name, target, alias}) =>\n promise.then(() => {\n if (alias) {\n return this.applyNamedTransform(direction, alias, target);\n }\n\n return this.applyNamedTransform(direction, name, target);\n }),\n Promise.resolve()\n )\n )\n .then(() => object);\n },\n\n /**\n * Applies the directionally appropriate transform to the specified parameters\n * @param {string} direction\n * @param {Object} ctx\n * @param {string} name\n * @returns {Promise}\n */\n applyNamedTransform(direction, ctx, name, ...rest) {\n if (isString(ctx)) {\n rest.unshift(name);\n name = ctx;\n ctx = {\n webex: this,\n transform: (...args) => this.applyNamedTransform(direction, ctx, ...args),\n };\n }\n\n const transforms = ctx.webex.config.payloadTransformer.transforms.filter(\n (tx) => tx.name === name && (!tx.direction || tx.direction === direction)\n );\n\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n return transforms\n .reduce(\n (promise, tx) =>\n promise.then(() => {\n if (tx.alias) {\n return ctx.transform(tx.alias, ...rest);\n }\n\n return Promise.resolve(tx.fn(ctx, ...rest));\n }),\n Promise.resolve()\n )\n .then(() => last(rest));\n },\n\n /**\n * @private\n * @returns {Window}\n */\n getWindow() {\n // eslint-disable-next-line\n return window;\n },\n\n /**\n * Initializer\n *\n * @emits WebexCore#loaded\n * @emits WebexCore#ready\n * @instance\n * @memberof WebexCore\n * @param {Object} attrs\n * @returns {WebexCore}\n */\n initialize(attrs = {}) {\n this.config = merge({}, config, attrs.config);\n\n // There's some unfortunateness with the way {@link AmpersandState#children}\n // get initialized. We'll fire the change:config event so that\n // {@link WebexPlugin#initialize()} can use\n // `this.listenToOnce(parent, 'change:config', () => {});` to act on config\n // during initialization\n this.trigger('change:config');\n\n const onLoaded = () => {\n if (this.loaded) {\n /**\n * Fires when all data has been loaded from the storage layer\n * @event loaded\n * @instance\n * @memberof WebexCore\n */\n this.trigger('loaded');\n\n this.stopListening(this, 'change:loaded', onLoaded);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:loaded', onLoaded);\n });\n\n const onReady = () => {\n if (this.ready) {\n /**\n * Fires when all plugins have fully initialized\n * @event ready\n * @instance\n * @memberof WebexCore\n */\n this.trigger('ready');\n\n this.stopListening(this, 'change:ready', onReady);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:ready', onReady);\n });\n\n // Make nested events propagate in a consistent manner\n Object.keys(this.constructor.prototype._children).forEach((key) => {\n this.listenTo(this[key], 'change', (...args) => {\n args.unshift(`change:${key}`);\n this.trigger(...args);\n });\n });\n\n const addInterceptor = (ints, key) => {\n const interceptor = interceptors[key];\n\n if (!isFunction(interceptor)) {\n return ints;\n }\n\n ints.push(Reflect.apply(interceptor, this, []));\n\n return ints;\n };\n\n let ints = [];\n\n ints = preInterceptors.reduce(addInterceptor, ints);\n ints = Object.keys(interceptors)\n .filter((key) => !(preInterceptors.includes(key) || postInterceptors.includes(key)))\n .reduce(addInterceptor, ints);\n ints = postInterceptors.reduce(addInterceptor, ints);\n\n this.request = requestDefaults({\n json: true,\n interceptors: ints,\n });\n\n let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(\n this,\n 'config.trackingIdBase',\n uuid.v4()\n )}`;\n\n if (get(this, 'config.trackingIdSuffix')) {\n sessionId += `_${get(this, 'config.trackingIdSuffix')}`;\n }\n\n this.sessionId = sessionId;\n },\n\n /**\n * setConfig\n *\n * Allows updating config\n *\n * @instance\n * @memberof WebexCore\n * @param {Object} newConfig\n * @returns {null}\n */\n setConfig(newConfig = {}) {\n this.config = merge({}, this.config, newConfig);\n },\n\n /**\n *\n * Check if access token is correctly formated and correct if it's not\n * Warn user if token string has errors in it\n * @param {string} token\n * @returns {string}\n */\n bearerValidator(token) {\n if (token.includes('Bearer') && token.split(' ').length - 1 === 0) {\n console.warn(\n `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\\n\\n${token\n .replace('Bearer', 'Bearer ')\n .replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine\"\n );\n\n return token.replace('Bearer', 'Bearer ').replace(/\\s+/g, ' ');\n }\n // Allow elseIf return\n // eslint-disable-next-line no-else-return\n else if (token.split(' ').length - 1 > 1) {\n console.warn(\n `Your access token has ${\n token.split(' ').length - 2\n } too many spaces, please use this format:\\n\\n${token.replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine\"\n );\n\n return token.replace(/\\s+/g, ' ');\n }\n\n return token.replace(/\\s+/g, ' '); // Clean it anyway (just in case)\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(\n omit(\n this.serialize({\n props: true,\n session: true,\n derived: true,\n }),\n 'boundedStorage',\n 'unboundedStorage',\n 'request',\n 'config'\n ),\n {depth}\n );\n },\n\n /**\n * Invokes all `onBeforeLogout` handlers in the scope of their plugin, clears\n * all stores, and revokes the access token\n * Note: If you're using the sdk in a server environment, you may be more\n * interested in {@link `webex.internal.mercury.disconnect()`| Mercury#disconnect()}\n * and {@link `webex.internal.device.unregister()`|Device#unregister()}\n * or {@link `webex.phone.unregister()`|Phone#unregister}\n * @instance\n * @memberof WebexCore\n * @param {Object} options Passed as the first argument to all\n * `onBeforeLogout` handlers\n * @returns {Promise}\n */\n logout(options, ...rest) {\n // prefer the refresh token, but for clients that don't have one, fallback\n // to the access token\n const token =\n this.credentials.supertoken &&\n (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);\n\n options = Object.assign({token}, options);\n\n // onBeforeLogout should be executed in the opposite order in which handlers\n // were registered. In that way, wdm unregister() will be above mercury\n // disconnect(), but disconnect() will execute first.\n // eslint-disable-next-line arrow-body-style\n return this.config.onBeforeLogout\n .reverse()\n .reduce(\n (promise, {plugin, fn}) =>\n promise.then(() => {\n return (\n Promise.resolve(\n Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest])\n )\n // eslint-disable-next-line max-nested-callbacks\n .catch((err) => {\n this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);\n })\n );\n }),\n Promise.resolve()\n )\n .then(() => Promise.all([this.boundedStorage.clear(), this.unboundedStorage.clear()]))\n .then(() => this.credentials.invalidate(...rest))\n .then(\n () =>\n this.authorization &&\n this.authorization.logout &&\n this.authorization.logout(options, ...rest)\n )\n .then(() => this.trigger('client:logout'));\n },\n\n /**\n * General purpose wrapper to submit metrics via the metrics plugin (if the\n * metrics plugin is installed)\n * @instance\n * @memberof WebexCore\n * @returns {Promise}\n */\n measure(...args) {\n if (this.metrics) {\n return this.metrics.sendUnstructured(...args);\n }\n\n return Promise.resolve();\n },\n\n async upload(options) {\n if (!options.file) {\n return Promise.reject(new Error('`options.file` is required'));\n }\n\n options.phases = options.phases || {};\n options.phases.initialize = options.phases.initialize || {};\n options.phases.upload = options.phases.upload || {};\n options.phases.finalize = options.phases.finalize || {};\n\n defaultsDeep(\n options.phases.initialize,\n {\n method: 'POST',\n body: {\n uploadProtocol: 'content-length',\n },\n },\n omit(options, 'file', 'phases')\n );\n\n defaultsDeep(options.phases.upload, {\n method: 'PUT',\n json: false,\n withCredentials: false,\n body: options.file,\n headers: {\n 'x-trans-id': uuid.v4(),\n authorization: undefined,\n },\n });\n\n defaultsDeep(\n options.phases.finalize,\n {\n method: 'POST',\n },\n omit(options, 'file', 'phases')\n );\n\n const shunt = new EventEmitter();\n\n const promise = this._uploadPhaseInitialize(options)\n .then(() => {\n const p = this._uploadPhaseUpload(options);\n\n transferEvents('progress', p, shunt);\n\n return p;\n })\n .then((...args) => this._uploadPhaseFinalize(options, ...args))\n .then((res) => ({...res.body, ...res.headers}));\n\n proxyEvents(shunt, promise);\n\n return promise;\n },\n\n _uploadPhaseInitialize: function _uploadPhaseInitialize(options) {\n this.logger.debug('client: initiating upload session');\n\n return this.request(options.phases.initialize)\n .then((...args) => {\n const fileUploadSizeLimitInBytes =\n (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;\n const currentFileSizeInBytes = options.file.byteLength;\n\n if (fileUploadSizeLimitInBytes && fileUploadSizeLimitInBytes < currentFileSizeInBytes) {\n return this._uploadAbortSession(currentFileSizeInBytes, ...args);\n }\n\n return this._uploadApplySession(options, ...args);\n })\n .then((res) => {\n this.logger.debug('client: initiated upload session');\n\n return res;\n });\n },\n\n _uploadAbortSession(currentFileSizeInBytes, response) {\n this.logger.debug('client: deleting uploaded file');\n\n return this.request({\n method: 'DELETE',\n url: response.body.url,\n headers: response.options.headers,\n }).then(() => {\n this.logger.debug('client: deleting uploaded file complete');\n\n const abortErrorDetails = {\n currentFileSizeInBytes,\n fileUploadSizeLimitInMB: response.body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB,\n message: 'file-upload-size-limit-enabled',\n };\n\n return Promise.reject(new Error(`${JSON.stringify(abortErrorDetails)}`));\n });\n },\n\n _uploadApplySession(options, res) {\n const session = res.body;\n\n ['upload', 'finalize'].reduce((opts, key) => {\n opts[key] = Object.keys(opts[key]).reduce((phaseOptions, phaseKey) => {\n if (phaseKey.startsWith('$')) {\n phaseOptions[phaseKey.substr(1)] = phaseOptions[phaseKey](session);\n Reflect.deleteProperty(phaseOptions, phaseKey);\n }\n\n return phaseOptions;\n }, opts[key]);\n\n return opts;\n }, options.phases);\n },\n\n @retry\n _uploadPhaseUpload(options) {\n this.logger.debug('client: uploading file');\n\n const promise = this.request(options.phases.upload).then((res) => {\n this.logger.debug('client: uploaded file');\n\n return res;\n });\n\n proxyEvents(options.phases.upload.upload, promise);\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV === 'test') {\n promise.on('progress', (event) => {\n this.logger.info('upload progress', event.loaded, event.total);\n });\n }\n\n return promise;\n },\n\n _uploadPhaseFinalize: function _uploadPhaseFinalize(options) {\n this.logger.debug('client: finalizing upload session');\n\n return this.request(options.phases.finalize).then((res) => {\n this.logger.debug('client: finalized upload session');\n\n return res;\n });\n },\n});\n\nWebexCore.version = PACKAGE_VERSION;\n\nmixinWebexInternalCorePlugins(WebexInternalCore, config, interceptors);\nmixinWebexCorePlugins(WebexCore, config, interceptors);\n\nexport default WebexCore;\n\n/**\n * @method registerPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Array<string>} options.proxies\n * @param {Object} options.interceptors\n * @returns {null}\n */\nexport function registerPlugin(name, constructor, options = {}) {\n WebexCore.registerPlugin(name, constructor, options);\n}\n\n/**\n * Registers plugins used by internal products that do not talk to public APIs.\n * @method registerInternalPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Object} options.interceptors\n * @private\n * @returns {null}\n */\nexport function registerInternalPlugin(name, constructor, options) {\n WebexInternalCore.registerPlugin(name, constructor, options);\n}\n"],"mappings":"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"}
@@ -1,21 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
14
-
15
10
  var _util = _interopRequireDefault(require("util"));
16
-
17
11
  var _ampersandState = _interopRequireDefault(require("ampersand-state"));
18
-
19
12
  /*!
20
13
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
21
14
  */
@@ -31,14 +24,12 @@ var WebexInternalCore = _ampersandState.default.extend({
31
24
  deps: [],
32
25
  fn: function fn() {
33
26
  var _this = this;
34
-
35
27
  return (0, _keys.default)(this._children).reduce(function (ready, name) {
36
28
  return ready && _this[name] && _this[name].ready !== false;
37
29
  }, true);
38
30
  }
39
31
  }
40
32
  },
41
-
42
33
  /**
43
34
  * @instance
44
35
  * @memberof WebexPlugin
@@ -56,7 +47,6 @@ var WebexInternalCore = _ampersandState.default.extend({
56
47
  });
57
48
  }
58
49
  });
59
-
60
50
  var _default = WebexInternalCore;
61
51
  exports.default = _default;
62
52
  //# sourceMappingURL=webex-internal-core.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["WebexInternalCore","AmpState","extend","derived","ready","deps","fn","_children","reduce","name","inspect","depth","util","serialize","props","session"],"sources":["webex-internal-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport AmpState from 'ampersand-state';\n\n/**\n * WebexInternalCore is an extra layer of nesting to make it blatantly clear that\n * private plugins are, in fact, private.\n * @class\n */\nconst WebexInternalCore = AmpState.extend({\n derived: {\n ready: {\n deps: [],\n fn() {\n return Object.keys(this._children).reduce((ready, name) => ready && this[name] && this[name].ready !== false, true);\n }\n }\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(this.serialize({\n props: true,\n session: true,\n derived: true\n }), {depth});\n }\n});\n\nexport default WebexInternalCore;\n"],"mappings":";;;;;;;;;;;;;;AAIA;;AAEA;;AANA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA,IAAMA,iBAAiB,GAAGC,uBAAA,CAASC,MAAT,CAAgB;EACxCC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,IAAI,EAAE,EADD;MAELC,EAFK,gBAEA;QAAA;;QACH,OAAO,mBAAY,KAAKC,SAAjB,EAA4BC,MAA5B,CAAmC,UAACJ,KAAD,EAAQK,IAAR;UAAA,OAAiBL,KAAK,IAAI,KAAI,CAACK,IAAD,CAAb,IAAuB,KAAI,CAACA,IAAD,CAAJ,CAAWL,KAAX,KAAqB,KAA7D;QAAA,CAAnC,EAAuG,IAAvG,CAAP;MACD;IAJI;EADA,CAD+B;;EAUxC;AACF;AACA;AACA;AACA;AACA;AACA;EACEM,OAjBwC,mBAiBhCC,KAjBgC,EAiBzB;IACb,OAAOC,aAAA,CAAKF,OAAL,CAAa,KAAKG,SAAL,CAAe;MACjCC,KAAK,EAAE,IAD0B;MAEjCC,OAAO,EAAE,IAFwB;MAGjCZ,OAAO,EAAE;IAHwB,CAAf,CAAb,EAIH;MAACQ,KAAK,EAALA;IAAD,CAJG,CAAP;EAKD;AAvBuC,CAAhB,CAA1B;;eA0BeX,iB"}
1
+ {"version":3,"names":["WebexInternalCore","AmpState","extend","derived","ready","deps","fn","_children","reduce","name","inspect","depth","util","serialize","props","session"],"sources":["webex-internal-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport AmpState from 'ampersand-state';\n\n/**\n * WebexInternalCore is an extra layer of nesting to make it blatantly clear that\n * private plugins are, in fact, private.\n * @class\n */\nconst WebexInternalCore = AmpState.extend({\n derived: {\n ready: {\n deps: [],\n fn() {\n return Object.keys(this._children).reduce(\n (ready, name) => ready && this[name] && this[name].ready !== false,\n true\n );\n },\n },\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(\n this.serialize({\n props: true,\n session: true,\n derived: true,\n }),\n {depth}\n );\n },\n});\n\nexport default WebexInternalCore;\n"],"mappings":";;;;;;;;;AAIA;AAEA;AANA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA,IAAMA,iBAAiB,GAAGC,uBAAQ,CAACC,MAAM,CAAC;EACxCC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,IAAI,EAAE,EAAE;MACRC,EAAE,gBAAG;QAAA;QACH,OAAO,mBAAY,IAAI,CAACC,SAAS,CAAC,CAACC,MAAM,CACvC,UAACJ,KAAK,EAAEK,IAAI;UAAA,OAAKL,KAAK,IAAI,KAAI,CAACK,IAAI,CAAC,IAAI,KAAI,CAACA,IAAI,CAAC,CAACL,KAAK,KAAK,KAAK;QAAA,GAClE,IAAI,CACL;MACH;IACF;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEM,OAAO,mBAACC,KAAK,EAAE;IACb,OAAOC,aAAI,CAACF,OAAO,CACjB,IAAI,CAACG,SAAS,CAAC;MACbC,KAAK,EAAE,IAAI;MACXC,OAAO,EAAE,IAAI;MACbZ,OAAO,EAAE;IACX,CAAC,CAAC,EACF;MAACQ,KAAK,EAALA;IAAK,CAAC,CACR;EACH;AACF,CAAC,CAAC;AAAC,eAEYX,iBAAiB;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/webex-core",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.21",
4
4
  "description": "Plugin handling for Cisco Webex",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -31,24 +31,24 @@
31
31
  },
32
32
  "devDependencies": {
33
33
  "@sinonjs/fake-timers": "^6.0.1",
34
- "@webex/test-helper-chai": "3.0.0-beta.2",
35
- "@webex/test-helper-make-local-url": "3.0.0-beta.2",
36
- "@webex/test-helper-mocha": "3.0.0-beta.2",
37
- "@webex/test-helper-mock-webex": "3.0.0-beta.2",
38
- "@webex/test-helper-refresh-callback": "3.0.0-beta.2",
39
- "@webex/test-helper-test-users": "3.0.0-beta.2",
34
+ "@webex/test-helper-chai": "3.0.0-beta.21",
35
+ "@webex/test-helper-make-local-url": "3.0.0-beta.21",
36
+ "@webex/test-helper-mocha": "3.0.0-beta.21",
37
+ "@webex/test-helper-mock-webex": "3.0.0-beta.21",
38
+ "@webex/test-helper-refresh-callback": "3.0.0-beta.21",
39
+ "@webex/test-helper-test-users": "3.0.0-beta.21",
40
40
  "chai": "^4.3.4",
41
41
  "chai-as-promised": "^7.1.1",
42
42
  "sinon": "^9.2.4"
43
43
  },
44
44
  "dependencies": {
45
- "@webex/common": "3.0.0-beta.2",
46
- "@webex/common-timers": "3.0.0-beta.2",
47
- "@webex/http-core": "3.0.0-beta.2",
48
- "@webex/internal-plugin-device": "3.0.0-beta.2",
49
- "@webex/plugin-logger": "3.0.0-beta.2",
50
- "@webex/storage-adapter-spec": "3.0.0-beta.2",
51
- "@webex/webex-core": "3.0.0-beta.2",
45
+ "@webex/common": "3.0.0-beta.21",
46
+ "@webex/common-timers": "3.0.0-beta.21",
47
+ "@webex/http-core": "3.0.0-beta.21",
48
+ "@webex/internal-plugin-device": "3.0.0-beta.21",
49
+ "@webex/plugin-logger": "3.0.0-beta.21",
50
+ "@webex/storage-adapter-spec": "3.0.0-beta.21",
51
+ "@webex/webex-core": "3.0.0-beta.21",
52
52
  "ampersand-collection": "^2.0.2",
53
53
  "ampersand-events": "^2.0.2",
54
54
  "ampersand-state": "^5.0.3",
package/src/config.js CHANGED
@@ -37,7 +37,7 @@ export default {
37
37
  *
38
38
  * @type {string}
39
39
  */
40
- u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1'
40
+ u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1',
41
41
  },
42
42
 
43
43
  /**
@@ -51,9 +51,7 @@ export default {
51
51
  * services that don't need auth validation
52
52
  */
53
53
 
54
- servicesNotNeedValidation: [
55
- 'webex-appapi-service'
56
- ],
54
+ servicesNotNeedValidation: ['webex-appapi-service'],
57
55
 
58
56
  /**
59
57
  * Contains a list of allowed domain host addresses.
@@ -68,25 +66,25 @@ export default {
68
66
  'broadcloudpbx.com',
69
67
  'broadcloud.eu',
70
68
  'broadcloud.com.au',
71
- 'broadcloudpbx.net'
72
- ]
69
+ 'broadcloudpbx.net',
70
+ ],
73
71
  },
74
72
  device: {
75
73
  preDiscoveryServices: {
76
74
  hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',
77
- hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1'
75
+ hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',
78
76
  },
79
77
  validateDomains: true,
80
78
  },
81
79
  metrics: {
82
- type: ['behavioral', 'operational']
80
+ type: ['behavioral', 'operational'],
83
81
  },
84
82
  payloadTransformer: {
85
83
  predicates: [],
86
- transforms: []
84
+ transforms: [],
87
85
  },
88
86
  storage: {
89
87
  boundedAdapter: MemoryStoreAdapter,
90
- unboundedAdapter: MemoryStoreAdapter
91
- }
88
+ unboundedAdapter: MemoryStoreAdapter,
89
+ },
92
90
  };
@@ -4,7 +4,6 @@ import AmpState from 'ampersand-state';
4
4
  // URL properties from them for the various CI services. The URL's
5
5
  // will be updated when the CI changes.
6
6
  const CredentialsConfig = AmpState.extend({
7
-
8
7
  // we need to allow extra props for dynamic props like jwtRefreshCallback
9
8
  extraProperties: 'allow',
10
9
 
@@ -13,24 +12,36 @@ const CredentialsConfig = AmpState.extend({
13
12
  * The idbroker base host name
14
13
  * @returns {object}
15
14
  */
16
- idbroker: ['object', false, (() => ({
17
- url: process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'
18
- }))],
15
+ idbroker: [
16
+ 'object',
17
+ false,
18
+ () => ({
19
+ url: process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com',
20
+ }),
21
+ ],
19
22
 
20
23
  /**
21
24
  * The identity base host name
22
25
  * @returns {object}
23
26
  */
24
- identity: ['object', false, (() => ({
25
- url: process.env.IDENTITY_BASE_URL || 'https://identity.webex.com'
26
- }))],
27
+ identity: [
28
+ 'object',
29
+ false,
30
+ () => ({
31
+ url: process.env.IDENTITY_BASE_URL || 'https://identity.webex.com',
32
+ }),
33
+ ],
27
34
 
28
35
  /**
29
- * This is the authorization url displayed on the
30
- * {@link developer portal|https://developer.webex.com}
31
- * @type {string}
32
- */
33
- authorizationString: ['string', false, process.env.WEBEX_AUTHORIZATION_STRING || process.env.AUTHORIZATION_STRING],
36
+ * This is the authorization url displayed on the
37
+ * {@link developer portal|https://developer.webex.com}
38
+ * @type {string}
39
+ */
40
+ authorizationString: [
41
+ 'string',
42
+ false,
43
+ process.env.WEBEX_AUTHORIZATION_STRING || process.env.AUTHORIZATION_STRING,
44
+ ],
34
45
 
35
46
  /**
36
47
  * Authorization URL which prompts for user's password. Inferred from
@@ -43,132 +54,159 @@ const CredentialsConfig = AmpState.extend({
43
54
  'string',
44
55
  false,
45
56
  process.env.WEBEX_AUTHORIZE_URL ||
46
- `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`
57
+ `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`,
47
58
  ],
48
59
 
49
60
  /**
50
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
51
- * @type {string}
52
- */
53
- client_id: ['string', false, process.env.WEBEX_CLIENT_ID || process.env.COMMON_IDENTITY_CLIENT_ID || process.env.CLIENT_ID],
61
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
62
+ * @type {string}
63
+ */
64
+ client_id: [
65
+ 'string',
66
+ false,
67
+ process.env.WEBEX_CLIENT_ID || process.env.COMMON_IDENTITY_CLIENT_ID || process.env.CLIENT_ID,
68
+ ],
54
69
 
55
70
  /**
56
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
57
- * @type {string}
58
- */
59
- client_secret: ['string', false, process.env.WEBEX_CLIENT_SECRET || process.env.COMMON_IDENTITY_CLIENT_SECRET || process.env.CLIENT_SECRET],
71
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
72
+ * @type {string}
73
+ */
74
+ client_secret: [
75
+ 'string',
76
+ false,
77
+ process.env.WEBEX_CLIENT_SECRET ||
78
+ process.env.COMMON_IDENTITY_CLIENT_SECRET ||
79
+ process.env.CLIENT_SECRET,
80
+ ],
60
81
 
61
82
  /**
62
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
63
- * @type {string}
64
- */
65
- redirect_uri: ['string', false, process.env.WEBEX_REDIRECT_URI || process.env.COMMON_IDENTITY_REDIRECT_URI || process.env.REDIRECT_URI],
83
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
84
+ * @type {string}
85
+ */
86
+ redirect_uri: [
87
+ 'string',
88
+ false,
89
+ process.env.WEBEX_REDIRECT_URI ||
90
+ process.env.COMMON_IDENTITY_REDIRECT_URI ||
91
+ process.env.REDIRECT_URI,
92
+ ],
66
93
 
67
94
  /**
68
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
69
- * @type {string}
70
- */
71
- scope: ['string', false, process.env.WEBEX_SCOPE || process.env.WEBEX_SCOPES || process.env.COMMON_IDENTITY_SCOPE || process.env.SCOPE],
95
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
96
+ * @type {string}
97
+ */
98
+ scope: [
99
+ 'string',
100
+ false,
101
+ process.env.WEBEX_SCOPE ||
102
+ process.env.WEBEX_SCOPES ||
103
+ process.env.COMMON_IDENTITY_SCOPE ||
104
+ process.env.SCOPE,
105
+ ],
72
106
 
73
107
  /**
74
- * Controls the UI of the CI login page.
75
- * @private
76
- * @type {string}
77
- */
78
- cisService: ['string', false, 'webex']
108
+ * Controls the UI of the CI login page.
109
+ * @private
110
+ * @type {string}
111
+ */
112
+ cisService: ['string', false, 'webex'],
79
113
  },
80
114
 
81
115
  derived: {
82
116
  /**
83
- * User activation URL
84
- * {@link config.credentials.activationUrl}
85
- * @type {string}
86
- */
117
+ * User activation URL
118
+ * {@link config.credentials.activationUrl}
119
+ * @type {string}
120
+ */
87
121
  activationUrl: {
88
122
  deps: ['idbroker.url'],
89
123
  fn() {
90
- return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserActivation/invoke`;
124
+ return `${
125
+ this.idbroker.url || 'https://idbroker.webex.com'
126
+ }/idb/token/v1/actions/UserActivation/invoke`;
91
127
  },
92
- cache: false
128
+ cache: false,
93
129
  },
94
130
 
95
131
  /**
96
- * Generate OTP URL
97
- * {@link config.credentials.generateOtpUrl}
98
- * @type {string}
99
- */
132
+ * Generate OTP URL
133
+ * {@link config.credentials.generateOtpUrl}
134
+ * @type {string}
135
+ */
100
136
  generateOtpUrl: {
101
137
  deps: ['idbroker.url'],
102
138
  fn() {
103
- return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserOTP/Generate/invoke`;
139
+ return `${
140
+ this.idbroker.url || 'https://idbroker.webex.com'
141
+ }/idb/token/v1/actions/UserOTP/Generate/invoke`;
104
142
  },
105
- cache: false
143
+ cache: false,
106
144
  },
107
145
 
108
146
  /**
109
- * Validate OTP URL
110
- * {@link config.credentials.validateOtpUrl}
111
- * @type {string}
112
- */
147
+ * Validate OTP URL
148
+ * {@link config.credentials.validateOtpUrl}
149
+ * @type {string}
150
+ */
113
151
  validateOtpUrl: {
114
152
  deps: ['idbroker.url'],
115
153
  fn() {
116
- return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserOTP/Validate/invoke`;
154
+ return `${
155
+ this.idbroker.url || 'https://idbroker.webex.com'
156
+ }/idb/token/v1/actions/UserOTP/Validate/invoke`;
117
157
  },
118
- cache: false
158
+ cache: false,
119
159
  },
120
160
 
121
161
  // TODO does hydra also have an access_token endpoint?
122
162
  /**
123
- * Token URL used for token refresh and auth code exchange
124
- * @type {string}
125
- */
163
+ * Token URL used for token refresh and auth code exchange
164
+ * @type {string}
165
+ */
126
166
  tokenUrl: {
127
167
  deps: ['idbroker.url'],
128
168
  fn() {
129
169
  return process.env.TOKEN_URL || `${this.idbroker.url}/idb/oauth2/v1/access_token`;
130
170
  },
131
- cache: false
171
+ cache: false,
132
172
  },
133
173
 
134
174
  /**
135
- * URL to revoke token
136
- * @type {string}
137
- */
175
+ * URL to revoke token
176
+ * @type {string}
177
+ */
138
178
  revokeUrl: {
139
179
  deps: ['idbroker.url'],
140
180
  fn() {
141
181
  return process.env.REVOKE_URL || `${this.idbroker.url}/idb/oauth2/v1/revoke`;
142
182
  },
143
- cache: false
183
+ cache: false,
144
184
  },
145
185
 
146
186
  /**
147
- * URL to load when the app logs out
148
- * @type {string}
149
- */
187
+ * URL to load when the app logs out
188
+ * @type {string}
189
+ */
150
190
  logoutUrl: {
151
191
  deps: ['idbroker.url'],
152
192
  fn() {
153
193
  return `${this.idbroker.url}/idb/oauth2/v1/logout`;
154
194
  },
155
- cache: false
195
+ cache: false,
156
196
  },
157
197
 
158
198
  /**
159
- * Set password URL
160
- * @type {string}
161
- */
199
+ * Set password URL
200
+ * @type {string}
201
+ */
162
202
  setPasswordUrl: {
163
203
  deps: ['identity.url'],
164
204
  fn() {
165
205
  return `${this.identity.url || 'https://identity.webex.com'}/identity/scim/v1/Users`;
166
206
  },
167
- cache: false
168
- }
169
-
170
- }
171
-
207
+ cache: false,
208
+ },
209
+ },
172
210
  });
173
211
 
174
212
  export default CredentialsConfig;