WIP Adding contributors page from vitest

This commit is contained in:
Sidharth Vinod
2022-12-21 10:54:23 +05:30
parent cdba2b4ac8
commit 1495ae623a
7 changed files with 633 additions and 6 deletions

View File

@@ -62,6 +62,7 @@
"mitigations",
"mkdocs",
"mult",
"ohmyfetch",
"orlandoni",
"phpbb",
"plantuml",
@@ -99,7 +100,11 @@
"yash"
],
"patterns": [
{ "name": "Markdown links", "pattern": "\\((.*)\\)", "description": "" },
{
"name": "Markdown links",
"pattern": "\\((.*)\\)",
"description": ""
},
{
"name": "Markdown code blocks",
"pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx",
@@ -110,14 +115,25 @@
"pattern": "\\`([^\\`\\r\\n]+?)\\`",
"description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex"
},
{ "name": "Link contents", "pattern": "\\<a(.*)\\>", "description": "" },
{ "name": "Snippet references", "pattern": "-- snippet:(.*)", "description": "" },
{
"name": "Link contents",
"pattern": "\\<a(.*)\\>",
"description": ""
},
{
"name": "Snippet references",
"pattern": "-- snippet:(.*)",
"description": ""
},
{
"name": "Snippet references 2",
"pattern": "\\<\\[sample:(.*)",
"description": "another kind of snippet reference"
},
{ "name": "Multi-line code blocks", "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" },
{
"name": "Multi-line code blocks",
"pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm"
},
{
"name": "HTML Tags",
"pattern": "<[^>]*>",
@@ -136,6 +152,7 @@
],
"ignorePaths": [
"packages/mermaid/src/docs/CHANGELOG.md",
"packages/mermaid/src/docs/.vitepress/redirect.ts"
"packages/mermaid/src/docs/.vitepress/redirect.ts",
"packages/mermaid/src/docs/.vitepress/contributor-names.json"
]
}

View File

@@ -26,6 +26,7 @@
"lint": "eslint --cache --ignore-path .gitignore . && pnpm lint:jison && prettier --check .",
"lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts",
"lint:jison": "ts-node-esm ./scripts/jison/lint.mts",
"contributors": "ts-node-esm scripts/updateContributors.ts",
"cypress": "cypress run",
"cypress:open": "cypress open",
"e2e": "start-server-and-test dev http://localhost:9000/ cypress",
@@ -96,6 +97,7 @@
"js-yaml": "^4.1.0",
"jsdom": "^20.0.2",
"lint-staged": "^13.0.3",
"ohmyfetch": "^0.4.21",
"path-browserify": "^1.0.1",
"pnpm": "^7.15.0",
"prettier": "^2.7.1",
@@ -111,4 +113,4 @@
"volta": {
"node": "18.12.1"
}
}
}

View File

@@ -0,0 +1,27 @@
<script setup lang="ts">
import { contributors } from '../contributors';
</script>
<template>
<div flex="~ wrap gap2" justify-center>
<a
v-for="{ name, avatar } of contributors"
:key="name"
:href="`https://github.com/${name}`"
m-0
rel="noopener noreferrer"
:aria-label="`${name} on GitHub`"
>
<img
loading="lazy"
:src="avatar"
width="50"
height="50"
rounded-full
h-12
w-12
:alt="`${name}'s avatar`"
/>
</a>
</div>
</template>

View File

