From d9238488f70a7acee8aa213edff1056174cec580 Mon Sep 17 00:00:00 2001 From: sverweij Date: Thu, 22 Dec 2022 23:02:57 +0100 Subject: [PATCH] refactor: reduces anonymous top level functions so they're easier to identify in heap and cpu profiles --- src/cli/format.js | 2 +- src/cli/index.js | 5 ++--- src/cli/init-config/index.js | 2 +- .../extract-depcruise-config/read-config.js | 2 +- src/config-utl/make-absolute.js | 2 +- src/enrich/add-validations.js | 2 +- src/enrich/derive/orphan/index.js | 5 +++-- src/enrich/derive/orphan/is-orphan.js | 2 +- src/enrich/derive/reachable/index.js | 2 +- .../consolidate-module-dependencies.js | 10 +++++---- src/graph-utl/consolidate-modules.js | 2 +- src/graph-utl/consolidate-to-folder.js | 5 +++-- src/report/baseline.js | 18 ++++++++------- src/report/csv.js | 10 +++++---- src/report/dot/index.js | 22 ++++++++++--------- src/report/dot/prepare-custom-level.js | 7 +++++- src/report/dot/prepare-flat-level.js | 2 +- src/report/dot/prepare-folder-level.js | 7 +++++- src/report/error-html/index.js | 10 +++++---- src/report/error.js | 10 +++++---- src/report/html/index.js | 10 +++++---- src/report/identity.js | 10 +++++---- src/report/json.js | 10 +++++---- src/report/markdown.js | 10 +++++---- src/report/mermaid.js | 10 +++++---- src/report/metrics.js | 2 +- src/report/teamcity.js | 2 +- src/report/text.js | 10 +++++---- .../dependency-to-incidence-transformer.js | 5 +++-- 29 files changed, 116 insertions(+), 80 deletions(-) diff --git a/src/cli/format.js b/src/cli/format.js index 79c692734..d8f91800e 100644 --- a/src/cli/format.js +++ b/src/cli/format.js @@ -10,7 +10,7 @@ const io = require("./utl/io"); * @param {import("../../types/dependency-cruiser").IFormatOptions} pOptions * @returns {Number} an exitCode */ -module.exports = async (pResultFile, pOptions) => { +module.exports = async function format(pResultFile, pOptions) { const lOptions = normalizeOptions(pOptions); if (pResultFile !== "-") { diff --git a/src/cli/index.js b/src/cli/index.js index d6440b88a..13b3d6e4a 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -119,7 +119,6 @@ function runCruise(pFileDirectoryArray, pCruiseOptions) { bus.emit("progress", "cli: writing results"); bus.emit("write-start"); io.write(lCruiseOptions.outputTo, lReportingResult.output); - bus.emit("end"); return lReportingResult.exitCode; } @@ -131,7 +130,7 @@ function runCruise(pFileDirectoryArray, pCruiseOptions) { * @returns {number} */ module.exports = function executeCli(pFileDirectoryArray, pCruiseOptions) { - let lCruiseOptions = cloneDeep(pCruiseOptions || {}); + let lCruiseOptions = pCruiseOptions || {}; let lExitCode = 0; try { @@ -170,6 +169,6 @@ module.exports = function executeCli(pFileDirectoryArray, pCruiseOptions) { bus.emit("end"); lExitCode = 1; } - + bus.emit("end"); return lExitCode; }; diff --git a/src/cli/init-config/index.js b/src/cli/init-config/index.js index bdae9f674..118eb601b 100644 --- a/src/cli/init-config/index.js +++ b/src/cli/init-config/index.js @@ -72,7 +72,7 @@ function manifestIsUpdateable(pNormalizedInitConfig) { ); } -module.exports = (pInit) => { +module.exports = function initConfig(pInit) { /* c8 ignore start */ if (pInit === true) { getUserInput() diff --git a/src/config-utl/extract-depcruise-config/read-config.js b/src/config-utl/extract-depcruise-config/read-config.js index e50c3bd1d..8238dccb9 100644 --- a/src/config-utl/extract-depcruise-config/read-config.js +++ b/src/config-utl/extract-depcruise-config/read-config.js @@ -2,7 +2,7 @@ const fs = require("fs"); const path = require("path"); const json5 = require("json5"); -module.exports = (pConfigFileName) => { +module.exports = function readConfig(pConfigFileName) { if ([".js", ".cjs", ""].includes(path.extname(pConfigFileName))) { /* eslint node/global-require:0, security/detect-non-literal-require:0, import/no-dynamic-require:0 */ return require(pConfigFileName); diff --git a/src/config-utl/make-absolute.js b/src/config-utl/make-absolute.js index cffc2c9ad..41e6b4950 100644 --- a/src/config-utl/make-absolute.js +++ b/src/config-utl/make-absolute.js @@ -1,6 +1,6 @@ const path = require("path"); -module.exports = (pFilename) => { +module.exports = function makeAbsolute(pFilename) { let lReturnValue = pFilename; if (!path.isAbsolute(pFilename)) { diff --git a/src/enrich/add-validations.js b/src/enrich/add-validations.js index c3a5cd038..20a44f7f9 100644 --- a/src/enrich/add-validations.js +++ b/src/enrich/add-validations.js @@ -20,7 +20,7 @@ function addDependencyViolations(pModule, pDependency, pRuleSet, pValidate) { * of them added whether or not it is * valid and if not which rules were violated */ -module.exports = (pModules, pRuleSet, pValidate) => { +module.exports = function addValidations(pModules, pRuleSet, pValidate) { return pModules.map((pModule) => ({ ...pModule, ...(pValidate ? validate.module(pRuleSet, pModule) : { valid: true }), diff --git a/src/enrich/derive/orphan/index.js b/src/enrich/derive/orphan/index.js index a5110f75d..41436d132 100644 --- a/src/enrich/derive/orphan/index.js +++ b/src/enrich/derive/orphan/index.js @@ -1,7 +1,8 @@ const isOrphan = require("./is-orphan"); -module.exports = (pModules) => - pModules.map((pModule) => ({ +module.exports = function deriveOrphans(pModules) { + return pModules.map((pModule) => ({ ...pModule, orphan: isOrphan(pModule, pModules), })); +}; diff --git a/src/enrich/derive/orphan/is-orphan.js b/src/enrich/derive/orphan/is-orphan.js index 85dcd7fc6..6c4089805 100644 --- a/src/enrich/derive/orphan/is-orphan.js +++ b/src/enrich/derive/orphan/is-orphan.js @@ -1,6 +1,6 @@ const { isDependent } = require("../module-utl"); -module.exports = (pModule, pGraph) => { +module.exports = function isOrphan(pModule, pGraph) { if (pModule.dependencies.length > 0) { return false; } diff --git a/src/enrich/derive/reachable/index.js b/src/enrich/derive/reachable/index.js index c9a098c25..ee075a0ed 100644 --- a/src/enrich/derive/reachable/index.js +++ b/src/enrich/derive/reachable/index.js @@ -169,7 +169,7 @@ function addReachabilityToGraph(pGraph, pReachableRule) { }); } -module.exports = (pGraph, pRuleSet) => { +module.exports = function deriveReachables(pGraph, pRuleSet) { const lReachableRules = pRuleSet ? getReachableRules(pRuleSet) : []; return lReachableRules.reduce( diff --git a/src/graph-utl/consolidate-module-dependencies.js b/src/graph-utl/consolidate-module-dependencies.js index f3714635e..57d5f34f5 100644 --- a/src/graph-utl/consolidate-module-dependencies.js +++ b/src/graph-utl/consolidate-module-dependencies.js @@ -47,7 +47,9 @@ function consolidateDependencies(pDependencies) { return lReturnValue; } -module.exports = (pModule) => ({ - ...pModule, - dependencies: consolidateDependencies(pModule.dependencies), -}); +module.exports = function consolidateModuleDependencies(pModule) { + return { + ...pModule, + dependencies: consolidateDependencies(pModule.dependencies), + }; +}; diff --git a/src/graph-utl/consolidate-modules.js b/src/graph-utl/consolidate-modules.js index 71a65913a..a0e2517a7 100644 --- a/src/graph-utl/consolidate-modules.js +++ b/src/graph-utl/consolidate-modules.js @@ -34,7 +34,7 @@ function mergeModules(pSourceString, pModules) { ); } -module.exports = (pModules) => { +module.exports = function consolidateModules(pModules) { let lModules = clone(pModules); let lReturnValue = []; diff --git a/src/graph-utl/consolidate-to-folder.js b/src/graph-utl/consolidate-to-folder.js index 6358ac91b..6fb68a9a2 100644 --- a/src/graph-utl/consolidate-to-folder.js +++ b/src/graph-utl/consolidate-to-folder.js @@ -17,7 +17,8 @@ function squashModuleToDirectory(pModule) { }; } -module.exports = (pModules) => - consolidateModules(pModules.map(squashModuleToDirectory)).map( +module.exports = function consolidateToFolder(pModules) { + return consolidateModules(pModules.map(squashModuleToDirectory)).map( consolidateModuleDependencies ); +}; diff --git a/src/report/baseline.js b/src/report/baseline.js index a03192a22..4e40da353 100644 --- a/src/report/baseline.js +++ b/src/report/baseline.js @@ -10,11 +10,13 @@ const DEFAULT_JSON_INDENT = 2; * output: some stats on modules and dependencies in json format * exitCode: 0 */ -module.exports = (pCruiseResult) => ({ - output: JSON.stringify( - pCruiseResult.summary.violations, - null, - DEFAULT_JSON_INDENT - ), - exitCode: 0, -}); +module.exports = function baseline(pCruiseResult) { + return { + output: JSON.stringify( + pCruiseResult.summary.violations, + null, + DEFAULT_JSON_INDENT + ), + exitCode: 0, + }; +}; diff --git a/src/report/csv.js b/src/report/csv.js index 7d6895974..6944d0011 100644 --- a/src/report/csv.js +++ b/src/report/csv.js @@ -27,7 +27,9 @@ function report(pModules) { * the output of a dependency-cruise adhering to ../../schema/cruise-result.schema.json * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults) => ({ - output: report(dependencyToIncidenceTransformer(pResults.modules)), - exitCode: 0, -}); +module.exports = function csv(pResults) { + return { + output: report(dependencyToIncidenceTransformer(pResults.modules)), + exitCode: 0, + }; +}; diff --git a/src/report/dot/index.js b/src/report/dot/index.js index 9e2841cbb..8de77fcd0 100644 --- a/src/report/dot/index.js +++ b/src/report/dot/index.js @@ -130,17 +130,19 @@ function normalizeDotReporterOptions( * @param {string} pGranularity - either "module" (for fine grained module * level) or "folder" (for a report consolidated * to folders) - * @returns {(pResults, pDotReporterOptions) => import("../../../types/dependency-cruiser").IReporterOutput} + * @returns {(pResults, pDotReporterOptions) => import("../../..").IReporterOutput} */ -module.exports = (pGranularity) => (pResults, pDotReporterOptions) => { - const lDotReporterOptions = normalizeDotReporterOptions( - pDotReporterOptions, - pGranularity, - pResults - ); +module.exports = function produceDotReporter(pGranularity) { + return function dot(pResults, pDotReporterOptions) { + const lDotReporterOptions = normalizeDotReporterOptions( + pDotReporterOptions, + pGranularity, + pResults + ); - return { - output: report(pResults, pGranularity, lDotReporterOptions), - exitCode: 0, + return { + output: report(pResults, pGranularity, lDotReporterOptions), + exitCode: 0, + }; }; }; diff --git a/src/report/dot/prepare-custom-level.js b/src/report/dot/prepare-custom-level.js index 466f3aed3..30d963077 100644 --- a/src/report/dot/prepare-custom-level.js +++ b/src/report/dot/prepare-custom-level.js @@ -4,7 +4,12 @@ const compare = require("../../graph-utl/compare"); const stripSelfTransitions = require("../../graph-utl/strip-self-transitions"); const moduleUtl = require("./module-utl"); -module.exports = (pResults, pTheme, pCollapsePattern, pShowMetrics) => { +module.exports = function prepareCustomLevel( + pResults, + pTheme, + pCollapsePattern, + pShowMetrics +) { return ( pCollapsePattern ? consolidateToPattern(pResults.modules, pCollapsePattern) diff --git a/src/report/dot/prepare-flat-level.js b/src/report/dot/prepare-flat-level.js index a4c20cf5d..55ed7fbfc 100644 --- a/src/report/dot/prepare-flat-level.js +++ b/src/report/dot/prepare-flat-level.js @@ -2,7 +2,7 @@ const get = require("lodash/get"); const compare = require("../../graph-utl/compare"); const moduleUtl = require("./module-utl"); -module.exports = (pResults, pTheme, _, pShowMetrics) => { +module.exports = function prepareFlatLevel(pResults, pTheme, _, pShowMetrics) { return pResults.modules .sort(compare.modules) .map(moduleUtl.flatLabel(pShowMetrics)) diff --git a/src/report/dot/prepare-folder-level.js b/src/report/dot/prepare-folder-level.js index 2be4e4974..4a97ac427 100644 --- a/src/report/dot/prepare-folder-level.js +++ b/src/report/dot/prepare-folder-level.js @@ -3,7 +3,12 @@ const compare = require("../../graph-utl/compare"); const stripSelfTransitions = require("../../graph-utl/strip-self-transitions"); const moduleUtl = require("./module-utl"); -module.exports = (pResults, pTheme, _, pShowMetrics) => { +module.exports = function prepareFolderLevel( + pResults, + pTheme, + _, + pShowMetrics +) { return consolidateToFolder(pResults.modules) .sort(compare.modules) .map(moduleUtl.extractFirstTransgression) diff --git a/src/report/error-html/index.js b/src/report/error-html/index.js index a475f45ee..12addd963 100644 --- a/src/report/error-html/index.js +++ b/src/report/error-html/index.js @@ -30,7 +30,9 @@ function report(pResults) { * @returns {import("../../../types/dependency-cruiser").IReporterOutput} - output: an html program showing the summary & the violations (if any) * exitCode: 0 */ -module.exports = (pResults) => ({ - output: report(pResults), - exitCode: 0, -}); +module.exports = function errorHtml(pResults) { + return { + output: report(pResults), + exitCode: 0, + }; +}; diff --git a/src/report/error.js b/src/report/error.js index 15bd839b7..97eb598be 100644 --- a/src/report/error.js +++ b/src/report/error.js @@ -156,7 +156,9 @@ function report(pResults, pLong) { * @returns {import("../../types/dependency-cruiser").IReporterOutput} - output: the formatted text in a string * exitCode: the number of errors found */ -module.exports = (pResults, pOptions) => ({ - output: report(pResults, (pOptions || {}).long), - exitCode: pResults.summary.error, -}); +module.exports = function error(pResults, pOptions) { + return { + output: report(pResults, (pOptions || {}).long), + exitCode: pResults.summary.error, + }; +}; diff --git a/src/report/html/index.js b/src/report/html/index.js index 9a18afdaf..69873d5b5 100644 --- a/src/report/html/index.js +++ b/src/report/html/index.js @@ -28,7 +28,9 @@ function report(pResults) { * @param {import("../../../types/cruise-result").ICruiseResult} pResults * @returns {import("../../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults) => ({ - output: report(pResults), - exitCode: 0, -}); +module.exports = function html(pResults) { + return { + output: report(pResults), + exitCode: 0, + }; +}; diff --git a/src/report/identity.js b/src/report/identity.js index 7f23564e9..f18f03114 100644 --- a/src/report/identity.js +++ b/src/report/identity.js @@ -4,7 +4,9 @@ * @param {import("../../types/cruise-result").ICruiseResult} pResults * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults) => ({ - output: pResults, - exitCode: 0, -}); +module.exports = function identity(pResults) { + return { + output: pResults, + exitCode: 0, + }; +}; diff --git a/src/report/json.js b/src/report/json.js index dd6263c62..a92471285 100644 --- a/src/report/json.js +++ b/src/report/json.js @@ -4,7 +4,9 @@ * @param {import("../../types/cruise-result").ICruiseResult} pResults * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults) => ({ - output: JSON.stringify(pResults, null, " "), - exitCode: 0, -}); +module.exports = function json(pResults) { + return { + output: JSON.stringify(pResults, null, " "), + exitCode: 0, + }; +}; diff --git a/src/report/markdown.js b/src/report/markdown.js index 049c97f99..9cac6f4ce 100644 --- a/src/report/markdown.js +++ b/src/report/markdown.js @@ -166,7 +166,9 @@ function report(pResults, pOptions) { * @param {import("../../types/reporter-options").IMarkdownReporterOptions} pOptions * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults, pOptions) => ({ - output: report(pResults, pOptions), - exitCode: 0, -}); +module.exports = function markdown(pResults, pOptions) { + return { + output: report(pResults, pOptions), + exitCode: 0, + }; +}; diff --git a/src/report/mermaid.js b/src/report/mermaid.js index 4388f118d..5b79a5a97 100644 --- a/src/report/mermaid.js +++ b/src/report/mermaid.js @@ -163,7 +163,9 @@ ${focusHighlights(pCruiseResult.modules, lNamesHashMap)}`; * @param {import("../../types/reporter-options").IMermaidReporterOptions} pOptions * @return {import('../../types/dependency-cruiser').IReporterOutput} */ -module.exports = (pCruiseResult, pOptions) => ({ - output: renderMermaidSource(pCruiseResult, pOptions), - exitCode: 0, -}); +module.exports = function mermaid(pCruiseResult, pOptions) { + return { + output: renderMermaidSource(pCruiseResult, pOptions), + exitCode: 0, + }; +}; diff --git a/src/report/metrics.js b/src/report/metrics.js index 68a1f29cf..5b880babf 100644 --- a/src/report/metrics.js +++ b/src/report/metrics.js @@ -117,7 +117,7 @@ function transformMetricsToTable( * @param {import("../../types/reporter-options").IMetricsReporterOptions} pReporterOptions * @return {import('../../types/dependency-cruiser').IReporterOutput} - */ -module.exports = (pCruiseResult, pReporterOptions) => { +module.exports = function metrics(pCruiseResult, pReporterOptions) { const lReporterOptions = pReporterOptions || {}; if (pCruiseResult.folders) { return { diff --git a/src/report/teamcity.js b/src/report/teamcity.js index de28cfced..b72400c96 100644 --- a/src/report/teamcity.js +++ b/src/report/teamcity.js @@ -143,7 +143,7 @@ function reportViolations(pViolations, pIgnoredCount) { * @param {import("../../types/dependency-cruiser").ICruiseResult} pResults * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults) => { +module.exports = function teamcity(pResults) { // this is the documented way to get tsm to emit strings // Alternatively we could've used the 'low level API', which // involves creating new `Message`s and stringifying those. diff --git a/src/report/text.js b/src/report/text.js index 16c4a7368..965057900 100644 --- a/src/report/text.js +++ b/src/report/text.js @@ -84,7 +84,9 @@ function report(pResults, pOptions) { * @param {import("../../types/reporter-options").ITextReporterOptions} pOptions * @returns {import("../../types/dependency-cruiser").IReporterOutput} */ -module.exports = (pResults, pOptions) => ({ - output: report(pResults, pOptions || {}), - exitCode: 0, -}); +module.exports = function text(pResults, pOptions) { + return { + output: report(pResults, pOptions || {}), + exitCode: 0, + }; +}; diff --git a/src/report/utl/dependency-to-incidence-transformer.js b/src/report/utl/dependency-to-incidence-transformer.js index 50e900473..65988ac94 100644 --- a/src/report/utl/dependency-to-incidence-transformer.js +++ b/src/report/utl/dependency-to-incidence-transformer.js @@ -45,5 +45,6 @@ function addIncidences(pFromList) { /* */ -module.exports = (pFromList) => - pFromList.sort(compareOnSource).map(addIncidences(pFromList)); +module.exports = function transformDependenciesToIncidences(pFromList) { + return pFromList.sort(compareOnSource).map(addIncidences(pFromList)); +};