dependency-cruiser 17.3.2 → 17.3.3-beta-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/bin/depcruise-baseline.mjs +43 -43
  2. package/bin/depcruise-fmt.mjs +89 -89
  3. package/bin/dependency-cruise.mjs +171 -171
  4. package/configs/plugins/3d-reporter-plugin.mjs +36 -36
  5. package/configs/plugins/stats-reporter-plugin.mjs +51 -51
  6. package/configs/recommended-strict.cjs +5 -5
  7. package/configs/recommended-warn-only.cjs +5 -5
  8. package/configs/recommended.cjs +22 -22
  9. package/configs/rules/no-circular.cjs +10 -10
  10. package/configs/rules/no-deprecated-core.cjs +10 -10
  11. package/configs/rules/no-duplicate-dependency-types.cjs +17 -17
  12. package/configs/rules/no-non-package-json.cjs +11 -11
  13. package/configs/rules/no-orphans.cjs +18 -18
  14. package/configs/rules/not-to-deprecated.cjs +10 -10
  15. package/configs/rules/not-to-unresolvable.cjs +10 -10
  16. package/package.json +170 -170
  17. package/src/cache/cache.mjs +139 -139
  18. package/src/cache/content-strategy.mjs +88 -88
  19. package/src/cache/find-content-changes.mjs +58 -58
  20. package/src/cache/helpers.mjs +52 -52
  21. package/src/cache/metadata-strategy.mjs +83 -83
  22. package/src/cache/options-compatible.mjs +56 -109
  23. package/src/cli/assert-node-environment-suitable.mjs +7 -7
  24. package/src/cli/defaults.mjs +5 -5
  25. package/src/cli/format-meta-info.mjs +22 -22
  26. package/src/cli/format.mjs +28 -28
  27. package/src/cli/index.mjs +145 -145
  28. package/src/cli/init-config/build-config.mjs +94 -94
  29. package/src/cli/init-config/environment-helpers.mjs +77 -77
  30. package/src/cli/init-config/find-extensions.mjs +27 -27
  31. package/src/cli/init-config/get-user-input.mjs +151 -151
  32. package/src/cli/init-config/index.mjs +88 -88
  33. package/src/cli/init-config/normalize-init-options.mjs +47 -47
  34. package/src/cli/init-config/utl.mjs +4 -4
  35. package/src/cli/init-config/validators.mjs +10 -10
  36. package/src/cli/init-config/write-config.mjs +21 -21
  37. package/src/cli/init-config/write-run-scripts-to-manifest.mjs +103 -107
  38. package/src/cli/listeners/cli-feedback.mjs +49 -49
  39. package/src/cli/listeners/ndjson.mjs +66 -66
  40. package/src/cli/listeners/performance-log/format-helpers.mjs +63 -63
  41. package/src/cli/listeners/performance-log/handlers.mjs +56 -56
  42. package/src/cli/listeners/performance-log/index.mjs +37 -37
  43. package/src/cli/normalize-cli-options.mjs +182 -182
  44. package/src/cli/tools/wrap-stream-in-html.mjs +37 -37
  45. package/src/cli/utl/assert-file-existence.mjs +7 -7
  46. package/src/cli/utl/io.mjs +28 -31
  47. package/src/config-utl/extract-babel-config.mjs +69 -69
  48. package/src/config-utl/extract-depcruise-config/index.mjs +54 -54
  49. package/src/config-utl/extract-depcruise-config/merge-configs.mjs +63 -63
  50. package/src/config-utl/extract-depcruise-config/read-config.mjs +9 -9
  51. package/src/config-utl/extract-depcruise-options.mjs +9 -9
  52. package/src/config-utl/extract-known-violations.mjs +49 -49
  53. package/src/config-utl/extract-ts-config.mjs +46 -48
  54. package/src/config-utl/extract-webpack-resolve-config.mjs +88 -88
  55. package/src/config-utl/make-absolute.mjs +5 -5
  56. package/src/enrich/add-validations.mjs +13 -13
  57. package/src/enrich/derive/circular.mjs +49 -49
  58. package/src/enrich/derive/dependents.mjs +27 -27
  59. package/src/enrich/derive/folders/aggregate-to-folders.mjs +104 -104
  60. package/src/enrich/derive/folders/index.mjs +19 -19
  61. package/src/enrich/derive/folders/utl.mjs +18 -18
  62. package/src/enrich/derive/metrics/get-module-metrics.mjs +27 -27
  63. package/src/enrich/derive/metrics/index.mjs +8 -8
  64. package/src/enrich/derive/module-utl.mjs +18 -18
  65. package/src/enrich/derive/orphan/index.mjs +18 -18
  66. package/src/enrich/derive/orphan/is-orphan.mjs +9 -9
  67. package/src/enrich/derive/reachable.mjs +165 -168
  68. package/src/enrich/enrich-modules.mjs +25 -25
  69. package/src/enrich/index.mjs +15 -15
  70. package/src/enrich/soften-known-violations.mjs +90 -90
  71. package/src/enrich/summarize/add-rule-set-used.mjs +13 -13
  72. package/src/enrich/summarize/get-stats.mjs +17 -17
  73. package/src/enrich/summarize/index.mjs +18 -18
  74. package/src/enrich/summarize/is-same-violation.mjs +30 -30
  75. package/src/enrich/summarize/summarize-folders.mjs +35 -35
  76. package/src/enrich/summarize/summarize-modules.mjs +97 -97
  77. package/src/enrich/summarize/summarize-options.mjs +71 -71
  78. package/src/extract/acorn/estree-helpers.mjs +66 -66
  79. package/src/extract/acorn/extract-amd-deps.mjs +63 -64
  80. package/src/extract/acorn/extract-cjs-deps.mjs +83 -83
  81. package/src/extract/acorn/extract-es6-deps.mjs +54 -54
  82. package/src/extract/acorn/extract-stats.mjs +4 -4
  83. package/src/extract/acorn/extract.mjs +28 -28
  84. package/src/extract/acorn/parse.mjs +37 -37
  85. package/src/extract/clear-caches.mjs +7 -7
  86. package/src/extract/extract-dependencies.mjs +109 -109
  87. package/src/extract/extract-stats.mjs +21 -21
  88. package/src/extract/gather-initial-sources.mjs +64 -64
  89. package/src/extract/helpers.mjs +73 -71
  90. package/src/extract/index.mjs +120 -120
  91. package/src/extract/resolve/determine-dependency-types.mjs +166 -169
  92. package/src/extract/resolve/external-module-helpers.mjs +76 -76
  93. package/src/extract/resolve/get-manifest.mjs +79 -79
  94. package/src/extract/resolve/index.mjs +175 -164
  95. package/src/extract/resolve/is-built-in.mjs +22 -24
  96. package/src/extract/resolve/merge-manifests.mjs +43 -43
  97. package/src/extract/resolve/module-classifiers.mjs +229 -229
  98. package/src/extract/resolve/resolve-amd.mjs +44 -44
  99. package/src/extract/resolve/resolve-cjs.mjs +40 -40
  100. package/src/extract/resolve/resolve-helpers.mjs +20 -20
  101. package/src/extract/resolve/resolve.mjs +26 -26
  102. package/src/extract/swc/dependency-visitor.mjs +211 -211
  103. package/src/extract/swc/extract-swc-deps.mjs +4 -4
  104. package/src/extract/swc/extract.mjs +7 -7
  105. package/src/extract/swc/parse.mjs +12 -12
  106. package/src/extract/transpile/babel-wrap.mjs +9 -9
  107. package/src/extract/transpile/coffeescript-wrap.mjs +21 -21
  108. package/src/extract/transpile/index.mjs +47 -47
  109. package/src/extract/transpile/javascript-wrap.mjs +6 -6
  110. package/src/extract/transpile/livescript-wrap.mjs +5 -5
  111. package/src/extract/transpile/meta.mjs +80 -80
  112. package/src/extract/transpile/svelte-preprocess.mjs +73 -73
  113. package/src/extract/transpile/svelte-wrap.mjs +19 -19
  114. package/src/extract/transpile/try-import-available.mjs +26 -27
  115. package/src/extract/transpile/typescript-wrap.mjs +39 -39
  116. package/src/extract/transpile/vue-template-wrap.cjs +43 -43
  117. package/src/extract/tsc/extract-stats.mjs +4 -4
  118. package/src/extract/tsc/extract-typescript-deps.mjs +429 -398
  119. package/src/extract/tsc/extract.mjs +22 -22
  120. package/src/extract/tsc/parse.mjs +21 -21
  121. package/src/graph-utl/add-focus.mjs +35 -35
  122. package/src/graph-utl/compare.mjs +24 -24
  123. package/src/graph-utl/consolidate-module-dependencies.mjs +35 -35
  124. package/src/graph-utl/consolidate-modules.mjs +33 -33
  125. package/src/graph-utl/consolidate-to-folder.mjs +13 -13
  126. package/src/graph-utl/consolidate-to-pattern.mjs +34 -34
  127. package/src/graph-utl/filter-bank.mjs +74 -69
  128. package/src/graph-utl/indexed-module-graph.mjs +227 -225
  129. package/src/graph-utl/match-facade.mjs +3 -3
  130. package/src/graph-utl/rule-set.mjs +20 -20
  131. package/src/graph-utl/strip-self-transitions.mjs +6 -6
  132. package/src/main/cruise.mjs +81 -81
  133. package/src/main/files-and-dirs/normalize.mjs +7 -7
  134. package/src/main/format.mjs +11 -14
  135. package/src/main/helpers.mjs +25 -25
  136. package/src/main/index.mjs +8 -8
  137. package/src/main/options/assert-validity.mjs +100 -100
  138. package/src/main/options/defaults.mjs +11 -11
  139. package/src/main/options/normalize.mjs +158 -160
  140. package/src/main/report-wrap.mjs +37 -37
  141. package/src/main/resolve-options/normalize.mjs +127 -128
  142. package/src/main/rule-set/assert-validity.mjs +67 -73
  143. package/src/main/rule-set/normalize.mjs +81 -79
  144. package/src/meta.cjs +15 -16
  145. package/src/report/anon/anonymize-path-element.mjs +20 -34
  146. package/src/report/anon/anonymize-path.mjs +11 -11
  147. package/src/report/anon/index.mjs +119 -119
  148. package/src/report/anon/random-string.mjs +23 -23
  149. package/src/report/azure-devops.mjs +75 -99
  150. package/src/report/baseline.mjs +9 -9
  151. package/src/report/csv.mjs +13 -13
  152. package/src/report/d2.mjs +105 -105
  153. package/src/report/dot/default-theme.mjs +152 -152
  154. package/src/report/dot/index.mjs +146 -146
  155. package/src/report/dot/module-utl.mjs +72 -72
  156. package/src/report/dot/prepare-custom-level.mjs +20 -20
  157. package/src/report/dot/prepare-flat-level.mjs +11 -11
  158. package/src/report/dot/prepare-folder-level.mjs +12 -13
  159. package/src/report/dot/theming.mjs +73 -73
  160. package/src/report/dot-webpage/dot-module.mjs +36 -36
  161. package/src/report/dot-webpage/svg-in-html-snippets/script.cjs +208 -210
  162. package/src/report/dot-webpage/svg-in-html-snippets/style.css +51 -51
  163. package/src/report/dot-webpage/wrap-in-html.mjs +7 -7
  164. package/src/report/error-html/index.mjs +49 -49
  165. package/src/report/error-html/utl.mjs +99 -99
  166. package/src/report/error-long.mjs +1 -1
  167. package/src/report/error.mjs +93 -93
  168. package/src/report/html/index.mjs +48 -48
  169. package/src/report/identity.mjs +4 -4
  170. package/src/report/index.mjs +33 -33
  171. package/src/report/json.mjs +4 -4
  172. package/src/report/markdown.mjs +120 -120
  173. package/src/report/mermaid.mjs +111 -111
  174. package/src/report/metrics.mjs +185 -185
  175. package/src/report/null.mjs +4 -4
  176. package/src/report/plugins.mjs +41 -41
  177. package/src/report/teamcity.mjs +150 -150
  178. package/src/report/text.mjs +42 -42
  179. package/src/report/utl/dependency-to-incidence-transformer.mjs +32 -32
  180. package/src/report/utl/index.mjs +53 -53
  181. package/src/schema/configuration.validate.mjs +1 -0
  182. package/src/schema/cruise-result.validate.mjs +1 -0
  183. package/src/schema/utl.mjs +6 -0
  184. package/src/utl/array-util.mjs +25 -25
  185. package/src/utl/bus.mjs +12 -12
  186. package/src/utl/extract-root-module-name.cjs +8 -8
  187. package/src/utl/find-all-files.mjs +54 -54
  188. package/src/utl/get-extension.mjs +2 -2
  189. package/src/utl/object-util.mjs +21 -22
  190. package/src/utl/path-to-posix.mjs +5 -5
  191. package/src/utl/regex-util.mjs +20 -20
  192. package/src/utl/try-import.mjs +42 -41
  193. package/src/utl/try-require.cjs +23 -23
  194. package/src/utl/wrap-and-indent.mjs +33 -33
  195. package/src/validate/index.mjs +65 -65
  196. package/src/validate/match-dependency-rule.mjs +47 -47
  197. package/src/validate/match-folder-dependency-rule.mjs +27 -27
  198. package/src/validate/match-module-rule-helpers.mjs +76 -76
  199. package/src/validate/match-module-rule.mjs +12 -12
  200. package/src/validate/matchers.mjs +162 -162
  201. package/src/validate/rule-classifiers.mjs +9 -9
  202. package/src/validate/violates-required-rule.mjs +23 -23
  203. package/types/cache-options.d.mts +27 -27
  204. package/types/config-utl/extract-babel-config.d.mts +1 -1
  205. package/types/config-utl/extract-depcruise-config.d.mts +3 -3
  206. package/types/config-utl/extract-depcruise-options.d.mts +1 -1
  207. package/types/config-utl/extract-ts-config.d.mts +1 -1
  208. package/types/config-utl/extract-webpack-resolve-config.d.mts +3 -3
  209. package/types/configuration.d.mts +10 -10
  210. package/types/cruise-result.d.mts +414 -414
  211. package/types/dependency-cruiser.d.mts +52 -52
  212. package/types/filter-types.d.mts +45 -45
  213. package/types/options.d.mts +430 -430
  214. package/types/plugins/3d-reporter-plugin.d.mts +9 -9
  215. package/types/plugins/mermaid-reporter-plugin.d.mts +10 -10
  216. package/types/plugins/stats-reporter-plugin.d.mts +9 -9
  217. package/types/reporter-options.d.mts +196 -196
  218. package/types/resolve-options.d.mts +23 -23
  219. package/types/restrictions.d.mts +174 -174
  220. package/types/rule-set.d.mts +132 -132
  221. package/types/rule-summary.d.mts +14 -14
  222. package/types/shared-types.d.mts +89 -89
  223. package/types/strict-filter-types.d.mts +52 -52
  224. package/types/strict-options.d.mts +34 -34
  225. package/types/strict-restrictions.d.mts +25 -25
  226. package/types/strict-rule-set.d.mts +36 -36
  227. package/types/violations.d.mts +40 -40
  228. package/src/schema/README.md +0 -5
  229. package/src/schema/baseline-violations.schema.mjs +0 -1
  230. package/src/schema/configuration.schema.mjs +0 -1
  231. package/src/schema/cruise-result.schema.mjs +0 -1
  232. package/types/README.md +0 -1