@@ -0,0 +1,387 @@
[
"knsv",
"sidharthv96",
"NeilCuzon",
"tylerlong",
"ashishjain0512",
"weedySeaDragon",
"mmorel-35",
"GDFaber",
"aloisklink",
"klemmchr",
"jgreywolf",
"cmmoran",
"Yash-Singh1",
"IOrlandoni",
"raghur",
"SeanKilleen",
"erelling",
"spopida",
"emersonbottero",
"bjowes",
"Andre601",
"dbartholomae",
"gibson042",
"pbrolin47",
"chrismoran-bkt",
"abzicht",
"gwincr11",
"mearns",
"spier",
"BastianZim",
"devcer",
"sagea",
"DKurilo",
"gijswijs",
"timmaffett",
"pinghe",
"ciekawy",
"lexmin0412",
"koljatm-edeka",
"notquiterussell",
"spect88",
"huynhicode",
"dany74q",
"johnnywalker",
"72636c",
"therzka",
"fardog",
"Mogztter",
"bollwyvl",
"adamwulf",
"elliot-nelson",
"fabiospampinato",
"HustLion",
"nacc",
"flying-sheep",
"vallsv",
"Xstoudi",
"arpansaha13",
"Some-Dood",
"DanShai",
"LarryKlugerDS",
"MasonM",
"stanhu",
"sechel",
"swoyam2609",
"abhijeet-pathak",
"lishid",
"eajenkins",
"harshilparmar",
"Guy-Adler",
"ahmadnassri",
"crodriguez1a",
"danangtomo",
"FlorianWoelki",
"Jmuccigr",
"joshuacolvin",
"khiga8",
"keenanjt33",
"lf-novelt",
"faisalarbain",
"cm-wada-yusuke",
"ymgch",
"yutotnh",
"arnaud-zg",
"BD103",
"Aniket1026",
"CalebUsadi",
"gene1wood",
"gillesdemey",
"JoshSharpe",
"heyfirst",
"knuts-ic",
"loris-intergalactique",
"lindseywild",
"tmatz",
"mahomedalid",
"doble-eme",
"Mister-Hope",
"MrCoder",
"pbendersky",
"Rutorai",
"ThanasisMpalatsoukas",
"thomasleveil",
"tomperr",
"husa",
"abeaton",
"anugs",
"ginomempin",
"lilisha100",
"nothingismagick",
"phairow",
"deining",
"jsyang",
"naveensrinivasan",
"tommoor",
"vijay40",
"0xflotus",
"AndreasVolkmann",
"ashsearle",
"bish0polis",
"DawMatt",
"frankschmitt",
"ggpasqualino",
"hrgui",
"IanLee1521",
"jbednar",
"jdavis61",
"jayvdb",
"jbronson-sf",
"lorint",
"MindaugasLaganeckas",
"u-minor",
"namgivu",
"OlegAxenow",
"phschaer",
"rmedaer",
"rheggen",
"larkinscott",
"The-Alchemist",
"TomWright",
"tshepang",
"Vrixyz",
"sinedied",
"yonasb",
"Zer0n0mask",
"brookhong",
"edumicse",
"ilmari-lauhakangas",
"jasmaa",
"sy-records",
"uttk",
"el-mapache",
"bigred8982",
"imgss",
"Joxtacy",
"mrmanc",
"riaanduplessis",
"sylhare",
"vikyaiyer",
"CollierCZ",
"adutton",
"adam-hotait",
"ameech",
"AlanHohn",
"aledileo",
"alexislefebvre",
"zag",
"alvynmcq",
"alwinw",
"amyq",
"ajthinking",
"NKjoep",
"AndrewL-64",
"sublimino",
"andrewschleifer",
"andrew-demb",
"6footGeek",
"anishkny",
"aniston",
"antco25",
"saveman71",
"Abrifq",
"arfanliaqat",
"Arthaey",
"AsaAyers",
"bglnelissen",
"ben-page",
"jawn",
"Billiam",
"xbojch",
"craigmac",
"hydrosquall",
"carlosblanco",
"carbeer",
"watsoncj",
"dodoinblue",
"ctruelson",
"beaudry",
"ct-martin",
"Clint-Chester",
"connor4312",
"DCsunset",
"activus-d",
"DanInProgress",
"egnor",
"Olshansk",
"danielsitnik",
"dariuswiles",
"DarkNami",
"daveaglick",
"davidpendraykalibrate",
"DavidWittman",
"detj",
"dbrans",
"dbussink",
"dwinston",
"dfinke",
"quickstep25",
"ebjornset",
"Eji4h",
"glensc",
"Erhannis",
"FabAlchemy",
"fregante",
"filipedeschamps",
"Foo-x",
"Frank-Mayer",
"gwatts",
"gnkm",
"gjlubbertsen",
"guidanoli",
"guyellis",
"H3RSKO",
"hwine",
"HerbCaudill",
"TribalNightOwl",
"hugovk",
"jolting",
"ImanimalXI",
"ImgBotApp",
"imma90",
"inclusive-coding-bot",
"itprdev",
"revolter",
"isinek",
"marcastel",
"coxy1989",
"janverb",
"jasonbellamy",
"jasonmhoule",
"jayenashar",
"jaybuidl",
"jeroenekkelkamp",
"joebordes",
"jnnnnn",
"jfuentescpp",
"jinntrance",
"jmelfi",
"Qix-",
"jmg-duarte",
"kahgoh",
"Schweinepriester",
"Kaligule",
"kdipippo",
"khink",
"kevinkhill",
"kkirsche",
"kriskhaira",
"kale-stew",
"Lance-DC",
"kciter",
"zaaath",
"manicki",
"levlas",
"spydon",
"woehrl01",
"lukehsiao",
"korycins",
"maiconschmitz",
"vaceletm",
"marcjansen",
"markdalgleish",
"markotibold",
"Swaagie",
"Narretz",
"ma-zal",
"mgaitan",
"mapio",
"matteodelabre",
"maxArturo",
"DavertMik",
"mgenereu",
"maiermic",
"magmax",
"quulah",
"mbostock",
"Crocin",
"elv-nate",
"NateChurch",
"gerardnico",
"NitinLodha2812",
"hype09",
"pje",
"saulgajda",
"skywinder",
"ticapix",
"pravi",
"bfriedz",
"reetghosh1",
"renanlecaro",
"Renfay007",
"wontonst",
"RudolfMan",
"SlideeScherz",
"SilvM",
"simon-id",
"simonplattner",
"sdankel",
"Soptq",
"stevenengler",
"stevenschobert",
"swhgoon",
"hiramekun",
"gitter-badger",
"KarnerTh",
"codebeige",
"schmelto",
"TreyE",
"thilde",
"vaniship",
"commai",
"MetalBlueberry",
"volkanunsal",
"yudenzel",
"uskey512",
"zakhenry",
"abergquist",
"JiChao99",
"aryandeelwal",
"avijit1258",
"bby-bishopclark",
"beriakomal",
"bolshoytoster",
"chrismetz09",
"christopherkade",
"tenuki",
"dkkb",
"endolith",
"eel87",
"esphas",
"raptor0929",
"flywire",
"gkchic",
"gomlgs",
"hikerpig",
"hopoverflow",
"hughli-git",
"ishuen",
"it-sec-std",
"it0a",
"ivan-danilov",
"kerwin612",
"kuanyi-ng",
"laDanz",
"lgasp",
"mahimas28",
"may4everL",
"meganemura",
"monsterkrampe",
"mupple",
"mvandermade",
"penenkel",
"r-a-v-a-s",
"ryenus",
"alguerocode",
"siddhant-tripathy1",
"sifb",
"silverwind",
"wfnuser",
"chewnoill",
"znxkznxk1030",
"zepatrik",
"zephyraft",
"zwpaper",
"hetz"
]

