openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
21 lines (20 loc) • 875 B
JavaScript
import { n as sliceUtf16Safe } from "./utf16-slice-D_ngcYKd.js";
//#region src/security/secret-mask.ts
/** Masks credential-like values without splitting UTF-16 surrogate pairs at the edges. */
function maskApiKey(value) {
const trimmed = stripControlCharacters(value).trim();
if (!trimmed) return "missing";
if (trimmed.length <= 6) return `${sliceUtf16Safe(trimmed, 0, 1)}...${sliceUtf16Safe(trimmed, -1)}`;
if (trimmed.length <= 16) return `${sliceUtf16Safe(trimmed, 0, 2)}...${sliceUtf16Safe(trimmed, -2)}`;
return `${sliceUtf16Safe(trimmed, 0, 8)}...${sliceUtf16Safe(trimmed, -8)}`;
}
function stripControlCharacters(value) {
let result = "";
for (const character of value) {
const code = character.charCodeAt(0);
if (!(code >= 0 && code <= 31 || code >= 127 && code <= 159)) result += character;
}
return result;
}
//#endregion
export { maskApiKey as t };