{"version":3,"file":"encrypt-and-decrypt.cjs","sources":["../../../src/des/base/encrypt-and-decrypt.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { BinaryLike } from 'node:crypto';\nimport type { TransformOptions } from 'node:stream';\n\nimport type {\n    BaseEncryptResult,\n    DesCipherEncodingOptions,\n    Result,\n} from '../../types';\n\nimport { BaseDesCipher } from './';\n\nexport abstract class BaseDesEncryptAndDecrypt extends BaseDesCipher {\n    decrypt(\n        encryptedData: BinaryLike,\n        iv: BinaryLike,\n        encodingOptions?: DesCipherEncodingOptions.Decrypt,\n        decipherOptions?: TransformOptions,\n    ): Result<string> {\n        try {\n            const decipher = this.createDecipher(\n                this.dataToBuffer(iv, encodingOptions?.iv || this.encodingOptions.iv),\n                decipherOptions,\n            );\n\n            return this.createOkResult(this.getDecipherResult(decipher, encryptedData, encodingOptions));\n        } catch (error) {\n            return this.createErrorResult(error);\n        }\n    }\n\n    decryptToJson<T = any>(\n        encryptedData: BinaryLike,\n        iv: BinaryLike,\n        encodingOptions?: DesCipherEncodingOptions.Decrypt,\n        decipherOptions?: TransformOptions,\n    ): Result<T> {\n        const result = this.decrypt(encryptedData, iv, encodingOptions, decipherOptions);\n        if (!result.ok) return result;\n        return this.parseJson<T>(result.value);\n    }\n\n    encrypt(\n        data: BinaryLike,\n        encodingOptions?: DesCipherEncodingOptions.Encrypt,\n        cipherOptions?: TransformOptions,\n    ): BaseEncryptResult {\n        const iv = randomBytes(8);\n        try {\n            return this.createOkResult({\n                data: this.getCipherResult(this.createCipher(iv, cipherOptions), data, encodingOptions),\n                iv: iv.toString(encodingOptions?.iv || this.encodingOptions.iv),\n            });\n        } catch (error) {\n            return this.createErrorResult(error);\n        }\n    }\n\n    encryptJson(\n        data: any,\n        encodingOptions?: DesCipherEncodingOptions.Encrypt,\n        cipherOptions?: TransformOptions,\n    ): BaseEncryptResult {\n        try {\n            return this.encrypt(JSON.stringify(data), encodingOptions, cipherOptions);\n        } catch (error) {\n            return this.createErrorResult(error);\n        }\n    }\n}\n"],"names":["BaseDesCipher","randomBytes"],"mappings":";;;;;AAYM,MAAgB,wBAAyB,SAAQA,mBAAa,CAAA;AAChE,IAAA,OAAO,CACH,aAAyB,EACzB,EAAc,EACd,eAAkD,EAClD,eAAkC,EAAA;AAElC,QAAA,IAAI;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAChC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EACrE,eAAe,CAClB;AAED,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;;QAC9F,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;;AAI5C,IAAA,aAAa,CACT,aAAyB,EACzB,EAAc,EACd,eAAkD,EAClD,eAAkC,EAAA;AAElC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,EAAE;AAAE,YAAA,OAAO,MAAM;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAI,MAAM,CAAC,KAAK,CAAC;;AAG1C,IAAA,OAAO,CACH,IAAgB,EAChB,eAAkD,EAClD,aAAgC,EAAA;AAEhC,QAAA,MAAM,EAAE,GAAGC,uBAAW,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI;YACA,OAAO,IAAI,CAAC,cAAc,CAAC;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC;AACvF,gBAAA,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAClE,aAAA,CAAC;;QACJ,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;;AAI5C,IAAA,WAAW,CACP,IAAS,EACT,eAAkD,EAClD,aAAgC,EAAA;AAEhC,QAAA,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC;;QAC3E,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;;AAG/C;;;;"}