{"version":3,"sources":["jsdelivr-header.js","/npm/@webex/internal-plugin-encryption@3.10.0/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,0tBCIA,QAAA,iCAEA,QAAA,kCAEA,IASI,aATJ,WAAA,QAAA,qBACA,QAAA,QAAA,UAEA,YAAA,uBAAA,QAAA,iBACA,QAAA,uBAAA,QAAA,aACA,WAAA,QAAA,gBAEA,wBAAA,uBAAA,QAAA,gCAwIA,KAAA,uBAAA,QAAA,UApI6B,SAAzB,QAAQ,IAAI,WACd,aAAe,CACb,uBAAwB,gCAAuB,UAInD,EAAA,mCAAuB,aAAc,oBAAY,CAC/C,mBAAoB,CAClB,WAAY,CACV,CACE,KAAM,oBACN,UAAW,WAGX,KAAI,SAAC,EAAK,GACR,OAAK,EAAA,aAAI,EAAS,qBAIb,EAAA,kBAAS,EAAQ,KAAK,YAQvB,EAAQ,KAAK,WAAW,SAAsD,IAA3C,EAAQ,KAAK,WAAW,QAAQ,QAIrE,EAAQ,KAAK,WAAW,cACvB,EAAQ,KAAK,WAAW,YAAY,SAAS,UAC5C,EAAQ,KAAK,WAAW,YAAY,SAAS,cAK/C,EAAQ,KAAK,WAAW,MACvB,EAAQ,KAAK,WAAW,IAAI,SAAS,UACpC,EAAQ,KAAK,WAAW,IAAI,SAAS,aAZhC,SAAA,QAAQ,SAAQ,GAiBlB,SAAA,QAAQ,SAAQ,GA7Bd,SAAA,QAAQ,SAAQ,EA8B3B,EACA,QAAO,SAAC,GACN,OAAO,SAAA,QAAQ,QAAQ,EAAQ,KACjC,GAEF,CACE,KAAM,oBACN,UAAW,UACX,KAAI,SAAC,EAAK,GACR,OAAO,SAAA,QAAQ,SACb,EAAA,aAAI,EAAU,qBAAsB,EAAA,kBAAS,EAAS,KAAK,YAE/D,EACA,QAAO,SAAC,GACN,OAAO,SAAA,QAAQ,QAAQ,EAAS,KAClC,GAEF,CACE,KAAM,uBACN,UAAW,UACX,KAAI,SAAC,EAAK,GACR,OAAO,SAAA,QAAQ,QAAQ,QAAQ,EAAO,MAAkC,OAA1B,EAAO,KAAK,WAC5D,EACA,QAAO,SAAC,GACN,OAAO,SAAA,QAAQ,QAAQ,EACzB,IAGJ,WAAY,CACV,CACE,KAAM,oBACN,GAAE,SAAC,EAAK,GACN,OAAK,GAIA,EAAO,YAIR,EAAA,kBAAS,EAAO,YACX,SAAA,QAAQ,UAGV,EAAI,MAAM,SAAS,WAAW,IAAI,eAAe,EAAO,YAAY,MAAK,SAAC,GAC/E,EAAO,WAAa,EAAI,OAC1B,IAbS,SAAA,QAAQ,SAcnB,GAEF,CACE,KAAM,oBACN,GAAE,SAAC,EAAK,GACN,OAAO,EAAI,MAAM,SAAS,WAAW,IAClC,kBAAkB,EAAO,YACzB,MAAK,SAAC,GACL,EAAO,WAAa,CACtB,GACJ,GAEF,CACE,KAAM,uBACN,GAAE,SAAC,EAAK,GACN,IAAM,EAAW,EAAO,KAAK,OAAO,KAAI,SAAC,GAAK,OAC5C,EAAI,MAAM,SAAS,WAAW,IAAI,kBAAkB,EAAM,aAAa,MAAK,SAAC,GAC3E,EAAM,YAAc,CACtB,GAAE,IAWJ,OARA,EAAS,KACP,EAAI,MAAM,SAAS,WAAW,IAC3B,kBAAkB,EAAO,KAAK,SAC9B,MAAK,SAAC,GACL,EAAO,KAAK,QAAU,CACxB,KAGG,SAAA,QAAQ,IAAI,GAAU,MAAK,kBAAM,SAAA,QAAQ,OAAO,IAAI,oBAAS,GAAQ,GAC9E,KAIN,0BACA","file":"/npm/@webex/internal-plugin-encryption@3.10.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@webex/internal-plugin-encryption@3.10.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n// Note: There's a bug where if bind gets replayed because of a timeout in which\n// the original request eventually completed, there'll be an error indicating\n// the key can't be bound (because it already has been). This could be mitigated\n// by using Promise.race to resolve replays (as more requests get enqueue for a\n// specific action, accept whichever one completes first).\n\nimport '@webex/internal-plugin-device';\n\nimport '@webex/internal-plugin-mercury';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has, isObject, isString} from 'lodash';\n\nimport Encryption from './encryption';\nimport config from './config';\nimport {DryError} from './kms-errors';\n\nimport KmsDryErrorInterceptor from './kms-dry-error-interceptor';\n\nlet interceptors;\n\nif (process.env.NODE_ENV === 'test') {\n  interceptors = {\n    KmsDryErrorInterceptor: KmsDryErrorInterceptor.create,\n  };\n}\n\nregisterInternalPlugin('encryption', Encryption, {\n  payloadTransformer: {\n    predicates: [\n      {\n        name: 'encryptKmsMessage',\n        direction: 'outbound',\n        // I don't see any practical way to reduce complexity here.\n        // eslint-disable-next-line complexity\n        test(ctx, options) {\n          if (!has(options, 'body.kmsMessage')) {\n            return Promise.resolve(false);\n          }\n\n          if (!isObject(options.body.kmsMessage)) {\n            return Promise.resolve(false);\n          }\n\n          // If this is a template for a kms message, assume another transform\n          // will fill it in later. This is a bit of a leaky abstraction, but the\n          // alternative is building a complex rules engine for controlling\n          // ordering of transforms\n          if (options.body.kmsMessage.keyUris && options.body.kmsMessage.keyUris.length === 0) {\n            return Promise.resolve(false);\n          }\n          if (\n            options.body.kmsMessage.resourceUri &&\n            (options.body.kmsMessage.resourceUri.includes('<KRO>') ||\n              options.body.kmsMessage.resourceUri.includes('<KEYURL>'))\n          ) {\n            return Promise.resolve(false);\n          }\n          if (\n            options.body.kmsMessage.uri &&\n            (options.body.kmsMessage.uri.includes('<KRO>') ||\n              options.body.kmsMessage.uri.includes('<KEYURL>'))\n          ) {\n            return Promise.resolve(false);\n          }\n\n          return Promise.resolve(true);\n        },\n        extract(options) {\n          return Promise.resolve(options.body);\n        },\n      },\n      {\n        name: 'decryptKmsMessage',\n        direction: 'inbound',\n        test(ctx, response) {\n          return Promise.resolve(\n            has(response, 'body.kmsMessage') && isString(response.body.kmsMessage)\n          );\n        },\n        extract(response) {\n          return Promise.resolve(response.body);\n        },\n      },\n      {\n        name: 'decryptErrorResponse',\n        direction: 'inbound',\n        test(ctx, reason) {\n          return Promise.resolve(Boolean(reason.body && reason.body.errorCode === 1900000));\n        },\n        extract(reason) {\n          return Promise.resolve(reason);\n        },\n      },\n    ],\n    transforms: [\n      {\n        name: 'encryptKmsMessage',\n        fn(ctx, object) {\n          if (!object) {\n            return Promise.resolve();\n          }\n\n          if (!object.kmsMessage) {\n            return Promise.resolve();\n          }\n\n          if (isString(object.kmsMessage)) {\n            return Promise.resolve();\n          }\n\n          return ctx.webex.internal.encryption.kms.prepareRequest(object.kmsMessage).then((req) => {\n            object.kmsMessage = req.wrapped;\n          });\n        },\n      },\n      {\n        name: 'decryptKmsMessage',\n        fn(ctx, object) {\n          return ctx.webex.internal.encryption.kms\n            .decryptKmsMessage(object.kmsMessage)\n            .then((kmsMessage) => {\n              object.kmsMessage = kmsMessage;\n            });\n        },\n      },\n      {\n        name: 'decryptErrorResponse',\n        fn(ctx, reason) {\n          const promises = reason.body.errors.map((error) =>\n            ctx.webex.internal.encryption.kms.decryptKmsMessage(error.description).then((desc) => {\n              error.description = desc;\n            })\n          );\n\n          promises.push(\n            ctx.webex.internal.encryption.kms\n              .decryptKmsMessage(reason.body.message)\n              .then((kmsMessage) => {\n                reason.body.message = kmsMessage;\n              })\n          );\n\n          return Promise.all(promises).then(() => Promise.reject(new DryError(reason)));\n        },\n      },\n    ],\n  },\n  interceptors,\n  config,\n});\n\nexport {default} from './encryption';\nexport {default as KMS} from './kms';\nexport {KmsError, DryError} from './kms-errors';\n"]}