diff --git a/.github/scripts/preview.mjs b/.github/scripts/preview.mjs index 30ca0e2b..135df1db 100644 --- a/.github/scripts/preview.mjs +++ b/.github/scripts/preview.mjs @@ -104,4 +104,4 @@ for (const insights of ["insights", "about"]) { if (file !== ".statics") fs.copyFile(paths.join(__web_insights, file), paths.join(__preview_insights, file)) } -} \ No newline at end of file +} diff --git a/source/app/metrics/index.mjs b/source/app/metrics/index.mjs index 3282b367..218a0dd3 100644 --- a/source/app/metrics/index.mjs +++ b/source/app/metrics/index.mjs @@ -38,7 +38,7 @@ export default async function metrics({login, q}, {graphql, rest, plugins, conf, } : null), } - const extras = {css: imports.metadata.plugins.core.extras("extras_css", {...conf.settings, error:false}) ? q["extras.css"] ?? "" : "", js: imports.metadata.plugins.core.extras("extras_js", {...conf.settings, error:false}) ? q["extras.js"] ?? "" : ""} + const extras = {css: imports.metadata.plugins.core.extras("extras_css", {...conf.settings, error: false}) ? q["extras.css"] ?? "" : "", js: imports.metadata.plugins.core.extras("extras_js", {...conf.settings, error: false}) ? q["extras.js"] ?? "" : ""} const data = {q, animated: true, large: false, base: {}, config: {}, errors: [], plugins: {}, computed: {}, extras, postscripts: []} const experimental = new Set(decodeURIComponent(q["experimental.features"] ?? "").split(" ").map(x => x.trim().toLocaleLowerCase()).filter(x => x)) if (conf.settings["debug.headless"]) @@ -184,7 +184,7 @@ export default async function metrics({login, q}, {graphql, rest, plugins, conf, if ((conf.settings?.optimize === true) || (conf.settings?.optimize?.includes?.("svg"))) rendered = await imports.svg.optimize.svg(rendered, q, experimental) //Verify svg - if ((verify)&&(imports.metadata.plugins.core.extras("verify", {...conf.settings, error:false}))) { + if ((verify) && (imports.metadata.plugins.core.extras("verify", {...conf.settings, error: false}))) { console.debug(`metrics/compute/${login} > verify SVG`) let libxmljs = null try { diff --git a/source/app/metrics/metadata.mjs b/source/app/metrics/metadata.mjs index 930ce8ae..e8c4e7b0 100644 --- a/source/app/metrics/metadata.mjs +++ b/source/app/metrics/metadata.mjs @@ -265,7 +265,7 @@ metadata.plugin = async function({__plugins, __templates, name, logger}) { console.debug(`metrics/extras > ${name} > ${key} > skipping (no error mode)`) return false } - throw Object.assign(new Error(`Unsupported option "${key}"`), {extras:true}) + throw Object.assign(new Error(`Unsupported option "${key}"`), {extras: true}) } } } diff --git a/source/app/metrics/setup.mjs b/source/app/metrics/setup.mjs index f0233913..933f9166 100644 --- a/source/app/metrics/setup.mjs +++ b/source/app/metrics/setup.mjs @@ -78,7 +78,7 @@ export default async function({log = true, sandbox = false, community = {}} = {} logger("metrics/setup > load package.json > success") //Load community templates - if ((conf.settings.extras?.features?.includes("metrics.setup.community.templates"))||(conf.settings.extras?.features === true)||(conf.settings.extras?.default)) { + if ((conf.settings.extras?.features?.includes("metrics.setup.community.templates")) || (conf.settings.extras?.features === true) || (conf.settings.extras?.default)) { if ((typeof conf.settings.community.templates === "string") && (conf.settings.community.templates.length)) { logger("metrics/setup > parsing community templates list") conf.settings.community.templates = [...new Set([...decodeURIComponent(conf.settings.community.templates).split(",").map(v => v.trim().toLocaleLowerCase()).filter(v => v)])] @@ -194,12 +194,12 @@ export default async function({log = true, sandbox = false, community = {}} = {} conf.metadata = await metadata({log}) //Modes - if ((!conf.settings.modes)||(!conf.settings.modes.length)) + if ((!conf.settings.modes) || (!conf.settings.modes.length)) conf.settings.modes = ["embed", "insights"] logger(`metrics/setup > setup > enabled modes ${JSON.stringify(conf.settings.modes)}`) //Allowed outputs formats - if ((!conf.settings.outputs)||(!conf.settings.outputs.length)) + if ((!conf.settings.outputs) || (!conf.settings.outputs.length)) conf.settings.outputs = metadata.inputs.config_output.values else conf.settings.outputs = conf.settings.outputs.filter(format => metadata.inputs.config_output.values.includes(format)) diff --git a/source/app/metrics/utils.mjs b/source/app/metrics/utils.mjs index f64ca644..49e87ca9 100644 --- a/source/app/metrics/utils.mjs +++ b/source/app/metrics/utils.mjs @@ -148,7 +148,7 @@ export function formatters({timeZone} = {}) { message = `API error: ${status}` //Error description (optional) - if ((descriptions)&&(descriptions[status])) + if ((descriptions) && (descriptions[status])) message += ` (${descriptions[status]})` else { const description = error.response?.data?.errors?.[0]?.message ?? error.response.data?.error_description ?? error.response?.data?.message ?? null diff --git a/source/app/web/instance.mjs b/source/app/web/instance.mjs index 66808ecb..571c60ac 100644 --- a/source/app/web/instance.mjs +++ b/source/app/web/instance.mjs @@ -338,7 +338,7 @@ export default async function({sandbox = false} = {}) { //Render const q = req.query console.debug(`metrics/app/${login} > ${util.inspect(q, {depth: Infinity, maxStringLength: 256})}`) - if ((q["config.presets"]) && ((conf.settings.extras?.features?.includes("metrics.setup.community.presets"))||(conf.settings.extras?.features === true)||(conf.settings.extras?.default))) { + if ((q["config.presets"]) && ((conf.settings.extras?.features?.includes("metrics.setup.community.presets")) || (conf.settings.extras?.features === true) || (conf.settings.extras?.default))) { console.debug(`metrics/app/${login} > presets have been specified, loading them`) Object.assign(q, await presets(q["config.presets"])) } diff --git a/source/app/web/statics/app.js b/source/app/web/statics/app.js index ef23221c..eb00a8ca 100644 --- a/source/app/web/statics/app.js +++ b/source/app/web/statics/app.js @@ -66,7 +66,7 @@ }, }, //Methods - methods:{ + methods: { //Metrics insights async insights() { window.location.href = `/insights?user=${this.user1}` @@ -74,7 +74,7 @@ //Metrics embed async embed() { window.location.href = `/embed?user=${this.user2}` - } - } + }, + }, }) })() diff --git a/source/plugins/base/index.mjs b/source/plugins/base/index.mjs index 01573d1f..f556ec6d 100644 --- a/source/plugins/base/index.mjs +++ b/source/plugins/base/index.mjs @@ -89,7 +89,7 @@ export default async function({login, graphql, rest, data, q, queries, imports, } //Query contributions collection over account lifetime instead of last year if (account === "user") { - if ((indepth) && (imports.metadata.plugins.base.extras("indepth", {...conf.settings, error:false}))) { + if ((indepth) && (imports.metadata.plugins.base.extras("indepth", {...conf.settings, error: false}))) { const fields = ["totalRepositoriesWithContributedCommits", "totalCommitContributions", "restrictedContributionsCount", "totalIssueContributions", "totalPullRequestContributions", "totalPullRequestReviewContributions"] const start = new Date(data.user.createdAt) const end = new Date() diff --git a/source/plugins/community/screenshot/index.mjs b/source/plugins/community/screenshot/index.mjs index 71f27df3..7ce63a0c 100644 --- a/source/plugins/community/screenshot/index.mjs +++ b/source/plugins/community/screenshot/index.mjs @@ -37,6 +37,6 @@ export default async function({login, q, imports, data, account}, {enabled = fal } //Handle errors catch (error) { - throw imports.format.error(error, {title:"Screenshot error"}) + throw imports.format.error(error, {title: "Screenshot error"}) } } diff --git a/source/plugins/followup/index.mjs b/source/plugins/followup/index.mjs index 5b366d4d..26c80fab 100644 --- a/source/plugins/followup/index.mjs +++ b/source/plugins/followup/index.mjs @@ -57,7 +57,7 @@ export default async function({login, data, computed, imports, q, graphql, queri } //Indepth mode - if ((indepth)&&(imports.metadata.plugins.followup.extras("indepth", {extras}))) { + if ((indepth) && (imports.metadata.plugins.followup.extras("indepth", {extras}))) { console.debug(`metrics/compute/${login}/plugins > followup > indepth`) followup.indepth = {repositories: {}} diff --git a/source/plugins/habits/index.mjs b/source/plugins/habits/index.mjs index 5773559d..0b975e38 100644 --- a/source/plugins/habits/index.mjs +++ b/source/plugins/habits/index.mjs @@ -97,7 +97,7 @@ export default async function({login, data, rest, imports, q, account}, {enabled } //Linguist - if ((charts)&&((imports.metadata.plugins.habits.extras("charts", {extras, error:false})))) { + if ((charts) && (imports.metadata.plugins.habits.extras("charts", {extras, error: false}))) { //Check if linguist exists console.debug(`metrics/compute/${login}/plugins > habits > searching recently used languages using linguist`) if (patches.length) { @@ -113,7 +113,7 @@ export default async function({login, data, rest, imports, q, account}, {enabled } //Generating charts with chartist - if ((_charts === "chartist")&&(imports.metadata.plugins.habits.extras("charts.type", {extras}))) { + if ((_charts === "chartist") && (imports.metadata.plugins.habits.extras("charts.type", {extras}))) { console.debug(`metrics/compute/${login}/plugins > habits > generating charts`) habits.charts = await Promise.all([ {type: "line", data: {...empty(24), ...Object.fromEntries(Object.entries(habits.commits.hours).filter(([k]) => !Number.isNaN(+k)))}, low: 0, high: habits.commits.hours.max}, diff --git a/source/plugins/languages/index.mjs b/source/plugins/languages/index.mjs index 4fffddce..e4c27d73 100644 --- a/source/plugins/languages/index.mjs +++ b/source/plugins/languages/index.mjs @@ -76,7 +76,7 @@ export default async function({login, data, imports, q, rest, account}, {enabled } //Indepth mode - if ((indepth)&&(imports.metadata.plugins.languages.extras("indepth", {extras}))) { + if ((indepth) && (imports.metadata.plugins.languages.extras("indepth", {extras}))) { //Fetch gpg keys (web-flow is GitHub's public key when making changes from web ui) const gpg = [] try { diff --git a/source/plugins/notable/index.mjs b/source/plugins/notable/index.mjs index cb0d3639..fa60adbb 100644 --- a/source/plugins/notable/index.mjs +++ b/source/plugins/notable/index.mjs @@ -33,7 +33,7 @@ export default async function({login, q, imports, rest, graphql, data, account, console.debug(`metrics/compute/${login}/plugins > notable > found ${contributions.length} notable contributions`) //Indepth - if ((indepth)&&(imports.metadata.plugins.notable.extras("indepth", {extras}))) { + if ((indepth) && (imports.metadata.plugins.notable.extras("indepth", {extras}))) { console.debug(`metrics/compute/${login}/plugins > notable > indepth`) //Fetch issues diff --git a/source/plugins/pagespeed/index.mjs b/source/plugins/pagespeed/index.mjs index 5b388804..8ea1c6c2 100644 --- a/source/plugins/pagespeed/index.mjs +++ b/source/plugins/pagespeed/index.mjs @@ -47,13 +47,18 @@ export default async function({login, imports, data, q, account}, {enabled = fal } //Handle errors catch (error) { - throw imports.format.error(error, {descriptions:{"429":'(consider using "plugin_pagespeed_token")', custom(error) { - const description = error.response?.data?.error?.message?.match(/Lighthouse returned error: (?[A-Z_]+)/)?.groups?.description ?? null - if (description) { - const status = error.response?.status - return `API error: ${status} (${description})` - } - return null - }}}) + throw imports.format.error(error, { + descriptions: { + "429": '(consider using "plugin_pagespeed_token")', + custom(error) { + const description = error.response?.data?.error?.message?.match(/Lighthouse returned error: (?[A-Z_]+)/)?.groups?.description ?? null + if (description) { + const status = error.response?.status + return `API error: ${status} (${description})` + } + return null + }, + }, + }) } } diff --git a/source/plugins/projects/index.mjs b/source/plugins/projects/index.mjs index cabab675..a2154e35 100644 --- a/source/plugins/projects/index.mjs +++ b/source/plugins/projects/index.mjs @@ -66,10 +66,14 @@ export default async function({login, data, imports, graphql, q, queries, accoun } //Handle errors catch (error) { - throw imports.format.error(error, {descriptions:{custom(error) { - if (error.errors?.map(({type}) => type)?.includes("INSUFFICIENT_SCOPES")) - return "Insufficient token scopes" - return null - }}}) + throw imports.format.error(error, { + descriptions: { + custom(error) { + if (error.errors?.map(({type}) => type)?.includes("INSUFFICIENT_SCOPES")) + return "Insufficient token scopes" + return null + }, + }, + }) } } diff --git a/source/plugins/stargazers/index.mjs b/source/plugins/stargazers/index.mjs index 0204876e..289a3da5 100644 --- a/source/plugins/stargazers/index.mjs +++ b/source/plugins/stargazers/index.mjs @@ -59,7 +59,7 @@ export default async function({login, graphql, data, imports, q, queries, accoun //Generating charts let charts = null - if ((_charts === "chartist")&&(imports.metadata.plugins.stargazers.extras("charts.type", {extras}))) { + if ((_charts === "chartist") && (imports.metadata.plugins.stargazers.extras("charts.type", {extras}))) { console.debug(`metrics/compute/${login}/plugins > stargazers > generating charts`) charts = await Promise.all([{data: total, low: total.min, high: total.max}, {data: increments, ref: 0, low: increments.min, high: increments.max, sign: true}].map(({data: {dates: set}, high, low, ref, sign = false}) => imports.chartist("line", { diff --git a/source/plugins/traffic/index.mjs b/source/plugins/traffic/index.mjs index 41c7fb5e..ae848aa8 100644 --- a/source/plugins/traffic/index.mjs +++ b/source/plugins/traffic/index.mjs @@ -27,6 +27,6 @@ export default async function({login, imports, data, rest, q, account}, {enabled } //Handle errors catch (error) { - throw imports.format.error(error, {descriptions:{"403":"Insufficient token scopes"}}) + throw imports.format.error(error, {descriptions: {"403": "Insufficient token scopes"}}) } } diff --git a/tests/metrics.test.js b/tests/metrics.test.js index c8bf9595..9f8c3ada 100644 --- a/tests/metrics.test.js +++ b/tests/metrics.test.js @@ -119,7 +119,7 @@ describe("GitHub Action", () => if ((skip.includes(template)) || ((modes.length) && (!modes.includes("action")))) test.skip(name, () => null) else - test(name, async () => expect(await action.run({template, base: "", query: JSON.stringify(query), plugins_errors_fatal: true, dryrun: true, use_mocked_data: true, verify: true, retries:1, ...input})).toBe(true), timeout) + test(name, async () => expect(await action.run({template, base: "", query: JSON.stringify(query), plugins_errors_fatal: true, dryrun: true, use_mocked_data: true, verify: true, retries: 1, ...input})).toBe(true), timeout) } }))