chore: code formatting
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
export default async function({login, graphql, rest, data, q, queries, imports}, conf) {
|
||||
//Load inputs
|
||||
console.debug(`metrics/compute/${login}/base > started`)
|
||||
let {indepth, "repositories.forks":_forks, "repositories.affiliations":_affiliations, "repositories.batch":_batch} = imports.metadata.plugins.base.inputs({data, q, account:"bypass"})
|
||||
let {indepth, "repositories.forks": _forks, "repositories.affiliations": _affiliations, "repositories.batch": _batch} = imports.metadata.plugins.base.inputs({data, q, account: "bypass"})
|
||||
const extras = conf.settings.extras?.features ?? conf.settings.extras?.default
|
||||
const repositories = conf.settings.repositories || 100
|
||||
const forks = _forks ? "" : ", isFork: false"
|
||||
@@ -29,18 +29,18 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
//Query data from GitHub API
|
||||
console.debug(`metrics/compute/${login}/base > account ${account}`)
|
||||
const queried = await graphql(queries.base[account]({login}))
|
||||
Object.assign(data, {user:queried[account]})
|
||||
Object.assign(data, {user: queried[account]})
|
||||
postprocess?.[account]({login, data})
|
||||
try {
|
||||
Object.assign(data.user, (await graphql(queries.base[`${account}.x`]({login, account, "calendar.from":new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), "calendar.to":(new Date()).toISOString()})))[account])
|
||||
Object.assign(data.user, (await graphql(queries.base[`${account}.x`]({login, account, "calendar.from": new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), "calendar.to": (new Date()).toISOString()})))[account])
|
||||
console.debug(`metrics/compute/${login}/base > successfully loaded bulk query`)
|
||||
}
|
||||
catch {
|
||||
console.debug(`metrics/compute/${login}/base > failed to load bulk query, falling back to unit queries`)
|
||||
//Query basic fields
|
||||
const fields = {
|
||||
user:["packages", "starredRepositories", "watching", "sponsorshipsAsSponsor", "sponsorshipsAsMaintainer", "followers", "following", "issueComments", "organizations", "repositoriesContributedTo(includeUserRepositories: true)"],
|
||||
organization:["packages", "sponsorshipsAsSponsor", "sponsorshipsAsMaintainer", "membersWithRole"],
|
||||
user: ["packages", "starredRepositories", "watching", "sponsorshipsAsSponsor", "sponsorshipsAsMaintainer", "followers", "following", "issueComments", "organizations", "repositoriesContributedTo(includeUserRepositories: true)"],
|
||||
organization: ["packages", "sponsorshipsAsSponsor", "sponsorshipsAsMaintainer", "membersWithRole"],
|
||||
}[account] ?? []
|
||||
for (const field of fields) {
|
||||
try {
|
||||
@@ -48,7 +48,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
}
|
||||
catch {
|
||||
console.debug(`metrics/compute/${login}/base > failed to retrieve ${field}`)
|
||||
data.user[field] = {totalCount:NaN}
|
||||
data.user[field] = {totalCount: NaN}
|
||||
}
|
||||
}
|
||||
//Query repositories fields
|
||||
@@ -68,7 +68,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
const fields = ["totalRepositoriesWithContributedCommits", "totalCommitContributions", "restrictedContributionsCount", "totalIssueContributions", "totalPullRequestContributions", "totalPullRequestReviewContributions"]
|
||||
for (const field of fields) {
|
||||
try {
|
||||
Object.assign(data.user.contributionsCollection, (await graphql(queries.base.contributions({login, account, field, range:""})))[account].contributionsCollection)
|
||||
Object.assign(data.user.contributionsCollection, (await graphql(queries.base.contributions({login, account, field, range: ""})))[account].contributionsCollection)
|
||||
}
|
||||
catch {
|
||||
console.debug(`metrics/compute/${login}/base > failed to retrieve contributionsCollection.${field}`)
|
||||
@@ -78,17 +78,17 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
}
|
||||
//Query calendar
|
||||
try {
|
||||
Object.assign(data.user, (await graphql(queries.base.calendar({login, "calendar.from":new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), "calendar.to":(new Date()).toISOString()})))[account])
|
||||
Object.assign(data.user, (await graphql(queries.base.calendar({login, "calendar.from": new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString(), "calendar.to": (new Date()).toISOString()})))[account])
|
||||
}
|
||||
catch {
|
||||
console.debug(`metrics/compute/${login}/base > failed to retrieve contributions calendar`)
|
||||
data.user.calendar = {contributionCalendar:{weeks:[]}}
|
||||
data.user.calendar = {contributionCalendar: {weeks: []}}
|
||||
}
|
||||
}
|
||||
}
|
||||
//Query contributions collection over account lifetime instead of last year
|
||||
if (account === "user") {
|
||||
if ((indepth)&&(extras)) {
|
||||
if ((indepth) && (extras)) {
|
||||
const fields = ["totalRepositoriesWithContributedCommits", "totalCommitContributions", "restrictedContributionsCount", "totalIssueContributions", "totalPullRequestContributions", "totalPullRequestReviewContributions"]
|
||||
const start = new Date(data.user.createdAt)
|
||||
const end = new Date()
|
||||
@@ -111,7 +111,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
//Fetch data from api
|
||||
try {
|
||||
console.debug(`metrics/compute/${login}/plugins > base > loading contributions collections for ${field} from "${from.toISOString()}" to "${dto.toISOString()}"`)
|
||||
const {[account]:{contributionsCollection}} = await graphql(queries.base.contributions({login, account, field, range:`(from: "${from.toISOString()}", to: "${dto.toISOString()}")`}))
|
||||
const {[account]: {contributionsCollection}} = await graphql(queries.base.contributions({login, account, field, range: `(from: "${from.toISOString()}", to: "${dto.toISOString()}")`}))
|
||||
collection[field] += contributionsCollection[field]
|
||||
}
|
||||
catch {
|
||||
@@ -127,7 +127,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
else {
|
||||
try {
|
||||
console.debug(`metrics/compute/${login}/base > loading user commits history`)
|
||||
const {data:{total_count:total = 0}} = await rest.search.commits({q:`author:${login}`})
|
||||
const {data: {total_count: total = 0}} = await rest.search.commits({q: `author:${login}`})
|
||||
data.user.contributionsCollection.totalCommitContributions = Math.max(total, data.user.contributionsCollection.totalCommitContributions)
|
||||
}
|
||||
catch {
|
||||
@@ -136,18 +136,18 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
}
|
||||
}
|
||||
//Query repositories from GitHub API
|
||||
for (const type of ({user:["repositories", "repositoriesContributedTo"], organization:["repositories"]}[account] ?? [])) {
|
||||
for (const type of ({user: ["repositories", "repositoriesContributedTo"], organization: ["repositories"]}[account] ?? [])) {
|
||||
//Iterate through repositories
|
||||
let cursor = null
|
||||
let pushed = 0
|
||||
const options = {repositories:{forks, affiliations, constraints:""}, repositoriesContributedTo:{forks:"", affiliations:"", constraints:", includeUserRepositories: false, contributionTypes: COMMIT"}}[type] ?? null
|
||||
const options = {repositories: {forks, affiliations, constraints: ""}, repositoriesContributedTo: {forks: "", affiliations: "", constraints: ", includeUserRepositories: false, contributionTypes: COMMIT"}}[type] ?? null
|
||||
data.user[type] = data.user[type] ?? {}
|
||||
data.user[type].nodes = data.user[type].nodes ?? []
|
||||
do {
|
||||
console.debug(`metrics/compute/${login}/base > retrieving ${type} after ${cursor}`)
|
||||
const request = {}
|
||||
try {
|
||||
Object.assign(request, await graphql(queries.base.repositories({login, account, type, after:cursor ? `after: "${cursor}"` : "", repositories:Math.min(repositories, {user:_batch, organization:Math.min(25, _batch)}[account]), ...options})))
|
||||
Object.assign(request, await graphql(queries.base.repositories({login, account, type, after: cursor ? `after: "${cursor}"` : "", repositories: Math.min(repositories, {user: _batch, organization: Math.min(25, _batch)}[account]), ...options})))
|
||||
}
|
||||
catch (error) {
|
||||
console.debug(`metrics/compute/${login}/base > failed to retrieve ${_batch} repositories after ${cursor}, this is probably due to an API timeout, halving batch`)
|
||||
@@ -158,7 +158,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
}
|
||||
continue
|
||||
}
|
||||
const {[account]:{[type]:{edges = [], nodes = []} = {}}} = request
|
||||
const {[account]: {[type]: {edges = [], nodes = []} = {}}} = request
|
||||
cursor = edges?.[edges?.length - 1]?.cursor
|
||||
data.user[type].nodes.push(...nodes)
|
||||
pushed = nodes.length
|
||||
@@ -176,7 +176,7 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
//Fetch missing packages count from ghcr.io using REST API (as GraphQL API does not support it yet)
|
||||
try {
|
||||
console.debug(`metrics/compute/${login}/base > patching packages count if possible`)
|
||||
const {data:packages} = await rest.packages[{user:"listPackagesForUser", organization:"listPackagesForOrganization"}[account]]({package_type:"container", org:login, username:login})
|
||||
const {data: packages} = await rest.packages[{user: "listPackagesForUser", organization: "listPackagesForOrganization"}[account]]({package_type: "container", org: login, username: login})
|
||||
data.user.packages.totalCount += packages.length
|
||||
console.debug(`metrics/compute/${login}/base > patched packages count (added ${packages.length} from ghcr.io)`)
|
||||
}
|
||||
@@ -184,8 +184,8 @@ export default async function({login, graphql, rest, data, q, queries, imports},
|
||||
console.debug(`metrics/compute/${login}/base > failed to patch packages count, maybe read:packages scope was not provided`)
|
||||
}
|
||||
//Shared options
|
||||
let {"repositories.skipped":skipped, "users.ignored":ignored, "commits.authoring":authoring} = imports.metadata.plugins.base.inputs({data, q, account:"bypass"})
|
||||
data.shared = {"repositories.skipped":skipped, "users.ignored":ignored, "commits.authoring":authoring, "repositories.batch":_batch}
|
||||
let {"repositories.skipped": skipped, "users.ignored": ignored, "commits.authoring": authoring} = imports.metadata.plugins.base.inputs({data, q, account: "bypass"})
|
||||
data.shared = {"repositories.skipped": skipped, "users.ignored": ignored, "commits.authoring": authoring, "repositories.batch": _batch}
|
||||
console.debug(`metrics/compute/${login}/base > shared options > ${JSON.stringify(data.shared)}`)
|
||||
//Success
|
||||
console.debug(`metrics/compute/${login}/base > graphql query > account ${account} > success`)
|
||||
@@ -213,9 +213,9 @@ const postprocess = {
|
||||
console.debug(`metrics/compute/${login}/base > applying postprocessing`)
|
||||
data.account = "user"
|
||||
Object.assign(data.user, {
|
||||
isVerified:false,
|
||||
repositories:{},
|
||||
contributionsCollection:{},
|
||||
isVerified: false,
|
||||
repositories: {},
|
||||
contributionsCollection: {},
|
||||
})
|
||||
},
|
||||
//Organization
|
||||
@@ -223,44 +223,44 @@ const postprocess = {
|
||||
console.debug(`metrics/compute/${login}/base > applying postprocessing`)
|
||||
data.account = "organization"
|
||||
Object.assign(data.user, {
|
||||
isHireable:false,
|
||||
repositories:{},
|
||||
starredRepositories:{totalCount:NaN},
|
||||
watching:{totalCount:NaN},
|
||||
contributionsCollection:{
|
||||
totalRepositoriesWithContributedCommits:NaN,
|
||||
totalCommitContributions:NaN,
|
||||
restrictedContributionsCount:NaN,
|
||||
totalIssueContributions:NaN,
|
||||
totalPullRequestContributions:NaN,
|
||||
totalPullRequestReviewContributions:NaN,
|
||||
isHireable: false,
|
||||
repositories: {},
|
||||
starredRepositories: {totalCount: NaN},
|
||||
watching: {totalCount: NaN},
|
||||
contributionsCollection: {
|
||||
totalRepositoriesWithContributedCommits: NaN,
|
||||
totalCommitContributions: NaN,
|
||||
restrictedContributionsCount: NaN,
|
||||
totalIssueContributions: NaN,
|
||||
totalPullRequestContributions: NaN,
|
||||
totalPullRequestReviewContributions: NaN,
|
||||
},
|
||||
calendar:{contributionCalendar:{weeks:[]}},
|
||||
repositoriesContributedTo:{totalCount:NaN, nodes:[]},
|
||||
followers:{totalCount:NaN},
|
||||
following:{totalCount:NaN},
|
||||
issueComments:{totalCount:NaN},
|
||||
organizations:{totalCount:NaN},
|
||||
calendar: {contributionCalendar: {weeks: []}},
|
||||
repositoriesContributedTo: {totalCount: NaN, nodes: []},
|
||||
followers: {totalCount: NaN},
|
||||
following: {totalCount: NaN},
|
||||
issueComments: {totalCount: NaN},
|
||||
organizations: {totalCount: NaN},
|
||||
})
|
||||
},
|
||||
//Skip base content query and instantiate an empty user instance
|
||||
skip({login, data, imports}) {
|
||||
data.user = {}
|
||||
data.shared = imports.metadata.plugins.base.inputs({data, q:{}, account:"bypass"})
|
||||
data.shared = imports.metadata.plugins.base.inputs({data, q: {}, account: "bypass"})
|
||||
for (const account of ["user", "organization"])
|
||||
postprocess?.[account]({login, data})
|
||||
data.account = "bypass"
|
||||
Object.assign(data.user, {
|
||||
databaseId:NaN,
|
||||
name:login,
|
||||
databaseId: NaN,
|
||||
name: login,
|
||||
login,
|
||||
createdAt:new Date(),
|
||||
avatarUrl:`https://github.com/${login}.png`,
|
||||
websiteUrl:null,
|
||||
twitterUsername:login,
|
||||
repositories:{totalCount:NaN, totalDiskUsage:NaN, nodes:[]},
|
||||
packages:{totalCount:NaN},
|
||||
repositoriesContributedTo:{totalCount:NaN, nodes:[]},
|
||||
createdAt: new Date(),
|
||||
avatarUrl: `https://github.com/${login}.png`,
|
||||
websiteUrl: null,
|
||||
twitterUsername: login,
|
||||
repositories: {totalCount: NaN, totalDiskUsage: NaN, nodes: []},
|
||||
packages: {totalCount: NaN},
|
||||
repositoriesContributedTo: {totalCount: NaN, nodes: []},
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user