@@ -7,17 +7,17 @@
7
7
  * @return {boolean} true if there's at least one element in pLeftArray also in pRightArray
8
8
  */
9
9
  export function intersects(pLeftArray, pRightArray) {
10
- if (pLeftArray.length === 0 || pRightArray.length === 0) {
11
- return false;
12
- }
13
- if (pRightArray.length < pLeftArray.length) {
14
- return pRightArray.some((pItem) => pLeftArray.includes(pItem));
15
- }
16
- return pLeftArray.some((pItem) => pRightArray.includes(pItem));
10
+ if (pLeftArray.length === 0 || pRightArray.length === 0) {
11
+ return false;
12
+ }
13
+ if (pRightArray.length < pLeftArray.length) {
14
+ return pRightArray.some((pItem) => pLeftArray.includes(pItem));
15
+ }
16
+ return pLeftArray.some((pItem) => pRightArray.includes(pItem));
17
17
  }
18
18
 
19
19
  export function uniq(pArray) {
20
- return [...new Set(pArray)];
20
+ return [...new Set(pArray)];
21
21
  }
22
22
 
23
23
  /**
@@ -26,18 +26,18 @@ export function uniq(pArray) {
26
26
  * @returns {any[]}
27
27
  */
28
28
  export function uniqBy(pArray, pIteratee) {
29
- const lSeen = new Map();
30
- const lResult = [];
29
+ const lSeen = new Map();
30
+ const lResult = [];
31
31
 
32
- for (const lElement of pArray) {
33
- const lKey = pIteratee(lElement);
34
- if (!lSeen.has(lKey)) {
35
- lSeen.set(lKey, true);
36
- lResult.push(lElement);
37
- }
38
- }
32
+ for (const lElement of pArray) {
33
+ const lKey = pIteratee(lElement);
34
+ if (!lSeen.has(lKey)) {
35
+ lSeen.set(lKey, true);
36
+ lResult.push(lElement);
37
+ }
38
+ }
39
39
 
40
- return lResult;
40
+ return lResult;
41
41
  }
