UNPKG

@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
"use strict"; 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 DateFnsLocales = _interopRequireWildcard(require("date-fns/locale")); var _uncrypto = require("uncrypto"); 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, "&lt;").replace(/>/g, "&gt;").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; }