@webex/webex-core 3.0.0-beta.14 → 3.0.0-beta.15

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 (142) hide show
  1. package/dist/config.js.map +1 -1
  2. package/dist/credentials-config.js +44 -44
  3. package/dist/credentials-config.js.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/interceptors/auth.js.map +1 -1
  6. package/dist/interceptors/default-options.js.map +1 -1
  7. package/dist/interceptors/embargo.js.map +1 -1
  8. package/dist/interceptors/payload-transformer.js.map +1 -1
  9. package/dist/interceptors/rate-limit.js +4 -4
  10. package/dist/interceptors/rate-limit.js.map +1 -1
  11. package/dist/interceptors/redirect.js.map +1 -1
  12. package/dist/interceptors/request-event.js.map +1 -1
  13. package/dist/interceptors/request-logger.js.map +1 -1
  14. package/dist/interceptors/response-logger.js.map +1 -1
  15. package/dist/interceptors/user-agent.js.map +1 -1
  16. package/dist/interceptors/webex-user-agent.js.map +1 -1
  17. package/dist/lib/batcher.js +1 -1
  18. package/dist/lib/batcher.js.map +1 -1
  19. package/dist/lib/credentials/credentials.js +21 -6
  20. package/dist/lib/credentials/credentials.js.map +1 -1
  21. package/dist/lib/credentials/grant-errors.js.map +1 -1
  22. package/dist/lib/credentials/index.js.map +1 -1
  23. package/dist/lib/credentials/scope.js.map +1 -1
  24. package/dist/lib/credentials/token-collection.js.map +1 -1
  25. package/dist/lib/credentials/token.js +19 -5
  26. package/dist/lib/credentials/token.js.map +1 -1
  27. package/dist/lib/page.js +2 -0
  28. package/dist/lib/page.js.map +1 -1
  29. package/dist/lib/services/constants.js.map +1 -1
  30. package/dist/lib/services/index.js.map +1 -1
  31. package/dist/lib/services/interceptors/server-error.js +2 -2
  32. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  33. package/dist/lib/services/interceptors/service.js +1 -1
  34. package/dist/lib/services/interceptors/service.js.map +1 -1
  35. package/dist/lib/services/metrics.js.map +1 -1
  36. package/dist/lib/services/service-catalog.js.map +1 -1
  37. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  38. package/dist/lib/services/service-host.js +6 -6
  39. package/dist/lib/services/service-host.js.map +1 -1
  40. package/dist/lib/services/service-registry.js.map +1 -1
  41. package/dist/lib/services/service-state.js.map +1 -1
  42. package/dist/lib/services/service-url.js.map +1 -1
  43. package/dist/lib/services/services.js +9 -7
  44. package/dist/lib/services/services.js.map +1 -1
  45. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  46. package/dist/lib/storage/decorators.js.map +1 -1
  47. package/dist/lib/storage/index.js +2 -2
  48. package/dist/lib/storage/index.js.map +1 -1
  49. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  50. package/dist/lib/storage/make-webex-store.js.map +1 -1
  51. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  52. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  53. package/dist/lib/webex-http-error.js.map +1 -1
  54. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  55. package/dist/lib/webex-plugin.js.map +1 -1
  56. package/dist/plugins/logger.js +1 -1
  57. package/dist/plugins/logger.js.map +1 -1
  58. package/dist/webex-core.js +2 -2
  59. package/dist/webex-core.js.map +1 -1
  60. package/dist/webex-internal-core.js.map +1 -1
  61. package/package.json +14 -14
  62. package/src/config.js +9 -11
  63. package/src/credentials-config.js +110 -72
  64. package/src/index.js +4 -14
  65. package/src/interceptors/auth.js +36 -37
  66. package/src/interceptors/default-options.js +0 -1
  67. package/src/interceptors/embargo.js +1 -1
  68. package/src/interceptors/payload-transformer.js +1 -2
  69. package/src/interceptors/rate-limit.js +8 -5
  70. package/src/interceptors/redirect.js +14 -8
  71. package/src/interceptors/request-event.js +4 -8
  72. package/src/interceptors/request-logger.js +8 -5
  73. package/src/interceptors/response-logger.js +11 -8
  74. package/src/interceptors/user-agent.js +1 -2
  75. package/src/interceptors/webex-user-agent.js +3 -9
  76. package/src/lib/batcher.js +70 -69
  77. package/src/lib/credentials/credentials.js +112 -122
  78. package/src/lib/credentials/grant-errors.js +6 -7
  79. package/src/lib/credentials/index.js +1 -4
  80. package/src/lib/credentials/scope.js +1 -4
  81. package/src/lib/credentials/token-collection.js +1 -1
  82. package/src/lib/credentials/token.js +86 -80
  83. package/src/lib/page.js +10 -11
  84. package/src/lib/services/constants.js +3 -13
  85. package/src/lib/services/index.js +2 -2
  86. package/src/lib/services/interceptors/server-error.js +12 -7
  87. package/src/lib/services/interceptors/service.js +6 -5
  88. package/src/lib/services/metrics.js +1 -1
  89. package/src/lib/services/service-catalog.js +110 -100
  90. package/src/lib/services/service-fed-ramp.js +1 -2
  91. package/src/lib/services/service-host.js +10 -17
  92. package/src/lib/services/service-registry.js +69 -96
  93. package/src/lib/services/service-state.js +4 -6
  94. package/src/lib/services/service-url.js +24 -23
  95. package/src/lib/services/services.js +260 -251
  96. package/src/lib/stateless-webex-plugin.js +4 -2
  97. package/src/lib/storage/decorators.js +68 -66
  98. package/src/lib/storage/index.js +4 -6
  99. package/src/lib/storage/make-webex-plugin-store.js +34 -21
  100. package/src/lib/storage/make-webex-store.js +6 -7
  101. package/src/lib/storage/memory-store-adapter.js +3 -3
  102. package/src/lib/webex-core-plugin-mixin.js +10 -7
  103. package/src/lib/webex-http-error.js +7 -8
  104. package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
  105. package/src/lib/webex-plugin.js +41 -34
  106. package/src/plugins/logger.js +8 -3
  107. package/src/webex-core.js +185 -116
  108. package/src/webex-internal-core.js +15 -9
  109. package/test/integration/spec/credentials/credentials.js +26 -30
  110. package/test/integration/spec/credentials/token.js +36 -33
  111. package/test/integration/spec/services/service-catalog.js +177 -156
  112. package/test/integration/spec/services/services.js +313 -304
  113. package/test/integration/spec/webex-core.js +98 -86
  114. package/test/unit/spec/_setup.js +26 -18
  115. package/test/unit/spec/credentials/credentials.js +189 -154
  116. package/test/unit/spec/credentials/token.js +94 -76
  117. package/test/unit/spec/interceptors/auth.js +291 -243
  118. package/test/unit/spec/interceptors/default-options.js +36 -24
  119. package/test/unit/spec/interceptors/embargo.js +32 -27
  120. package/test/unit/spec/interceptors/network-timing.js +2 -2
  121. package/test/unit/spec/interceptors/payload-transformer.js +61 -52
  122. package/test/unit/spec/interceptors/rate-limit.js +104 -75
  123. package/test/unit/spec/interceptors/redirect.js +22 -20
  124. package/test/unit/spec/interceptors/request-timing.js +18 -22
  125. package/test/unit/spec/interceptors/user-agent.js +28 -16
  126. package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
  127. package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
  128. package/test/unit/spec/lib/batcher.js +36 -32
  129. package/test/unit/spec/lib/page.js +36 -32
  130. package/test/unit/spec/lib/webex-plugin.js +1 -1
  131. package/test/unit/spec/services/interceptors/server-error.js +67 -90
  132. package/test/unit/spec/services/interceptors/service.js +17 -28
  133. package/test/unit/spec/services/service-catalog.js +19 -27
  134. package/test/unit/spec/services/service-host.js +29 -26
  135. package/test/unit/spec/services/service-registry.js +128 -170
  136. package/test/unit/spec/services/service-state.js +13 -22
  137. package/test/unit/spec/services/service-url.js +24 -43
  138. package/test/unit/spec/services/services.js +85 -41
  139. package/test/unit/spec/storage/persist.js +6 -9
  140. package/test/unit/spec/storage/wait-for-value.js +22 -21
  141. package/test/unit/spec/webex-core.js +78 -57
  142. package/test/unit/spec/webex-internal-core.js +56 -31
@@ -1 +1 @@
1
- {"version":3,"names":["maxAppLevelRedirects","maxLocusRedirects","maxAuthenticationReplays","maxReconnectAttempts","onBeforeLogout","trackingIdPrefix","trackingIdSuffix","AlternateLogger","undefined","credentials","CredentialsConfig","fedramp","process","env","ENABLE_FEDRAMP","services","discovery","hydra","HYDRA_SERVICE_URL","u2c","U2C_SERVICE_URL","validateDomains","servicesNotNeedValidation","allowedDomains","device","preDiscoveryServices","hydraServiceUrl","metrics","type","payloadTransformer","predicates","transforms","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {MemoryStoreAdapter} from './lib/storage';\nimport CredentialsConfig from './credentials-config';\n\nexport default {\n maxAppLevelRedirects: 10,\n maxLocusRedirects: 5,\n maxAuthenticationReplays: 1,\n maxReconnectAttempts: 1,\n onBeforeLogout: [],\n trackingIdPrefix: 'webex-js-sdk',\n trackingIdSuffix: '',\n AlternateLogger: undefined,\n credentials: new CredentialsConfig(),\n fedramp: process.env.ENABLE_FEDRAMP || false,\n services: {\n /**\n * A list of services that are available prior to catalog collection.\n *\n * @type {Object}\n */\n discovery: {\n /**\n * The hydra discovery url.\n *\n * @type {string}\n */\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n\n /**\n * The u2c discovery url\n *\n * @type {string}\n */\n u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1'\n },\n\n /**\n * When true, considers all urls in `allowedDomains` as safe for auth tokens\n *\n * @type {boolean}\n */\n validateDomains: true,\n\n /**\n * services that don't need auth validation\n */\n\n servicesNotNeedValidation: [\n 'webex-appapi-service'\n ],\n\n /**\n * Contains a list of allowed domain host addresses.\n *\n * @type {Array<string>}\n */\n allowedDomains: [\n 'wbx2.com',\n 'ciscospark.com',\n 'webex.com',\n 'webexapis.com',\n 'broadcloudpbx.com',\n 'broadcloud.eu',\n 'broadcloud.com.au',\n 'broadcloudpbx.net'\n ]\n },\n device: {\n preDiscoveryServices: {\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1'\n },\n validateDomains: true,\n },\n metrics: {\n type: ['behavioral', 'operational']\n },\n payloadTransformer: {\n predicates: [],\n transforms: []\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter\n }\n};\n"],"mappings":";;;;;;;;;;;;AAMA;;AACA;;AAPA;AACA;AACA;;AAEA;eAKe;EACbA,oBAAoB,EAAE,EADT;EAEbC,iBAAiB,EAAE,CAFN;EAGbC,wBAAwB,EAAE,CAHb;EAIbC,oBAAoB,EAAE,CAJT;EAKbC,cAAc,EAAE,EALH;EAMbC,gBAAgB,EAAE,cANL;EAObC,gBAAgB,EAAE,EAPL;EAQbC,eAAe,EAAEC,SARJ;EASbC,WAAW,EAAE,IAAIC,0BAAJ,EATA;EAUbC,OAAO,EAAEC,OAAO,CAACC,GAAR,CAAYC,cAAZ,IAA8B,KAV1B;EAWbC,QAAQ,EAAE;IACR;AACJ;AACA;AACA;AACA;IACIC,SAAS,EAAE;MACT;AACN;AACA;AACA;AACA;MACMC,KAAK,EAAEL,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC,+BAN/B;;MAQT;AACN;AACA;AACA;AACA;MACMC,GAAG,EAAEP,OAAO,CAACC,GAAR,CAAYO,eAAZ,IAA+B;IAb3B,CANH;;IAsBR;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAE,IA3BT;;IA6BR;AACJ;AACA;IAEIC,yBAAyB,EAAE,CACzB,sBADyB,CAjCnB;;IAqCR;AACJ;AACA;AACA;AACA;IACIC,cAAc,EAAE,CACd,UADc,EAEd,gBAFc,EAGd,WAHc,EAId,eAJc,EAKd,mBALc,EAMd,eANc,EAOd,mBAPc,EAQd,mBARc;EA1CR,CAXG;EAgEbC,MAAM,EAAE;IACNC,oBAAoB,EAAE;MACpBR,KAAK,EAAEL,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC,+BADpB;MAEpBQ,eAAe,EAAEd,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC;IAF9B,CADhB;IAKNG,eAAe,EAAE;EALX,CAhEK;EAuEbM,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC,YAAD,EAAe,aAAf;EADC,CAvEI;EA0EbC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,EADM;IAElBC,UAAU,EAAE;EAFM,CA1EP;EA8EbC,OAAO,EAAE;IACPC,cAAc,EAAEC,2BADT;IAEPC,gBAAgB,EAAED;EAFX;AA9EI,C"}
1
+ {"version":3,"names":["maxAppLevelRedirects","maxLocusRedirects","maxAuthenticationReplays","maxReconnectAttempts","onBeforeLogout","trackingIdPrefix","trackingIdSuffix","AlternateLogger","undefined","credentials","CredentialsConfig","fedramp","process","env","ENABLE_FEDRAMP","services","discovery","hydra","HYDRA_SERVICE_URL","u2c","U2C_SERVICE_URL","validateDomains","servicesNotNeedValidation","allowedDomains","device","preDiscoveryServices","hydraServiceUrl","metrics","type","payloadTransformer","predicates","transforms","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {MemoryStoreAdapter} from './lib/storage';\nimport CredentialsConfig from './credentials-config';\n\nexport default {\n maxAppLevelRedirects: 10,\n maxLocusRedirects: 5,\n maxAuthenticationReplays: 1,\n maxReconnectAttempts: 1,\n onBeforeLogout: [],\n trackingIdPrefix: 'webex-js-sdk',\n trackingIdSuffix: '',\n AlternateLogger: undefined,\n credentials: new CredentialsConfig(),\n fedramp: process.env.ENABLE_FEDRAMP || false,\n services: {\n /**\n * A list of services that are available prior to catalog collection.\n *\n * @type {Object}\n */\n discovery: {\n /**\n * The hydra discovery url.\n *\n * @type {string}\n */\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n\n /**\n * The u2c discovery url\n *\n * @type {string}\n */\n u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1',\n },\n\n /**\n * When true, considers all urls in `allowedDomains` as safe for auth tokens\n *\n * @type {boolean}\n */\n validateDomains: true,\n\n /**\n * services that don't need auth validation\n */\n\n servicesNotNeedValidation: ['webex-appapi-service'],\n\n /**\n * Contains a list of allowed domain host addresses.\n *\n * @type {Array<string>}\n */\n allowedDomains: [\n 'wbx2.com',\n 'ciscospark.com',\n 'webex.com',\n 'webexapis.com',\n 'broadcloudpbx.com',\n 'broadcloud.eu',\n 'broadcloud.com.au',\n 'broadcloudpbx.net',\n ],\n },\n device: {\n preDiscoveryServices: {\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n },\n validateDomains: true,\n },\n metrics: {\n type: ['behavioral', 'operational'],\n },\n payloadTransformer: {\n predicates: [],\n transforms: [],\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter,\n },\n};\n"],"mappings":";;;;;;;;;;;;AAMA;;AACA;;AAPA;AACA;AACA;;AAEA;eAKe;EACbA,oBAAoB,EAAE,EADT;EAEbC,iBAAiB,EAAE,CAFN;EAGbC,wBAAwB,EAAE,CAHb;EAIbC,oBAAoB,EAAE,CAJT;EAKbC,cAAc,EAAE,EALH;EAMbC,gBAAgB,EAAE,cANL;EAObC,gBAAgB,EAAE,EAPL;EAQbC,eAAe,EAAEC,SARJ;EASbC,WAAW,EAAE,IAAIC,0BAAJ,EATA;EAUbC,OAAO,EAAEC,OAAO,CAACC,GAAR,CAAYC,cAAZ,IAA8B,KAV1B;EAWbC,QAAQ,EAAE;IACR;AACJ;AACA;AACA;AACA;IACIC,SAAS,EAAE;MACT;AACN;AACA;AACA;AACA;MACMC,KAAK,EAAEL,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC,+BAN/B;;MAQT;AACN;AACA;AACA;AACA;MACMC,GAAG,EAAEP,OAAO,CAACC,GAAR,CAAYO,eAAZ,IAA+B;IAb3B,CANH;;IAsBR;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAE,IA3BT;;IA6BR;AACJ;AACA;IAEIC,yBAAyB,EAAE,CAAC,sBAAD,CAjCnB;;IAmCR;AACJ;AACA;AACA;AACA;IACIC,cAAc,EAAE,CACd,UADc,EAEd,gBAFc,EAGd,WAHc,EAId,eAJc,EAKd,mBALc,EAMd,eANc,EAOd,mBAPc,EAQd,mBARc;EAxCR,CAXG;EA8DbC,MAAM,EAAE;IACNC,oBAAoB,EAAE;MACpBR,KAAK,EAAEL,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC,+BADpB;MAEpBQ,eAAe,EAAEd,OAAO,CAACC,GAAR,CAAYK,iBAAZ,IAAiC;IAF9B,CADhB;IAKNG,eAAe,EAAE;EALX,CA9DK;EAqEbM,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC,YAAD,EAAe,aAAf;EADC,CArEI;EAwEbC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,EADM;IAElBC,UAAU,EAAE;EAFM,CAxEP;EA4EbC,OAAO,EAAE;IACPC,cAAc,EAAEC,2BADT;IAEPC,gBAAgB,EAAED;EAFX;AA5EI,C"}
@@ -40,10 +40,10 @@ var CredentialsConfig = _ampersandState.default.extend({
40
40
  }],
