arthas/site/docs/.vuepress/client.js
2022-07-18 12:54:20 +08:00

54 lines
1.5 KiB
JavaScript

import { defineClientConfig } from "@vuepress/client";
import { usePageData } from "@vuepress/client";
import oldContributorsData from "./oldContributorsData.json";
const addOldDocsContributors = () => {
const page = usePageData();
if (!page.value.git) return;
const filePath = page.value.filePathRelative;
const contributors = page.value.git.contributors;
const oldContributors = oldContributorsData[filePath];
const haveSameContributor = (contributors, oldContributor) => {
return contributors.find(
(contributor) =>
contributor.name === oldContributor.name &&
contributor.email === oldContributor.email
);
};
if (oldContributors) {
oldContributors.forEach((oldContributor) => {
if (!haveSameContributor(contributors, oldContributor)) {
contributors.push(oldContributor);
} else {
haveSameContributor(contributors, oldContributor).commits +=
oldContributor.commits;
}
});
}
// sort contributors by commits
contributors?.sort((a, b) => b.commits - a.commits);
};
export default defineClientConfig({
enhance({ router }) {
router.afterEach((to, from) => {
if (to.fullPath !== from.fullPath) {
addOldDocsContributors();
}
});
router.beforeEach((to, from, next) => {
if (typeof _hmt != "undefined") {
if (to.path && to.fullPath !== from.fullPath) {
_hmt.push(["_trackPageview", to.fullPath]);
}
}
next();
});
},
});