UNPKG

node-ciphers

Version:

Lightweight AES and DES encryption library for Node.js, featuring flexible encoding, multiple cipher modes, and TypeScript support.

50 lines (48 loc) 1.5 kB
import { defaultEncodingOptions } from "./constants.js"; import { Buffer } from "node:buffer"; //#region src/_internals/base-cipher.ts var BaseCipher = class { #encodingOptions; constructor(encodingOptions) { this.#encodingOptions = { ...defaultEncodingOptions, ...encodingOptions }; } get encodingOptions() { return this.#encodingOptions; } createErrorResult(error) { return { error, ok: false }; } createOkResult(value) { return { ok: true, value }; } dataToBuffer(data, encoding) { return typeof data === "string" ? Buffer.from(data, encoding) : data; } getCipherResult(cipher, data, encodingOptions) { const outputEncoding = encodingOptions?.encryptOutput || this.#encodingOptions.encryptOutput; return cipher.update(this.dataToBuffer(data, encodingOptions?.encryptInput || this.#encodingOptions.encryptInput), void 0, outputEncoding) + cipher.final(outputEncoding); } getDecipherResult(decipher, encryptedData, encodingOptions) { const outputEncoding = encodingOptions?.decryptOutput || this.#encodingOptions.decryptOutput; return decipher.update(this.dataToBuffer(encryptedData, encodingOptions?.decryptInput || this.#encodingOptions.decryptInput), void 0, outputEncoding) + decipher.final(outputEncoding); } parseJson(data) { try { return this.createOkResult(JSON.parse(data)); } catch (error) { return this.createErrorResult(error); } } }; //#endregion export { BaseCipher }; //# sourceMappingURL=base-cipher.js.map