UNPKG

node-ciphers

Version:

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

52 lines (48 loc) 1.72 kB
'use strict'; const node_buffer = require('node:buffer'); const constants = require('./constants.cjs'); class BaseCipher { #encodingOptions; constructor(encodingOptions) { this.#encodingOptions = { ...constants.defaultEncodingOptions, ...encodingOptions, }; } get encodingOptions() { return this.#encodingOptions; } createErrorResult(error) { return { error: error, ok: false, }; } createOkResult(value) { return { ok: true, value: value, }; } dataToBuffer(data, encoding) { return typeof data === 'string' ? node_buffer.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), undefined, 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), undefined, outputEncoding) + decipher.final(outputEncoding); } parseJson(data) { try { return this.createOkResult(JSON.parse(data)); } catch (error) { return this.createErrorResult(error); } } } exports.BaseCipher = BaseCipher; //# sourceMappingURL=base.cjs.map