2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-05-17 02:29:37 +03:00
Files
vue-select/docs/github/clientDynamicModules.js
T
2021-07-28 09:46:15 -07:00

66 lines
1.5 KiB
JavaScript

require("dotenv").config();
const axios = require("axios");
const { graphql } = require("@octokit/graphql");
module.exports = async () => ({
name: "constants.js",
content: `
export const SPONSORS = ${JSON.stringify(await getSponsors())};
export const CONTRIBUTORS = ${JSON.stringify(await getContributors())};
`
});
/**
* Get a list of vue select contributors.
* @return {Promise<T>}
*/
async function getContributors() {
const { data } = await axios.get(
"https://api.github.com/repos/sagalbot/vue-select/contributors?per_page=100"
);
return data;
}
/**
* Get a list of the current sponsors. Requires GITHUB_TOKEN to be set.
* @return {Promise<*[]|ProfileNode[]|postcss.ChildNode[]|Array<parser.Node>|[]>}
*/
async function getSponsors() {
const query = `
{
user(login: "sagalbot") {
sponsorshipsAsMaintainer(first: 100) {
nodes {
sponsorEntity {
... on User {
id
avatarUrl
login
}
... on Organization {
id
avatarUrl
login
}
}
createdAt
}
}
}
}
`;
try {
const { user } = await graphql(query, {
headers: {
authorization: `token ${process.env.GITHUB_TOKEN || ""}`
}
});
return user.sponsorshipsAsMaintainer.nodes;
} catch (e) {
console.log(`${e.status} ${e.name} - Couldn't fetch sponsor data.`);
return [];
}
}