add LibreJS licenses to all demo JS split browser build from node build add copyright info to license files update to use yarn v4.13.0 update to v0.9.2
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
import { blake2b } from "@exodus/blakejs";
|
|
import { base32Encode } from "./utils.js";
|
|
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
|