View File

@@ -0,0 +1,111 @@
import contributorNames from './contributor-names.json';
export interface Contributor {
name: string;
avatar: string;
}
export interface SocialEntry {
icon: string;
link: string;
}
export interface CoreTeam {
avatar: string;
name: string;
// required to download avatars from GitHub
github: string;
twitter: string;
sponsor?: string;
title?: string;
org?: string;
desc?: string;
links?: SocialEntry[];
}
const contributorsAvatars: Record<string, string> = {};
const getAvatarUrl = (name: string) =>
import.meta.hot ? `https://github.com/${name}.png` : `/user-avatars/${name}.png`;
export const contributors = (contributorNames as string[]).reduce((acc, name) => {
contributorsAvatars[name] = getAvatarUrl(name);
acc.push({ name, avatar: contributorsAvatars[name] });
return acc;
}, [] as Contributor[]);
// const createLinks = (tm: CoreTeam): CoreTeam => {
// tm.links = [
// { icon: 'github', link: `https://github.com/${tm.github}` },
// { icon: 'twitter', link: `https://twitter.com/${tm.twitter}` },
// ];
// return tm;
// };
// const plainTeamMembers: CoreTeam[] = [
// {
// avatar: contributorsAvatars.antfu,
// name: 'Anthony Fu',
// github: 'antfu',
// twitter: 'antfu7',
// sponsor: 'https://github.com/sponsors/antfu',
// title: 'A fanatical open sourceror, working',
// org: 'NuxtLabs',
// desc: 'Core team member of Vite & Vue',
// },
// {
// avatar: contributorsAvatars['sheremet-va'],
// name: 'Vladimir',
// github: 'sheremet-va',
// twitter: 'sheremet_va',
// sponsor: 'https://github.com/sponsors/sheremet-va',
// title: 'An open source fullstack developer',
// desc: 'Core team member of Vitest',
// },
// {
// avatar: contributorsAvatars['patak-dev'],
// name: 'Patak',
// github: 'patak-dev',
// twitter: 'patak_dev',
// sponsor: 'https://github.com/sponsors/patak-dev',
// title: 'A collaborative being, working',
// org: 'StackBlitz',
// desc: 'Core team member of Vite & Vue',
// },
// {
// avatar: contributorsAvatars.Aslemammad,
// name: 'Mohammad Bagher',
// github: 'Aslemammad',
// twitter: 'asleMammadam',
// title: 'An open source developer',
// desc: 'Team member of Poimandres & Vike',
// },
// {
// avatar: contributorsAvatars.Demivan,
// name: 'Ivan Demchuk',
// github: 'Demivan',
// twitter: 'IvanDemchuk',
// title: 'A tech lead, fullstack developer',
// desc: 'Author of fluent-vue',
// },
// {
// avatar: contributorsAvatars.userquin,
// name: 'Joaquín Sánchez',
// github: 'userquin',
// twitter: 'userquin',
// title: 'A fullstack and android developer',
// desc: "Vite's fanatical follower",
// },
// {
// avatar: contributorsAvatars.zxch3n,
// name: 'Zixuan Chen',
// github: 'zxch3n',
// twitter: 'zxch3n',
// title: 'A fullstack developer',
// desc: 'Creating tools for collaboration',
// },
// ];
// const teamMembers = plainTeamMembers.map((tm) => createLinks(tm));
// export { teamMembers };