41
41
 
42
42
  /**
43
- * This is the authorization url displayed on the
44
- * {@link developer portal|https://developer.webex.com}
45
- * @type {string}
46
- */
43
+ * This is the authorization url displayed on the
44
+ * {@link developer portal|https://developer.webex.com}
45
+ * @type {string}
46
+ */
47
47
  authorizationString: ['string', false, process.env.WEBEX_AUTHORIZATION_STRING || process.env.AUTHORIZATION_STRING],
48
48
 
49
49
  /**
@@ -56,42 +56,42 @@ var CredentialsConfig = _ampersandState.default.extend({
56
56
  authorizeUrl: ['string', false, process.env.WEBEX_AUTHORIZE_URL || "".concat(process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com', "/idb/oauth2/v1/authorize")],
57
57
 
58
58
  /**
59
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
60
- * @type {string}
61
- */
59
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
60
+ * @type {string}
61
+ */
62
62
  client_id: ['string', false, process.env.WEBEX_CLIENT_ID || process.env.COMMON_IDENTITY_CLIENT_ID || process.env.CLIENT_ID],
63
63
 
64
64
  /**
65
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
66
- * @type {string}
67
- */
65
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
66
+ * @type {string}
67
+ */
68
68
  client_secret: ['string', false, process.env.WEBEX_CLIENT_SECRET || process.env.COMMON_IDENTITY_CLIENT_SECRET || process.env.CLIENT_SECRET],
69
69
 
70
70
  /**
71
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
72
- * @type {string}
73
- */
71
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
72
+ * @type {string}
73
+ */
74
74
  redirect_uri: ['string', false, process.env.WEBEX_REDIRECT_URI || process.env.COMMON_IDENTITY_REDIRECT_URI || process.env.REDIRECT_URI],
75
75
 
76
76
  /**
77
- * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
78
- * @type {string}
79
- */
77
+ * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}
78
+ * @type {string}
79
+ */
80
80
  scope: ['string', false, process.env.WEBEX_SCOPE || process.env.WEBEX_SCOPES || process.env.COMMON_IDENTITY_SCOPE || process.env.SCOPE],
81
81
 
82
82
  /**
83
- * Controls the UI of the CI login page.
84
- * @private
85
- * @type {string}
86
- */
83
+ * Controls the UI of the CI login page.
84
+ * @private
85
+ * @type {string}
86
+ */
87
87
  cisService: ['string', false, 'webex']
88
88
  },
