keyv-file
Version:
File storage adapter for Keyv, using msgpack to serialize data fast and small.
27 lines (26 loc) • 823 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SafeFilenameEncoder = void 0;
/**
* 跨平台安全文件名编解码器
* 基于 encodeURIComponent 实现
*/
exports.SafeFilenameEncoder = {
// 编码:将特殊字符转换为安全的文件名
encode(str) {
return str
.replace(/[^0-9a-zA-Z]/g, (_) => {
const code = _.charCodeAt(0);
if (code < 0 || code > 0x7e) {
return _;
}
// 非字母数字字符需要转义
return '%' + _.charCodeAt(0).toString(16).padStart(2, '0');
})
.replace(/%/g, '_'); // 最后把 % 替换为 _
},
// 解码:还原原始字符串
decode(str) {
return decodeURIComponent(str.replace(/_/g, '%'));
},
};