42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { Buffer } from "vite-plugin-node-polyfills/shims/buffer";
|
|
import { blake2b } from "@exodus/blakejs";
|
|
import { base32Encode } from "./utils.js";
|
|
globalThis.Buffer = Buffer;
|
|
const dateRegex = /^(\d{4})-(\d{2})-(\d{2})([tT ])(\d{2}):(\d{2}):(\d{2})\.?(\d{3})?(?:(?:([+-]\d{2}):?(\d{2}))|Z)?$/;
|
|
const formatRFC3339 = (date) => {
|
|
const pad = (num = 0) => `${+num < 10 ? 0 : ""}${+num}`;
|
|
const padYear = (num = 0) => `${+num < 1e3 ? 0 : ""}${+num < 100 ? 0 : ""}${+num < 10 ? 0 : ""}${+num}`;
|
|
let m = dateRegex.exec(date);
|
|
if (m && m?.[9] === void 0) {
|
|
m[9] = "+00";
|
|
}
|
|
if (m && m?.[10] === void 0) {
|
|
m[10] = "00";
|
|
}
|
|
const offset = `${m?.[9]}:${m?.[10]}`.replace(/[+-]?00:00$/, "Z");
|
|
return [
|
|
padYear(m?.[1]),
|
|
"-",
|
|
pad(m?.[2]),
|
|
"-",
|
|
pad(m?.[3]),
|
|
m?.[4],
|
|
pad(m?.[5]),
|
|
":",
|
|
pad(m?.[6]),
|
|
":",
|
|
pad(m?.[7]),
|
|
//ignore milliseconds (m[8])
|
|
offset
|
|
].join("");
|
|
};
|
|
function hashTwt(twt) {
|
|
const created = formatRFC3339(twt.created);
|
|
const payload = [twt.url, created, twt.content].join("\n");
|
|
return base32Encode(blake2b(payload, void 0, 32)).toLowerCase().slice(-7);
|
|
}
|
|
export {
|
|
hashTwt as default
|
|
};
|
|
//# sourceMappingURL=hashTwt.js.map
|