UNPKG

node-ciphers

Version:

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

51 lines (50 loc) 1.56 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) { if (typeof data === "string") return Buffer.from(data, encoding); if (ArrayBuffer.isView(data)) return data; return Buffer.from(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