@nolebase/vitepress-plugin-git-changelog
Version:
A VitePress plugin that adds a changelog fetched from git to your documentation.
42 lines (41 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.digestStringAsSHA256 = digestStringAsSHA256;
exports.formatDistanceToNowFromValue = formatDistanceToNowFromValue;
exports.isStringArray = isStringArray;
exports.renderCommitMessage = renderCommitMessage;
exports.renderMarkdown = renderMarkdown;
var _dateFns = require("date-fns");
var _uncrypto = require("uncrypto");
var DateFnsLocales = _interopRequireWildcard(require("date-fns/locale"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function renderMarkdown(markdownText = "") {
const htmlText = markdownText.replace(/</g, "<").replace(/>/g, ">").replace(/^### (.*$)/gm, "<h3>$1</h3>").replace(/^## (.*$)/gm, "<h2>$1</h2>").replace(/^# (.*$)/gm, "<h1>$1</h1>").replace(/^> (.*$)/gm, "<blockquote>$1</blockquote>").replace(/\*\*(.*)\*\*/g, "<b>$1</b>").replace(/\*(.*)\*/g, "<i>$1</i>").replace(/!\[(.*?)\]\((.*?)\)/g, "<img alt='$1' src='$2' />").replace(/\[(.*?)\]\((.*?)\)/g, `<a class="no-icon" href='$2'>$1</a>`).replace(/`(.*?)`/g, "<code>$1</code>").replace(/\n$/gm, "<br />");
return htmlText.trim();
}
function renderCommitMessage(repoLink, msg) {
return renderMarkdown(msg).replace(/#(\d+)/g, `<a class="no-icon" href='${repoLink}/issues/$1'>#$1</a>`);
}
function formatDistanceToNowFromValue(value, localeName = "enUS") {
try {
return (0, _dateFns.formatDistanceToNow)((0, _dateFns.toDate)(value), {
locale: DateFnsLocales[localeName] || "enUS",
addSuffix: true
});
} catch {
return value.toLocaleDateString();
}
}
function isStringArray(value) {
return Array.isArray(value) && value.every(item => typeof item === "string");
}
async function digestStringAsSHA256(message) {
const msgUint8 = new TextEncoder().encode(message);
const hashBuffer = await _uncrypto.subtle.digest("SHA-256", msgUint8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, "0")).join("");
return hashHex;
}