@da.li/core-libs
Version:
大沥网络函数库是大沥网络提供的一个公共 TypeScript 函数库,封装了基础操作、缓存、加密、文件处理、HTTP 请求等常用功能模块,旨在提高开发效率。
92 lines (87 loc) • 3.2 kB
JavaScript
import {
SERVERMODE,
isEmpty,
isString
} from "./chunk-BOVD54NE.js";
// src/external/utils.ts
import fingerprintJs from "@fingerprintjs/fingerprintjs";
async function fingerprint() {
if (SERVERMODE) return { id: "server", score: 1 };
const fpJs = await fingerprintJs.load().then((fg) => fg.get());
return { id: fpJs.visitorId, score: fpJs.confidence.score };
}
// src/external/string.ts
import DOMPurify from "isomorphic-dompurify";
function htmlSafe(dirty, config) {
return DOMPurify.sanitize(dirty, config || { USE_PROFILES: { html: true } });
}
// src/external/date.ts
import dayjs from "dayjs";
var date = (date2) => !date2 || date2 === "now" ? dayjs() : date2 === "yesterday" ? dayjs().subtract(1, "day") : date2 === "tomorrow" ? dayjs().add(1, "day") : dayjs(date2);
var dateFormat = (date2, format = "YYYY-MM-DD", validate = true) => {
if (isEmpty(date2)) return "";
if (isString(date2)) date2 = date2.toLowerCase();
const day = !date2 || date2 === "now" || date2 === "today" ? dayjs() : date2 === "yesterday" ? dayjs().subtract(1, "day") : date2 === "tomorrow" ? dayjs().add(1, "day") : (
/* 开始时间 */
date2 === "weekstart" ? dayjs().startOf("week") : date2 === "monthstart" ? dayjs().startOf("month") : date2 === "yearstart" ? dayjs().startOf("year") : (
/* 结束时间 */
date2 === "weekend" ? dayjs().endOf("week") : date2 === "monthend" ? dayjs().endOf("month") : date2 === "yearend" ? dayjs().endOf("year") : (
/* 自定义时间 */
dayjs(date2)
)
)
);
if (validate) {
if (!day.isValid()) return "\u2716";
if (day.isBefore("2000-01-01", "day")) return "\u2796";
} else if (!day.isValid()) {
return "";
}
if (format !== "desc") return day.format(format);
return dateLong(day, null, false, true);
};
var dateLong = (start, end, isEn = false, incSuffix = false) => {
const dayStart = dayjs(start);
if (!dayStart.isValid()) return "\u2716";
const dayEnd = end ? dayjs(end) : dayjs();
if (!dayEnd.isValid()) return "\u2716";
let long = dayEnd.unix() - dayStart.unix();
const isAfter = long < 0;
long = Math.abs(long);
if (long <= 1) return incSuffix ? isEn ? "now" : "\u6B64\u523B" : isEn ? "0sec" : "0\u79D2";
const s = isEn ? "sec" : "\u79D2";
const m = isEn ? "min" : "\u5206";
const h = isEn ? "hout" : "\u65F6";
const d = isEn ? "day" : "\u5929";
const suffix = incSuffix ? isAfter ? isEn ? "after" : "\u540E" : isEn ? "before" : "\u524D" : "";
if (long < 60) return `${long}${s}${suffix}`;
long = long / 60;
if (long < 60) {
const a2 = Math.floor(long);
let ret2 = `${a2}${m}`;
const b2 = Math.floor((long - a2) * 60);
b2 > 0 && (ret2 += `${b2}${s}`);
return ret2 + suffix;
}
long = long / 60;
if (long < 24) {
const a2 = Math.floor(long);
let ret2 = `${a2}${h}`;
const b2 = Math.floor((long - a2) * 60);
b2 > 0 && (ret2 += `${b2}${m}`);
return ret2 + suffix;
}
long = long / 24;
const a = Math.floor(long);
let ret = `${a}${d}`;
const b = Math.floor((long - a) * 24);
b > 0 && (ret += `${b}${h}`);
return ret + suffix;
};
export {
fingerprint,
htmlSafe,
date,
dateFormat,
dateLong
};