42
42
 
43
43
  /**
@@ -46,13 +46,13 @@ export function uniqBy(pArray, pIteratee) {
46
46
  * @returns {any[]}
47
47
  */
48
48
  export function uniqWith(pArray, pComparator) {
49
- const lResult = [];
49
+ const lResult = [];
50
50
 
51
- for (const lElement of pArray) {
52
- if (!lResult.some((pY) => pComparator(lElement, pY))) {
53
- lResult.push(lElement);
54
- }
55
- }
51
+ for (const lElement of pArray) {
52
+ if (!lResult.some((pY) => pComparator(lElement, pY))) {
53
+ lResult.push(lElement);
54
+ }
55
+ }
56
56
 
57
- return lResult;
57
+ return lResult;
58
58
  }
package/src/utl/bus.mjs CHANGED
@@ -9,21 +9,21 @@ export const EXTRA_STRONG = 80;
9
9
  export const ALL = 99;
10
10
 
11
11
  class Bus extends EventEmitter {
12
- progress(pMessage, pOptions, ...pArguments) {
13
- this.emit("progress", pMessage, pOptions, pArguments);
14
- }
12
+ progress(pMessage, pOptions, ...pArguments) {
13
+ this.emit("progress", pMessage, pOptions, pArguments);
14
+ }
15
15
 
16
- summary(pMessage, pOptions, ...pArguments) {
17
- this.progress(pMessage, { ...pOptions, level: SUMMARY }, pArguments);
18
- }
16
+ summary(pMessage, pOptions, ...pArguments) {
17
+ this.progress(pMessage, { ...pOptions, level: SUMMARY }, pArguments);
18
+ }
19
19
 
20
- info(pMessage, pOptions, ...pArguments) {
21
- this.progress(pMessage, { ...pOptions, level: INFO }, pArguments);
22
- }
20
+ info(pMessage, pOptions, ...pArguments) {
21
+ this.progress(pMessage, { ...pOptions, level: INFO }, pArguments);
22
+ }
23
23
 
24
- debug(pMessage, pOptions, ...pArguments) {
25
- this.progress(pMessage, { ...pOptions, level: DEBUG }, pArguments);
26
- }
24
+ debug(pMessage, pOptions, ...pArguments) {
25
+ this.progress(pMessage, { ...pOptions, level: DEBUG }, pArguments);
26
+ }
27
27
  }
