From 730d42a09268a8588207dba520d0cdbd494ff70a Mon Sep 17 00:00:00 2001 From: sverweij Date: Sat, 8 Jun 2024 19:47:10 +0200 Subject: [PATCH] 16.3.3 --- doc/assets/flat-report-example.svg | 2 +- package-lock.json | 4 +- package.json | 2 +- pw.mjs | 75 ++++++++++++++++++++++++++++++ src/meta.cjs | 2 +- 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 pw.mjs diff --git a/doc/assets/flat-report-example.svg b/doc/assets/flat-report-example.svg index 05935f5e9..85d69cafa 100644 --- a/doc/assets/flat-report-example.svg +++ b/doc/assets/flat-report-example.svg @@ -1 +1 @@ -src/graph-utl/add-focus.mjssrc/graph-utl/indexed-module-graph.mjssrc/graph-utl/match-facade.mjssrc/graph-utl/compare.mjssrc/graph-utl/consolidate-module-dependencies.mjssrc/utl/array-util.mjssrc/graph-utl/consolidate-modules.mjssrc/graph-utl/consolidate-to-folder.mjssrc/graph-utl/consolidate-to-pattern.mjssrc/graph-utl/filter-bank.mjssrc/graph-utl/rule-set.mjssrc/graph-utl/strip-self-transitions.mjssrc/report/anon/anonymize-path-element.mjssrc/report/anon/random-string.mjssrc/report/anon/anonymize-path.mjssrc/report/anon/index.mjssrc/report/azure-devops.mjssrc/report/utl/index.mjssrc/report/baseline.mjssrc/report/csv.mjssrc/report/utl/dependency-to-incidence-transformer.mjssrc/report/d2.mjssrc/report/dot-webpage/dot-module.mjssrc/report/dot/dot-module.mjssrc/report/dot-webpage/wrap-in-html.mjssrc/report/dot/index.mjssrc/report/dot/default-theme.mjssrc/report/dot/dot-custom.mjssrc/report/dot/module-utl.mjssrc/report/dot/prepare-custom-level.mjssrc/report/dot/prepare-flat-level.mjssrc/report/dot/prepare-folder-level.mjssrc/report/dot/theming.mjssrc/report/dot/dot-flat.mjssrc/report/dot/dot-folder.mjssrc/report/error-html/error-html-template.mjssrc/report/error-html/index.mjssrc/report/error-html/utl.mjssrc/report/error-long.mjssrc/report/error.mjssrc/utl/wrap-and-indent.mjssrc/report/html/html-template.mjssrc/report/html/index.mjssrc/report/identity.mjssrc/report/index.mjssrc/report/plugins.mjssrc/report/json.mjssrc/report/markdown.mjssrc/report/mermaid.mjssrc/report/metrics.mjssrc/report/null.mjssrc/report/teamcity.mjssrc/report/text.mjs \ No newline at end of file +src/graph-utl/add-focus.mjssrc/graph-utl/indexed-module-graph.mjssrc/graph-utl/match-facade.mjssrc/graph-utl/compare.mjssrc/graph-utl/consolidate-module-dependencies.mjssrc/utl/array-util.mjssrc/graph-utl/consolidate-modules.mjssrc/graph-utl/consolidate-to-folder.mjssrc/graph-utl/consolidate-to-pattern.mjssrc/graph-utl/filter-bank.mjssrc/graph-utl/rule-set.mjssrc/graph-utl/strip-self-transitions.mjssrc/report/anon/anonymize-path-element.mjssrc/report/anon/random-string.mjssrc/report/anon/anonymize-path.mjssrc/report/anon/index.mjssrc/report/azure-devops.mjssrc/report/utl/index.mjssrc/report/baseline.mjssrc/report/csv.mjssrc/report/utl/dependency-to-incidence-transformer.mjssrc/report/d2.mjssrc/report/dot-webpage/dot-module.mjssrc/report/dot/dot-module.mjssrc/report/dot-webpage/wrap-in-html.mjssrc/report/dot/index.mjssrc/report/dot/default-theme.mjssrc/report/dot/dot-custom.mjssrc/report/dot/module-utl.mjssrc/report/dot/prepare-custom-level.mjssrc/report/dot/prepare-flat-level.mjssrc/report/dot/prepare-folder-level.mjssrc/report/dot/theming.mjssrc/report/dot/dot-flat.mjssrc/report/dot/dot-folder.mjssrc/report/error-html/error-html-template.mjssrc/report/error-html/index.mjssrc/report/error-html/utl.mjssrc/report/error-long.mjssrc/report/error.mjssrc/utl/wrap-and-indent.mjssrc/report/html/html-template.mjssrc/report/html/index.mjssrc/report/identity.mjssrc/report/index.mjssrc/report/plugins.mjssrc/report/json.mjssrc/report/markdown.mjssrc/report/mermaid.mjssrc/report/metrics.mjssrc/report/null.mjssrc/report/teamcity.mjssrc/report/text.mjs \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index dd37c41d9..e8686b2ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dependency-cruiser", - "version": "16.3.2", + "version": "16.3.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dependency-cruiser", - "version": "16.3.2", + "version": "16.3.3", "license": "MIT", "dependencies": { "acorn": "8.11.3", diff --git a/package.json b/package.json index a36227725..80af74267 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dependency-cruiser", - "version": "16.3.2", + "version": "16.3.3", "description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.", "keywords": [ "static analysis", diff --git a/pw.mjs b/pw.mjs new file mode 100644 index 000000000..6fbb9de70 --- /dev/null +++ b/pw.mjs @@ -0,0 +1,75 @@ +import { basename, dirname } from "node:path"; + +const EOL = "\n"; + +const template = `graph { + layout=patchwork + fontname=Helvetica + fontsize=9 + node [style=filled fontname=Helvetica fontsize=9] + $\{modules} +} +`; + +const LOCALE = undefined; +const K = 1024; +const formatSize = new Intl.NumberFormat(LOCALE, { + signDisplay: "never", + style: "unit", + unit: "kilobyte", + unitDisplay: "narrow", + maximumFractionDigits: 3, + minimumFractionDigits: 3, +}).format; + +const formatNumber = new Intl.NumberFormat(LOCALE).format; + +// const formatNumber = (pX) => pX; + +const size2color = [ + [16_384, "darkred"], + [8_192, "red"], + [4_096, "orange"], + [2_048, "yellow"], + [1_024, "green"], + [512, "lightgreen"], + [0, "white"], +]; + +function getColor(pSize) { + let lReturnValue = "#ffffff"; + + for (const [lSize, lColor] of size2color) { + if (pSize >= lSize) { + return lColor; + } + } + return lReturnValue; +} + +/** + * Returns the results of a cruise in JSON + * + * @param {import("../../types/cruise-result").ICruiseResult} pResults + * @returns {import("../../types/dependency-cruiser").IReporterOutput} + */ +export default function json(pResults) { + return { + output: + template.replace( + "${modules}", + pResults.modules + .filter((pModule) => pModule.experimentalStats?.size) + .filter( + (pModule) => + !pModule.source.endsWith(".json") && + !pModule.source.endsWith(".ts"), + ) + .map((pModule) => { + return `"${basename(pModule.source) + EOL + dirname(pModule.source) + EOL + formatSize(pModule.experimentalStats.size / K)}" [area=${pModule.experimentalStats.size / (K / 3)} fillcolor="${getColor(pModule.experimentalStats.size)}"]`; + }) + .join(EOL), + ) + EOL, + exitCode: 0, + }; +} diff --git a/src/meta.cjs b/src/meta.cjs index dbb215a98..8afe86c7b 100644 --- a/src/meta.cjs +++ b/src/meta.cjs @@ -1,7 +1,7 @@ /* generated - don't edit */ module.exports = { - version: "16.3.2", + version: "16.3.3", engines: { node: "^18.17||>=20", },