UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

31 lines (30 loc) 1.17 kB
import { createReadStream } from "node:fs"; import { createHash } from "node:crypto"; //#region src/infra/crypto-digest.ts function sha256Hex(input) { return createHash("sha256").update(input).digest("hex"); } function sha256Base64(input) { return createHash("sha256").update(input).digest("base64"); } function sha256Base64Url(input) { return createHash("sha256").update(input).digest("base64url"); } function sha256Base64UrlPrefix(input, length) { return sha256Base64Url(input).slice(0, length); } function sha256HexPrefixCore(input, length) { return sha256Hex(input).slice(0, length); } /** Streams a file, optionally stopping at an inclusive byte offset. */ async function sha256File(filePath, end) { const digest = createHash("sha256"); try { for await (const chunk of createReadStream(filePath, { end })) digest.update(chunk); } catch (err) { throw new Error(`Failed to hash file ${filePath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err }); } return digest.digest("hex"); } //#endregion export { sha256Hex as a, sha256File as i, sha256Base64Url as n, sha256HexPrefixCore as o, sha256Base64UrlPrefix as r, sha256Base64 as t };