initial public commit
This commit is contained in:
41
dist-node/hashTwt.js
Normal file
41
dist-node/hashTwt.js
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
Reference in New Issue
Block a user