43
pnpm-lock.yaml generated
View File

@@ -130,6 +130,9 @@ importers:
lint-staged:
specifier: ^13.0.3
version: 13.0.3
ohmyfetch:
specifier: ^0.4.21
version: 0.4.21
path-browserify:
specifier: ^1.0.1
version: 1.0.1
@@ -3961,6 +3964,13 @@ packages:
engines: {node: '>=6'}
dev: true
/busboy/1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
dependencies:
streamsearch: 1.1.0
dev: true
/bytes/3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -5408,6 +5418,10 @@ packages:
engines: {node: '>=6'}
dev: true
/destr/1.2.2:
resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==}
dev: true
/destroy/1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -8913,6 +8927,10 @@ packages:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
dev: true
/node-fetch-native/0.1.8:
resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==}
dev: true
/node-fetch/2.6.7:
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
engines: {node: 4.x || >=6.0.0}
@@ -9016,6 +9034,15 @@ packages:
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
dev: true
/ohmyfetch/0.4.21:
resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==}
dependencies:
destr: 1.2.2
node-fetch-native: 0.1.8
ufo: 0.8.6
undici: 5.14.0
dev: true
/on-finished/2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -10410,6 +10437,11 @@ packages:
duplexer: 0.1.2
dev: true
/streamsearch/1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
dev: true
/string-argv/0.3.1:
resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
engines: {node: '>=0.6.19'}
@@ -10931,6 +10963,10 @@ packages:
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
dev: true
/ufo/0.8.6:
resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==}
dev: true
/uglify-js/3.17.3:
resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==}
engines: {node: '>=0.8.0'}
@@ -10943,6 +10979,13 @@ packages:
resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==}
dev: true
/undici/5.14.0:
resolution: {integrity: sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==}
engines: {node: '>=12.18'}
dependencies:
busboy: 1.6.0
dev: true
/unified/10.1.2:
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
dependencies:

View File

@@ -0,0 +1,40 @@
// Adapted from https://github.dev/vitest-dev/vitest/blob/991ff33ab717caee85ef6cbe1c16dc514186b4cc/scripts/update-contributors.ts#L6
import { writeFile } from 'node:fs/promises';
import { $fetch } from 'ohmyfetch';
interface Contributor {
login: string;
}
async function fetchContributors() {
const collaborators: string[] = [];
let page = 1;
let data: Contributor[] = [];
do {
data =
(await $fetch<Contributor[]>(
`https://api.github.com/repos/mermaid-js/mermaid/contributors?per_page=100&page=${page}`,
{
method: 'get',
headers: {
'content-type': 'application/json',
},
}
)) || [];
collaborators.push(...data.map((i) => i.login));
page++;
} while (data.length === 100);
return collaborators.filter((name) => !name.includes('[bot]'));
}
async function generate() {
const collaborators = await fetchContributors();
await writeFile(
'./packages/mermaid/src/docs/.vitepress/contributor-names.json',
`${JSON.stringify(collaborators, null, 2)}\n`,
'utf8'
);
}
void generate();