89
89
  derived: {
90
90
  /**
91
- * User activation URL
92
- * {@link config.credentials.activationUrl}
93
- * @type {string}
94
- */
91
+ * User activation URL
92
+ * {@link config.credentials.activationUrl}
93
+ * @type {string}
94
+ */
95
95
  activationUrl: {
96
96
  deps: ['idbroker.url'],
97
97
  fn: function fn() {
@@ -101,10 +101,10 @@ var CredentialsConfig = _ampersandState.default.extend({
101
101
  },
102
102
 
103
103
  /**
104
- * Generate OTP URL
105
- * {@link config.credentials.generateOtpUrl}
106
- * @type {string}
107
- */
104
+ * Generate OTP URL
105
+ * {@link config.credentials.generateOtpUrl}
106
+ * @type {string}
107
+ */
108
108
  generateOtpUrl: {
109
109
  deps: ['idbroker.url'],
110
110
  fn: function fn() {
@@ -114,10 +114,10 @@ var CredentialsConfig = _ampersandState.default.extend({
114
114
  },
115
115
 
116
116
  /**
117
- * Validate OTP URL
118
- * {@link config.credentials.validateOtpUrl}
119
- * @type {string}
120
- */
117
+ * Validate OTP URL
118
+ * {@link config.credentials.validateOtpUrl}
119
+ * @type {string}
120
+ */
121
121
  validateOtpUrl: {
122
122
  deps: ['idbroker.url'],
123
123
  fn: function fn() {
@@ -128,9 +128,9 @@ var CredentialsConfig = _ampersandState.default.extend({
128
128
  // TODO does hydra also have an access_token endpoint?
129
129
 
130
130
  /**
131
- * Token URL used for token refresh and auth code exchange
132
- * @type {string}
133
- */
131
+ * Token URL used for token refresh and auth code exchange
132
+ * @type {string}
133
+ */
134
134
  tokenUrl: {
135
135
  deps: ['idbroker.url'],
136
136
  fn: function fn() {
@@ -140,9 +140,9 @@ var CredentialsConfig = _ampersandState.default.extend({
140
140
  },
141
141
 
142
142
  /**
143
- * URL to revoke token
144
- * @type {string}
145
- */
143
+ * URL to revoke token
144
+ * @type {string}
145
+ */
146
146
  revokeUrl: {
147
147
  deps: ['idbroker.url'],
148
148
  fn: function fn() {
@@ -152,9 +152,9 @@ var CredentialsConfig = _ampersandState.default.extend({
152
152
  },
153
153
 
154
154
  /**
155
- * URL to load when the app logs out
156
- * @type {string}
157
- */
155
+ * URL to load when the app logs out
156
+ * @type {string}
157
+ */
158
158
  logoutUrl: {
159
159
  deps: ['idbroker.url'],
160
160
  fn: function fn() {
@@ -164,9 +164,9 @@ var CredentialsConfig = _ampersandState.default.extend({
164
164
  },
165
165
 
166
166
  /**
167
- * Set password URL
168
- * @type {string}
169
- */
167
+ * Set password URL
168
+ * @type {string}
169
+ */
170
170
  setPasswordUrl: {
171
171
  deps: ['identity.url'],
172
172
  fn: function fn() {
@@ -1 +1 @@
1
- {"version":3,"names":["CredentialsConfig","AmpState","extend","extraProperties","props","idbroker","url","process","env","IDBROKER_BASE_URL","identity","IDENTITY_BASE_URL","authorizationString","WEBEX_AUTHORIZATION_STRING","AUTHORIZATION_STRING","authorizeUrl","WEBEX_AUTHORIZE_URL","client_id","WEBEX_CLIENT_ID","COMMON_IDENTITY_CLIENT_ID","CLIENT_ID","client_secret","WEBEX_CLIENT_SECRET","COMMON_IDENTITY_CLIENT_SECRET","CLIENT_SECRET","redirect_uri","WEBEX_REDIRECT_URI","COMMON_IDENTITY_REDIRECT_URI","REDIRECT_URI","scope","WEBEX_SCOPE","WEBEX_SCOPES","COMMON_IDENTITY_SCOPE","SCOPE","cisService","derived","activationUrl","deps","fn","cache","generateOtpUrl","validateOtpUrl","tokenUrl","TOKEN_URL","revokeUrl","REVOKE_URL","logoutUrl","setPasswordUrl"],"sources":["credentials-config.js"],"sourcesContent":["import AmpState from 'ampersand-state';\n\n// The credentials config which includes the CI server info and derived\n// URL properties from them for the various CI services. The URL's\n// will be updated when the CI changes.\nconst CredentialsConfig = AmpState.extend({\n\n // we need to allow extra props for dynamic props like jwtRefreshCallback\n extraProperties: 'allow',\n\n props: {\n /**\n * The idbroker base host name\n * @returns {object}\n */\n idbroker: ['object', false, (() => ({\n url: process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'\n }))],\n\n /**\n * The identity base host name\n * @returns {object}\n */\n identity: ['object', false, (() => ({\n url: process.env.IDENTITY_BASE_URL || 'https://identity.webex.com'\n }))],\n\n /**\n * This is the authorization url displayed on the\n * {@link developer portal|https://developer.webex.com}\n * @type {string}\n */\n authorizationString: ['string', false, process.env.WEBEX_AUTHORIZATION_STRING || process.env.AUTHORIZATION_STRING],\n\n /**\n * Authorization URL which prompts for user's password. Inferred from\n * {@link config.credentials.authorizationString}. This config value will\n * be automatically set if `authorizationString` config value is specified.\n *\n * @type {string}\n */\n authorizeUrl: [\n 'string',\n false,\n process.env.WEBEX_AUTHORIZE_URL ||\n `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`\n ],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n client_id: ['string', false, process.env.WEBEX_CLIENT_ID || process.env.COMMON_IDENTITY_CLIENT_ID || process.env.CLIENT_ID],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n client_secret: ['string', false, process.env.WEBEX_CLIENT_SECRET || process.env.COMMON_IDENTITY_CLIENT_SECRET || process.env.CLIENT_SECRET],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n redirect_uri: ['string', false, process.env.WEBEX_REDIRECT_URI || process.env.COMMON_IDENTITY_REDIRECT_URI || process.env.REDIRECT_URI],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n scope: ['string', false, process.env.WEBEX_SCOPE || process.env.WEBEX_SCOPES || process.env.COMMON_IDENTITY_SCOPE || process.env.SCOPE],\n\n /**\n * Controls the UI of the CI login page.\n * @private\n * @type {string}\n */\n cisService: ['string', false, 'webex']\n },\n\n derived: {\n /**\n * User activation URL\n * {@link config.credentials.activationUrl}\n * @type {string}\n */\n activationUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserActivation/invoke`;\n },\n cache: false\n },\n\n /**\n * Generate OTP URL\n * {@link config.credentials.generateOtpUrl}\n * @type {string}\n */\n generateOtpUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserOTP/Generate/invoke`;\n },\n cache: false\n },\n\n /**\n * Validate OTP URL\n * {@link config.credentials.validateOtpUrl}\n * @type {string}\n */\n validateOtpUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${this.idbroker.url || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserOTP/Validate/invoke`;\n },\n cache: false\n },\n\n // TODO does hydra also have an access_token endpoint?\n /**\n * Token URL used for token refresh and auth code exchange\n * @type {string}\n */\n tokenUrl: {\n deps: ['idbroker.url'],\n fn() {\n return process.env.TOKEN_URL || `${this.idbroker.url}/idb/oauth2/v1/access_token`;\n },\n cache: false\n },\n\n /**\n * URL to revoke token\n * @type {string}\n */\n revokeUrl: {\n deps: ['idbroker.url'],\n fn() {\n return process.env.REVOKE_URL || `${this.idbroker.url}/idb/oauth2/v1/revoke`;\n },\n cache: false\n },\n\n /**\n * URL to load when the app logs out\n * @type {string}\n */\n logoutUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${this.idbroker.url}/idb/oauth2/v1/logout`;\n },\n cache: false\n },\n\n /**\n * Set password URL\n * @type {string}\n */\n setPasswordUrl: {\n deps: ['identity.url'],\n fn() {\n return `${this.identity.url || 'https://identity.webex.com'}/identity/scim/v1/Users`;\n },\n cache: false\n }\n\n }\n\n});\n\nexport default CredentialsConfig;\n"],"mappings":"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"}
1
+ {"version":3,"names":["CredentialsConfig","AmpState","extend","extraProperties","props","idbroker","url","process","env","IDBROKER_BASE_URL","identity","IDENTITY_BASE_URL","authorizationString","WEBEX_AUTHORIZATION_STRING","AUTHORIZATION_STRING","authorizeUrl","WEBEX_AUTHORIZE_URL","client_id","WEBEX_CLIENT_ID","COMMON_IDENTITY_CLIENT_ID","CLIENT_ID","client_secret","WEBEX_CLIENT_SECRET","COMMON_IDENTITY_CLIENT_SECRET","CLIENT_SECRET","redirect_uri","WEBEX_REDIRECT_URI","COMMON_IDENTITY_REDIRECT_URI","REDIRECT_URI","scope","WEBEX_SCOPE","WEBEX_SCOPES","COMMON_IDENTITY_SCOPE","SCOPE","cisService","derived","activationUrl","deps","fn","cache","generateOtpUrl","validateOtpUrl","tokenUrl","TOKEN_URL","revokeUrl","REVOKE_URL","logoutUrl","setPasswordUrl"],"sources":["credentials-config.js"],"sourcesContent":["import AmpState from 'ampersand-state';\n\n// The credentials config which includes the CI server info and derived\n// URL properties from them for the various CI services. The URL's\n// will be updated when the CI changes.\nconst CredentialsConfig = AmpState.extend({\n // we need to allow extra props for dynamic props like jwtRefreshCallback\n extraProperties: 'allow',\n\n props: {\n /**\n * The idbroker base host name\n * @returns {object}\n */\n idbroker: [\n 'object',\n false,\n () => ({\n url: process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com',\n }),\n ],\n\n /**\n * The identity base host name\n * @returns {object}\n */\n identity: [\n 'object',\n false,\n () => ({\n url: process.env.IDENTITY_BASE_URL || 'https://identity.webex.com',\n }),\n ],\n\n /**\n * This is the authorization url displayed on the\n * {@link developer portal|https://developer.webex.com}\n * @type {string}\n */\n authorizationString: [\n 'string',\n false,\n process.env.WEBEX_AUTHORIZATION_STRING || process.env.AUTHORIZATION_STRING,\n ],\n\n /**\n * Authorization URL which prompts for user's password. Inferred from\n * {@link config.credentials.authorizationString}. This config value will\n * be automatically set if `authorizationString` config value is specified.\n *\n * @type {string}\n */\n authorizeUrl: [\n 'string',\n false,\n process.env.WEBEX_AUTHORIZE_URL ||\n `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`,\n ],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n client_id: [\n 'string',\n false,\n process.env.WEBEX_CLIENT_ID || process.env.COMMON_IDENTITY_CLIENT_ID || process.env.CLIENT_ID,\n ],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n client_secret: [\n 'string',\n false,\n process.env.WEBEX_CLIENT_SECRET ||\n process.env.COMMON_IDENTITY_CLIENT_SECRET ||\n process.env.CLIENT_SECRET,\n ],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n redirect_uri: [\n 'string',\n false,\n process.env.WEBEX_REDIRECT_URI ||\n process.env.COMMON_IDENTITY_REDIRECT_URI ||\n process.env.REDIRECT_URI,\n ],\n\n /**\n * {@see https://tools.ietf.org/html/rfc6749#section-4.1.4}\n * @type {string}\n */\n scope: [\n 'string',\n false,\n process.env.WEBEX_SCOPE ||\n process.env.WEBEX_SCOPES ||\n process.env.COMMON_IDENTITY_SCOPE ||\n process.env.SCOPE,\n ],\n\n /**\n * Controls the UI of the CI login page.\n * @private\n * @type {string}\n */\n cisService: ['string', false, 'webex'],\n },\n\n derived: {\n /**\n * User activation URL\n * {@link config.credentials.activationUrl}\n * @type {string}\n */\n activationUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${\n this.idbroker.url || 'https://idbroker.webex.com'\n }/idb/token/v1/actions/UserActivation/invoke`;\n },\n cache: false,\n },\n\n /**\n * Generate OTP URL\n * {@link config.credentials.generateOtpUrl}\n * @type {string}\n */\n generateOtpUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${\n this.idbroker.url || 'https://idbroker.webex.com'\n }/idb/token/v1/actions/UserOTP/Generate/invoke`;\n },\n cache: false,\n },\n\n /**\n * Validate OTP URL\n * {@link config.credentials.validateOtpUrl}\n * @type {string}\n */\n validateOtpUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${\n this.idbroker.url || 'https://idbroker.webex.com'\n }/idb/token/v1/actions/UserOTP/Validate/invoke`;\n },\n cache: false,\n },\n\n // TODO does hydra also have an access_token endpoint?\n /**\n * Token URL used for token refresh and auth code exchange\n * @type {string}\n */\n tokenUrl: {\n deps: ['idbroker.url'],\n fn() {\n return process.env.TOKEN_URL || `${this.idbroker.url}/idb/oauth2/v1/access_token`;\n },\n cache: false,\n },\n\n /**\n * URL to revoke token\n * @type {string}\n */\n revokeUrl: {\n deps: ['idbroker.url'],\n fn() {\n return process.env.REVOKE_URL || `${this.idbroker.url}/idb/oauth2/v1/revoke`;\n },\n cache: false,\n },\n\n /**\n * URL to load when the app logs out\n * @type {string}\n */\n logoutUrl: {\n deps: ['idbroker.url'],\n fn() {\n return `${this.idbroker.url}/idb/oauth2/v1/logout`;\n },\n cache: false,\n },\n\n /**\n * Set password URL\n * @type {string}\n */\n setPasswordUrl: {\n deps: ['identity.url'],\n fn() {\n return `${this.identity.url || 'https://identity.webex.com'}/identity/scim/v1/Users`;\n },\n cache: false,\n },\n },\n});\n\nexport default CredentialsConfig;\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n *\n * Services is currently a part of webex-core due to how the contents of\n * the original internal-plugin-services needed to be accessed when webex-core\n * is initialized. As a plugin outside of webex-core, it would initialize after\n * credentials, causing all requests prior to its initialization to fail\n * federation requirements, and instead send requests to the environmentally-\n * assigned urls.\n */\n\nimport './plugins/logger';\nimport './lib/credentials';\nimport './lib/services';\n\nexport {\n Credentials,\n filterScope,\n grantErrors,\n sortScope,\n Token\n} from './lib/credentials';\n\nexport {\n constants as serviceConstants,\n ServiceCatalog,\n ServiceRegistry,\n ServiceState,\n ServiceInterceptor,\n ServerErrorInterceptor,\n Services,\n ServiceHost,\n ServiceUrl\n} from './lib/services';\n\nexport {\n makeWebexStore,\n makeWebexPluginStore,\n MemoryStoreAdapter,\n NotFoundError,\n persist,\n StorageError,\n waitForValue\n} from './lib/storage';\n\nexport {\n default,\n registerPlugin,\n registerInternalPlugin\n} from './webex-core';\n\nexport {default as WebexHttpError} from './lib/webex-http-error';\nexport {default as StatelessWebexPlugin} from './lib/stateless-webex-plugin';\nexport {default as WebexPlugin} from './lib/webex-plugin';\nexport {default as AuthInterceptor} from './interceptors/auth';\nexport {default as NetworkTimingInterceptor} from './interceptors/network-timing';\nexport {default as PayloadTransformerInterceptor} from './interceptors/payload-transformer';\nexport {default as RedirectInterceptor} from './interceptors/redirect';\nexport {default as ResponseLoggerInterceptor} from './interceptors/response-logger';\nexport {default as RequestEventInterceptor} from './interceptors/request-event';\nexport {default as RequestLoggerInterceptor} from './interceptors/request-logger';\nexport {default as RequestTimingInterceptor} from './interceptors/request-timing';\nexport {default as UserAgentInterceptor} from './interceptors/user-agent';\nexport {default as WebexTrackingIdInterceptor} from './interceptors/webex-tracking-id';\nexport {default as WebexUserAgentInterceptor} from './interceptors/webex-user-agent';\nexport {default as RateLimitInterceptor} from './interceptors/rate-limit';\nexport {default as EmbargoInterceptor} from './interceptors/embargo';\nexport {default as DefaultOptionsInterceptor} from './interceptors/default-options';\n\nexport {default as Batcher} from './lib/batcher';\nexport {default as Page} from './lib/page';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;AACA;;AACA;;AAsBA;;AAUA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n *\n * Services is currently a part of webex-core due to how the contents of\n * the original internal-plugin-services needed to be accessed when webex-core\n * is initialized. As a plugin outside of webex-core, it would initialize after\n * credentials, causing all requests prior to its initialization to fail\n * federation requirements, and instead send requests to the environmentally-\n * assigned urls.\n */\n\nimport './plugins/logger';\nimport './lib/credentials';\nimport './lib/services';\n\nexport {Credentials, filterScope, grantErrors, sortScope, Token} from './lib/credentials';\n\nexport {\n constants as serviceConstants,\n ServiceCatalog,\n ServiceRegistry,\n ServiceState,\n ServiceInterceptor,\n ServerErrorInterceptor,\n Services,\n ServiceHost,\n ServiceUrl,\n} from './lib/services';\n\nexport {\n makeWebexStore,\n makeWebexPluginStore,\n MemoryStoreAdapter,\n NotFoundError,\n persist,\n StorageError,\n waitForValue,\n} from './lib/storage';\n\nexport {default, registerPlugin, registerInternalPlugin} from './webex-core';\n\nexport {default as WebexHttpError} from './lib/webex-http-error';\nexport {default as StatelessWebexPlugin} from './lib/stateless-webex-plugin';\nexport {default as WebexPlugin} from './lib/webex-plugin';\nexport {default as AuthInterceptor} from './interceptors/auth';\nexport {default as NetworkTimingInterceptor} from './interceptors/network-timing';\nexport {default as PayloadTransformerInterceptor} from './interceptors/payload-transformer';\nexport {default as RedirectInterceptor} from './interceptors/redirect';\nexport {default as ResponseLoggerInterceptor} from './interceptors/response-logger';\nexport {default as RequestEventInterceptor} from './interceptors/request-event';\nexport {default as RequestLoggerInterceptor} from './interceptors/request-logger';\nexport {default as RequestTimingInterceptor} from './interceptors/request-timing';\nexport {default as UserAgentInterceptor} from './interceptors/user-agent';\nexport {default as WebexTrackingIdInterceptor} from './interceptors/webex-tracking-id';\nexport {default as WebexUserAgentInterceptor} from './interceptors/webex-user-agent';\nexport {default as RateLimitInterceptor} from './interceptors/rate-limit';\nexport {default as EmbargoInterceptor} from './interceptors/embargo';\nexport {default as DefaultOptionsInterceptor} from './interceptors/default-options';\n\nexport {default as Batcher} from './lib/batcher';\nexport {default as Page} from './lib/page';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;AACA;;AACA;;AAgBA;;AAUA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA"}
@@ -1 +1 @@
1
- {"version":3,"names":["AuthInterceptor","options","headers","authorization","resolve","requiresCredentials","then","requires","webex","credentials","getUserToken","token","toString","addAuthHeader","internal","services","details","getServiceFromUrl","uri","name","resource","service","api","includes","validateDomains","hasAllowedDomains","isAllowedDomainUrl","waitForService","url","detectedUrl","catch","error","logger","warn","reason","shouldAttemptReauth","info","canRefresh","refresh","replay","reject","replayCount","config","maxAuthenticationReplays","Error","request","shouldRefreshAccessToken","statusCode","Interceptor"],"sources":["auth.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class AuthInterceptor extends Interceptor {\n /**\n * @returns {AuthInterceptor}\n */\n static create() {\n return new AuthInterceptor({webex: this});\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n\n // If Authorizations is already set, don't overwrite it\n if ('authorization' in options.headers || 'auth' in options) {\n // If Authorization is set to null, false, or undefined, delete it to\n // prevent a CORS preflight.\n if (!options.headers.authorization) {\n Reflect.deleteProperty(options.headers, 'authorization');\n }\n\n return Promise.resolve(options);\n }\n\n return this.requiresCredentials(options)\n .then((requires) => {\n if (!requires) {\n return options;\n }\n\n return this.webex.credentials.getUserToken()\n .then((token) => {\n options.headers.authorization = token.toString();\n\n return options;\n });\n });\n }\n\n /**\n * Determines if the provided options object needs an authorization header.\n *\n * @param {Object} options\n * @returns {Promise<boolean>}\n */\n requiresCredentials(options) {\n // Validate that authorization is necessary.\n if (options.addAuthHeader === false) {\n return Promise.resolve(false);\n }\n\n // Validate that the services plugin has been loaded before proceeding.\n if (!this.webex.internal.services) {\n return Promise.resolve(false);\n }\n\n // Destructure webex instance to isolate services plugin.\n const {services} = this.webex.internal;\n\n // Store the current service details if available and destructure details.\n const details = services.getServiceFromUrl(options.uri || '');\n const {name} = details || {};\n const {resource, uri} = options;\n const service = options.service || options.api;\n\n // Unique validation for the u2c service.\n if ((service && service === 'u2c') || (name && name === 'u2c')) {\n if (\n (resource && resource.includes('limited')) ||\n (uri && uri.includes('limited'))\n ) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n }\n\n\n // Validate that the allowed domains can be utilized.\n if (services.validateDomains &&\n services.hasAllowedDomains() &&\n (uri && services.isAllowedDomainUrl(uri))) {\n return Promise.resolve(true);\n }\n\n // Perform an additional validation in case the service does not exist yet.\n return services.waitForService({name: service, url: uri})\n .then((detectedUrl) => {\n // Validate that the url exists in the catalog.\n if (services.getServiceFromUrl(detectedUrl)) {\n return true;\n }\n\n // Return false to indicate authentication is not required.\n return false;\n })\n .catch((error) => {\n this.webex.logger.warn(\n 'auth-interceptor: failed to validate service exists in catalog',\n error\n );\n\n return false;\n });\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n return this.shouldAttemptReauth(reason, options)\n .then((shouldAttemptReauth) => {\n if (shouldAttemptReauth) {\n this.webex.logger.info('auth: received 401, attempting to reauthenticate');\n\n if (reason.options.headers) {\n Reflect.deleteProperty(reason.options.headers, 'authorization');\n }\n\n if (this.webex.credentials.canRefresh) {\n return this.webex.credentials.refresh()\n .then(() => this.replay(options));\n }\n }\n\n return Promise.reject(reason);\n });\n }\n\n /**\n * Replays the request\n * @param {Object} options\n * @returns {Object}\n */\n replay(options) {\n if (options.replayCount) {\n options.replayCount += 1;\n }\n else {\n options.replayCount = 1;\n }\n\n if (options.replayCount > this.webex.config.maxAuthenticationReplays) {\n this.webex.logger.error(`auth: failed after ${this.webex.config.maxAuthenticationReplays} replay attempts`);\n\n return Promise.reject(new Error(`Failed after ${this.webex.config.maxAuthenticationReplays} replay attempts`));\n }\n\n this.webex.logger.info(`auth: replaying request ${options.replayCount} time`);\n\n return this.webex.request(options);\n }\n\n /**\n * Indicates whether or not the current request should refresh its access\n * token in event of a 401\n * @param {Error} reason\n * @param {Object} options\n * @returns {Promise<boolean>}\n */\n shouldAttemptReauth(reason, options) {\n if (options && options.shouldRefreshAccessToken === false) {\n return Promise.resolve(false);\n }\n\n if (reason.statusCode === 401) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AuthInterceptor","options","headers","authorization","resolve","requiresCredentials","then","requires","webex","credentials","getUserToken","token","toString","addAuthHeader","internal","services","details","getServiceFromUrl","uri","name","resource","service","api","includes","validateDomains","hasAllowedDomains","isAllowedDomainUrl","waitForService","url","detectedUrl","catch","error","logger","warn","reason","shouldAttemptReauth","info","canRefresh","refresh","replay","reject","replayCount","config","maxAuthenticationReplays","Error","request","shouldRefreshAccessToken","statusCode","Interceptor"],"sources":["auth.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class AuthInterceptor extends Interceptor {\n /**\n * @returns {AuthInterceptor}\n */\n static create() {\n return new AuthInterceptor({webex: this});\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n\n // If Authorizations is already set, don't overwrite it\n if ('authorization' in options.headers || 'auth' in options) {\n // If Authorization is set to null, false, or undefined, delete it to\n // prevent a CORS preflight.\n if (!options.headers.authorization) {\n Reflect.deleteProperty(options.headers, 'authorization');\n }\n\n return Promise.resolve(options);\n }\n\n return this.requiresCredentials(options).then((requires) => {\n if (!requires) {\n return options;\n }\n\n return this.webex.credentials.getUserToken().then((token) => {\n options.headers.authorization = token.toString();\n\n return options;\n });\n });\n }\n\n /**\n * Determines if the provided options object needs an authorization header.\n *\n * @param {Object} options\n * @returns {Promise<boolean>}\n */\n requiresCredentials(options) {\n // Validate that authorization is necessary.\n if (options.addAuthHeader === false) {\n return Promise.resolve(false);\n }\n\n // Validate that the services plugin has been loaded before proceeding.\n if (!this.webex.internal.services) {\n return Promise.resolve(false);\n }\n\n // Destructure webex instance to isolate services plugin.\n const {services} = this.webex.internal;\n\n // Store the current service details if available and destructure details.\n const details = services.getServiceFromUrl(options.uri || '');\n const {name} = details || {};\n const {resource, uri} = options;\n const service = options.service || options.api;\n\n // Unique validation for the u2c service.\n if ((service && service === 'u2c') || (name && name === 'u2c')) {\n if ((resource && resource.includes('limited')) || (uri && uri.includes('limited'))) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n }\n\n // Validate that the allowed domains can be utilized.\n if (\n services.validateDomains &&\n services.hasAllowedDomains() &&\n uri &&\n services.isAllowedDomainUrl(uri)\n ) {\n return Promise.resolve(true);\n }\n\n // Perform an additional validation in case the service does not exist yet.\n return services\n .waitForService({name: service, url: uri})\n .then((detectedUrl) => {\n // Validate that the url exists in the catalog.\n if (services.getServiceFromUrl(detectedUrl)) {\n return true;\n }\n\n // Return false to indicate authentication is not required.\n return false;\n })\n .catch((error) => {\n this.webex.logger.warn(\n 'auth-interceptor: failed to validate service exists in catalog',\n error\n );\n\n return false;\n });\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n return this.shouldAttemptReauth(reason, options).then((shouldAttemptReauth) => {\n if (shouldAttemptReauth) {\n this.webex.logger.info('auth: received 401, attempting to reauthenticate');\n\n if (reason.options.headers) {\n Reflect.deleteProperty(reason.options.headers, 'authorization');\n }\n\n if (this.webex.credentials.canRefresh) {\n return this.webex.credentials.refresh().then(() => this.replay(options));\n }\n }\n\n return Promise.reject(reason);\n });\n }\n\n /**\n * Replays the request\n * @param {Object} options\n * @returns {Object}\n */\n replay(options) {\n if (options.replayCount) {\n options.replayCount += 1;\n } else {\n options.replayCount = 1;\n }\n\n if (options.replayCount > this.webex.config.maxAuthenticationReplays) {\n this.webex.logger.error(\n `auth: failed after ${this.webex.config.maxAuthenticationReplays} replay attempts`\n );\n\n return Promise.reject(\n new Error(`Failed after ${this.webex.config.maxAuthenticationReplays} replay attempts`)\n );\n }\n\n this.webex.logger.info(`auth: replaying request ${options.replayCount} time`);\n\n return this.webex.request(options);\n }\n\n /**\n * Indicates whether or not the current request should refresh its access\n * token in event of a 401\n * @param {Error} reason\n * @param {Object} options\n * @returns {Promise<boolean>}\n */\n shouldAttemptReauth(reason, options) {\n if (options && options.shouldRefreshAccessToken === false) {\n return Promise.resolve(false);\n }\n\n if (reason.statusCode === 401) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["DefaultOptionsInterceptor","options","defaultOptions","webex","config","defaultRequestOptions","forEach","key","includes","Interceptor"],"sources":["default-options.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n\n/**\n * Allows the user of the SDK to set default options that apply every http request made by the SDK\n * For example a default timeout could be set for all requests like this :\n *\n * webex = WebexSdk.init({\n * credentials: {\n * supertoken: superToken\n * },\n * config: {\n * credentials: {\n * client_id,\n * client_secret\n * },\n * defaultRequestOptions: {\n * timeout: 15000\n * }\n * }\n * });\n */\nexport default class DefaultOptionsInterceptor extends Interceptor {\n /**\n * @returns {DefaultOptionsInterceptor}\n */\n static create() {\n return new DefaultOptionsInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const {defaultRequestOptions: defaultOptions} = this.webex.config;\n\n if (!defaultOptions) {\n return options;\n }\n\n Object.keys(defaultOptions).forEach((key) => {\n // don't override any existing option properties\n if (!Object.keys(options).includes(key)) {\n options[key] = defaultOptions[key];\n }\n });\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACqBA,yB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAA8BC,cAA9B,GAAgD,KAAKC,KAAL,CAAWC,MAA3D,CAAOC,qBAAP;;MAEA,IAAI,CAACH,cAAL,EAAqB;QACnB,OAAOD,OAAP;MACD;;MAED,mBAAYC,cAAZ,EAA4BI,OAA5B,CAAoC,UAACC,GAAD,EAAS;QAC3C;QACA,IAAI,CAAC,mBAAYN,OAAZ,EAAqBO,QAArB,CAA8BD,GAA9B,CAAL,EAAyC;UACvCN,OAAO,CAACM,GAAD,CAAP,GAAeL,cAAc,CAACK,GAAD,CAA7B;QACD;MACF,CALD;MAOA,OAAON,OAAP;IACD;;;;IA3BD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAID,yBAAJ,CAA8B;QAACG,KAAK,EAAE;MAAR,CAA9B,CAAP;IACD;;;EANoDM,qB"}
1
+ {"version":3,"names":["DefaultOptionsInterceptor","options","defaultOptions","webex","config","defaultRequestOptions","forEach","key","includes","Interceptor"],"sources":["default-options.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * Allows the user of the SDK to set default options that apply every http request made by the SDK\n * For example a default timeout could be set for all requests like this :\n *\n * webex = WebexSdk.init({\n * credentials: {\n * supertoken: superToken\n * },\n * config: {\n * credentials: {\n * client_id,\n * client_secret\n * },\n * defaultRequestOptions: {\n * timeout: 15000\n * }\n * }\n * });\n */\nexport default class DefaultOptionsInterceptor extends Interceptor {\n /**\n * @returns {DefaultOptionsInterceptor}\n */\n static create() {\n return new DefaultOptionsInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const {defaultRequestOptions: defaultOptions} = this.webex.config;\n\n if (!defaultOptions) {\n return options;\n }\n\n Object.keys(defaultOptions).forEach((key) => {\n // don't override any existing option properties\n if (!Object.keys(options).includes(key)) {\n options[key] = defaultOptions[key];\n }\n });\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACqBA,yB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAA8BC,cAA9B,GAAgD,KAAKC,KAAL,CAAWC,MAA3D,CAAOC,qBAAP;;MAEA,IAAI,CAACH,cAAL,EAAqB;QACnB,OAAOD,OAAP;MACD;;MAED,mBAAYC,cAAZ,EAA4BI,OAA5B,CAAoC,UAACC,GAAD,EAAS;QAC3C;QACA,IAAI,CAAC,mBAAYN,OAAZ,EAAqBO,QAArB,CAA8BD,GAA9B,CAAL,EAAyC;UACvCN,OAAO,CAACM,GAAD,CAAP,GAAeL,cAAc,CAACK,GAAD,CAA7B;QACD;MACF,CALD;MAOA,OAAON,OAAP;IACD;;;;IA3BD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAID,yBAAJ,CAA8B;QAACG,KAAK,EAAE;MAAR,CAA9B,CAAP;IACD;;;EANoDM,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["EmbargoInterceptor","options","reason","statusCode","device","webex","internal","loggerMessage","join","clear","credentials","logger","info","reject","Interceptor"],"sources":["embargo.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class EmbargoInterceptor extends Interceptor {\n /**\n * @returns {EmbargoInterceptor}\n */\n static create() {\n /* eslint no-invalid-this: [0] */\n return new EmbargoInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Promise}\n */\n onResponseError(options, reason) {\n if (reason.statusCode === 451) {\n const {device} = this.webex.internal;\n const loggerMessage = [\n 'Received `HTTP 451 Unavailable For Legal Reasons`, ',\n 'discarding credentials and device registration'\n ].join('');\n\n if (device) {\n this.webex.internal.device.clear();\n }\n\n this.webex.credentials.clear();\n this.webex.logger.info(loggerMessage);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA;AACA;AACA;IACqBA,kB;;;;;;;;;;;;;IASnB;AACF;AACA;AACA;AACA;AACA;IACE,yBAAgBC,OAAhB,EAAyBC,MAAzB,EAAiC;MAC/B,IAAIA,MAAM,CAACC,UAAP,KAAsB,GAA1B,EAA+B;QAC7B,IAAOC,MAAP,GAAiB,KAAKC,KAAL,CAAWC,QAA5B,CAAOF,MAAP;QACA,IAAMG,aAAa,GAAG,CACpB,qDADoB,EAEpB,gDAFoB,EAGpBC,IAHoB,CAGf,EAHe,CAAtB;;QAKA,IAAIJ,MAAJ,EAAY;UACV,KAAKC,KAAL,CAAWC,QAAX,CAAoBF,MAApB,CAA2BK,KAA3B;QACD;;QAED,KAAKJ,KAAL,CAAWK,WAAX,CAAuBD,KAAvB;QACA,KAAKJ,KAAL,CAAWM,MAAX,CAAkBC,IAAlB,CAAuBL,aAAvB;MACD;;MAED,OAAO,iBAAQM,MAAR,CAAeX,MAAf,CAAP;IACD;;;;IA/BD;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIF,kBAAJ,CAAuB;QAACK,KAAK,EAAE;MAAR,CAAvB,CAAP;IACD;;;EAP6CS,qB"}
1
+ {"version":3,"names":["EmbargoInterceptor","options","reason","statusCode","device","webex","internal","loggerMessage","join","clear","credentials","logger","info","reject","Interceptor"],"sources":["embargo.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class EmbargoInterceptor extends Interceptor {\n /**\n * @returns {EmbargoInterceptor}\n */\n static create() {\n /* eslint no-invalid-this: [0] */\n return new EmbargoInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Promise}\n */\n onResponseError(options, reason) {\n if (reason.statusCode === 451) {\n const {device} = this.webex.internal;\n const loggerMessage = [\n 'Received `HTTP 451 Unavailable For Legal Reasons`, ',\n 'discarding credentials and device registration',\n ].join('');\n\n if (device) {\n this.webex.internal.device.clear();\n }\n\n this.webex.credentials.clear();\n this.webex.logger.info(loggerMessage);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA;AACA;AACA;IACqBA,kB;;;;;;;;;;;;;IASnB;AACF;AACA;AACA;AACA;AACA;IACE,yBAAgBC,OAAhB,EAAyBC,MAAzB,EAAiC;MAC/B,IAAIA,MAAM,CAACC,UAAP,KAAsB,GAA1B,EAA+B;QAC7B,IAAOC,MAAP,GAAiB,KAAKC,KAAL,CAAWC,QAA5B,CAAOF,MAAP;QACA,IAAMG,aAAa,GAAG,CACpB,qDADoB,EAEpB,gDAFoB,EAGpBC,IAHoB,CAGf,EAHe,CAAtB;;QAKA,IAAIJ,MAAJ,EAAY;UACV,KAAKC,KAAL,CAAWC,QAAX,CAAoBF,MAApB,CAA2BK,KAA3B;QACD;;QAED,KAAKJ,KAAL,CAAWK,WAAX,CAAuBD,KAAvB;QACA,KAAKJ,KAAL,CAAWM,MAAX,CAAkBC,IAAlB,CAAuBL,aAAvB;MACD;;MAED,OAAO,iBAAQM,MAAR,CAAeX,MAAf,CAAP;IACD;;;;IA/BD;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIF,kBAAJ,CAAuB;QAACK,KAAK,EAAE;MAAR,CAAvB,CAAP;IACD;;;EAP6CS,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["PayloadTransformerInterceptor","options","noTransform","webex","transform","response","disableTransform","reason","then","r","reject","Interceptor"],"sources":["payload-transformer.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class PayloadTransformerInterceptor extends Interceptor {\n /**\n * @param {Object} options\n * @returns {PayloadTransformerInterceptor}\n */\n static create() {\n return new PayloadTransformerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options.noTransform) {\n return options;\n }\n\n return this.webex.transform('outbound', options);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n if (options.disableTransform) {\n return response;\n }\n\n return this.webex.transform('inbound', response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n return this.webex.transform('inbound', reason)\n .then((r) => Promise.reject(r || reason));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA;AACA;AACA;IACqBA,6B;;;;;;;;;;;;;IASnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAIA,OAAO,CAACC,WAAZ,EAAyB;QACvB,OAAOD,OAAP;MACD;;MAED,OAAO,KAAKE,KAAL,CAAWC,SAAX,CAAqB,UAArB,EAAiCH,OAAjC,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWA,OAAX,EAAoBI,QAApB,EAA8B;MAC5B,IAAIJ,OAAO,CAACK,gBAAZ,EAA8B;QAC5B,OAAOD,QAAP;MACD;;MAED,OAAO,KAAKF,KAAL,CAAWC,SAAX,CAAqB,SAArB,EAAgCC,QAAhC,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBJ,OAAhB,EAAyBM,MAAzB,EAAiC;MAC/B,OAAO,KAAKJ,KAAL,CAAWC,SAAX,CAAqB,SAArB,EAAgCG,MAAhC,EACJC,IADI,CACC,UAACC,CAAD;QAAA,OAAO,iBAAQC,MAAR,CAAeD,CAAC,IAAIF,MAApB,CAAP;MAAA,CADD,CAAP;IAED;;;;IA5CD;AACF;AACA;AACA;IACE,kBAAgB;MACd,OAAO,IAAIP,6BAAJ,CAAkC;QAACG,KAAK,EAAE;MAAR,CAAlC,CAAP;IACD;;;EAPwDQ,qB"}
1
+ {"version":3,"names":["PayloadTransformerInterceptor","options","noTransform","webex","transform","response","disableTransform","reason","then","r","reject","Interceptor"],"sources":["payload-transformer.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class PayloadTransformerInterceptor extends Interceptor {\n /**\n * @param {Object} options\n * @returns {PayloadTransformerInterceptor}\n */\n static create() {\n return new PayloadTransformerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options.noTransform) {\n return options;\n }\n\n return this.webex.transform('outbound', options);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n if (options.disableTransform) {\n return response;\n }\n\n return this.webex.transform('inbound', response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n return this.webex.transform('inbound', reason).then((r) => Promise.reject(r || reason));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA;AACA;AACA;IACqBA,6B;;;;;;;;;;;;;IASnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAIA,OAAO,CAACC,WAAZ,EAAyB;QACvB,OAAOD,OAAP;MACD;;MAED,OAAO,KAAKE,KAAL,CAAWC,SAAX,CAAqB,UAArB,EAAiCH,OAAjC,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWA,OAAX,EAAoBI,QAApB,EAA8B;MAC5B,IAAIJ,OAAO,CAACK,gBAAZ,EAA8B;QAC5B,OAAOD,QAAP;MACD;;MAED,OAAO,KAAKF,KAAL,CAAWC,SAAX,CAAqB,SAArB,EAAgCC,QAAhC,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBJ,OAAhB,EAAyBM,MAAzB,EAAiC;MAC/B,OAAO,KAAKJ,KAAL,CAAWC,SAAX,CAAqB,SAArB,EAAgCG,MAAhC,EAAwCC,IAAxC,CAA6C,UAACC,CAAD;QAAA,OAAO,iBAAQC,MAAR,CAAeD,CAAC,IAAIF,MAApB,CAAP;MAAA,CAA7C,CAAP;IACD;;;;IA3CD;AACF;AACA;AACA;IACE,kBAAgB;MACd,OAAO,IAAIP,6BAAJ,CAAkC;QAACG,KAAK,EAAE;MAAR,CAAlC,CAAP;IACD;;;EAPwDQ,qB"}
@@ -51,10 +51,10 @@ var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
51
51
  var _super = _createSuper(RateLimitInterceptor);
52
52
 
53
53
  /**
54
- * constructor
55
- * @param {mixed} args
56
- * @returns {Exception}
57
- */
54
+ * constructor
55
+ * @param {mixed} args
56
+ * @returns {Exception}
57
+ */
58
58
  function RateLimitInterceptor() {
59
59
  var _this;
60
60
 
@@ -1 +1 @@
1
- {"version":3,"names":["rateLimitExpiryTime","idBrokerRegex","RateLimitInterceptor","args","set","options","isRateLimited","uri","reject","Error","resolve","reason","statusCode","includes","setRateLimitExpiry","extractRetryAfterTime","milliMultiplier","retryAfter","headers","apiName","getApiName","currTimeMilli","Date","getTime","expiry","dict","get","expiryTime","undefined","results","match","getRateLimitStatus","webex","Interceptor"],"sources":["rate-limit.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n// contains the system time in milliseconds at which the retry after associated with a 429 expires\n// mapped by the API name, e.g.: idbroker.webex.com/doStuff would be mapped as 'doStuff'\nconst rateLimitExpiryTime = new WeakMap();\n\n// extracts the common identity API being called\nconst idBrokerRegex = /.*(idbroker|identity)(bts)?.ciscospark.com\\/([^/]+)/;\n\n/**\n * @class\n */\nexport default class RateLimitInterceptor extends Interceptor {\n /**\n * @returns {RateLimitInterceptor}\n */\n static create() {\n return new RateLimitInterceptor({webex: this});\n }\n\n /**\n * constructor\n * @param {mixed} args\n * @returns {Exception}\n */\n constructor(...args) {\n super(...args);\n rateLimitExpiryTime.set(this, new Map());\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (this.isRateLimited(options.uri)) {\n return Promise.reject(new Error(`API rate limited ${options.uri}`));\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n if (reason.statusCode === 429 && (options.uri.includes('idbroker') || options.uri.includes('identity'))) {\n // set the retry after in the map, setting to milliseconds\n this.setRateLimitExpiry(options.uri, this.extractRetryAfterTime(options));\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @param {object} options associated with the request\n * @returns {number} retry after time in milliseconds\n */\n extractRetryAfterTime(options) {\n // 1S * 1K === 1MS\n const milliMultiplier = 1000;\n const retryAfter = options.headers['retry-after'] || null;\n\n // set 60 retry if no usable time defined\n if (retryAfter === null || retryAfter <= 0) {\n return 60 * milliMultiplier;\n }\n // set max to 3600 S (1 hour) if greater than 1 hour\n if (retryAfter > 3600) {\n return 3600 * milliMultiplier;\n }\n\n return retryAfter * milliMultiplier;\n }\n\n /**\n * Set the system time at which the rate limiting\n * will expire in the rateLimitExpiryTime map.\n * Assumes retryAfter is in milliseconds\n * @param {string} uri API issuing the rate limiting\n * @param {number} retryAfter milliseconds until rate limiting expires\n * @returns {bool} true is value was successfully set\n */\n setRateLimitExpiry(uri, retryAfter) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const expiry = currTimeMilli + retryAfter;\n const dict = rateLimitExpiryTime.get(this);\n\n return dict.set(apiName, expiry);\n }\n\n /**\n * returns true if the API is currently rate limited\n * @param {string} uri\n * @returns {Boolean} indicates whether or not the API is rate currently rate limited\n */\n getRateLimitStatus(uri) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const dict = rateLimitExpiryTime.get(this);\n const expiryTime = dict.get(apiName);\n\n // if no rate limit expiry has been registered in the map, return false.\n if (expiryTime === undefined) {\n return false;\n }\n\n // return true, indicating rate limiting, if the system time is less than the expiry time\n return currTimeMilli < dict.get(apiName);\n }\n\n /**\n * split the URI and returns the API name of idBroker\n * @param {string} uri\n * @returns {string}\n */\n getApiName(uri) {\n if (!uri) {\n return null;\n }\n\n const results = uri.match(idBrokerRegex);\n\n if (!results) {\n return null;\n }\n\n // group 0 = full match of URL, group 1 = identity or idbroker base\n // group 2 = api name\n return results[2];\n }\n\n /**\n * check URI against list of currently rate limited\n * URIs, and determines if retry-after\n * @param {String} uri pattern to check\n * @returns {bool}\n */\n isRateLimited(uri) {\n // determine if the URI is associated with a common identity API\n if (uri && (uri.includes('idbroker') || uri.includes('identity'))) {\n return this.getRateLimitStatus(uri);\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["rateLimitExpiryTime","idBrokerRegex","RateLimitInterceptor","args","set","options","isRateLimited","uri","reject","Error","resolve","reason","statusCode","includes","setRateLimitExpiry","extractRetryAfterTime","milliMultiplier","retryAfter","headers","apiName","getApiName","currTimeMilli","Date","getTime","expiry","dict","get","expiryTime","undefined","results","match","getRateLimitStatus","webex","Interceptor"],"sources":["rate-limit.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n// contains the system time in milliseconds at which the retry after associated with a 429 expires\n// mapped by the API name, e.g.: idbroker.webex.com/doStuff would be mapped as 'doStuff'\nconst rateLimitExpiryTime = new WeakMap();\n\n// extracts the common identity API being called\nconst idBrokerRegex = /.*(idbroker|identity)(bts)?.ciscospark.com\\/([^/]+)/;\n\n/**\n * @class\n */\nexport default class RateLimitInterceptor extends Interceptor {\n /**\n * @returns {RateLimitInterceptor}\n */\n static create() {\n return new RateLimitInterceptor({webex: this});\n }\n\n /**\n * constructor\n * @param {mixed} args\n * @returns {Exception}\n */\n constructor(...args) {\n super(...args);\n rateLimitExpiryTime.set(this, new Map());\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (this.isRateLimited(options.uri)) {\n return Promise.reject(new Error(`API rate limited ${options.uri}`));\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n if (\n reason.statusCode === 429 &&\n (options.uri.includes('idbroker') || options.uri.includes('identity'))\n ) {\n // set the retry after in the map, setting to milliseconds\n this.setRateLimitExpiry(options.uri, this.extractRetryAfterTime(options));\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @param {object} options associated with the request\n * @returns {number} retry after time in milliseconds\n */\n extractRetryAfterTime(options) {\n // 1S * 1K === 1MS\n const milliMultiplier = 1000;\n const retryAfter = options.headers['retry-after'] || null;\n\n // set 60 retry if no usable time defined\n if (retryAfter === null || retryAfter <= 0) {\n return 60 * milliMultiplier;\n }\n // set max to 3600 S (1 hour) if greater than 1 hour\n if (retryAfter > 3600) {\n return 3600 * milliMultiplier;\n }\n\n return retryAfter * milliMultiplier;\n }\n\n /**\n * Set the system time at which the rate limiting\n * will expire in the rateLimitExpiryTime map.\n * Assumes retryAfter is in milliseconds\n * @param {string} uri API issuing the rate limiting\n * @param {number} retryAfter milliseconds until rate limiting expires\n * @returns {bool} true is value was successfully set\n */\n setRateLimitExpiry(uri, retryAfter) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const expiry = currTimeMilli + retryAfter;\n const dict = rateLimitExpiryTime.get(this);\n\n return dict.set(apiName, expiry);\n }\n\n /**\n * returns true if the API is currently rate limited\n * @param {string} uri\n * @returns {Boolean} indicates whether or not the API is rate currently rate limited\n */\n getRateLimitStatus(uri) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const dict = rateLimitExpiryTime.get(this);\n const expiryTime = dict.get(apiName);\n\n // if no rate limit expiry has been registered in the map, return false.\n if (expiryTime === undefined) {\n return false;\n }\n\n // return true, indicating rate limiting, if the system time is less than the expiry time\n return currTimeMilli < dict.get(apiName);\n }\n\n /**\n * split the URI and returns the API name of idBroker\n * @param {string} uri\n * @returns {string}\n */\n getApiName(uri) {\n if (!uri) {\n return null;\n }\n\n const results = uri.match(idBrokerRegex);\n\n if (!results) {\n return null;\n }\n\n // group 0 = full match of URL, group 1 = identity or idbroker base\n // group 2 = api name\n return results[2];\n }\n\n /**\n * check URI against list of currently rate limited\n * URIs, and determines if retry-after\n * @param {String} uri pattern to check\n * @returns {bool}\n */\n isRateLimited(uri) {\n // determine if the URI is associated with a common identity API\n if (uri && (uri.includes('idbroker') || uri.includes('identity'))) {\n return this.getRateLimitStatus(uri);\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["requestHeaderName","responseHeaderName","LOCUS_REDIRECT_ERROR","RedirectInterceptor","options","uri","includes","webex","config","credentials","samlUrl","tokenUrl","authorizeUrl","headers","$redirectCount","response","maxAppLevelRedirects","reject","Error","request","body","errorCode","location","logger","warn","qs","newUrl","split","maxLocusRedirects","Interceptor"],"sources":["redirect.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {clone} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\nconst requestHeaderName = 'cisco-no-http-redirect';\nconst responseHeaderName = 'cisco-location';\nconst LOCUS_REDIRECT_ERROR = 2000002;\n\n/**\n * @class\n */\nexport default class RedirectInterceptor extends Interceptor {\n /**\n * @returns {RedirectInterceptor}\n */\n static create() {\n return new RedirectInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options && options.uri && typeof options.uri === 'string') {\n if (options.uri.includes('https://idbroker') ||\n options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl)) {\n return options;\n }\n }\n\n // If cisco-no-http-redirect is already set, don't overwrite it\n if (requestHeaderName in options.headers) {\n // If cisco-no-http-redirect is set to null, false, or undefined, delete\n // it to prevent a CORS preflight.\n if (!options.headers[requestHeaderName]) {\n Reflect.deleteProperty(options.headers, requestHeaderName);\n }\n\n return options;\n }\n options.headers[requestHeaderName] = true;\n options.$redirectCount = options.$redirectCount || 0;\n\n return options;\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n /* eslint-disable no-else-return */\n if (response.headers && response.headers[responseHeaderName]) {\n options = clone(options);\n options.uri = response.headers[responseHeaderName];\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxAppLevelRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n else if (response.headers &&\n response.body &&\n response.body.errorCode === LOCUS_REDIRECT_ERROR &&\n response.body.location) {\n options = clone(options);\n\n this.webex.logger.warn('redirect: url redirects needed from', options.uri);\n if (response.options && response.options.qs) { // for POST requests\n const newUrl = response.body.location.split('?');\n\n options.uri = newUrl[0]; // params are already present in the qs\n }\n else { // for GET requests\n options.uri = response.body.location;\n }\n\n this.webex.logger.warn('redirect: url redirects needed to', options.uri);\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxLocusRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n /* eslint-enable no-else-return */\n\n return response;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["requestHeaderName","responseHeaderName","LOCUS_REDIRECT_ERROR","RedirectInterceptor","options","uri","includes","webex","config","credentials","samlUrl","tokenUrl","authorizeUrl","headers","$redirectCount","response","maxAppLevelRedirects","reject","Error","request","body","errorCode","location","logger","warn","qs","newUrl","split","maxLocusRedirects","Interceptor"],"sources":["redirect.js"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {clone} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\nconst requestHeaderName = 'cisco-no-http-redirect';\nconst responseHeaderName = 'cisco-location';\nconst LOCUS_REDIRECT_ERROR = 2000002;\n\n/**\n * @class\n */\nexport default class RedirectInterceptor extends Interceptor {\n /**\n * @returns {RedirectInterceptor}\n */\n static create() {\n return new RedirectInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options && options.uri && typeof options.uri === 'string') {\n if (\n options.uri.includes('https://idbroker') ||\n options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl)\n ) {\n return options;\n }\n }\n\n // If cisco-no-http-redirect is already set, don't overwrite it\n if (requestHeaderName in options.headers) {\n // If cisco-no-http-redirect is set to null, false, or undefined, delete\n // it to prevent a CORS preflight.\n if (!options.headers[requestHeaderName]) {\n Reflect.deleteProperty(options.headers, requestHeaderName);\n }\n\n return options;\n }\n options.headers[requestHeaderName] = true;\n options.$redirectCount = options.$redirectCount || 0;\n\n return options;\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n /* eslint-disable no-else-return */\n if (response.headers && response.headers[responseHeaderName]) {\n options = clone(options);\n options.uri = response.headers[responseHeaderName];\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxAppLevelRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n } else if (\n response.headers &&\n response.body &&\n response.body.errorCode === LOCUS_REDIRECT_ERROR &&\n response.body.location\n ) {\n options = clone(options);\n\n this.webex.logger.warn('redirect: url redirects needed from', options.uri);\n if (response.options && response.options.qs) {\n // for POST requests\n const newUrl = response.body.location.split('?');\n\n options.uri = newUrl[0]; // params are already present in the qs\n } else {\n // for GET requests\n options.uri = response.body.location;\n }\n\n this.webex.logger.warn('redirect: url redirects needed to', options.uri);\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxLocusRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n /* eslint-enable no-else-return */\n\n return response;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["RequestEventInterceptor","options","logger","console","webex","trigger","error","warn","resolve","reason","reject","response","Interceptor"],"sources":["request-event.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {get} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestEventInterceptor extends Interceptor {\n /**\n * @returns {RequestEventInterceptor}\n */\n static create() {\n return new RequestEventInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:start', options);\n }\n catch (error) {\n logger.warn('event handler for request:start failed ', error);\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n }\n catch (error) {\n logger.warn('event handler for request:end failed ', error);\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:success', response.options, response);\n }\n catch (error) {\n logger.warn('event handler for request:success failed ', error);\n }\n\n return Promise.resolve(response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n }\n catch (error) {\n logger.warn('event handler for request:failure failed ', error);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;AAEA;AACA;AACA;IACqBA,uB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,eAAnB,EAAoCJ,OAApC;MACD,CAFD,CAGA,OAAOK,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,yCAAZ,EAAuDD,KAAvD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBP,OAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwBQ,MAAxB,EAAgC;MAC9B;MACA;MACA,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAIA,OAAOH,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,uCAAZ,EAAqDD,KAArD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWR,OAAX,EAAoBU,QAApB,EAA8B;MAC5B,IAAMT,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCM,QAAQ,CAACV,OAA/C,EAAwDU,QAAxD;MACD,CAFD,CAGA,OAAOL,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBG,QAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBV,OAAhB,EAAyBQ,MAAzB,EAAiC;MAC/B,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAIA,OAAOH,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;;;;IApFD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAIT,uBAAJ,CAA4B;QAACI,KAAK,EAAE;MAAR,CAA5B,CAAP;IACD;;;EANkDQ,qB"}
1
+ {"version":3,"names":["RequestEventInterceptor","options","logger","console","webex","trigger","error","warn","resolve","reason","reject","response","Interceptor"],"sources":["request-event.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {get} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestEventInterceptor extends Interceptor {\n /**\n * @returns {RequestEventInterceptor}\n */\n static create() {\n return new RequestEventInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:start', options);\n } catch (error) {\n logger.warn('event handler for request:start failed ', error);\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n } catch (error) {\n logger.warn('event handler for request:end failed ', error);\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:success', response.options, response);\n } catch (error) {\n logger.warn('event handler for request:success failed ', error);\n }\n\n return Promise.resolve(response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n } catch (error) {\n logger.warn('event handler for request:failure failed ', error);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;AAEA;AACA;AACA;IACqBA,uB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,eAAnB,EAAoCJ,OAApC;MACD,CAFD,CAEE,OAAOK,KAAP,EAAc;QACdJ,MAAM,CAACK,IAAP,CAAY,yCAAZ,EAAuDD,KAAvD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBP,OAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwBQ,MAAxB,EAAgC;MAC9B;MACA;MACA,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAGE,OAAOH,KAAP,EAAc;QACdJ,MAAM,CAACK,IAAP,CAAY,uCAAZ,EAAqDD,KAArD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWR,OAAX,EAAoBU,QAApB,EAA8B;MAC5B,IAAMT,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCM,QAAQ,CAACV,OAA/C,EAAwDU,QAAxD;MACD,CAFD,CAEE,OAAOL,KAAP,EAAc;QACdJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBG,QAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBV,OAAhB,EAAyBQ,MAAzB,EAAiC;MAC/B,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAGE,OAAOH,KAAP,EAAc;QACdJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;;;;IAhFD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAIT,uBAAJ,CAA4B;QAACI,KAAK,EAAE;MAAR,CAA5B,CAAP;IACD;;;EANkDQ,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["RequestLoggerInterceptor","options","logger","console","info","method","uri","now","Date","process","env","ENABLE_VERBOSE_NETWORK_LOGGING","getTime","toISOString","body","length","util","inspect","depth","e","warn","resolve","reason","onRequest","error","stack","reject","webex","Interceptor"],"sources":["request-logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport {get, has, isArray, isString, omit} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestLoggerInterceptor extends Interceptor {\n /**\n * @returns {RequestLoggerInterceptor}\n */\n static create() {\n return new RequestLoggerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n logger.info('/**********************************************************************\\\\ ');\n logger.info('Request:', options.method || 'GET', options.uri);\n logger.info('WEBEX_TRACKINGID: ', get(options, 'headers.trackingid'));\n /* istanbul ignore next */\n if (has(options, 'headers.x-trans-id')) {\n logger.info('X-Trans-ID: ', get(options, 'headers.x-trans-id'));\n }\n const now = new Date();\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (start): ', now.getTime(), now.toISOString());\n try {\n // Determine if body is a buffer without relying on Buffer to avoid\n // node/browser conflicts.\n if (options.body && options.body.length && !isArray(options.body) && !isString(options.body)) {\n logger.info('Request Options:', util.inspect(omit(options, 'body'), {depth: null}));\n }\n else {\n logger.info('Request Options:', util.inspect(options, {depth: null}));\n }\n }\n catch (e) {\n logger.warn('Could not stringify request options:', e);\n }\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n this.onRequest(options);\n const logger = get(this, 'webex.logger', console);\n\n logger.error('Request Failed: ', reason.stack);\n logger.info('\\\\**********************************************************************/');\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAGA;;;;;;AAEA;AACA;AACA;IACqBA,wB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;MAEAD,MAAM,CAACE,IAAP,CAAY,4EAAZ;MACAF,MAAM,CAACE,IAAP,CAAY,UAAZ,EAAwBH,OAAO,CAACI,MAAR,IAAkB,KAA1C,EAAiDJ,OAAO,CAACK,GAAzD;MACAJ,MAAM,CAACE,IAAP,CAAY,oBAAZ,EAAkC,mBAAIH,OAAJ,EAAa,oBAAb,CAAlC;MACA;;MACA,IAAI,mBAAIA,OAAJ,EAAa,oBAAb,CAAJ,EAAwC;QACtCC,MAAM,CAACE,IAAP,CAAY,cAAZ,EAA4B,mBAAIH,OAAJ,EAAa,oBAAb,CAA5B;MACD;;MACD,IAAMM,GAAG,GAAG,IAAIC,IAAJ,EAAZ;;MAEA,IAAIC,OAAO,CAACC,GAAR,CAAYC,8BAAhB,EAAgD;QAC9CT,MAAM,CAACE,IAAP,CAAY,qBAAZ,EAAmCG,GAAG,CAACK,OAAJ,EAAnC,EAAkDL,GAAG,CAACM,WAAJ,EAAlD;;QACA,IAAI;UACF;UACA;UACA,IAAIZ,OAAO,CAACa,IAAR,IAAgBb,OAAO,CAACa,IAAR,CAAaC,MAA7B,IAAuC,CAAC,uBAAQd,OAAO,CAACa,IAAhB,CAAxC,IAAiE,CAAC,wBAASb,OAAO,CAACa,IAAjB,CAAtE,EAA8F;YAC5FZ,MAAM,CAACE,IAAP,CAAY,kBAAZ,EAAgCY,aAAA,CAAKC,OAAL,CAAa,oBAAKhB,OAAL,EAAc,MAAd,CAAb,EAAoC;cAACiB,KAAK,EAAE;YAAR,CAApC,CAAhC;UACD,CAFD,MAGK;YACHhB,MAAM,CAACE,IAAP,CAAY,kBAAZ,EAAgCY,aAAA,CAAKC,OAAL,CAAahB,OAAb,EAAsB;cAACiB,KAAK,EAAE;YAAR,CAAtB,CAAhC;UACD;QACF,CATD,CAUA,OAAOC,CAAP,EAAU;UACRjB,MAAM,CAACkB,IAAP,CAAY,sCAAZ,EAAoDD,CAApD;QACD;MACF;;MAED,OAAO,iBAAQE,OAAR,CAAgBpB,OAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwBqB,MAAxB,EAAgC;MAC9B;MACA;MACA,KAAKC,SAAL,CAAetB,OAAf;MACA,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;MAEAD,MAAM,CAACsB,KAAP,CAAa,kBAAb,EAAiCF,MAAM,CAACG,KAAxC;MACAvB,MAAM,CAACE,IAAP,CAAY,2EAAZ;MAEA,OAAO,iBAAQsB,MAAR,CAAeJ,MAAf,CAAP;IACD;;;;IA5DD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAItB,wBAAJ,CAA6B;QAAC2B,KAAK,EAAE;MAAR,CAA7B,CAAP;IACD;;;EANmDC,qB"}
1
+ {"version":3,"names":["RequestLoggerInterceptor","options","logger","console","info","method","uri","now","Date","process","env","ENABLE_VERBOSE_NETWORK_LOGGING","getTime","toISOString","body","length","util","inspect","depth","e","warn","resolve","reason","onRequest","error","stack","reject","webex","Interceptor"],"sources":["request-logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport {get, has, isArray, isString, omit} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestLoggerInterceptor extends Interceptor {\n /**\n * @returns {RequestLoggerInterceptor}\n */\n static create() {\n return new RequestLoggerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n logger.info('/**********************************************************************\\\\ ');\n logger.info('Request:', options.method || 'GET', options.uri);\n logger.info('WEBEX_TRACKINGID: ', get(options, 'headers.trackingid'));\n /* istanbul ignore next */\n if (has(options, 'headers.x-trans-id')) {\n logger.info('X-Trans-ID: ', get(options, 'headers.x-trans-id'));\n }\n const now = new Date();\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (start): ', now.getTime(), now.toISOString());\n try {\n // Determine if body is a buffer without relying on Buffer to avoid\n // node/browser conflicts.\n if (\n options.body &&\n options.body.length &&\n !isArray(options.body) &&\n !isString(options.body)\n ) {\n logger.info('Request Options:', util.inspect(omit(options, 'body'), {depth: null}));\n } else {\n logger.info('Request Options:', util.inspect(options, {depth: null}));\n }\n } catch (e) {\n logger.warn('Could not stringify request options:', e);\n }\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n this.onRequest(options);\n const logger = get(this, 'webex.logger', console);\n\n logger.error('Request Failed: ', reason.stack);\n logger.info('\\\\**********************************************************************/');\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAGA;;;;;;AAEA;AACA;AACA;IACqBA,wB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;MAEAD,MAAM,CAACE,IAAP,CAAY,4EAAZ;MACAF,MAAM,CAACE,IAAP,CAAY,UAAZ,EAAwBH,OAAO,CAACI,MAAR,IAAkB,KAA1C,EAAiDJ,OAAO,CAACK,GAAzD;MACAJ,MAAM,CAACE,IAAP,CAAY,oBAAZ,EAAkC,mBAAIH,OAAJ,EAAa,oBAAb,CAAlC;MACA;;MACA,IAAI,mBAAIA,OAAJ,EAAa,oBAAb,CAAJ,EAAwC;QACtCC,MAAM,CAACE,IAAP,CAAY,cAAZ,EAA4B,mBAAIH,OAAJ,EAAa,oBAAb,CAA5B;MACD;;MACD,IAAMM,GAAG,GAAG,IAAIC,IAAJ,EAAZ;;MAEA,IAAIC,OAAO,CAACC,GAAR,CAAYC,8BAAhB,EAAgD;QAC9CT,MAAM,CAACE,IAAP,CAAY,qBAAZ,EAAmCG,GAAG,CAACK,OAAJ,EAAnC,EAAkDL,GAAG,CAACM,WAAJ,EAAlD;;QACA,IAAI;UACF;UACA;UACA,IACEZ,OAAO,CAACa,IAAR,IACAb,OAAO,CAACa,IAAR,CAAaC,MADb,IAEA,CAAC,uBAAQd,OAAO,CAACa,IAAhB,CAFD,IAGA,CAAC,wBAASb,OAAO,CAACa,IAAjB,CAJH,EAKE;YACAZ,MAAM,CAACE,IAAP,CAAY,kBAAZ,EAAgCY,aAAA,CAAKC,OAAL,CAAa,oBAAKhB,OAAL,EAAc,MAAd,CAAb,EAAoC;cAACiB,KAAK,EAAE;YAAR,CAApC,CAAhC;UACD,CAPD,MAOO;YACLhB,MAAM,CAACE,IAAP,CAAY,kBAAZ,EAAgCY,aAAA,CAAKC,OAAL,CAAahB,OAAb,EAAsB;cAACiB,KAAK,EAAE;YAAR,CAAtB,CAAhC;UACD;QACF,CAbD,CAaE,OAAOC,CAAP,EAAU;UACVjB,MAAM,CAACkB,IAAP,CAAY,sCAAZ,EAAoDD,CAApD;QACD;MACF;;MAED,OAAO,iBAAQE,OAAR,CAAgBpB,OAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwBqB,MAAxB,EAAgC;MAC9B;MACA;MACA,KAAKC,SAAL,CAAetB,OAAf;MACA,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;MAEAD,MAAM,CAACsB,KAAP,CAAa,kBAAb,EAAiCF,MAAM,CAACG,KAAxC;MACAvB,MAAM,CAACE,IAAP,CAAY,2EAAZ;MAEA,OAAO,iBAAQsB,MAAR,CAAeJ,MAAf,CAAP;IACD;;;;IA/DD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAItB,wBAAJ,CAA6B;QAAC2B,KAAK,EAAE;MAAR,CAA7B,CAAP;IACD;;;EANmDC,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["ResponseLoggerInterceptor","options","response","now","Date","printResponseHeader","logger","console","process","env","ENABLE_VERBOSE_NETWORK_LOGGING","info","getTime","toISOString","body","isBuffer","util","inspect","depth","err","reason","error","reject","statusCode","$timings","networkEnd","networkStart","requestEnd","requestStart","webex","Interceptor"],"sources":["response-logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport {get, omit} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\nimport {isBuffer} from '@webex/common';\n\n/**\n * @class\n */\nexport default class ResponseLoggerInterceptor extends Interceptor {\n /**\n * @returns {ResponseLoggerInterceptor}\n */\n static create() {\n return new ResponseLoggerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const now = new Date();\n\n this.printResponseHeader(options, response);\n\n const logger = get(this, 'webex.logger', console);\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (end): ', now.getTime(), now.toISOString());\n if (typeof response.body === 'string' || isBuffer(response.body)) {\n logger.info('Response: ', 'Not printed, it`s probably a file');\n }\n else if (typeof response.body === 'object') {\n try {\n logger.info('Response: ', util.inspect(omit(response.body, 'features'), {depth: null}));\n }\n catch (err) {\n logger.info('Response: ', '[Not Serializable]', err);\n }\n }\n }\n logger.info('\\\\**********************************************************************/');\n\n return response;\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Object} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const now = new Date();\n\n this.printResponseHeader(options, reason);\n\n const logger = get(this, 'webex.logger', console);\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (end): ', now.getTime(), now.toISOString());\n try {\n logger.error('Response: ', util.inspect(reason.body, {depth: null}));\n }\n catch (err) {\n logger.error('Response: ', reason.body);\n }\n }\n logger.info('\\\\**********************************************************************/');\n\n return Promise.reject(reason);\n }\n\n /**\n * Prints the basic header\n * @param {Object} options\n * @param {HttpResponse|WebexHttpError} response\n * @returns {undefined}\n */\n printResponseHeader(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n logger.info('Status Code:', response.statusCode);\n logger.info('WEBEX_TRACKINGID:', get(options, 'headers.trackingid') || get(response, 'headers.trackingid'));\n logger.info('Network duration:', options.$timings.networkEnd - options.$timings.networkStart);\n logger.info('Processing duration:', options.$timings.requestEnd - options.$timings.requestStart);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ResponseLoggerInterceptor","options","response","now","Date","printResponseHeader","logger","console","process","env","ENABLE_VERBOSE_NETWORK_LOGGING","info","getTime","toISOString","body","isBuffer","util","inspect","depth","err","reason","error","reject","statusCode","$timings","networkEnd","networkStart","requestEnd","requestStart","webex","Interceptor"],"sources":["response-logger.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport util from 'util';\n\nimport {get, omit} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\nimport {isBuffer} from '@webex/common';\n\n/**\n * @class\n */\nexport default class ResponseLoggerInterceptor extends Interceptor {\n /**\n * @returns {ResponseLoggerInterceptor}\n */\n static create() {\n return new ResponseLoggerInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const now = new Date();\n\n this.printResponseHeader(options, response);\n\n const logger = get(this, 'webex.logger', console);\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (end): ', now.getTime(), now.toISOString());\n if (typeof response.body === 'string' || isBuffer(response.body)) {\n logger.info('Response: ', 'Not printed, it`s probably a file');\n } else if (typeof response.body === 'object') {\n try {\n logger.info('Response: ', util.inspect(omit(response.body, 'features'), {depth: null}));\n } catch (err) {\n logger.info('Response: ', '[Not Serializable]', err);\n }\n }\n }\n logger.info('\\\\**********************************************************************/');\n\n return response;\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Object} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const now = new Date();\n\n this.printResponseHeader(options, reason);\n\n const logger = get(this, 'webex.logger', console);\n\n if (process.env.ENABLE_VERBOSE_NETWORK_LOGGING) {\n logger.info('timestamp (end): ', now.getTime(), now.toISOString());\n try {\n logger.error('Response: ', util.inspect(reason.body, {depth: null}));\n } catch (err) {\n logger.error('Response: ', reason.body);\n }\n }\n logger.info('\\\\**********************************************************************/');\n\n return Promise.reject(reason);\n }\n\n /**\n * Prints the basic header\n * @param {Object} options\n * @param {HttpResponse|WebexHttpError} response\n * @returns {undefined}\n */\n printResponseHeader(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n logger.info('Status Code:', response.statusCode);\n logger.info(\n 'WEBEX_TRACKINGID:',\n get(options, 'headers.trackingid') || get(response, 'headers.trackingid')\n );\n logger.info('Network duration:', options.$timings.networkEnd - options.$timings.networkStart);\n logger.info(\n 'Processing duration:',\n options.$timings.requestEnd - options.$timings.requestStart\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["strings","UserAgentInterceptor","options","appName","appVersion","set","inBrowser","headers","get","webex","Interceptor"],"sources":["user-agent.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser} from '@webex/common';\nimport {Interceptor} from '@webex/http-core';\nimport {get} from 'lodash';\n\nconst strings = new WeakMap();\n\n/**\n * Sets a 'user-agent' header on all requests if one is not present.\n * Defaults to '@webex/http-core' though a custom user-agent can be set\n * using the appName and appVersion configuration. e.g.\n *\n * webex = WebexSdk.init({\n * credentials: {\n * supertoken: superToken\n * },\n * config: {\n * credentials: {\n * client_id,\n * client_secret\n * },\n * appName: 'custom-user-agent',\n * appVersion: '1.0',\n * }\n * });\n */\nexport default class UserAgentInterceptor extends Interceptor {\n /**\n * @param {Object} [options={}]\n * @param {WebexCore} [options.webex]\n * @private\n * @returns {UserAgentInterceptor}\n */\n constructor(options = {}) {\n const appName = get(options, 'webex.config.appName');\n const appVersion = get(options, 'webex.config.appVersion') || '0.0';\n\n super(options);\n if (appName) {\n strings.set(this, `${appName}/${appVersion}`);\n }\n else {\n strings.set(this, '@webex/http-core'); // Using the traditional default from http-core\n }\n }\n\n /**\n * @returns {UserAgentInterceptor}\n */\n static create() {\n return new UserAgentInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n // Do not set a custom user-agent for browsers\n if (inBrowser) {\n return options;\n }\n\n options.headers = options.headers || {};\n\n if ('user-agent' in options.headers && options.headers['spark-user-agent']) {\n return options;\n }\n\n options.headers['user-agent'] = strings.get(this);\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;;;;;AAGA,IAAMA,OAAO,GAAG,sBAAhB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACqBC,oB;;;;;EACnB;AACF;AACA;AACA;AACA;AACA;EACE,gCAA0B;IAAA;;IAAA,IAAdC,OAAc,uEAAJ,EAAI;IAAA;IACxB,IAAMC,OAAO,GAAG,mBAAID,OAAJ,EAAa,sBAAb,CAAhB;IACA,IAAME,UAAU,GAAG,mBAAIF,OAAJ,EAAa,yBAAb,KAA2C,KAA9D;IAEA,0BAAMA,OAAN;;IACA,IAAIC,OAAJ,EAAa;MACXH,OAAO,CAACK,GAAR,wDAAqBF,OAArB,cAAgCC,UAAhC;IACD,CAFD,MAGK;MACHJ,OAAO,CAACK,GAAR,8CAAkB,kBAAlB,EADG,CACoC;IACxC;;IAVuB;EAWzB;EAED;AACF;AACA;;;;;;IAKE;AACF;AACA;AACA;AACA;IACE,mBAAUH,OAAV,EAAmB;MACjB;MACA,IAAII,iBAAJ,EAAe;QACb,OAAOJ,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,GAAkBL,OAAO,CAACK,OAAR,IAAmB,EAArC;;MAEA,IAAI,gBAAgBL,OAAO,CAACK,OAAxB,IAAmCL,OAAO,CAACK,OAAR,CAAgB,kBAAhB,CAAvC,EAA4E;QAC1E,OAAOL,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,CAAgB,YAAhB,IAAgCP,OAAO,CAACQ,GAAR,CAAY,IAAZ,CAAhC;MAEA,OAAON,OAAP;IACD;;;WAxBD,kBAAgB;MACd,OAAO,IAAID,oBAAJ,CAAyB;QAACQ,KAAK,EAAE;MAAR,CAAzB,CAAP;IACD;;;EAzB+CC,qB"}
1
+ {"version":3,"names":["strings","UserAgentInterceptor","options","appName","appVersion","set","inBrowser","headers","get","webex","Interceptor"],"sources":["user-agent.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser} from '@webex/common';\nimport {Interceptor} from '@webex/http-core';\nimport {get} from 'lodash';\n\nconst strings = new WeakMap();\n\n/**\n * Sets a 'user-agent' header on all requests if one is not present.\n * Defaults to '@webex/http-core' though a custom user-agent can be set\n * using the appName and appVersion configuration. e.g.\n *\n * webex = WebexSdk.init({\n * credentials: {\n * supertoken: superToken\n * },\n * config: {\n * credentials: {\n * client_id,\n * client_secret\n * },\n * appName: 'custom-user-agent',\n * appVersion: '1.0',\n * }\n * });\n */\nexport default class UserAgentInterceptor extends Interceptor {\n /**\n * @param {Object} [options={}]\n * @param {WebexCore} [options.webex]\n * @private\n * @returns {UserAgentInterceptor}\n */\n constructor(options = {}) {\n const appName = get(options, 'webex.config.appName');\n const appVersion = get(options, 'webex.config.appVersion') || '0.0';\n\n super(options);\n if (appName) {\n strings.set(this, `${appName}/${appVersion}`);\n } else {\n strings.set(this, '@webex/http-core'); // Using the traditional default from http-core\n }\n }\n\n /**\n * @returns {UserAgentInterceptor}\n */\n static create() {\n return new UserAgentInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n // Do not set a custom user-agent for browsers\n if (inBrowser) {\n return options;\n }\n\n options.headers = options.headers || {};\n\n if ('user-agent' in options.headers && options.headers['spark-user-agent']) {\n return options;\n }\n\n options.headers['user-agent'] = strings.get(this);\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;;;;;AAGA,IAAMA,OAAO,GAAG,sBAAhB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACqBC,oB;;;;;EACnB;AACF;AACA;AACA;AACA;AACA;EACE,gCAA0B;IAAA;;IAAA,IAAdC,OAAc,uEAAJ,EAAI;IAAA;IACxB,IAAMC,OAAO,GAAG,mBAAID,OAAJ,EAAa,sBAAb,CAAhB;IACA,IAAME,UAAU,GAAG,mBAAIF,OAAJ,EAAa,yBAAb,KAA2C,KAA9D;IAEA,0BAAMA,OAAN;;IACA,IAAIC,OAAJ,EAAa;MACXH,OAAO,CAACK,GAAR,wDAAqBF,OAArB,cAAgCC,UAAhC;IACD,CAFD,MAEO;MACLJ,OAAO,CAACK,GAAR,8CAAkB,kBAAlB,EADK,CACkC;IACxC;;IATuB;EAUzB;EAED;AACF;AACA;;;;;;IAKE;AACF;AACA;AACA;AACA;IACE,mBAAUH,OAAV,EAAmB;MACjB;MACA,IAAII,iBAAJ,EAAe;QACb,OAAOJ,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,GAAkBL,OAAO,CAACK,OAAR,IAAmB,EAArC;;MAEA,IAAI,gBAAgBL,OAAO,CAACK,OAAxB,IAAmCL,OAAO,CAACK,OAAR,CAAgB,kBAAhB,CAAvC,EAA4E;QAC1E,OAAOL,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,CAAgB,YAAhB,IAAgCP,OAAO,CAACQ,GAAR,CAAY,IAAZ,CAAhC;MAEA,OAAON,OAAP;IACD;;;WAxBD,kBAAgB;MACd,OAAO,IAAID,oBAAJ,CAAyB;QAACQ,KAAK,EAAE;MAAR,CAAzB,CAAP;IACD;;;EAxB+CC,qB"}
@@ -1 +1 @@
1
- {"version":3,"names":["strings","WebexUserAgentInterceptor","options","libName","libVersion","set","inBrowser","headers","webex","config","appName","appVersion","appPlatform","sparkUserAgent","get","uri","includes","credentials","samlUrl","tokenUrl","authorizeUrl","Interceptor"],"sources":["webex-user-agent.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser} from '@webex/common';\nimport {Interceptor} from '@webex/http-core';\nimport {get} from 'lodash';\n\nconst strings = new WeakMap();\n\n/**\n * @class\n */\nexport default class WebexUserAgentInterceptor extends Interceptor {\n /**\n * @param {Object} [options={}]\n * @param {WebexCore} [options.webex]\n * @private\n * @returns {WebexUserAgentInterceptor}\n */\n constructor(options = {}) {\n const libName = get(options, 'webex.webex', false) ? 'webex' : 'webex-js-sdk';\n const libVersion = get(options, 'webex.version', 'development');\n\n super(options);\n strings.set(this, `${libName}/${libVersion} (${inBrowser ? 'web' : 'node'})`);\n }\n\n /**\n * @returns {WebexUserAgentInterceptor}\n */\n static create() {\n return new WebexUserAgentInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n const {\n appName,\n appVersion,\n appPlatform\n } = this.webex?.config ?? {};\n let sparkUserAgent = `${strings.get(this)}`;\n\n if (appName) {\n sparkUserAgent += ` ${appName}/${appVersion ?? '0.0'}`;\n }\n\n if (appPlatform) {\n sparkUserAgent += ` ${appPlatform}`;\n }\n\n if (options.uri && options.uri.includes('https://idbroker')) {\n return options;\n }\n\n if (\n options.uri &&\n (\n options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl)\n )\n ) {\n return options;\n }\n\n if ('spark-user-agent' in options.headers) {\n if (!options.headers['spark-user-agent']) {\n Reflect.deleteProperty(options.headers, 'spark-user-agent');\n }\n\n return options;\n }\n\n options.headers['spark-user-agent'] = sparkUserAgent;\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;;;;;AAGA,IAAMA,OAAO,GAAG,sBAAhB;AAEA;AACA;AACA;;IACqBC,yB;;;;;EACnB;AACF;AACA;AACA;AACA;AACA;EACE,qCAA0B;IAAA;;IAAA,IAAdC,OAAc,uEAAJ,EAAI;IAAA;IACxB,IAAMC,OAAO,GAAG,mBAAID,OAAJ,EAAa,aAAb,EAA4B,KAA5B,IAAqC,OAArC,GAA+C,cAA/D;IACA,IAAME,UAAU,GAAG,mBAAIF,OAAJ,EAAa,eAAb,EAA8B,aAA9B,CAAnB;IAEA,0BAAMA,OAAN;IACAF,OAAO,CAACK,GAAR,wDAAqBF,OAArB,cAAgCC,UAAhC,eAA+CE,iBAAA,GAAY,KAAZ,GAAoB,MAAnE;IALwB;EAMzB;EAED;AACF;AACA;;;;;;IAKE;AACF;AACA;AACA;AACA;IACE,mBAAUJ,OAAV,EAAmB;MAAA;;MACjBA,OAAO,CAACK,OAAR,GAAkBL,OAAO,CAACK,OAAR,IAAmB,EAArC;;MACA,gDAII,KAAKC,KAJT,gDAII,YAAYC,MAJhB,mEAI0B,EAJ1B;MAAA,IACEC,OADF,QACEA,OADF;MAAA,IAEEC,UAFF,QAEEA,UAFF;MAAA,IAGEC,WAHF,QAGEA,WAHF;;MAKA,IAAIC,cAAc,aAAMb,OAAO,CAACc,GAAR,CAAY,IAAZ,CAAN,CAAlB;;MAEA,IAAIJ,OAAJ,EAAa;QACXG,cAAc,eAAQH,OAAR,cAAmBC,UAAnB,aAAmBA,UAAnB,cAAmBA,UAAnB,GAAiC,KAAjC,CAAd;MACD;;MAED,IAAIC,WAAJ,EAAiB;QACfC,cAAc,eAAQD,WAAR,CAAd;MACD;;MAED,IAAIV,OAAO,CAACa,GAAR,IAAeb,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,kBAArB,CAAnB,EAA6D;QAC3D,OAAOd,OAAP;MACD;;MAED,IACEA,OAAO,CAACa,GAAR,KAEEb,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BC,OAAnD,KACAhB,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BE,QAAnD,CADA,IAEAjB,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BG,YAAnD,CAJF,CADF,EAOE;QACA,OAAOlB,OAAP;MACD;;MAED,IAAI,sBAAsBA,OAAO,CAACK,OAAlC,EAA2C;QACzC,IAAI,CAACL,OAAO,CAACK,OAAR,CAAgB,kBAAhB,CAAL,EAA0C;UACxC,6BAAuBL,OAAO,CAACK,OAA/B,EAAwC,kBAAxC;QACD;;QAED,OAAOL,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,CAAgB,kBAAhB,IAAsCM,cAAtC;MAEA,OAAOX,OAAP;IACD;;;WApDD,kBAAgB;MACd,OAAO,IAAID,yBAAJ,CAA8B;QAACO,KAAK,EAAE;MAAR,CAA9B,CAAP;IACD;;;EApBoDa,qB"}
1
+ {"version":3,"names":["strings","WebexUserAgentInterceptor","options","libName","libVersion","set","inBrowser","headers","webex","config","appName","appVersion","appPlatform","sparkUserAgent","get","uri","includes","credentials","samlUrl","tokenUrl","authorizeUrl","Interceptor"],"sources":["webex-user-agent.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {inBrowser} from '@webex/common';\nimport {Interceptor} from '@webex/http-core';\nimport {get} from 'lodash';\n\nconst strings = new WeakMap();\n\n/**\n * @class\n */\nexport default class WebexUserAgentInterceptor extends Interceptor {\n /**\n * @param {Object} [options={}]\n * @param {WebexCore} [options.webex]\n * @private\n * @returns {WebexUserAgentInterceptor}\n */\n constructor(options = {}) {\n const libName = get(options, 'webex.webex', false) ? 'webex' : 'webex-js-sdk';\n const libVersion = get(options, 'webex.version', 'development');\n\n super(options);\n strings.set(this, `${libName}/${libVersion} (${inBrowser ? 'web' : 'node'})`);\n }\n\n /**\n * @returns {WebexUserAgentInterceptor}\n */\n static create() {\n return new WebexUserAgentInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n const {appName, appVersion, appPlatform} = this.webex?.config ?? {};\n let sparkUserAgent = `${strings.get(this)}`;\n\n if (appName) {\n sparkUserAgent += ` ${appName}/${appVersion ?? '0.0'}`;\n }\n\n if (appPlatform) {\n sparkUserAgent += ` ${appPlatform}`;\n }\n\n if (options.uri && options.uri.includes('https://idbroker')) {\n return options;\n }\n\n if (\n options.uri &&\n (options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl))\n ) {\n return options;\n }\n\n if ('spark-user-agent' in options.headers) {\n if (!options.headers['spark-user-agent']) {\n Reflect.deleteProperty(options.headers, 'spark-user-agent');\n }\n\n return options;\n }\n\n options.headers['spark-user-agent'] = sparkUserAgent;\n\n return options;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;;;;;AAGA,IAAMA,OAAO,GAAG,sBAAhB;AAEA;AACA;AACA;;IACqBC,yB;;;;;EACnB;AACF;AACA;AACA;AACA;AACA;EACE,qCAA0B;IAAA;;IAAA,IAAdC,OAAc,uEAAJ,EAAI;IAAA;IACxB,IAAMC,OAAO,GAAG,mBAAID,OAAJ,EAAa,aAAb,EAA4B,KAA5B,IAAqC,OAArC,GAA+C,cAA/D;IACA,IAAME,UAAU,GAAG,mBAAIF,OAAJ,EAAa,eAAb,EAA8B,aAA9B,CAAnB;IAEA,0BAAMA,OAAN;IACAF,OAAO,CAACK,GAAR,wDAAqBF,OAArB,cAAgCC,UAAhC,eAA+CE,iBAAA,GAAY,KAAZ,GAAoB,MAAnE;IALwB;EAMzB;EAED;AACF;AACA;;;;;;IAKE;AACF;AACA;AACA;AACA;IACE,mBAAUJ,OAAV,EAAmB;MAAA;;MACjBA,OAAO,CAACK,OAAR,GAAkBL,OAAO,CAACK,OAAR,IAAmB,EAArC;;MACA,gDAA2C,KAAKC,KAAhD,gDAA2C,YAAYC,MAAvD,mEAAiE,EAAjE;MAAA,IAAOC,OAAP,QAAOA,OAAP;MAAA,IAAgBC,UAAhB,QAAgBA,UAAhB;MAAA,IAA4BC,WAA5B,QAA4BA,WAA5B;;MACA,IAAIC,cAAc,aAAMb,OAAO,CAACc,GAAR,CAAY,IAAZ,CAAN,CAAlB;;MAEA,IAAIJ,OAAJ,EAAa;QACXG,cAAc,eAAQH,OAAR,cAAmBC,UAAnB,aAAmBA,UAAnB,cAAmBA,UAAnB,GAAiC,KAAjC,CAAd;MACD;;MAED,IAAIC,WAAJ,EAAiB;QACfC,cAAc,eAAQD,WAAR,CAAd;MACD;;MAED,IAAIV,OAAO,CAACa,GAAR,IAAeb,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,kBAArB,CAAnB,EAA6D;QAC3D,OAAOd,OAAP;MACD;;MAED,IACEA,OAAO,CAACa,GAAR,KACCb,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BC,OAAnD,KACChB,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BE,QAAnD,CADD,IAECjB,OAAO,CAACa,GAAR,CAAYC,QAAZ,CAAqB,KAAKR,KAAL,CAAWC,MAAX,CAAkBQ,WAAlB,CAA8BG,YAAnD,CAHF,CADF,EAKE;QACA,OAAOlB,OAAP;MACD;;MAED,IAAI,sBAAsBA,OAAO,CAACK,OAAlC,EAA2C;QACzC,IAAI,CAACL,OAAO,CAACK,OAAR,CAAgB,kBAAhB,CAAL,EAA0C;UACxC,6BAAuBL,OAAO,CAACK,OAA/B,EAAwC,kBAAxC;QACD;;QAED,OAAOL,OAAP;MACD;;MAEDA,OAAO,CAACK,OAAR,CAAgB,kBAAhB,IAAsCM,cAAtC;MAEA,OAAOX,OAAP;IACD;;;WA9CD,kBAAgB;MACd,OAAO,IAAID,yBAAJ,CAA8B;QAACO,KAAK,EAAE;MAAR,CAA9B,CAAP;IACD;;;EApBoDa,qB"}