28
28
 
29
29
  export const bus = new Bus();
@@ -12,12 +12,12 @@ const ROOT_MODULE_RE = new RegExp(`^(${SCOPED_PACKAGE_RE}|${PACKAGE_RE})`, "g");
12
12
  * @returns {string|undefined} the module name that likely contains the package.json
13
13
  */
14
14
  module.exports = function extractRootModuleName(pModuleName) {
15
- if (
16
- pModuleName.match(LOCAL_MODULE_RE) ||
17
- pModuleName.match(ABSOLUTE_MODULE_RE)
18
- ) {
19
- return pModuleName;
20
- } else {
21
- return (pModuleName.match(ROOT_MODULE_RE) || []).shift();
22
- }
15
+ if (
16
+ pModuleName.match(LOCAL_MODULE_RE) ||
17
+ pModuleName.match(ABSOLUTE_MODULE_RE)
18
+ ) {
19
+ return pModuleName;
20
+ } else {
21
+ return (pModuleName.match(ROOT_MODULE_RE) || []).shift();
22
+ }
23
23
  };
@@ -13,10 +13,10 @@ import pathToPosix from "./path-to-posix.mjs";
13
13
  * @returns {boolean}
14
14
  */
15
15
  function fileIsDirectory(pFullPathToFile, pBaseDirectory) {
16
- const lStat = statSync(join(pBaseDirectory, pFullPathToFile), {
17
- throwIfNoEntry: false,
18
- });
19
- return lStat?.isDirectory() ?? false;
16
+ const lStat = statSync(join(pBaseDirectory, pFullPathToFile), {
17
+ throwIfNoEntry: false,
18
+ });
19
+ return lStat?.isDirectory() ?? false;
20
20
  }
