mirror of
https://github.com/tenrok/vue-select.git
synced 2026-05-17 02:29:37 +03:00
66 lines
1.5 KiB
JavaScript
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 []
|
|
}
|
|
}
|