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
JavaScript
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