21
21
 
22
22
  /**
@@ -25,40 +25,40 @@ function fileIsDirectory(pFullPathToFile, pBaseDirectory) {
25
25
  * @returns {string[]}
26
26
  */
27
27
  function walk(
28
- pDirectoryName,
29
- { baseDir, ignoreFilterFn, excludeFilterFn, includeOnlyFilterFn },
28
+ pDirectoryName,
29
+ { baseDir, ignoreFilterFn, excludeFilterFn, includeOnlyFilterFn },
30
30
  ) {
31
- const lFilesInCurrentDirectory = readdirSync(join(baseDir, pDirectoryName))
32
- .map((pFileName) => join(pDirectoryName, pFileName))
33
- .filter(ignoreFilterFn)
34
- .filter(excludeFilterFn)
35
- .filter(includeOnlyFilterFn);
31
+ const lFilesInCurrentDirectory = readdirSync(join(baseDir, pDirectoryName))
32
+ .map((pFileName) => join(pDirectoryName, pFileName))
33
+ .filter(ignoreFilterFn)
34
+ .filter(excludeFilterFn)
35
+ .filter(includeOnlyFilterFn);
36
36
 
37
- const lFiles = [];
38
- for (const lFile of lFilesInCurrentDirectory) {
39
- if (fileIsDirectory(lFile, baseDir)) {
40
- lFiles.push(
41
- ...walk(lFile, {
42
- baseDir,
43
- ignoreFilterFn,
44
- excludeFilterFn,
45
- includeOnlyFilterFn,
46
- }),
47
- );
48
- } else {
49
- lFiles.push(pathToPosix(lFile));
50
- }
51
- }
37
+ const lFiles = [];
38
+ for (const lFile of lFilesInCurrentDirectory) {
39
+ if (fileIsDirectory(lFile, baseDir)) {
40
+ lFiles.push(
41
+ ...walk(lFile, {
42
+ baseDir,
43
+ ignoreFilterFn,
44
+ excludeFilterFn,
45
+ includeOnlyFilterFn,
46
+ }),
47
+ );
48
+ } else {
49
+ lFiles.push(pathToPosix(lFile));
50
+ }
51
+ }
52
52
 
53
- return lFiles;
53
+ return lFiles;
54
54
  }
55
55
 
56
56
  function readIgnoreFile(pFileName) {
57
- try {
58
- return readFileSync(pFileName, "utf8");
59
- } catch (pError) {
60
- return "";
61
- }
57
+ try {
58
+ return readFileSync(pFileName, "utf8");
59
+ } catch (pError) {
60
+ return "";
61
+ }
62
62
  }
63
63
 
64
64
  /**
@@ -66,7 +66,7 @@ function readIgnoreFile(pFileName) {
66
66
  */
67
67
 
68
68
  function identityFilter(_pString, _pIndex, _pArray) {
69
- return true;
69
+ return true;
70
70
  }
71
71
 
72
72
  /**
@@ -75,27 +75,27 @@ function identityFilter(_pString, _pIndex, _pArray) {
75
75
  * @returns {string[]}
76
76
  */
77
77
  export default function findAllFiles(
78
- pDirectoryName,
79
- {
80
- baseDir,
81
- ignoreFileContents,
82
- additionalIgnorePatterns,
83
- excludeFilterFn,
84
- includeOnlyFilterFn,
85
- },
78
+ pDirectoryName,
79
+ {
80
+ baseDir,
81
+ ignoreFileContents,
82
+ additionalIgnorePatterns,
83
+ excludeFilterFn,
84
+ includeOnlyFilterFn,
85
+ },
86
86
  ) {
87
- const lIgnoreFileContents =
88
- ignoreFileContents ?? readIgnoreFile(join(baseDir, ".gitignore"));
89
- const lAdditionalIgnorePatterns = additionalIgnorePatterns ?? [".git"];
90
- const lIgnoreFilterFunction = ignore()
91
- .add(lIgnoreFileContents)
92
- .add(lAdditionalIgnorePatterns)
93
- .createFilter();
87
+ const lIgnoreFileContents =
88
+ ignoreFileContents ?? readIgnoreFile(join(baseDir, ".gitignore"));
89
+ const lAdditionalIgnorePatterns = additionalIgnorePatterns ?? [".git"];
90
+ const lIgnoreFilterFunction = ignore()
91
+ .add(lIgnoreFileContents)
92
+ .add(lAdditionalIgnorePatterns)
93
+ .createFilter();
94
94
 
95
- return walk(pDirectoryName, {
96
- baseDir,
97
- ignoreFilterFn: lIgnoreFilterFunction,
98
- excludeFilterFn: excludeFilterFn ?? identityFilter,
99
- includeOnlyFilterFn: includeOnlyFilterFn ?? identityFilter,
100
- });
95
+ return walk(pDirectoryName, {
96
+ baseDir,
97
+ ignoreFilterFn: lIgnoreFilterFunction,
98
+ excludeFilterFn: excludeFilterFn ?? identityFilter,
99
+ includeOnlyFilterFn: includeOnlyFilterFn ?? identityFilter,
100
+ });
101
101
  }
