From 6cd6eace1dbd5552027ddf13cdaa3ba1bc7559d5 Mon Sep 17 00:00:00 2001 From: QuentiumYT Date: Tue, 9 Sep 2025 15:18:05 +0200 Subject: [PATCH 1/2] Cleanup summary --- .gitignore | 9 +- report/package.json | 1 - .../generateUrlReport.test.js.snap | 14 +- report/src/__snapshots__/utils.test.js.snap | 2 +- report/src/index.js | 6 +- report/src/summary/404.js | 29 +- .../summary/__snapshots__/index.test.js.snap | 6 +- report/src/summary/budget_page.js | 8 +- report/src/summary/codescan.js | 19 +- report/src/summary/declaration-a11y.js | 44 +- report/src/summary/declaration-a11y.test.js | 16 +- report/src/summary/declaration-rgpd.js | 31 +- report/src/summary/declaration-rgpd.test.js | 22 +- report/src/summary/dependabot.js | 21 +- report/src/summary/dsfr.js | 13 +- report/src/summary/ecoindex.js | 13 +- report/src/summary/github_repository.js | 6 +- report/src/summary/http.js | 18 +- report/src/summary/lighthouse.js | 23 +- report/src/summary/nmap.js | 40 +- report/src/summary/nmap.test.js | 4 +- report/src/summary/sonarcloud.js | 82 +-- report/src/summary/stats.js | 6 +- report/src/summary/testssl.js | 35 +- report/src/summary/testssl.test.js | 4 +- report/src/summary/thirdparties.js | 46 +- report/src/summary/tracking.js | 6 +- report/src/summary/trivy.js | 40 +- report/src/summary/trivy.test.js | 4 +- report/src/summary/updownio.js | 14 +- report/src/summary/zap.js | 36 +- report/yarn.lock | 620 +----------------- types/index.d.ts | 2 +- types/summary.d.ts | 7 +- 34 files changed, 348 insertions(+), 899 deletions(-) diff --git a/.gitignore b/.gitignore index d21d86bf..42bcc9a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ +# IDE / Editor +.idea/ +.vscode/ + +# Dependency directories +node_modules/ + +# File systems .DS_Store Thumbs.db -node_modules/ diff --git a/report/package.json b/report/package.json index ca11cfad..658e90a7 100644 --- a/report/package.json +++ b/report/package.json @@ -20,7 +20,6 @@ ] }, "devDependencies": { - "@socialgouv/eslint-config-strict": "^1.0.0-beta.5", "@types/jest": "^30.0.0", "@types/lodash.omit": "^4.5.9", "@types/lodash.pick": "^4.4.9", diff --git a/report/src/__snapshots__/generateUrlReport.test.js.snap b/report/src/__snapshots__/generateUrlReport.test.js.snap index a458836d..b6f25d1c 100644 --- a/report/src/__snapshots__/generateUrlReport.test.js.snap +++ b/report/src/__snapshots__/generateUrlReport.test.js.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`generateUrlReport should allow empty/invalid reports 1`] = ` { @@ -24,9 +24,6 @@ exports[`generateUrlReport should allow empty/invalid reports 1`] = ` "stats": null, "summary": { "codescanCount": 42, - "codescanGrade": undefined, - "declaration-a11y": undefined, - "declaration-rgpd": undefined, }, "testssl": null, "thirdparties": null, @@ -144,12 +141,11 @@ exports[`generateUrlReport should generate latest report for a valid url 1`] = ` }, "summary": { "404Count": 3, - "404Grade": "A", + "404Grade": "B", "codescanCount": 42, - "codescanGrade": undefined, - "declaration-a11y": "F", - "declaration-rgpd-ml": "D", - "declaration-rgpd-pc": "D", + "declaration_a11yGrade": "F", + "declaration_rgpd-mlGrade": "D", + "declaration_rgpd-pcGrade": "D", "sonarcloudGrade": "F", }, "testssl": [ diff --git a/report/src/__snapshots__/utils.test.js.snap b/report/src/__snapshots__/utils.test.js.snap index de021a2f..d29cdc66 100644 --- a/report/src/__snapshots__/utils.test.js.snap +++ b/report/src/__snapshots__/utils.test.js.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`getUrls should parse dashlord.yaml file correctly 1`] = ` [ diff --git a/report/src/index.js b/report/src/index.js index 4db55803..9c48f381 100644 --- a/report/src/index.js +++ b/report/src/index.js @@ -1,6 +1,4 @@ -const fs = require("fs"); const path = require("path"); -const YAML = require("yaml"); const core = require("@actions/core"); const { getUrls, writeFile, getConfig } = require("./utils"); @@ -15,11 +13,9 @@ const DASHLORD_REPO_PATH = process.env.DASHLORD_REPO_PATH || "."; * @returns {DashLordReport} Full DashLoard report as JSON */ const generateReport = () => { - const urls = getUrls() + return getUrls() .map((url) => generateUrlReport(url)) .filter(Boolean); - /** @ts-expect-error #TODO #WTH */ - return urls; }; const generateJsons = async () => { diff --git a/report/src/summary/404.js b/report/src/summary/404.js index 1aa43f3a..f1651502 100644 --- a/report/src/summary/404.js +++ b/report/src/summary/404.js @@ -1,12 +1,31 @@ +/** @param {number} count */ +const getGrade = (count) => { + if (count > 20) { + return "F"; + } else if (count > 15) { + return "E"; + } else if (count > 10) { + return "D"; + } else if (count > 5) { + return "C"; + } else if (count > 0) { + return "B"; + } else { + return "A"; + } +}; + /** @param {Wget404Report} report */ const summary = (report) => { if (report) { const links = report.map((item) => item.link); - const grade = links.length > 20 ? "F" : links.length > 10 ? "D" : "A"; - return { - "404Grade": grade, - "404Count": links.length, - }; + const grade = getGrade(links.length); + if (grade) { + return { + "404Grade": grade, + "404Count": links.length, + }; + } } }; diff --git a/report/src/summary/__snapshots__/index.test.js.snap b/report/src/summary/__snapshots__/index.test.js.snap index 10923a63..fa749019 100644 --- a/report/src/summary/__snapshots__/index.test.js.snap +++ b/report/src/summary/__snapshots__/index.test.js.snap @@ -1,16 +1,16 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`should compute summary for some URL report 1`] = ` { "404Count": 5, - "404Grade": "A", + "404Grade": "B", "apdex": 1, "apdexGrade": "A", "codescanCount": 0, "codescanGrade": "A", "cookiesCount": 2, "cookiesGrade": "B", - "declaration-a11y": "F", + "declaration_a11yGrade": "F", "dependabotCount": 4, "dependabotGrade": "D", "httpGrade": "A+", diff --git a/report/src/summary/budget_page.js b/report/src/summary/budget_page.js index 30d9dc3c..22025b02 100644 --- a/report/src/summary/budget_page.js +++ b/report/src/summary/budget_page.js @@ -1,13 +1,13 @@ /** @param {PageReport} report */ const summary = (report) => { if (report) { - const budgetPageGrade = report.grade; - if (budgetPageGrade) { + const { grade } = report; + if (grade) { return { - budgetPageGrade + budgetPageGrade: grade, }; } } }; -module.exports = summary; \ No newline at end of file +module.exports = summary; diff --git a/report/src/summary/codescan.js b/report/src/summary/codescan.js index c8f4a66c..8fd3ae45 100644 --- a/report/src/summary/codescan.js +++ b/report/src/summary/codescan.js @@ -1,10 +1,21 @@ /** @param {CodescanReport} report */ const summary = (report) => { if (report) { - return { - codescanCount: report.totalCount, - codescanGrade: report.grade, - }; + const { grade, totalCount } = report; + if (grade && totalCount !== undefined && totalCount !== null) { + return { + codescanGrade: grade, + codescanCount: totalCount, + }; + } else if (grade) { + return { + codescanGrade: grade, + }; + } else if (totalCount !== undefined && totalCount !== null) { + return { + codescanCount: totalCount, + }; + } } }; diff --git a/report/src/summary/declaration-a11y.js b/report/src/summary/declaration-a11y.js index fa2eda41..e2aabeb3 100644 --- a/report/src/summary/declaration-a11y.js +++ b/report/src/summary/declaration-a11y.js @@ -6,34 +6,28 @@ const grades = { /** @param {DeclarationA11yReport} report */ const summary = (report) => { - // not known - let grade = undefined; - if (!report) { - return { - "declaration-a11y": undefined, - }; - } - const mentionIndex = report.mention - ? Object.values(grades).indexOf(report.mention) - : -1; + if (report) { + const { mention, declarationUrl } = report; + const mentionIndex = mention ? Object.values(grades).indexOf(mention) : -1; + + let grade = undefined; + if (mention !== undefined && mention !== null) + if (mentionIndex > -1) { + if (declarationUrl) { + grade = Object.keys(grades)[mentionIndex]; + } else if (mention === "Accessibilité : non conforme") { + grade = "D"; + } else { + grade = "F"; + } + } - if (report.mention === null) { - // not detected - grade = "F"; - } else if (mentionIndex > -1) { - if (report.declarationUrl) { - // @ts-ignore - grade = Object.keys(grades)[mentionIndex]; - } else if (report.mention === "Accessibilité : non conforme") { - grade = "D"; - } else { - grade = "F"; + if (grade) { + return { + "declaration_a11yGrade": grade, + }; } } - - return { - "declaration-a11y": grade, - }; }; module.exports = summary; diff --git a/report/src/summary/declaration-a11y.test.js b/report/src/summary/declaration-a11y.test.js index 12b91ccc..8e46bf38 100644 --- a/report/src/summary/declaration-a11y.test.js +++ b/report/src/summary/declaration-a11y.test.js @@ -3,38 +3,38 @@ const summary = require("./declaration-a11y"); const tests = [ { mention: undefined, - expected: { "declaration-a11y": undefined }, + expected: undefined, }, { mention: null, - expected: { "declaration-a11y": "F" }, + expected: undefined, }, { mention: "Accessibilité : totalement conforme", - expected: { "declaration-a11y": "F" }, + expected: { "declaration_a11yGrade": "F" }, }, { mention: "Accessibilité : partiellement conforme", - expected: { "declaration-a11y": "F" }, + expected: { "declaration_a11yGrade": "F" }, }, { mention: "Accessibilité : non conforme", - expected: { "declaration-a11y": "D" }, + expected: { "declaration_a11yGrade": "D" }, }, { mention: "Accessibilité : totalement conforme", declarationUrl: "https://declaration.url", - expected: { "declaration-a11y": "A" }, + expected: { "declaration_a11yGrade": "A" }, }, { mention: "Accessibilité : partiellement conforme", declarationUrl: "https://declaration.url", - expected: { "declaration-a11y": "B" }, + expected: { "declaration_a11yGrade": "B" }, }, { mention: "Accessibilité : non conforme", declarationUrl: "https://declaration.url", - expected: { "declaration-a11y": "C" }, + expected: { "declaration_a11yGrade": "C" }, }, ]; diff --git a/report/src/summary/declaration-rgpd.js b/report/src/summary/declaration-rgpd.js index 6aec57a3..cbdb4da8 100644 --- a/report/src/summary/declaration-rgpd.js +++ b/report/src/summary/declaration-rgpd.js @@ -1,29 +1,22 @@ -const grades = ["F", "D", "A"]; - /** @param {DeclarationRgpdReport} report */ const summary = (report) => { - // not known - if (!report || !report.map) { - return { - "declaration-rgpd": undefined, - }; - } + if (report && report.length) { + const summaryMap = report.map((result) => { + let grade = "F"; - const tmpSummary = report.map((result) => { - let grade = 0; + if (result.declarationUrl) { + grade = "D"; - if (result.declarationUrl) { - grade += 1; - - if (result.score === result.maxScore) { - grade += 1; + if (result.score === result.maxScore) { + grade = "A"; + } } - } - return [`declaration-rgpd-${result.slug}`, grades[grade]]; - }); + return [`declaration_rgpd-${result.slug}Grade`, grade]; + }); - return Object.fromEntries(tmpSummary); + return Object.fromEntries(summaryMap); + } }; module.exports = summary; diff --git a/report/src/summary/declaration-rgpd.test.js b/report/src/summary/declaration-rgpd.test.js index 8262b18e..c893dddc 100644 --- a/report/src/summary/declaration-rgpd.test.js +++ b/report/src/summary/declaration-rgpd.test.js @@ -13,7 +13,7 @@ const tests = [ declarationUrl: undefined, }, ], - expected: { "declaration-rgpd-ml": "F", "declaration-rgpd-pc": "F" }, + expected: { "declaration_rgpd-mlGrade": "F", "declaration_rgpd-pcGrade": "F" }, }, { name: "ML undefined & PC incomplete", @@ -29,7 +29,7 @@ const tests = [ score: 3, }, ], - expected: { "declaration-rgpd-ml": "F", "declaration-rgpd-pc": "D" }, + expected: { "declaration_rgpd-mlGrade": "F", "declaration_rgpd-pcGrade": "D" }, }, { name: "ML incomplete & PC undefined", @@ -45,7 +45,7 @@ const tests = [ declarationUrl: undefined, }, ], - expected: { "declaration-rgpd-ml": "D", "declaration-rgpd-pc": "F" }, + expected: { "declaration_rgpd-mlGrade": "D", "declaration_rgpd-pcGrade": "F" }, }, { name: "ML incomplete & PC incomplete", @@ -63,7 +63,7 @@ const tests = [ score: 2, }, ], - expected: { "declaration-rgpd-ml": "D", "declaration-rgpd-pc": "D" }, + expected: { "declaration_rgpd-mlGrade": "D", "declaration_rgpd-pcGrade": "D" }, }, { name: "ML valid & PC incomplete", @@ -81,7 +81,7 @@ const tests = [ score: 2, }, ], - expected: { "declaration-rgpd-ml": "A", "declaration-rgpd-pc": "D" }, + expected: { "declaration_rgpd-mlGrade": "A", "declaration_rgpd-pcGrade": "D" }, }, { name: "ML incomplete & PC valid", @@ -99,7 +99,7 @@ const tests = [ score: 6, }, ], - expected: { "declaration-rgpd-ml": "D", "declaration-rgpd-pc": "A" }, + expected: { "declaration_rgpd-mlGrade": "D", "declaration_rgpd-pcGrade": "A" }, }, { name: "ML valid & PC valid", @@ -117,7 +117,7 @@ const tests = [ score: 1, }, ], - expected: { "declaration-rgpd-ml": "A", "declaration-rgpd-pc": "A" }, + expected: { "declaration_rgpd-mlGrade": "A", "declaration_rgpd-pcGrade": "A" }, }, { name: "ML undefined & PC valid", @@ -133,7 +133,7 @@ const tests = [ score: 1, }, ], - expected: { "declaration-rgpd-ml": "F", "declaration-rgpd-pc": "A" }, + expected: { "declaration_rgpd-mlGrade": "F", "declaration_rgpd-pcGrade": "A" }, }, { name: "ML valid & PC undefined", @@ -149,17 +149,17 @@ const tests = [ declarationUrl: undefined, }, ], - expected: { "declaration-rgpd-ml": "A", "declaration-rgpd-pc": "F" }, + expected: { "declaration_rgpd-mlGrade": "A", "declaration_rgpd-pcGrade": "F" }, }, { name: "Invalid report 1", report: {}, - expected: { "declaration-rgpd": undefined }, + expected: undefined, }, { name: "Invalid report 2", report: null, - expected: { "declaration-rgpd": undefined }, + expected: undefined, }, ]; diff --git a/report/src/summary/dependabot.js b/report/src/summary/dependabot.js index e9fd469f..5e0dbeb4 100644 --- a/report/src/summary/dependabot.js +++ b/report/src/summary/dependabot.js @@ -1,10 +1,21 @@ /** @param {DependabotReport} report */ const summary = (report) => { - if (report && report.grade) { - return { - dependabotGrade: report.grade, - dependabotCount: report.totalCount, - }; + if (report) { + const { grade, totalCount } = report; + if (grade && totalCount !== undefined && totalCount !== null) { + return { + dependabotGrade: grade, + dependabotCount: totalCount, + }; + } else if (grade) { + return { + dependabotGrade: grade, + }; + } else if (totalCount !== undefined && totalCount !== null) { + return { + dependabotCount: totalCount, + }; + } } }; diff --git a/report/src/summary/dsfr.js b/report/src/summary/dsfr.js index 08b39809..7b00d9ab 100644 --- a/report/src/summary/dsfr.js +++ b/report/src/summary/dsfr.js @@ -1,10 +1,13 @@ /** @param {DsFrReport} report */ const summary = (report) => { - if (!report) return null; - return { - dsfrGrade: - report.detected === true ? "A" : report.detected === false ? "F" : null, - }; + if (report) { + const grade = report.detected === true ? "A" : report.detected === false ? "F" : undefined; + if (grade) { + return { + dsfrGrade: grade, + }; + } + } }; module.exports = summary; diff --git a/report/src/summary/ecoindex.js b/report/src/summary/ecoindex.js index 86c050ce..6a707734 100644 --- a/report/src/summary/ecoindex.js +++ b/report/src/summary/ecoindex.js @@ -1,10 +1,13 @@ /** @param {EcoIndexReport} report */ const summary = (report) => { - const result = (report && report.length && report[0]) || null; - if (result && result.grade) { - return { - ecoindexGrade: result.grade, - }; + if (report) { + const row = report.length > 0 && report[0]; + const grade = row ? row.grade : undefined; + if (grade) { + return { + ecoindexGrade: grade, + }; + } } }; diff --git a/report/src/summary/github_repository.js b/report/src/summary/github_repository.js index 315baeba..48099fb8 100644 --- a/report/src/summary/github_repository.js +++ b/report/src/summary/github_repository.js @@ -1,10 +1,10 @@ /** @param {PageReport} report */ const summary = (report) => { if (report) { - const githubRepositoryGrade = report.grade; - if (githubRepositoryGrade) { + const { grade } = report; + if (grade) { return { - githubRepositoryGrade, + githubRepositoryGrade: grade, }; } } diff --git a/report/src/summary/http.js b/report/src/summary/http.js index f1407fb8..9e23e0de 100644 --- a/report/src/summary/http.js +++ b/report/src/summary/http.js @@ -1,15 +1,13 @@ /** @param {HttpReport} report */ const summary = (report) => { - // @ts-ignore use legacy value - if (report && report.grade) { - return { - // @ts-ignore use legacy value - httpGrade: report.grade, - }; - } else if (report && report.scan && report.scan.grade) { - return { - httpGrade: report.scan.grade, - }; + if (report) { + // @ts-ignore use legacy value + const { grade } = report || report.scan; + if (grade) { + return { + httpGrade: grade, + }; + } } }; diff --git a/report/src/summary/lighthouse.js b/report/src/summary/lighthouse.js index 9d84a870..53cc089b 100644 --- a/report/src/summary/lighthouse.js +++ b/report/src/summary/lighthouse.js @@ -2,18 +2,19 @@ const { scoreToGrade } = require("../utils"); /** @param {LighthouseReport} report */ const summary = (report) => { - /* @type {LighthouseReport} */ - const reportData = (report && Array.isArray(report) && report[0]) || report; // use first lhr report - if (reportData && reportData.categories) { - const lhrCategories = reportData.categories; + const { categories } = report || {}; + if (report && categories) { + return Object.keys(categories).reduce((scores, key) => { + const categoryKey = /** @type {LighthouseReportCategoryKey} */ (key); + const { score } = categories[categoryKey]; - return Object.keys(lhrCategories).reduce((scores, key) => { - const score = lhrCategories[key].score; - return { - ...scores, - [`lighthouse_${key}`]: score, - [`lighthouse_${key}Grade`]: scoreToGrade(score), - }; + if (score !== undefined && score !== null) { + return { + ...scores, + [`lighthouse_${key}`]: score, + [`lighthouse_${key}Grade`]: scoreToGrade(score), + }; + } }, {}); } }; diff --git a/report/src/summary/nmap.js b/report/src/summary/nmap.js index f35a5061..fdabc17f 100644 --- a/report/src/summary/nmap.js +++ b/report/src/summary/nmap.js @@ -1,21 +1,39 @@ /** @param {number} count */ -const getGradeOpenPorts = (count) => { - return count > 2 ? "F" : "A"; +const getGrade = (count) => { + if (count > 8) { + return "F"; + } else if (count > 6) { + return "E"; + } else if (count > 4) { + return "D"; + } else if (count > 2) { + return "C"; + } else if (count > 0) { + return "B"; + } else { + return "A"; + } }; -//todo: improve - /** @param {NmapReport} report */ const summary = (report) => { if (report) { - const nmapGrade = report.grade; - const nmapOpenPortsCount = report.open_ports && report.open_ports.length; - const nmapOpenPortsGrade = getGradeOpenPorts(nmapOpenPortsCount); - if (nmapGrade) { + const { grade, open_ports } = report; + const portsGrade = open_ports ? getGrade(open_ports.length) : undefined; + if (grade && open_ports) { + return { + nmapGrade: grade, + nmapOpenPortsGrade: portsGrade, + nmapOpenPortsCount: open_ports.length, + }; + } else if (grade) { + return { + nmapGrade: grade, + }; + } else if (open_ports) { return { - nmapGrade, - nmapOpenPortsCount, - nmapOpenPortsGrade, + nmapOpenPortsGrade: portsGrade, + nmapOpenPortsCount: open_ports.length, }; } } diff --git a/report/src/summary/nmap.test.js b/report/src/summary/nmap.test.js index 42606285..f18164c6 100644 --- a/report/src/summary/nmap.test.js +++ b/report/src/summary/nmap.test.js @@ -21,7 +21,7 @@ const tests = [ expected: { nmapGrade: "B", nmapOpenPortsCount: 1, - nmapOpenPortsGrade: "A", + nmapOpenPortsGrade: "B", }, }, { @@ -61,7 +61,7 @@ const tests = [ expected: { nmapGrade: "F", nmapOpenPortsCount: 3, - nmapOpenPortsGrade: "F", + nmapOpenPortsGrade: "C", }, }, ]; diff --git a/report/src/summary/sonarcloud.js b/report/src/summary/sonarcloud.js index bc7a2002..29841912 100644 --- a/report/src/summary/sonarcloud.js +++ b/report/src/summary/sonarcloud.js @@ -1,49 +1,53 @@ /** - * + * @param {number} vulnerabilities + * @param {number} bugs + * @param {number} codeSmells + */ +const getGrade = (vulnerabilities, bugs, codeSmells) => { + if (vulnerabilities > 10 || bugs > 50) { + return "F"; + } else if (vulnerabilities > 0) { + return "E"; + } else if (bugs > 10) { + return "D"; + } else if (bugs > 0) { + return "C"; + } else if (codeSmells > 0) { + return "B"; + } else { + return "A"; + } +}; + +/** * @param {number[]} arr - * @returns + * @returns {number} */ const sum = (arr) => arr.reduce((a, c) => a + c, 0); /** @param {SonarCloudReport} report */ const summary = (report) => { - if (!report || report.length === 0) return; - const bugs = sum(report.map((repo) => repo.result.status.bugs)); - const vulnerabilities = sum( - report.map((repo) => repo.result.status.vulnerabilities) - ); - const codeSmells = sum(report.map((repo) => repo.result.status.codeSmells)); - const gateFailed = - report.filter((repo) => repo.result.status?.qualityGateStatus === "ERROR") - .length > 0; - const gateSuccess = - report.filter((repo) => repo.result.status?.qualityGateStatus === "OK") - .length === report.length; - if (gateFailed || vulnerabilities > 10 || bugs > 50) { - return { - sonarcloudGrade: "F", - }; - } - if (gateSuccess) { - return { - sonarcloudGrade: "A", - }; - } - - const grade = - vulnerabilities > 0 - ? "E" - : bugs > 10 - ? "D" - : bugs > 0 - ? "C" - : codeSmells > 0 - ? "B" - : "A"; - if (grade) { - return { - sonarcloudGrade: grade, - }; + if (report && report.length) { + const bugs = sum(report.map((repo) => repo.result.status.bugs)); + const vulnerabilities = sum(report.map((repo) => repo.result.status.vulnerabilities)); + const codeSmells = sum(report.map((repo) => repo.result.status.codeSmells)); + const gateFailed = report.filter((repo) => repo.result.status?.qualityGateStatus === "ERROR").length > 0; + const gateSuccess = report.filter((repo) => repo.result.status?.qualityGateStatus === "OK").length === report.length; + if (gateFailed) { + return { + sonarcloudGrade: "F", + }; + } else if (gateSuccess) { + return { + sonarcloudGrade: "A", + }; + } + const grade = getGrade(vulnerabilities, bugs, codeSmells); + if (grade) { + return { + sonarcloudGrade: grade, + }; + } } }; diff --git a/report/src/summary/stats.js b/report/src/summary/stats.js index 2e5f0137..e5635d76 100644 --- a/report/src/summary/stats.js +++ b/report/src/summary/stats.js @@ -1,10 +1,10 @@ /** @param {PageReport} report */ const summary = (report) => { if (report) { - const statsGrade = report.grade; - if (statsGrade) { + const { grade } = report; + if (grade) { return { - statsGrade, + statsGrade: grade, }; } } diff --git a/report/src/summary/testssl.js b/report/src/summary/testssl.js index e506d0a4..efbbacf4 100644 --- a/report/src/summary/testssl.js +++ b/report/src/summary/testssl.js @@ -1,19 +1,17 @@ /** @param {SslTestReport} report */ const summary = (report) => { - if (report) { - const overallGrade = - report.find && - report.find((entry) => entry.id === "overall_grade"); - const value = overallGrade && overallGrade.finding; + if (report && report.length) { + const overallGrade = report.find((entry) => entry.id === "overall_grade"); + const grade = overallGrade && overallGrade.finding; - const notAfterNode = report.find((r) => r.id === "cert_notAfter"); + const notAfterNode = report.find((entry) => entry.id === "cert_notAfter"); const notAfterIntermediateNode = report.find( (r) => r.id === "intermediate_cert_notAfter <#1>" ); // warn a month before const warningDelay = 30 * 24 * 60 * 60 * 1000; - let expirationDate = null; + let expirationDate = undefined; if (notAfterNode) { if (notAfterIntermediateNode) { const closest = Math.min( @@ -26,20 +24,19 @@ const summary = (report) => { } } - const expiresSoon = - expirationDate && new Date().getTime() + warningDelay > expirationDate; + const expireSoon = expirationDate && new Date().getTime() + warningDelay > expirationDate; - if (value) { - let testsslExpireDate = null; - if (expirationDate) { - testsslExpireDate = new Date(); - testsslExpireDate.setTime(expirationDate); - } + if (grade && expirationDate) { + let expireDate = new Date(); + expireDate.setTime(expirationDate); + return { + testsslExpireSoon: expireSoon, + testsslExpireDate: expireDate.toISOString(), + testsslGrade: grade, + }; + } else if (grade) { return { - testsslExpireSoon: expiresSoon, - testsslExpireDate: - testsslExpireDate && testsslExpireDate.toISOString(), - testsslGrade: value, + testsslGrade: grade, }; } } diff --git a/report/src/summary/testssl.test.js b/report/src/summary/testssl.test.js index ed37b006..fa45a5c9 100644 --- a/report/src/summary/testssl.test.js +++ b/report/src/summary/testssl.test.js @@ -16,8 +16,8 @@ const tests = [ report: [{ id: "overall_grade", finding: "X" }], expected: { testsslGrade: "X", - testsslExpireDate: null, - testsslExpireSoon: null, + testsslExpireDate: undefined, + testsslExpireSoon: undefined, }, }, ]; diff --git a/report/src/summary/thirdparties.js b/report/src/summary/thirdparties.js index 5b881954..b04f7c25 100644 --- a/report/src/summary/thirdparties.js +++ b/report/src/summary/thirdparties.js @@ -1,34 +1,32 @@ /** @param {number} count */ -const getGradeTrackers = (count) => { - return count > 10 ? "F" : count > 2 ? "C" : count > 0 ? "B" : "A"; -}; - -/** @param {number} count */ -const getGradeCookies = (count) => { - return count > 10 - ? "F" - : count > 5 - ? "E" - : count > 2 - ? "C" - : count > 0 - ? "B" - : "A"; +const getGrade = (count) => { + if (count > 10) { + return "F"; + } else if (count > 7) { + return "E"; + } else if (count > 4) { + return "D"; + } else if (count > 2) { + return "C"; + } else if (count > 0) { + return "B"; + } else { + return "A"; + } }; /** @param {ThirdPartiesReport} report */ const summary = (report) => { if (report) { - const trackersCount = report.trackers && report.trackers.length; - const trackersGrade = report.trackers && getGradeTrackers(trackersCount); - const cookiesCount = report.cookies && report.cookies.length; - const cookiesGrade = report.cookies && getGradeCookies(cookiesCount); - if (cookiesCount !== undefined) { + const { cookies, trackers } = report; + const cookiesGrade = getGrade(cookies?.length); + const trackersGrade = getGrade(trackers?.length); + if (cookies && trackers) { return { - cookiesGrade, - cookiesCount, - trackersGrade, - trackersCount, + cookiesGrade: cookiesGrade, + cookiesCount: cookies.length, + trackersGrade: trackersGrade, + trackersCount: trackers.length, }; } } diff --git a/report/src/summary/tracking.js b/report/src/summary/tracking.js index 070068b3..a8e33783 100644 --- a/report/src/summary/tracking.js +++ b/report/src/summary/tracking.js @@ -1,10 +1,10 @@ /** @param {TrackingReport} report */ const summary = (report) => { if (report) { - const trackingService = report.service; - if (trackingService) { + const { service } = report; + if (service) { return { - trackingService, + trackingService: service, }; } } diff --git a/report/src/summary/trivy.js b/report/src/summary/trivy.js index 7ae9d3df..6b74655f 100644 --- a/report/src/summary/trivy.js +++ b/report/src/summary/trivy.js @@ -1,3 +1,24 @@ +/** + * @param {number} critical + * @param {number} high + * @param {number} medium + */ +const getGrade = (critical, high, medium) => { + if (critical > 10) { + return "F"; + } else if (critical > 5) { + return "E"; + } else if (critical > 0) { + return "D"; + } else if (high > 10) { + return "C"; + } else if (high > 0 || medium > 0) { + return "B"; + } else { + return "A"; + } +}; + /** @param {TrivyReport} report */ const summary = (report) => { if (report && report.length) { @@ -12,23 +33,16 @@ const summary = (report) => { image.Results.flatMap((res) => res.Vulnerabilities || [])) || [] ); - const vulnsCount = allVulns.length; const critical = allVulns.filter((vuln) => vuln.Severity === "CRITICAL").length; const high = allVulns.filter((vuln) => vuln.Severity === "HIGH").length; const medium = allVulns.filter((vuln) => vuln.Severity === "MEDIUM").length; - let trivyGrade = "A"; - if (critical > 10) { - trivyGrade = "F"; - } else if (critical > 5) { - trivyGrade = "E"; - } else if (critical > 0) { - trivyGrade = "D"; - } else if (high > 10) { - trivyGrade = "C"; - } else if (high > 0 || medium > 0) { - trivyGrade = "B"; + const grade = getGrade(critical, high, medium); + if (grade) { + return { + trivyGrade: grade, + trivyCount: allVulns.length, + }; } - return { trivy: vulnsCount, trivyGrade }; } }; diff --git a/report/src/summary/trivy.test.js b/report/src/summary/trivy.test.js index cbf3d059..01d9facb 100644 --- a/report/src/summary/trivy.test.js +++ b/report/src/summary/trivy.test.js @@ -57,7 +57,7 @@ const tests = [ }, ], expected: { - trivy: 3, + trivyCount: 3, trivyGrade: "D", }, }, @@ -90,7 +90,7 @@ const tests = [ }, ], expected: { - trivy: 1, + trivyCount: 1, trivyGrade: "B", }, }, diff --git a/report/src/summary/updownio.js b/report/src/summary/updownio.js index 933d5e71..80b81b8b 100644 --- a/report/src/summary/updownio.js +++ b/report/src/summary/updownio.js @@ -1,14 +1,14 @@ /** @param {UpDownReport} report */ const summary = (report) => { if (report) { - const uptime = report.uptime; - const apdex = report.metrics && report.metrics.apdex; - if (uptime !== undefined) { + const { uptime, metrics, uptimeGrade, apdexGrade } = report; + const apdex = metrics?.apdex; + if (uptime) { return { - apdex, - apdexGrade: report.apdexGrade, - uptime, - uptimeGrade: report.uptimeGrade, + apdex: apdex, + apdexGrade: apdexGrade, + uptime: uptime, + uptimeGrade: uptimeGrade, }; } } diff --git a/report/src/summary/zap.js b/report/src/summary/zap.js index 4ec5e55c..ef1c51a1 100644 --- a/report/src/summary/zap.js +++ b/report/src/summary/zap.js @@ -1,27 +1,23 @@ -/** - * - * @param {ZapReportSiteAlert} row - */ -const getGrade = (row) => - ({ - 0: "A", // info - 1: "B", // low - 2: "D", // medium - 3: "F", // high - })[row.riskcode] || "A"; +/** @param {ZapReportSiteAlert} row */ +const getGrade = (row) => ({ + 0: "A", // info + 1: "B", // low + 2: "D", // medium + 3: "F", // high +})[row.riskcode] || "A"; /** @param {ZapReport} report */ const summary = (report) => { - if (report && report.site && report.site.length) { - const alerts = report.site[0].alerts || []; - const maxCritic = - (alerts.length && - alerts.sort((a, b) => b.riskcode.localeCompare(a.riskcode))[0]) || - null; - if (maxCritic) { + const { site } = report || {}; + if (report && site && site.length) { + const { alerts } = report.site[0]; + const maxCritic = alerts.sort((a, b) => b.riskcode.localeCompare(a.riskcode))[0]; + const grade = getGrade(maxCritic); + const risks = alerts.filter((a) => a.riskcode !== "0"); + if (grade) { return { - zapCount: alerts.filter((a) => a.riskcode !== "0").length, - zapGrade: getGrade(maxCritic), + zapGrade: grade, + zapCount: risks.length, }; } } diff --git a/report/yarn.lock b/report/yarn.lock index 445a3f4b..4cdf9633 100644 --- a/report/yarn.lock +++ b/report/yarn.lock @@ -819,25 +819,6 @@ dependencies: "@sinonjs/commons" "^3.0.1" -"@socialgouv/eslint-config-recommended@^0.34.0": - version "0.34.0" - resolved "https://registry.yarnpkg.com/@socialgouv/eslint-config-recommended/-/eslint-config-recommended-0.34.0.tgz" - integrity sha512-ffv+GiLuCElAS25cBcr9QXUSzbLPAIm5ZrCBSUtXkx1z14XxnacHzN/4cR2yX8go1kdeMusJmD6MxVu6bwUlbQ== - dependencies: - eslint-config-prettier "~6.11.0" - eslint-plugin-import "~2.21.2" - eslint-plugin-jest "~23.17.0" - eslint-plugin-prettier "~3.1.4" - -"@socialgouv/eslint-config-strict@^1.0.0-beta.5": - version "1.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@socialgouv/eslint-config-strict/-/eslint-config-strict-1.0.0-beta.5.tgz" - integrity sha512-cPhI3pyHBNzrcQ+hmDhQ3YwG6e/FrObsCeTlJNNi/ysaBjh9fd7VDEe5ff2bnDVlRI86JuJ+c0VlvND2uqCUhw== - dependencies: - "@socialgouv/eslint-config-recommended" "^0.34.0" - eslint-plugin-simple-import-sort "^5.0.3" - eslint-plugin-sort-keys-fix "^1.1.1" - "@tybys/wasm-util@^0.10.0": version "0.10.0" resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.0.tgz#2fd3cd754b94b378734ce17058d0507c45c88369" @@ -910,16 +891,6 @@ expect "^30.0.0" pretty-format "^30.0.0" -"@types/json-schema@^7.0.3": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - "@types/lodash.omit@^4.5.9": version "4.5.9" resolved "https://registry.yarnpkg.com/@types/lodash.omit/-/lodash.omit-4.5.9.tgz#cf4744d034961406d6dc41d9cd109773a9ed8fe3" @@ -976,29 +947,6 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/experimental-utils@^2.5.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - "@ungap/structured-clone@^1.2.0", "@ungap/structured-clone@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" @@ -1182,26 +1130,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-includes@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array.prototype.flat@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz" @@ -1338,14 +1266,6 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz" @@ -1461,11 +1381,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -1489,13 +1404,6 @@ cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -1525,13 +1433,6 @@ deepmerge@^4.3.1: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -1542,14 +1443,6 @@ detect-newline@^3.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz" @@ -1591,35 +1484,13 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - es-define-property@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" @@ -1647,15 +1518,6 @@ es-set-tostringtag@^2.1.0: has-tostringtag "^1.0.2" hasown "^2.0.2" -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz" @@ -1681,82 +1543,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@~6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz" - integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== - dependencies: - get-stdin "^6.0.0" - -eslint-import-resolver-node@^0.3.3: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-import@~2.21.2: - version "2.21.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.21.2.tgz" - integrity sha512-FEmxeGI6yaz+SnEB6YgNHlQK1Bs2DKLM+YF+vuTk5H8J9CLbJLtlPvRFgZZ2+sXiKAlN5dpdlrWOjK8ZoZJpQA== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" - eslint-module-utils "^2.6.0" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@~23.17.0: - version "23.17.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.17.1.tgz" - integrity sha512-/o36fw67qNbJGWbSBIBMfseMsNP/d88WUHAGHCi1xFwsNB3XXZGdvxbOw49j3iQz6MCW/yw8OeOsuQhi6mM5ZA== - dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" - -eslint-plugin-prettier@~3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-simple-import-sort@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.3.tgz" - integrity sha512-1rf3AWiHeWNCQdAq0iXNnlccnH1UDnelGgrPbjBBHE8d2hXVtOudcmy0vTF4hri3iJ0MKz8jBhmH6lJ0ZWZLHQ== - -eslint-plugin-sort-keys-fix@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-sort-keys-fix/-/eslint-plugin-sort-keys-fix-1.1.1.tgz" - integrity sha512-x02SLBg+8OEaoT9vvMbsgeInw17wjHLsa9cOieIVQY+xMNRiXBbyMWw+NiBoxYyJIR4QKDOPDofCjQdoSvltQg== - dependencies: - requireindex "~1.2.0" - -eslint-scope@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" @@ -1765,14 +1551,7 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -1854,11 +1633,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz" @@ -1906,11 +1680,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" @@ -1949,13 +1718,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz" @@ -2034,15 +1796,6 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - get-intrinsic@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" @@ -2072,11 +1825,6 @@ get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -2101,7 +1849,7 @@ glob@^10.3.10: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.4: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -2130,11 +1878,6 @@ gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - graceful-fs@^4.2.11: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -2145,11 +1888,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz" @@ -2160,11 +1898,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" @@ -2191,11 +1924,6 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz" @@ -2250,23 +1978,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz" @@ -2274,11 +1985,6 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz" @@ -2294,23 +2000,13 @@ is-generator-fn@^2.1.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz" @@ -2321,36 +2017,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -isarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz" @@ -2813,13 +2484,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -2843,24 +2507,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz" @@ -2890,11 +2536,6 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lru-cache@^10.2.0: version "10.4.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" @@ -2907,13 +2548,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz" @@ -2984,21 +2618,11 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz" @@ -3029,16 +2653,6 @@ node-releases@^2.0.19: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz" @@ -3051,36 +2665,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.values@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz" @@ -3107,13 +2691,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz" @@ -3128,13 +2705,6 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz" @@ -3149,11 +2719,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz" @@ -3171,13 +2736,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -3188,11 +2746,6 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz" @@ -3221,13 +2774,6 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -3248,23 +2794,11 @@ picomatch@^4.0.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - pirates@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -3277,13 +2811,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - prettier@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" @@ -3318,33 +2845,11 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -requireindex@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -3362,7 +2867,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0: +resolve@^1.12.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -3389,11 +2894,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -"semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz" @@ -3404,13 +2904,6 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - semver@^7.5.4, semver@^7.7.2: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" @@ -3461,32 +2954,6 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz" @@ -3543,22 +3010,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -3580,11 +3031,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz" @@ -3659,33 +3105,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@^2.4.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tsutils@^3.17.1: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" @@ -3718,16 +3142,6 @@ typescript@^5.8.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - undici-types@~7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" @@ -3791,14 +3205,6 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -3806,17 +3212,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz" @@ -3879,11 +3274,6 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" diff --git a/types/index.d.ts b/types/index.d.ts index 081095b2..105578e9 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -397,7 +397,7 @@ type BetagouvReport = { }; }; -type DashLordReport = UrlReport[]; +type DashLordReport = (UrlReport | null)[]; type PageReport = { grade: string; diff --git a/types/summary.d.ts b/types/summary.d.ts index 9a84d313..92644d16 100644 --- a/types/summary.d.ts +++ b/types/summary.d.ts @@ -9,8 +9,9 @@ type UrlReportSummary = { codescanGrade?: string; cookiesCount?: number; cookiesGrade?: string; - "declaration-a11y"?: string; - "declaration-rgpd"?: string; + declaration_a11yGrade?: string; + "declaration_rgpd-mlGrade"?: string; + "declaration_rgpd-pcGrade"?: string; dependabotCount?: number; dependabotGrade?: string; dsfrGrade?: string; @@ -37,7 +38,7 @@ type UrlReportSummary = { testsslGrade?: string; trackersCount?: number; trackersGrade?: string; - trivy?: number; + trivyCount?: number; trivyGrade?: string; uptime?: number; uptimeGrade?: string; From e54c2ec3f505446d2448d728c2e321c593a483d1 Mon Sep 17 00:00:00 2001 From: QuentiumYT Date: Tue, 9 Sep 2025 16:20:28 +0200 Subject: [PATCH 2/2] Better legacy? --- report/src/summary/http.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/report/src/summary/http.js b/report/src/summary/http.js index 9e23e0de..d13f4b08 100644 --- a/report/src/summary/http.js +++ b/report/src/summary/http.js @@ -2,7 +2,7 @@ const summary = (report) => { if (report) { // @ts-ignore use legacy value - const { grade } = report || report.scan; + const grade = report.grade ?? report.scan?.grade; if (grade) { return { httpGrade: grade,