@webex/plugin-encryption 3.10.0-next.1 → 3.10.0-next.10

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.
@@ -1 +1 @@
1
- {"version":3,"names":["cypher"],"sources":["config.ts"],"sourcesContent":["export default {\n cypher: {},\n};\n"],"mappings":";;;;;;iCAAe;EACbA,MAAM,EAAE,CAAC;AACX,CAAC"}
1
+ {"version":3,"names":["cypher"],"sources":["config.ts"],"sourcesContent":["export default {\n cypher: {},\n};\n"],"mappings":";;;;;;iCAAe;EACbA,MAAM,EAAE,CAAC;AACX,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["CYPHER","exports","DECRYPTION","DECRYPTION_FAILED","DECRYPTION_IN_PROGRESS","DECRYPTION_SUCCESS"],"sources":["constants.ts"],"sourcesContent":["export const CYPHER = 'cypher';\nexport const DECRYPTION = 'decryption';\nexport const DECRYPTION_FAILED = 'decryptionFailed';\nexport const DECRYPTION_IN_PROGRESS = 'decryptionInProgress';\nexport const DECRYPTION_SUCCESS = 'decryptionSuccess';\n"],"mappings":";;;;;;AAAO,MAAMA,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,QAAQ;AACvB,MAAME,UAAU,GAAAD,OAAA,CAAAC,UAAA,GAAG,YAAY;AAC/B,MAAMC,iBAAiB,GAAAF,OAAA,CAAAE,iBAAA,GAAG,kBAAkB;AAC5C,MAAMC,sBAAsB,GAAAH,OAAA,CAAAG,sBAAA,GAAG,sBAAsB;AACrD,MAAMC,kBAAkB,GAAAJ,OAAA,CAAAI,kBAAA,GAAG,mBAAmB"}
1
+ {"version":3,"names":["CYPHER","exports","DECRYPTION","DECRYPTION_FAILED","DECRYPTION_IN_PROGRESS","DECRYPTION_SUCCESS"],"sources":["constants.ts"],"sourcesContent":["export const CYPHER = 'cypher';\nexport const DECRYPTION = 'decryption';\nexport const DECRYPTION_FAILED = 'decryptionFailed';\nexport const DECRYPTION_IN_PROGRESS = 'decryptionInProgress';\nexport const DECRYPTION_SUCCESS = 'decryptionSuccess';\n"],"mappings":";;;;;;AAAO,MAAMA,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,QAAQ;AACvB,MAAME,UAAU,GAAAD,OAAA,CAAAC,UAAA,GAAG,YAAY;AAC/B,MAAMC,iBAAiB,GAAAF,OAAA,CAAAE,iBAAA,GAAG,kBAAkB;AAC5C,MAAMC,sBAAsB,GAAAH,OAAA,CAAAG,sBAAA,GAAG,sBAAsB;AACrD,MAAMC,kBAAkB,GAAAJ,OAAA,CAAAI,kBAAA,GAAG,mBAAmB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_constants","Cypher","WebexPlugin","namespace","CYPHER","registered","constructor","args","$webex","webex","register","logger","info","Promise","resolve","internal","device","then","catch","error","deregister","unregister","downloadAndDecryptFile","fileUri","useFileService","options","keyUri","JWE","url","URL","searchParams","get","undefined","message","Error","stack","jwe","scr","encryption","decryptScr","download","enhancedError","cause","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["import {WebexPlugin} from '@webex/webex-core';\n\nimport {FileDownloadOptions, IEncryption} from './types';\nimport {CYPHER} from './constants';\nimport {WebexSDK} from '../types';\n\n/**\n * @description Encryption APIs for KMS\n * @class\n */\nclass Cypher extends WebexPlugin implements IEncryption {\n readonly namespace = CYPHER;\n private readonly $webex: WebexSDK;\n registered = false;\n\n /**\n * Constructs an instance of the class.\n *\n * @param {...any[]} args - The arguments to pass to the superclass constructor.\n *\n * @remarks\n * This constructor calls the superclass constructor with the provided arguments.\n * It also assigns the `webex` property to the `$webex` property, ignoring TypeScript errors.\n */\n constructor(...args: any[]) {\n super(...args);\n this.$webex = (this as WebexPlugin).webex as WebexSDK;\n }\n\n /**\n * Registers the device to WDM. This is required for metrics and other services.\n * @returns {Promise<void>}\n */\n async register() {\n if (this.registered) {\n this.$webex.logger.info('Cypher: webex.internal.device.register already done');\n\n return Promise.resolve();\n }\n\n return this.$webex.internal.device\n .register()\n .then(() => {\n this.$webex.logger.info('Cypher: webex.internal.device.register successful');\n this.registered = true;\n })\n .catch((error) => {\n this.$webex.logger.error(`Error occurred during device.register() ${error}`);\n\n throw error;\n });\n }\n\n /**\n * Deregisters the device.\n * @returns {Promise<void>}\n */\n async deregister() {\n if (!this.registered) {\n this.$webex.logger.info('Cypher: webex.internal.device.deregister already done');\n\n return Promise.resolve();\n }\n\n return this.$webex.internal.device\n .unregister()\n .then(() => {\n this.$webex.logger.info('Cypher: webex.internal.device.deregister successful');\n this.registered = false;\n })\n .catch((error) => {\n this.$webex.logger.error(`Error occurred during device.deregister() ${error}`);\n\n throw error;\n });\n }\n\n /**\n * Downloads and decrypts a file from the given URI.\n *\n * @param {string} fileUri - The URI of the file to be decrypted.\n * @param {FileDownloadOptions} options - The options for file download.\n * @returns {Promise<ArrayBuffer>} A promise that resolves to the decrypted ArrayBuffer.\n * @throws {Error} If the file download or decryption fails.\n *\n * @example\n * ```typescript\n * const attachmentURL = 'https:/myfileurl.xyz/zzz/fileid?keyUri=somekeyuri&JWE=somejwe';\n * const options: FileDownloadOptions = {\n * useFileService: false,\n * jwe: somejwe, // Provide the JWE here if not already present in the attachmentURL\n * keyUri: someKeyUri, // Provide the keyURI here if not already present in the attachmentURL\n * };\n * const decryptedBuf = await webex.cypher.downloadAndDecryptFile(attachmentURL, options);\n * const file = new File([decryptedBuf], \"myFileName.jpeg\", {type: 'image/jpeg'});\n * ```\n */\n public async downloadAndDecryptFile(\n fileUri: string,\n {useFileService = false, ...options}: FileDownloadOptions = {}\n ): Promise<ArrayBuffer> {\n // Sample fileUri: https://someserver.com/3cc29537-7f39-4cce-b204-a529960997fcab9375d8-4fd4-4788-bb12-18426674e95b.jpg?keyUri=kms://kms.wbx2.com/keys/79be16-a4dd-4195-93ef-a72604509aca&JWE=eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..EHYI5SmnFisaOJgv.6Ie3Zui7LFtAr4eWMSnxXAzfi8Cgixcy2b9jy9cImDWvBjjvJQfwik7qvZewCaq-u8lhtTbjEzsJLeVtOKhW_9RoZt3U0RQ-cKaSh2RaK3N_mvuH7_BsoXCMf5zxaqP1HD-3jXUtVSnqFYvEGdGRWxTCWK-PK9BoIUjX6v5t22CUNYbBQBuHizLWvrGAM0UkSvFNRX5n07Xd3WVJ7OnIhYi0JvOb50lbZIrBn27AQL-_CIKoOQxQLkW9zmVACsVpHxLZx9wIo9XYsBYADRTZaw_l_uTiosAd2P1QAGHgLr_Q_qf1wGUn3eGhmptpPx-YCSJikvs2DttwWOg_-vg4jI3EiIXlc0gGsDnleeNRguCLtrks0PMz5hOp5_w9Z5EW05Cx2UAztnp1hE9_nCvPP9wTzdHsG3flkK82HMbPpeVStWvWmAlzp24vTw2KzYrCemdS2AkrShWsNt6_G7_G8nB4RhUnZ11MKaduE5jYpCXNcTx84RBYwA.vqYHCx8uIn-IMQAsPvrw\n // KeyUri: An attachment level unique ID generated by Webex KMS post encryption of an attachment. In order to\n // decrypt an attachment, KeyUri is a required parameter.\n // JWE: JWE can be decrypted using KMS key to obtain the SCR key.\n // Decrypting an attachment requires the SCR key parameter.\n // We need to download the encrypted file from the given URI and then decrypt it using the SCR key.\n // The decrypted file is then returned.\n\n // step 1: parse the fileUri to get the keyUri and JWE\n // step 2: if keyUri and JWE are not present in the fileUri, use the options\n // step 3: use the keyUri to decrypt the JWE to get the SCR\n // step 4: download the file from the fileUri and decrypt it using the SCR\n\n let keyUri: string | undefined;\n let JWE: string | undefined;\n try {\n const url = new URL(fileUri);\n keyUri = url.searchParams.get('keyUri') ?? undefined;\n JWE = url.searchParams.get('JWE') ?? undefined;\n } catch (error) {\n this.$webex.logger.error(`Cypher: Invalid fileUri: ${(error as Error).message}`);\n throw new Error(\n `Failed to decrypt the JWE: ${(error as Error).message}\\nStack: ${(error as Error).stack}`\n );\n }\n\n // Check if the keyUri and JWE are present, else take it from options\n if (!keyUri || !JWE) {\n keyUri = options.keyUri;\n JWE = options.jwe;\n }\n\n // Check if the keyUri and JWE are present, else throw an error\n if (!keyUri || !JWE) {\n throw new Error(\n 'KeyUri and JWE are required to decrypt the file. Either provide them in the fileUri or in the options.'\n );\n }\n\n try {\n // Decrypt the JWE to get the SCR\n const scr = await this.$webex.internal.encryption.decryptScr(keyUri, JWE);\n\n // Start the download and decryption process, returning a promise\n return this.$webex.internal.encryption.download(fileUri, scr, {useFileService});\n } catch (error) {\n const enhancedError = new Error(\n `Failed to decrypt or download the file: ${(error as Error).message}\\nStack: ${\n (error as Error).stack\n }`\n );\n enhancedError.cause = error;\n throw enhancedError;\n }\n }\n}\n\nexport default Cypher;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_webexCore","require","_constants","Cypher","WebexPlugin","namespace","CYPHER","registered","constructor","args","$webex","webex","register","logger","info","Promise","resolve","internal","device","then","catch","error","deregister","unregister","downloadAndDecryptFile","fileUri","useFileService","options","keyUri","JWE","url","URL","searchParams","get","undefined","message","Error","stack","jwe","scr","encryption","decryptScr","download","enhancedError","cause","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["import {WebexPlugin} from '@webex/webex-core';\n\nimport {FileDownloadOptions, IEncryption} from './types';\nimport {CYPHER} from './constants';\nimport {WebexSDK} from '../types';\n\n/**\n * @description Encryption APIs for KMS\n * @class\n */\nclass Cypher extends WebexPlugin implements IEncryption {\n readonly namespace = CYPHER;\n private readonly $webex: WebexSDK;\n registered = false;\n\n /**\n * Constructs an instance of the class.\n *\n * @param {...any[]} args - The arguments to pass to the superclass constructor.\n *\n * @remarks\n * This constructor calls the superclass constructor with the provided arguments.\n * It also assigns the `webex` property to the `$webex` property, ignoring TypeScript errors.\n */\n constructor(...args: any[]) {\n super(...args);\n this.$webex = (this as WebexPlugin).webex as WebexSDK;\n }\n\n /**\n * Registers the device to WDM. This is required for metrics and other services.\n * @returns {Promise<void>}\n */\n async register() {\n if (this.registered) {\n this.$webex.logger.info('Cypher: webex.internal.device.register already done');\n\n return Promise.resolve();\n }\n\n return this.$webex.internal.device\n .register()\n .then(() => {\n this.$webex.logger.info('Cypher: webex.internal.device.register successful');\n this.registered = true;\n })\n .catch((error) => {\n this.$webex.logger.error(`Error occurred during device.register() ${error}`);\n\n throw error;\n });\n }\n\n /**\n * Deregisters the device.\n * @returns {Promise<void>}\n */\n async deregister() {\n if (!this.registered) {\n this.$webex.logger.info('Cypher: webex.internal.device.deregister already done');\n\n return Promise.resolve();\n }\n\n return this.$webex.internal.device\n .unregister()\n .then(() => {\n this.$webex.logger.info('Cypher: webex.internal.device.deregister successful');\n this.registered = false;\n })\n .catch((error) => {\n this.$webex.logger.error(`Error occurred during device.deregister() ${error}`);\n\n throw error;\n });\n }\n\n /**\n * Downloads and decrypts a file from the given URI.\n *\n * @param {string} fileUri - The URI of the file to be decrypted.\n * @param {FileDownloadOptions} options - The options for file download.\n * @returns {Promise<ArrayBuffer>} A promise that resolves to the decrypted ArrayBuffer.\n * @throws {Error} If the file download or decryption fails.\n *\n * @example\n * ```typescript\n * const attachmentURL = 'https:/myfileurl.xyz/zzz/fileid?keyUri=somekeyuri&JWE=somejwe';\n * const options: FileDownloadOptions = {\n * useFileService: false,\n * jwe: somejwe, // Provide the JWE here if not already present in the attachmentURL\n * keyUri: someKeyUri, // Provide the keyURI here if not already present in the attachmentURL\n * };\n * const decryptedBuf = await webex.cypher.downloadAndDecryptFile(attachmentURL, options);\n * const file = new File([decryptedBuf], \"myFileName.jpeg\", {type: 'image/jpeg'});\n * ```\n */\n public async downloadAndDecryptFile(\n fileUri: string,\n {useFileService = false, ...options}: FileDownloadOptions = {}\n ): Promise<ArrayBuffer> {\n // Sample fileUri: https://someserver.com/3cc29537-7f39-4cce-b204-a529960997fcab9375d8-4fd4-4788-bb12-18426674e95b.jpg?keyUri=kms://kms.wbx2.com/keys/79be16-a4dd-4195-93ef-a72604509aca&JWE=eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..EHYI5SmnFisaOJgv.6Ie3Zui7LFtAr4eWMSnxXAzfi8Cgixcy2b9jy9cImDWvBjjvJQfwik7qvZewCaq-u8lhtTbjEzsJLeVtOKhW_9RoZt3U0RQ-cKaSh2RaK3N_mvuH7_BsoXCMf5zxaqP1HD-3jXUtVSnqFYvEGdGRWxTCWK-PK9BoIUjX6v5t22CUNYbBQBuHizLWvrGAM0UkSvFNRX5n07Xd3WVJ7OnIhYi0JvOb50lbZIrBn27AQL-_CIKoOQxQLkW9zmVACsVpHxLZx9wIo9XYsBYADRTZaw_l_uTiosAd2P1QAGHgLr_Q_qf1wGUn3eGhmptpPx-YCSJikvs2DttwWOg_-vg4jI3EiIXlc0gGsDnleeNRguCLtrks0PMz5hOp5_w9Z5EW05Cx2UAztnp1hE9_nCvPP9wTzdHsG3flkK82HMbPpeVStWvWmAlzp24vTw2KzYrCemdS2AkrShWsNt6_G7_G8nB4RhUnZ11MKaduE5jYpCXNcTx84RBYwA.vqYHCx8uIn-IMQAsPvrw\n // KeyUri: An attachment level unique ID generated by Webex KMS post encryption of an attachment. In order to\n // decrypt an attachment, KeyUri is a required parameter.\n // JWE: JWE can be decrypted using KMS key to obtain the SCR key.\n // Decrypting an attachment requires the SCR key parameter.\n // We need to download the encrypted file from the given URI and then decrypt it using the SCR key.\n // The decrypted file is then returned.\n\n // step 1: parse the fileUri to get the keyUri and JWE\n // step 2: if keyUri and JWE are not present in the fileUri, use the options\n // step 3: use the keyUri to decrypt the JWE to get the SCR\n // step 4: download the file from the fileUri and decrypt it using the SCR\n\n let keyUri: string | undefined;\n let JWE: string | undefined;\n try {\n const url = new URL(fileUri);\n keyUri = url.searchParams.get('keyUri') ?? undefined;\n JWE = url.searchParams.get('JWE') ?? undefined;\n } catch (error) {\n this.$webex.logger.error(`Cypher: Invalid fileUri: ${(error as Error).message}`);\n throw new Error(\n `Failed to decrypt the JWE: ${(error as Error).message}\\nStack: ${(error as Error).stack}`\n );\n }\n\n // Check if the keyUri and JWE are present, else take it from options\n if (!keyUri || !JWE) {\n keyUri = options.keyUri;\n JWE = options.jwe;\n }\n\n // Check if the keyUri and JWE are present, else throw an error\n if (!keyUri || !JWE) {\n throw new Error(\n 'KeyUri and JWE are required to decrypt the file. Either provide them in the fileUri or in the options.'\n );\n }\n\n try {\n // Decrypt the JWE to get the SCR\n const scr = await this.$webex.internal.encryption.decryptScr(keyUri, JWE);\n\n // Start the download and decryption process, returning a promise\n return this.$webex.internal.encryption.download(fileUri, scr, {useFileService});\n } catch (error) {\n const enhancedError = new Error(\n `Failed to decrypt or download the file: ${(error as Error).message}\\nStack: ${\n (error as Error).stack\n }`\n );\n enhancedError.cause = error;\n throw enhancedError;\n }\n }\n}\n\nexport default Cypher;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Options for downloading a file with encryption.\n */\ninterface FileDownloadOptions {\n /**\n * Indicates whether to use the file service for downloading.\n * If true, the webex files service will be used.\n * If false or undefined, the file will be downloaded directly from the URL.\n */\n useFileService?: boolean;\n\n /**\n * The JSON Web Encryption (JWE) string used for decrypting the file.\n * This is a required parameter if the url does not contain the JWE.\n */\n jwe?: string;\n\n /**\n * The URI of the key used for decrypting the file.\n * This is a required parameter if the url does not contain the keyUri.\n */\n keyUri?: string;\n}\ninterface IEncryption {\n downloadAndDecryptFile(fileUri: string, options: FileDownloadOptions): Promise<ArrayBuffer>;\n}\n\nexport type {IEncryption, FileDownloadOptions};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Options for downloading a file with encryption.\n */\ninterface FileDownloadOptions {\n /**\n * Indicates whether to use the file service for downloading.\n * If true, the webex files service will be used.\n * If false or undefined, the file will be downloaded directly from the URL.\n */\n useFileService?: boolean;\n\n /**\n * The JSON Web Encryption (JWE) string used for decrypting the file.\n * This is a required parameter if the url does not contain the JWE.\n */\n jwe?: string;\n\n /**\n * The URI of the key used for decrypting the file.\n * This is a required parameter if the url does not contain the keyUri.\n */\n keyUri?: string;\n}\ninterface IEncryption {\n downloadAndDecryptFile(fileUri: string, options: FileDownloadOptions): Promise<ArrayBuffer>;\n}\n\nexport type {IEncryption, FileDownloadOptions};\n"],"mappings":"","ignoreList":[]}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  var _webexCore = require("@webex/webex-core");
8
8
  var _cypher = _interopRequireDefault(require("./cypher"));
9
9
  var _config = _interopRequireDefault(require("./config"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  /* eslint-env browser */
12
12
 
13
13
  (0, _webexCore.registerPlugin)('cypher', _cypher.default, {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_cypher","_interopRequireDefault","_config","obj","__esModule","default","registerPlugin","Cypher","config","_default","exports"],"sources":["index.ts"],"sourcesContent":["/* eslint-env browser */\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Cypher from './cypher';\nimport config from './config';\nimport {FileDownloadOptions, IEncryption} from './cypher/types';\n\nregisterPlugin('cypher', Cypher, {\n config,\n});\n\nexport default Cypher;\nexport type {FileDownloadOptions, IEncryption};\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA8B,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAJ9B;;AAOA,IAAAG,yBAAc,EAAC,QAAQ,EAAEC,eAAM,EAAE;EAC/BC,MAAM,EAANA;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAL,OAAA,GAEYE,eAAM"}
1
+ {"version":3,"names":["_webexCore","require","_cypher","_interopRequireDefault","_config","e","__esModule","default","registerPlugin","Cypher","config","_default","exports"],"sources":["index.ts"],"sourcesContent":["/* eslint-env browser */\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Cypher from './cypher';\nimport config from './config';\nimport {FileDownloadOptions, IEncryption} from './cypher/types';\n\nregisterPlugin('cypher', Cypher, {\n config,\n});\n\nexport default Cypher;\nexport type {FileDownloadOptions, IEncryption};\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA8B,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJ9B;;AAOA,IAAAG,yBAAc,EAAC,QAAQ,EAAEC,eAAM,EAAE;EAC/BC,MAAM,EAANA;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAL,OAAA,GAEYE,eAAM","ignoreList":[]}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Logging related types\n */\nexport type Logger = {\n log: (payload: string) => void;\n error: (payload: string) => void;\n warn: (payload: string) => void;\n info: (payload: string) => void;\n trace: (payload: string) => void;\n debug: (payload: string) => void;\n};\n\ninterface IWebexInternal {\n mercury: {\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n };\n device: {\n register: () => Promise<void>;\n unregister: () => Promise<void>;\n };\n encryption: {\n decryptScr: (keyUri: string, jwe: string) => Promise<string>;\n download: (\n fileUri: string,\n scr: string,\n options: {useFileService: boolean}\n ) => Promise<ArrayBuffer>;\n };\n}\n\nexport interface WebexSDK {\n version: string;\n canAuthorize: boolean;\n credentials: {\n getUserToken: () => Promise<string>;\n getOrgId: () => string;\n };\n ready: boolean;\n once: (event: string, callBack: () => void) => void;\n // internal plugins\n internal: IWebexInternal;\n // public plugins\n logger: Logger;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Logging related types\n */\nexport type Logger = {\n log: (payload: string) => void;\n error: (payload: string) => void;\n warn: (payload: string) => void;\n info: (payload: string) => void;\n trace: (payload: string) => void;\n debug: (payload: string) => void;\n};\n\ninterface IWebexInternal {\n mercury: {\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n };\n device: {\n register: () => Promise<void>;\n unregister: () => Promise<void>;\n };\n encryption: {\n decryptScr: (keyUri: string, jwe: string) => Promise<string>;\n download: (\n fileUri: string,\n scr: string,\n options: {useFileService: boolean}\n ) => Promise<ArrayBuffer>;\n };\n}\n\nexport interface WebexSDK {\n version: string;\n canAuthorize: boolean;\n credentials: {\n getUserToken: () => Promise<string>;\n getOrgId: () => string;\n };\n ready: boolean;\n once: (event: string, callBack: () => void) => void;\n // internal plugins\n internal: IWebexInternal;\n // public plugins\n logger: Logger;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_default","exports","default","hydra","process","env","HYDRA_SERVICE_URL","hydraServiceUrl","credentials","device","validateDomains","ephemeral","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["webex-config.ts"],"sourcesContent":["import {MemoryStoreAdapter} from '@webex/webex-core';\n\nexport default {\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 credentials: {},\n device: {\n validateDomains: true,\n ephemeral: true,\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter,\n },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC;EACbC,KAAK,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,+BAA+B;EACvEC,eAAe,EAAEH,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,+BAA+B;EACjFE,WAAW,EAAE,CAAC,CAAC;EACfC,MAAM,EAAE;IACNC,eAAe,EAAE,IAAI;IACrBC,SAAS,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACPC,cAAc,EAAEC,6BAAkB;IAClCC,gBAAgB,EAAED;EACpB;AACF,CAAC"}
1
+ {"version":3,"names":["_webexCore","require","_default","exports","default","hydra","process","env","HYDRA_SERVICE_URL","hydraServiceUrl","credentials","device","validateDomains","ephemeral","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["webex-config.ts"],"sourcesContent":["import {MemoryStoreAdapter} from '@webex/webex-core';\n\nexport default {\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 credentials: {},\n device: {\n validateDomains: true,\n ephemeral: true,\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter,\n },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC;EACbC,KAAK,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,+BAA+B;EACvEC,eAAe,EAAEH,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,+BAA+B;EACjFE,WAAW,EAAE,CAAC,CAAC;EACfC,MAAM,EAAE;IACNC,eAAe,EAAE,IAAI;IACrBC,SAAS,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACPC,cAAc,EAAEC,6BAAkB;IAClCC,gBAAgB,EAAED;EACpB;AACF,CAAC","ignoreList":[]}
package/dist/webex.js CHANGED
@@ -21,7 +21,7 @@ const WebexCore = require('@webex/webex-core').default;
21
21
  const config = require('./webex-config');
22
22
  const Webex = WebexCore.extend({
23
23
  webex: true,
24
- version: `3.10.0-next.1`
24
+ version: `3.10.0-next.10`
25
25
  });
26
26
  Webex.init = function init(attrs = {}) {
27
27
  attrs.config = merge({}, config, attrs.config); // eslint-disable-line no-param-reassign
package/dist/webex.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["global","_babelPolyfill","require","merge","WebexCore","default","config","Webex","extend","webex","version","init","attrs","module","exports"],"sources":["webex.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See the LICENSE file.\n */\n\n// Note: this file is written using commonjs instead of import/export to\n// simplify consumption by those less familiar with the current state of\n// JavaScript modularization\n\n/* istanbul ignore else */\nif (!global._babelPolyfill) {\n /* eslint global-require: [0] */\n require('@babel/polyfill');\n}\n\nrequire('@webex/plugin-authorization');\nrequire('@webex/internal-plugin-encryption'); // required\nrequire('./index');\n\nconst merge = require('lodash/merge');\nconst WebexCore = require('@webex/webex-core').default;\n\nconst config = require('./webex-config');\n\nconst Webex = WebexCore.extend({\n webex: true,\n version: PACKAGE_VERSION,\n});\n\nWebex.init = function init(attrs = {}) {\n attrs.config = merge({}, config, attrs.config); // eslint-disable-line no-param-reassign\n\n return new Webex(attrs);\n};\n\nmodule.exports = Webex;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,CAACA,MAAM,CAACC,cAAc,EAAE;EAC1B;EACAC,OAAO,CAAC,iBAAiB,CAAC;AAC5B;AAEAA,OAAO,CAAC,6BAA6B,CAAC;AACtCA,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC9CA,OAAO,CAAC,SAAS,CAAC;AAElB,MAAMC,KAAK,GAAGD,OAAO,CAAC,cAAc,CAAC;AACrC,MAAME,SAAS,GAAGF,OAAO,CAAC,mBAAmB,CAAC,CAACG,OAAO;AAEtD,MAAMC,MAAM,GAAGJ,OAAO,CAAC,gBAAgB,CAAC;AAExC,MAAMK,KAAK,GAAGH,SAAS,CAACI,MAAM,CAAC;EAC7BC,KAAK,EAAE,IAAI;EACXC,OAAO;AACT,CAAC,CAAC;AAEFH,KAAK,CAACI,IAAI,GAAG,SAASA,IAAIA,CAACC,KAAK,GAAG,CAAC,CAAC,EAAE;EACrCA,KAAK,CAACN,MAAM,GAAGH,KAAK,CAAC,CAAC,CAAC,EAAEG,MAAM,EAAEM,KAAK,CAACN,MAAM,CAAC,CAAC,CAAC;;EAEhD,OAAO,IAAIC,KAAK,CAACK,KAAK,CAAC;AACzB,CAAC;AAEDC,MAAM,CAACC,OAAO,GAAGP,KAAK"}
1
+ {"version":3,"names":["global","_babelPolyfill","require","merge","WebexCore","default","config","Webex","extend","webex","version","init","attrs","module","exports"],"sources":["webex.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See the LICENSE file.\n */\n\n// Note: this file is written using commonjs instead of import/export to\n// simplify consumption by those less familiar with the current state of\n// JavaScript modularization\n\n/* istanbul ignore else */\nif (!global._babelPolyfill) {\n /* eslint global-require: [0] */\n require('@babel/polyfill');\n}\n\nrequire('@webex/plugin-authorization');\nrequire('@webex/internal-plugin-encryption'); // required\nrequire('./index');\n\nconst merge = require('lodash/merge');\nconst WebexCore = require('@webex/webex-core').default;\n\nconst config = require('./webex-config');\n\nconst Webex = WebexCore.extend({\n webex: true,\n version: PACKAGE_VERSION,\n});\n\nWebex.init = function init(attrs = {}) {\n attrs.config = merge({}, config, attrs.config); // eslint-disable-line no-param-reassign\n\n return new Webex(attrs);\n};\n\nmodule.exports = Webex;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,CAACA,MAAM,CAACC,cAAc,EAAE;EAC1B;EACAC,OAAO,CAAC,iBAAiB,CAAC;AAC5B;AAEAA,OAAO,CAAC,6BAA6B,CAAC;AACtCA,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC9CA,OAAO,CAAC,SAAS,CAAC;AAElB,MAAMC,KAAK,GAAGD,OAAO,CAAC,cAAc,CAAC;AACrC,MAAME,SAAS,GAAGF,OAAO,CAAC,mBAAmB,CAAC,CAACG,OAAO;AAEtD,MAAMC,MAAM,GAAGJ,OAAO,CAAC,gBAAgB,CAAC;AAExC,MAAMK,KAAK,GAAGH,SAAS,CAACI,MAAM,CAAC;EAC7BC,KAAK,EAAE,IAAI;EACXC,OAAO;AACT,CAAC,CAAC;AAEFH,KAAK,CAACI,IAAI,GAAG,SAASA,IAAIA,CAACC,KAAK,GAAG,CAAC,CAAC,EAAE;EACrCA,KAAK,CAACN,MAAM,GAAGH,KAAK,CAAC,CAAC,CAAC,EAAEG,MAAM,EAAEM,KAAK,CAACN,MAAM,CAAC,CAAC,CAAC;;EAEhD,OAAO,IAAIC,KAAK,CAACK,KAAK,CAAC;AACzB,CAAC;AAEDC,MAAM,CAACC,OAAO,GAAGP,KAAK","ignoreList":[]}
package/package.json CHANGED
@@ -40,8 +40,8 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@webex/internal-plugin-encryption": "3.10.0-next.1",
44
- "@webex/webex-core": "3.10.0-next.1"
43
+ "@webex/internal-plugin-encryption": "3.10.0-next.10",
44
+ "@webex/webex-core": "3.10.0-next.10"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@babel/core": "^7.22.11",
@@ -51,7 +51,7 @@
51
51
  "@webex/eslint-config-legacy": "0.0.0",
52
52
  "@webex/jest-config-legacy": "0.0.0",
53
53
  "@webex/legacy-tools": "0.0.0",
54
- "@webex/test-helper-mock-webex": "3.8.1-next.11",
54
+ "@webex/test-helper-mock-webex": "3.10.0-next.1",
55
55
  "eslint": "^8.24.0",
56
56
  "jest-html-reporters": "3.0.11",
57
57
  "jest-junit": "13.0.0",
@@ -65,5 +65,5 @@
65
65
  "engines": {
66
66
  "node": ">=16"
67
67
  },
68
- "version": "3.10.0-next.1"
68
+ "version": "3.10.0-next.10"
69
69
  }