@@ -16,7 +16,7 @@ const EXTENSION_RE = /(?<extension>(?:(?:\.d\.(?:[cm])?ts)|\.coffee\.md)$)/;
16
16
  * @return {string} extension
17
17
  */
18
18
  export default function getExtension(pFileName) {
19
- const lMatchResult = pFileName.match(EXTENSION_RE);
19
+ const lMatchResult = pFileName.match(EXTENSION_RE);
20
20
 
21
- return lMatchResult?.groups?.extension ?? extname(pFileName);
21
+ return lMatchResult?.groups?.extension ?? extname(pFileName);
22
22
  }
@@ -1,33 +1,32 @@
1
1
  /* eslint-disable security/detect-object-injection */
2
2
 
3
3
  export function get(pObject, pPath, pDefault) {
4
- if (!pObject || !pPath) {
5
- return pDefault;
6
- }
7
- // Regex explained: https://regexr.com/58j0k
8
- const lPathArray = pPath.match(/([^[.\]])+/g);
4
+ if (!pObject || !pPath) {
5
+ return pDefault;
6
+ }
7
+ const lPathArray = pPath.match(/([^[.\]])+/g);
9
8
 
10
- const lReturnValue = lPathArray.reduce((pPreviousObject, pKey) => {
11
- return pPreviousObject && pPreviousObject[pKey];
12
- }, pObject);
9
+ const lReturnValue = lPathArray.reduce((pPreviousObject, pKey) => {
10
+ return pPreviousObject && pPreviousObject[pKey];
11
+ }, pObject);
13
12
 
14
- if (!lReturnValue) {
15
- return pDefault;
16
- }
17
- return lReturnValue;
13
+ if (!lReturnValue) {
14
+ return pDefault;
15
+ }
16
+ return lReturnValue;
18
17
  }
19
18
 
20
19
  export function set(pObject, pPath, pValue) {
21
- const lPathArray = pPath.match(/([^[.\]])+/g);
20
+ const lPathArray = pPath.match(/([^[.\]])+/g);
22
21
 
23
- lPathArray.reduce((pPreviousObject, pKey, pIndex) => {
24
- if (pIndex === lPathArray.length - 1) {
25
- pPreviousObject[pKey] = pValue;
26
- } else if (!pPreviousObject[pKey]) {
27
- pPreviousObject[pKey] = {};
28
- }
29
- return pPreviousObject[pKey];
30
- }, pObject);
22
+ lPathArray.reduce((pPreviousObject, pKey, pIndex) => {
23
+ if (pIndex === lPathArray.length - 1) {
24
+ pPreviousObject[pKey] = pValue;
25
+ } else if (!pPreviousObject[pKey]) {
26
+ pPreviousObject[pKey] = {};
27
+ }
28
+ return pPreviousObject[pKey];
29
+ }, pObject);
31
30
  }
32
31
 
33
32
  /**
@@ -36,5 +35,5 @@ export function set(pObject, pPath, pValue) {
36
35
  * @returns {boolean}
37
36
  */
38
37
  export function has(pObject, pPath) {
39
- return Boolean(get(pObject, pPath));
38
+ return Boolean(get(pObject, pPath));
40
39
  }
@@ -20,11 +20,11 @@ import path from "node:path";
20
20
  * @return {string} the transformed path
21
21
  */
22
22
  export default function pathToPosix(pFilePath, pPathModule = path) {
23
- const lPathModule = pPathModule || path;
23
+ const lPathModule = pPathModule || path;
24
24
 
25
- if (lPathModule.sep !== path.posix.sep) {
26
- return pFilePath.split(lPathModule.sep).join(path.posix.sep);
27
- }
25
+ if (lPathModule.sep !== path.posix.sep) {
26
+ return pFilePath.split(lPathModule.sep).join(path.posix.sep);
27
+ }
28
28
 
29
- return pFilePath;
29
+ return pFilePath;
30
30
  }
@@ -12,22 +12,22 @@
12
12
  * @returns {string[]|null}
13
13
  */
14
14
  export function extractGroups(pFromRestriction, pActualPath) {
15
- let lReturnValue = [];
15
+ let lReturnValue = [];
16
16
 
17
- if (pFromRestriction.path) {
18
- // @ts-expect-error pFromRestriction.path can be a string | string[] | null
19
- // except before it enters here it has already been 'normalized' to a string
20
- // so it can be safely passed to match. The right solution here (TODO)
21
- // is to create a separate type for NormalizedFromRestriction
22
- let lMatchResult = pActualPath.match(pFromRestriction.path);
17
+ if (pFromRestriction.path) {
18
+ // @ts-expect-error pFromRestriction.path can be a string | string[] | null
19
+ // except before it enters here it has already been 'normalized' to a string
20
+ // so it can be safely passed to match. The right solution here (TODO)
21
+ // is to create a separate type for NormalizedFromRestriction
22
+ let lMatchResult = pActualPath.match(pFromRestriction.path);
23
23
 
24
- if (lMatchResult && lMatchResult.length > 1) {
25
- lReturnValue = lMatchResult.filter(
26
- (pResult) => typeof pResult === "string",
27
- );
28
- }
29
- }
30
- return lReturnValue;
24
+ if (lMatchResult && lMatchResult.length > 1) {
25
+ lReturnValue = lMatchResult.filter(
26
+ (pResult) => typeof pResult === "string",
27
+ );
28
+ }
29
+ }
30
+ return lReturnValue;
31
31
  }
32
32
 
33
33
  /**
@@ -47,10 +47,10 @@ export function extractGroups(pFromRestriction, pActualPath) {
47
47
  * groups from pExtractedgroups
48
48
  */
49
49
  export function replaceGroupPlaceholders(pString, pExtractedGroups) {
50
- return pExtractedGroups.reduce(
51
- (pAll, pThis, pIndex) =>
52
- // eslint-disable-next-line security/detect-non-literal-regexp
53
- pAll.replace(new RegExp(`\\$${pIndex}`, "g"), pThis),
54
- pString,
55
- );
50
+ return pExtractedGroups.reduce(
51
+ (pAll, pThis, pIndex) =>
52
+ // eslint-disable-next-line security/detect-non-literal-regexp
53
+ pAll.replace(new RegExp(`\\$${pIndex}`, "g"), pThis),
54
+ pString,
55
+ );
56
56
  }
@@ -11,30 +11,31 @@ const require = createRequire(import.meta.url);
11
11
  * @returns {string}
12
12
  */
13
13
  function getVersion(pModuleName) {
14
- // // The 'proper' way to do this would be with a dynamic import with an
15
- // // import assertion. Because it's 'experimental' since node 16 and prints
16
- // // an ugly warning on stderr since node 19 we'll be using the require
17
- // // hack below in stead.
18
- // const lManifest = await import(
19
- // // @ts-expect-error TS2345 extractRootModuleName can return either a string or
20
- // // undefined. If undefined this function will throw. Which is _fine_, even
21
- // // _expected_ in the context it's currently used
22
- // path.join(extractRootModuleName(pModuleName), "package.json"),
23
- // { assert: { type: "json" } }
24
- // );
25
- // // changes the return type to Promise<string>
26
- // return lManifest.default.version;
27
- // eslint-disable-next-line import/no-dynamic-require, security/detect-non-literal-require
28
- const lManifest = require(
29
- join(
30
- // @ts-expect-error TS2345 extractRootModuleName can return either a string or
31
- // undefined. If undefined this function will throw. Which is _fine_, even
32
- // _expected_ in the context it's currently used
33
- extractRootModuleName(pModuleName),
34
- "package.json",
35
- ),
36
- );
37
- return lManifest.version;
14
+ // The 'proper' way to do this would be with a dynamic import with an
15
+ // import assertion. Because it's 'experimental' since node 16 and prints
16
+ // an ugly warning on stderr since node 19 we'll be using the require
17
+ // hack below in stead. Code would otherwise have been:
18
+ //
19
+ // const lManifest = await import(
20
+ // // @ts-expect-error TS2345 extractRootModuleName can return either a string or
21
+ // // undefined. If undefined this function will throw. Which is _fine_, even
22
+ // // _expected_ in the context it's currently used
23
+ // path.join(extractRootModuleName(pModuleName), "package.json"),
24
+ // { assert: { type: "json" } }
25
+ // );
26
+ // return lManifest.default.version;
27
+ //
28
+ // eslint-disable-next-line import/no-dynamic-require, security/detect-non-literal-require
29
+ const lManifest = require(
30
+ join(
31
+ // @ts-expect-error TS2345 extractRootModuleName can return either a string or
32
+ // undefined. If undefined this function will throw. Which is _fine_, even
33
+ // _expected_ in the context it's currently used
34
+ extractRootModuleName(pModuleName),
35
+ "package.json",
36
+ ),
37
+ );
38
+ return lManifest.version;
38
39
  }
39
40
 
40
41
  /**
@@ -46,21 +47,21 @@ function getVersion(pModuleName) {
46
47
  */
47
48
 
48
49
  export default async function tryImport(pModuleName, pSemanticVersion) {
49
- try {
50
- if (pSemanticVersion) {
51
- const lVersion = getVersion(pModuleName);
52
- const lCoerced = coerce(lVersion);
53
- if (
54
- lVersion &&
55
- lCoerced &&
56
- !satisfies(lCoerced.version, pSemanticVersion)
57
- ) {
58
- return false;
59
- }
60
- }
61
- const lModule = await import(pModuleName);
62
- return lModule.default ? lModule.default : lModule;
63
- } catch (pError) {
64
- return false;
65
- }
50
+ try {
51
+ if (pSemanticVersion) {
52
+ const lVersion = getVersion(pModuleName);
53
+ const lCoerced = coerce(lVersion);
54
+ if (
55
+ lVersion &&
56
+ lCoerced &&
57
+ !satisfies(lCoerced.version, pSemanticVersion)
58
+ ) {
59
+ return false;
60
+ }
61
+ }
62
+ const lModule = await import(pModuleName);
63
+ return lModule.default ? lModule.default : lModule;
64
+ } catch (pError) {
65
+ return false;
66
+ }
66
67
  }
@@ -9,12 +9,12 @@ const extractRootModuleName = require("./extract-root-module-name.cjs");
9
9
  * @return the version of the module identified by pModuleName
10
10
  */
11
11
  function getVersion(pModuleName) {
12
- // @ts-expect-error TS2345 extractRootModuleName can return either a string or
13
- // undefined. If undefined this function will throw. Which is _fine_, even
14
- // _expected_ in the context it's currently used
15
- // eslint-disable-next-line import/no-dynamic-require, n/global-require, security/detect-non-literal-require
16
- return require(join(extractRootModuleName(pModuleName), "package.json"))
17
- .version;
12
+ // @ts-expect-error TS2345 extractRootModuleName can return either a string or
13
+ // undefined. If undefined this function will throw. Which is _fine_, even
14
+ // _expected_ in the context it's currently used
15
+ // eslint-disable-next-line import/no-dynamic-require, n/global-require, security/detect-non-literal-require
16
+ return require(join(extractRootModuleName(pModuleName), "package.json"))
17
+ .version;
18
18
  }
19
19
 
20
20
  /**
@@ -29,23 +29,23 @@ function getVersion(pModuleName) {
29
29
  * @return {NodeModule | false }the (resolved) module identified by pModuleName or false
30
30
  */
31
31
  function tryRequire(pModuleName, pSemanticVersion) {
32
- try {
33
- if (pSemanticVersion) {
34
- const lVersion = getVersion(pModuleName);
35
- const lCoerced = coerce(lVersion);
36
- if (
37
- lVersion &&
38
- lCoerced &&
39
- !satisfies(lCoerced.version, pSemanticVersion)
40
- ) {
41
- return false;
42
- }
43
- }
44
- // eslint-disable-next-line import/no-dynamic-require, n/global-require, security/detect-non-literal-require
45
- return require(pModuleName);
46
- } catch (pError) {
47
- return false;
48
- }
32
+ try {
33
+ if (pSemanticVersion) {
34
+ const lVersion = getVersion(pModuleName);
35
+ const lCoerced = coerce(lVersion);
36
+ if (
37
+ lVersion &&
38
+ lCoerced &&
39
+ !satisfies(lCoerced.version, pSemanticVersion)
40
+ ) {
41
+ return false;
42
+ }
43
+ }
44
+ // eslint-disable-next-line import/no-dynamic-require, n/global-require, security/detect-non-literal-require
45
+ return require(pModuleName);
46
+ } catch (pError) {
47
+ return false;
48
+ }
49
49
  }
50
50
 
51
51
  module.exports = tryRequire;
@@ -1,9 +1,9 @@
1
1
  const DEFAULT_INDENT = 4;
2
2
 
3
3
  function indentString(pString, pCount) {
4
- const lRegex = /^(?!\s*$)/gm;
4
+ const lRegex = /^(?!\s*$)/gm;
5
5
 
6
- return pString.replace(lRegex, " ".repeat(pCount));
6
+ return pString.replace(lRegex, " ".repeat(pCount));
7
7
  }
8
8
 
9
9
  /**
@@ -11,30 +11,30 @@ function indentString(pString, pCount) {
11
11
  * @param {number} pMaxWidth
12
12
  */
13
13
  function splitLine(pLine, pMaxWidth) {
14
- const lWords = pLine.split(" ");
15
- const lWrappedLines = [];
16
- let lCurrentLine = "";
17
- let lCurrentWidth = 0;
18
-
19
- for (const lWord of lWords) {
20
- if (lCurrentWidth + lWord.length > pMaxWidth) {
21
- lWrappedLines.push(lCurrentLine.trimEnd());
22
- lCurrentLine = "";
23
- lCurrentWidth = 0;
24
- }
25
-
26
- if (lCurrentLine) {
27
- lCurrentLine += " ";
28
- lCurrentWidth += 1;
29
- }
30
-
31
- lCurrentLine += lWord;
32
- lCurrentWidth += lWord.length;
33
- }
34
-
35
- lWrappedLines.push(lCurrentLine.trimEnd());
36
-
37
- return lWrappedLines.join("\n");
14
+ const lWords = pLine.split(" ");
15
+ const lWrappedLines = [];
16
+ let lCurrentLine = "";
17
+ let lCurrentWidth = 0;
18
+
19
+ for (const lWord of lWords) {
20
+ if (lCurrentWidth + lWord.length > pMaxWidth) {
21
+ lWrappedLines.push(lCurrentLine.trimEnd());
22
+ lCurrentLine = "";
23
+ lCurrentWidth = 0;
24
+ }
25
+
26
+ if (lCurrentLine) {
27
+ lCurrentLine += " ";
28
+ lCurrentWidth += 1;
29
+ }
30
+
31
+ lCurrentLine += lWord;
32
+ lCurrentWidth += lWord.length;
33
+ }
34
+
35
+ lWrappedLines.push(lCurrentLine.trimEnd());
36
+
37
+ return lWrappedLines.join("\n");
38
38
  }
39
39
 
40
40
  /**
@@ -42,15 +42,15 @@ function splitLine(pLine, pMaxWidth) {
42
42
  * @param {number} pMaxWidth - the maximum width of the wrapped string
43
43
  */
44
44
  function wrapString(pString, pMaxWidth) {
45
- return pString
46
- .split(/\r?\n/)
47
- .map((pLine) => splitLine(pLine, pMaxWidth))
48
- .join("\n");
45
+ return pString
46
+ .split(/\r?\n/)
47
+ .map((pLine) => splitLine(pLine, pMaxWidth))
48
+ .join("\n");
49
49
  }
50
50
 
51
51
  export default function wrapAndIndent(pString, pIndent = DEFAULT_INDENT) {
52
- const lMaxConsoleWidth = 78;
53
- const lMaxWidth = lMaxConsoleWidth - pIndent;
52
+ const lMaxConsoleWidth = 78;
53
+ const lMaxWidth = lMaxConsoleWidth - pIndent;
54
54
 
55
- return indentString(wrapString(pString, lMaxWidth), pIndent);
55
+ return indentString(wrapString(pString, lMaxWidth), pIndent);
56
56
  }