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
@@ -5,273 +5,273 @@ import meta from "#meta.cjs";
5
5
 
6
6
  /** @type {import('@swc/core/Visitor')} */
7
7
  const { Visitor } = await tryImport(
8
- "@swc/core/Visitor.js",
9
- meta.supportedTranspilers.swc,
8
+ "@swc/core/Visitor.js",
9
+ meta.supportedTranspilers.swc,
10
10
  );
11
11
 
12
12
  function pryStringsFromArguments(pArguments) {
13
- let lReturnValue = null;
13
+ let lReturnValue = null;
14
14
 
15
- if (pArguments[0].expression.type === "StringLiteral") {
16
- lReturnValue = pArguments[0].expression.value;
17
- } else if (pArguments[0].expression.type === "TemplateLiteral") {
18
- /* c8 ignore start */
19
- // @swc/core@1.2.159 and before: cooked.value.
20
- // @swc/core@1.2.160 and after: just cooked
21
- lReturnValue =
22
- pArguments[0].expression.quasis[0].cooked.value ||
23
- pArguments[0].expression.quasis[0].cooked;
24
- }
25
- /* c8 ignore stop */
15
+ if (pArguments[0].expression.type === "StringLiteral") {
16
+ lReturnValue = pArguments[0].expression.value;
17
+ } else if (pArguments[0].expression.type === "TemplateLiteral") {
18
+ /* c8 ignore start */
19
+ // @swc/core@1.2.159 and before: cooked.value.
20
+ // @swc/core@1.2.160 and after: just cooked
21
+ lReturnValue =
22
+ pArguments[0].expression.quasis[0].cooked.value ||
23
+ pArguments[0].expression.quasis[0].cooked;
24
+ }
25
+ /* c8 ignore stop */
26
26
 
27
- return lReturnValue;
27
+ return lReturnValue;
28
28
  }
29
29
 
30
30
  function isPlaceholderlessTemplateLiteral(pArgument) {
31
- return (
32
- pArgument.expression.type === "TemplateLiteral" &&
33
- pArgument.expression.quasis.length === 1 &&
34
- pArgument.expression.expressions.length === 0
35
- );
31
+ return (
32
+ pArgument.expression.type === "TemplateLiteral" &&
33
+ pArgument.expression.quasis.length === 1 &&
34
+ pArgument.expression.expressions.length === 0
35
+ );
36
36
  }
37
37
 
38
38
  function argumentsAreUsable(pArguments) {
39
- return (
40
- pArguments.length > 0 &&
41
- ["StringLiteral", "TemplateLiteral"].includes(
42
- pArguments[0].expression.type,
43
- ) &&
44
- (pArguments[0].expression.type !== "TemplateLiteral" ||
45
- isPlaceholderlessTemplateLiteral(pArguments[0]))
46
- );
39
+ return (
40
+ pArguments.length > 0 &&
41
+ ["StringLiteral", "TemplateLiteral"].includes(
42
+ pArguments[0].expression.type,
43
+ ) &&
44
+ (pArguments[0].expression.type !== "TemplateLiteral" ||
45
+ isPlaceholderlessTemplateLiteral(pArguments[0]))
46
+ );
47
47
  }
48
48
 
49
49
  function chunkIntoThing(pString) {
50
- const lChunks = pString.split(".");
51
- return {
52
- object: lChunks[0],
53
- property: lChunks[1],
54
- string: pString,
55
- };
50
+ const lChunks = pString.split(".");
51
+ return {
52
+ object: lChunks[0],
53
+ property: lChunks[1],
54
+ string: pString,
55
+ };
56
56
  }
57
57
 
58
58
  // to recognize exotic requires like 'window.require'
59
59
  function extractExoticMemberCallExpression(pNode, pExoticRequireStrings) {
60
- let lReturnValue = [];
60
+ let lReturnValue = [];
61
61
 
62
- if (pNode.callee.type === "MemberExpression") {
63
- lReturnValue = pExoticRequireStrings
64
- .filter((pString) => pString.includes("."))
65
- .map(chunkIntoThing)
66
- .reduce((pAll, pThing) => {
67
- if (
68
- pNode.callee.object.value === pThing.object &&
69
- pNode.callee.property.value === pThing.property &&
70
- argumentsAreUsable(pNode.arguments)
71
- ) {
72
- return pAll.concat({
73
- module: pryStringsFromArguments(pNode.arguments),
74
- moduleSystem: "cjs",
75
- exoticallyRequired: true,
76
- exoticRequire: pThing.string,
77
- dynamic: false,
78
- dependencyTypes: ["exotic-require"],
79
- });
80
- }
81
- return pAll;
82
- }, []);
83
- }
62
+ if (pNode.callee.type === "MemberExpression") {
63
+ lReturnValue = pExoticRequireStrings
64
+ .filter((pString) => pString.includes("."))
65
+ .map(chunkIntoThing)
66
+ .reduce((pAll, pThing) => {
67
+ if (
68
+ pNode.callee.object.value === pThing.object &&
69
+ pNode.callee.property.value === pThing.property &&
70
+ argumentsAreUsable(pNode.arguments)
71
+ ) {
72
+ return pAll.concat({
73
+ module: pryStringsFromArguments(pNode.arguments),
74
+ moduleSystem: "cjs",
75
+ exoticallyRequired: true,
76
+ exoticRequire: pThing.string,
77
+ dynamic: false,
78
+ dependencyTypes: ["exotic-require"],
79
+ });
80
+ }
81
+ return pAll;
82
+ }, []);
83
+ }
84
84
 
85
- return lReturnValue;
85
+ return lReturnValue;
86
86
  }
87
87
 
88
88
  function isImportCallExpression(pNode) {
89
- /*
89
+ /*
90
90
  somewhere between swc 1.2.123 and 1.2.133 the swc AST started to
91
91
  represent import call expressions with .callee.type === "Import"
92
92
  instead of .callee.value === "import". Keeping both detection
93
93
  methods in here for backwards compatibility
94
94
  */
95
- return pNode.callee.value === "import" || pNode.callee.type === "Import";
95
+ return pNode.callee.value === "import" || pNode.callee.type === "Import";
96
96
  }
97
97
 
98
98
  function isNonExoticallyRequiredExpression(pNode) {
99
- return pNode.callee.value === "require" || isImportCallExpression(pNode);
99
+ return pNode.callee.value === "require" || isImportCallExpression(pNode);
100
100
  }
101
101
 
102
102
  function isInterestingCallExpression(pExoticRequireStrings, pNode) {
103
- /*
103
+ /*
104
104
  somewhere between swc 1.2.123 and 1.2.133 the swc AST started to
105
105
  represent import call expressions with .callee.type === "Import"
106
106
  instead of .callee.value === "import". Keeping both detection
107
107
  methods in here for backwards compatibility
108
108
  */
109
- return (
110
- pNode.callee.type === "Import" ||
111
- ["require", "import"]
112
- .concat(pExoticRequireStrings.filter((pString) => !pString.includes(".")))
113
- .includes(pNode.callee.value)
114
- );
109
+ return (
110
+ pNode.callee.type === "Import" ||
111
+ ["require", "import"]
112
+ .concat(pExoticRequireStrings.filter((pString) => !pString.includes(".")))
113
+ .includes(pNode.callee.value)
114
+ );
115
115
  }
116
116
 
117
117
  export default Visitor
118
- ? class SwcDependencyVisitor extends Visitor {
119
- #exoticRequireStrings;
120
- #result;
118
+ ? class SwcDependencyVisitor extends Visitor {
119
+ #exoticRequireStrings;
120
+ #result;
121
121
 
122
- constructor(pExoticRequireStrings) {
123
- super();
124
- this.#exoticRequireStrings = pExoticRequireStrings;
125
- }
122
+ constructor(pExoticRequireStrings) {
123
+ super();
124
+ this.#exoticRequireStrings = pExoticRequireStrings;
125
+ }
126
126
 
127
- #pushExportSource(pNode) {
128
- if (pNode.source) {
129
- this.#result.push({
130
- module: pNode.source.value,
131
- moduleSystem: "es6",
132
- exoticallyRequired: false,
133
- dependencyTypes: ["export"],
134
- });
135
- }
136
- }
127
+ #pushExportSource(pNode) {
128
+ if (pNode.source) {
129
+ this.#result.push({
130
+ module: pNode.source.value,
131
+ moduleSystem: "es6",
132
+ exoticallyRequired: false,
133
+ dependencyTypes: ["export"],
134
+ });
135
+ }
136
+ }
137
137
 
138
- #pushImportSource(pNode) {
139
- if (pNode.source) {
140
- this.#result.push({
141
- module: pNode.source.value,
142
- moduleSystem: "es6",
143
- exoticallyRequired: false,
144
- dependencyTypes: ["import"],
145
- });
146
- }
147
- }
138
+ #pushImportSource(pNode) {
139
+ if (pNode.source) {
140
+ this.#result.push({
141
+ module: pNode.source.value,
142
+ moduleSystem: "es6",
143
+ exoticallyRequired: false,
144
+ dependencyTypes: ["import"],
145
+ });
146
+ }
147
+ }
148
148
 
149
- visitImportDeclaration(pNode) {
150
- this.#pushImportSource(pNode);
151
- return super.visitImportDeclaration(pNode);
152
- }
149
+ visitImportDeclaration(pNode) {
150
+ this.#pushImportSource(pNode);
151
+ return super.visitImportDeclaration(pNode);
152
+ }
153
153
 
154
- visitTsImportEqualsDeclaration(pNode) {
155
- if (pNode.moduleRef.type === "TsExternalModuleReference") {
156
- this.#result.push({
157
- module: pNode.moduleRef.expression.value,
158
- moduleSystem: "cjs",
159
- exoticallyRequired: false,
160
- dependencyTypes: ["import-equals"],
161
- });
162
- }
163
- return super.visitTsImportEqualsDeclaration(pNode);
164
- }
154
+ visitTsImportEqualsDeclaration(pNode) {
155
+ if (pNode.moduleRef.type === "TsExternalModuleReference") {
156
+ this.#result.push({
157
+ module: pNode.moduleRef.expression.value,
158
+ moduleSystem: "cjs",
159
+ exoticallyRequired: false,
160
+ dependencyTypes: ["import-equals"],
161
+ });
162
+ }
163
+ return super.visitTsImportEqualsDeclaration(pNode);
164
+ }
165
165
 
166
- // note: super class contains a typo. This will eventually be corrected.
167
- // To anticipate that (and to remain backward compatible when that happens)
168
- // also include the same method, but with the correct spelling.
169
- visitExportAllDeclration(pNode) {
170
- this.#pushExportSource(pNode);
171
- /* c8 ignore start */
172
- // @ts-expect-error see above
173
- if (super.visitExportAllDeclration) {
174
- // @ts-expect-error see above
175
- return super.visitExportAllDeclration(pNode);
176
- } else {
177
- /* c8 ignore stop */
178
- return super.visitExportAllDeclaration(pNode);
179
- }
180
- }
166
+ // note: super class contains a typo. This will eventually be corrected.
167
+ // To anticipate that (and to remain backward compatible when that happens)
168
+ // also include the same method, but with the correct spelling.
169
+ visitExportAllDeclration(pNode) {
170
+ this.#pushExportSource(pNode);
171
+ /* c8 ignore start */
172
+ // @ts-expect-error see above
173
+ if (super.visitExportAllDeclration) {
174
+ // @ts-expect-error see above
175
+ return super.visitExportAllDeclration(pNode);
176
+ } else {
177
+ /* c8 ignore stop */
178
+ return super.visitExportAllDeclaration(pNode);
179
+ }
180
+ }
181
181
 
182
- /* c8 ignore start */
183
- visitExportAllDeclaration(pNode) {
184
- return this.visitExportAllDeclration(pNode);
185
- }
186
- /* c8 ignore stop */
182
+ /* c8 ignore start */
183
+ visitExportAllDeclaration(pNode) {
184
+ return this.visitExportAllDeclration(pNode);
185
+ }
186
+ /* c8 ignore stop */
187
187
 
188
- // same spelling error as the above - same solution
189
- visitExportNamedDeclration(pNode) {
190
- this.#pushExportSource(pNode);
191
- /* c8 ignore start */
192
- // @ts-expect-error see above
193
- if (super.visitExportNamedDeclration) {
194
- // @ts-expect-error see above
195
- return super.visitExportNamedDeclration(pNode);
196
- } else {
197
- /* c8 ignore stop */
198
- return super.visitExportNamedDeclaration(pNode);
199
- }
200
- }
201
- /* c8 ignore start */
202
- visitExportNamedDeclaration(pNode) {
203
- return this.visitExportNamedDeclration(pNode);
204
- }
205
- /* c8 ignore stop */
188
+ // same spelling error as the above - same solution
189
+ visitExportNamedDeclration(pNode) {
190
+ this.#pushExportSource(pNode);
191
+ /* c8 ignore start */
192
+ // @ts-expect-error see above
193
+ if (super.visitExportNamedDeclration) {
194
+ // @ts-expect-error see above
195
+ return super.visitExportNamedDeclration(pNode);
196
+ } else {
197
+ /* c8 ignore stop */
198
+ return super.visitExportNamedDeclaration(pNode);
199
+ }
200
+ }
201
+ /* c8 ignore start */
202
+ visitExportNamedDeclaration(pNode) {
203
+ return this.visitExportNamedDeclration(pNode);
204
+ }
205
+ /* c8 ignore stop */
206
206
 
207
- visitCallExpression(pNode) {
208
- if (
209
- isInterestingCallExpression(this.#exoticRequireStrings, pNode) &&
210
- argumentsAreUsable(pNode.arguments)
211
- ) {
212
- this.#result.push({
213
- module: pryStringsFromArguments(pNode.arguments),
207
+ visitCallExpression(pNode) {
208
+ if (
209
+ isInterestingCallExpression(this.#exoticRequireStrings, pNode) &&
210
+ argumentsAreUsable(pNode.arguments)
211
+ ) {
212
+ this.#result.push({
213
+ module: pryStringsFromArguments(pNode.arguments),
214
214
 
215
- ...(isImportCallExpression(pNode)
216
- ? {
217
- moduleSystem: "es6",
218
- dynamic: true,
219
- dependencyTypes: ["dynamic-import"],
220
- }
221
- : {
222
- moduleSystem: "cjs",
223
- dynamic: false,
224
- dependencyTypes: ["require"],
225
- }),
215
+ ...(isImportCallExpression(pNode)
216
+ ? {
217
+ moduleSystem: "es6",
218
+ dynamic: true,
219
+ dependencyTypes: ["dynamic-import"],
220
+ }
221
+ : {
222
+ moduleSystem: "cjs",
223
+ dynamic: false,
224
+ dependencyTypes: ["require"],
225
+ }),
226
226
 
227
- ...(isNonExoticallyRequiredExpression(pNode)
228
- ? { exoticallyRequired: false }
229
- : {
230
- exoticallyRequired: true,
231
- exoticRequire: pNode.callee.value,
232
- dependencyTypes: ["exotic-require"],
233
- }),
234
- });
235
- }
227
+ ...(isNonExoticallyRequiredExpression(pNode)
228
+ ? { exoticallyRequired: false }
229
+ : {
230
+ exoticallyRequired: true,
231
+ exoticRequire: pNode.callee.value,
232
+ dependencyTypes: ["exotic-require"],
233
+ }),
234
+ });
235
+ }
236
236
 
237
- // using "window.require" as an exotic require string...
238
- this.#result = this.#result.concat(
239
- extractExoticMemberCallExpression(pNode, this.#exoticRequireStrings),
240
- );
237
+ // using "window.require" as an exotic require string...
238
+ this.#result = this.#result.concat(
239
+ extractExoticMemberCallExpression(pNode, this.#exoticRequireStrings),
240
+ );
241
241
 
242
- return super.visitCallExpression(pNode);
243
- }
244
- /* c8 ignore start */
245
- visitTsType(pNode) {
246
- // override so the 'visitTsType not implemented' error message
247
- // as defined in the super class doesn't appear
248
- return pNode;
249
- }
250
- /* c8 ignore stop */
242
+ return super.visitCallExpression(pNode);
243
+ }
244
+ /* c8 ignore start */
245
+ visitTsType(pNode) {
246
+ // override so the 'visitTsType not implemented' error message
247
+ // as defined in the super class doesn't appear
248
+ return pNode;
249
+ }
250
+ /* c8 ignore stop */
251
251
 
252
- visitTsTypeAnnotation(pNode) {
253
- // as visitors for some shapes of type annotations aren't completely
254
- // implemented yet (1.2.51) pNode can come in as null (also see
255
- // comments in accompanying unit test)
256
- if (pNode && pNode.typeAnnotation && pNode.typeAnnotation.argument)
257
- this.#result.push({
258
- module: pNode.typeAnnotation.argument.value,
259
- moduleSystem: "es6",
260
- exoticallyRequired: false,
261
- dependencyTypes: ["type-import"],
262
- });
263
- return super.visitTsTypeAnnotation(pNode);
264
- }
252
+ visitTsTypeAnnotation(pNode) {
253
+ // as visitors for some shapes of type annotations aren't completely
254
+ // implemented yet (1.2.51) pNode can come in as null (also see
255
+ // comments in accompanying unit test)
256
+ if (pNode && pNode.typeAnnotation && pNode.typeAnnotation.argument)
257
+ this.#result.push({
258
+ module: pNode.typeAnnotation.argument.value,
259
+ moduleSystem: "es6",
260
+ exoticallyRequired: false,
261
+ dependencyTypes: ["type-import"],
262
+ });
263
+ return super.visitTsTypeAnnotation(pNode);
264
+ }
265
265
 
266
- // as far as I can tell swc doesn't do tripple slash directives (yet?)
267
- // visitTrippleSlashDirective(pNode)) {}
266
+ // as far as I can tell swc doesn't do tripple slash directives (yet?)
267
+ // visitTrippleSlashDirective(pNode)) {}
268
268
 
269
- getDependencies(pAST) {
270
- this.#result = [];
271
- this.visitModule(pAST);
272
- return this.#result;
273
- }
274
- }
275
- : /* c8 ignore start */
276
- class Empty {};
269
+ getDependencies(pAST) {
270
+ this.#result = [];
271
+ this.visitModule(pAST);
272
+ return this.#result;
273
+ }
274
+ }
275
+ : /* c8 ignore start */
276
+ class Empty {};
277
277
  /* c8 ignore stop */
@@ -6,8 +6,8 @@ import SwcDependencyVisitor from "./dependency-visitor.mjs";
6
6
  * @returns {{module: string, moduleSystem: string, dynamic: boolean}[]}
7
7
  */
8
8
  export default function extractSwcDependencies(pSwcAST, pExoticRequireStrings) {
9
- const visitor = new SwcDependencyVisitor(pExoticRequireStrings);
10
- return visitor
11
- .getDependencies(pSwcAST)
12
- .map((pModule) => ({ dynamic: false, ...pModule }));
9
+ const visitor = new SwcDependencyVisitor(pExoticRequireStrings);
10
+ return visitor
11
+ .getDependencies(pSwcAST)
12
+ .map((pModule) => ({ dynamic: false, ...pModule }));
13
13
  }
@@ -4,15 +4,15 @@ import extractSwcDeps from "./extract-swc-deps.mjs";
4
4
  import { getASTCached, isAvailable } from "./parse.mjs";
5
5
 
6
6
  export function shouldUse({ parser }, pFileName) {
7
- return parser === "swc" && isAvailable() && isTypeScriptCompatible(pFileName);
7
+ return parser === "swc" && isAvailable() && isTypeScriptCompatible(pFileName);
8
8
  }
9
9
 
10
10
  export function extract(
11
- { baseDir, exoticRequireStrings, moduleSystems },
12
- pFileName,
11
+ { baseDir, exoticRequireStrings, moduleSystems },
12
+ pFileName,
13
13
  ) {
14
- return extractSwcDeps(
15
- getASTCached(join(baseDir, pFileName)),
16
- exoticRequireStrings,
17
- ).filter(({ moduleSystem }) => moduleSystems.includes(moduleSystem));
14
+ return extractSwcDeps(
15
+ getASTCached(join(baseDir, pFileName)),
16
+ exoticRequireStrings,
17
+ ).filter(({ moduleSystem }) => moduleSystems.includes(moduleSystem));
18
18
  }
@@ -11,23 +11,23 @@ const swc = await tryImport("@swc/core", meta.supportedTranspilers.swc);
11
11
 
12
12
  /** @type {ParseOptions} */
13
13
  const SWC_PARSE_OPTIONS = {
14
- dynamicImport: true,
15
- // typescript is a superset of ecmascript, so we use typescript always
16
- syntax: "typescript",
17
- // target doesn't have effect on parsing it seems
18
- target: "es2022",
19
- // allow for decorators
20
- decorators: true,
21
- // TODO: {tj}sx ?
14
+ dynamicImport: true,
15
+ // typescript is a superset of ecmascript, so we use typescript always
16
+ syntax: "typescript",
17
+ // target doesn't have effect on parsing it seems
18
+ target: "es2022",
19
+ // allow for decorators
20
+ decorators: true,
21
+ // TODO: {tj}sx ?
22
22
  };
23
23
 
24
24
  export function getASTFromSource(pSource) {
25
- return swc.parseSync(pSource, SWC_PARSE_OPTIONS);
25
+ return swc.parseSync(pSource, SWC_PARSE_OPTIONS);
26
26
  }
27
27
 
28
28
  function getAST(pFileName) {
29
- /** @type {swcCore swc} */
30
- return swc.parseFileSync(pFileName, SWC_PARSE_OPTIONS);
29
+ /** @type {swcCore swc} */
30
+ return swc.parseFileSync(pFileName, SWC_PARSE_OPTIONS);
31
31
  }
32
32
 
33
33
  /**
@@ -41,7 +41,7 @@ function getAST(pFileName) {
41
41
  export const getASTCached = memoize(getAST);
42
42
 
43
43
  export function clearCache() {
44
- memoizeClear(getASTCached);
44
+ memoizeClear(getASTCached);
45
45
  }
46
46
 
47
47
  /**
@@ -4,15 +4,15 @@ import meta from "#meta.cjs";
4
4
  const babel = await tryImport("@babel/core", meta.supportedTranspilers.babel);
5
5
 
6
6
  export default {
7
- isAvailable: () => babel !== false,
7
+ isAvailable: () => babel !== false,
8
8
 
9
- version: () => `@babel/core@${babel.version}`,
9
+ version: () => `@babel/core@${babel.version}`,
10
10
 
11
- transpile: (pSource, pFileName, pTranspileOptions = {}) =>
12
- babel.transformSync(pSource, {
13
- ...(pTranspileOptions.babelConfig || {}),
14
- // Some babel plugins assume a piece of source to have a filename.
15
- // See https://github.com/sverweij/dependency-cruiser/issues/410
16
- filename: pFileName,
17
- }).code,
11
+ transpile: (pSource, pFileName, pTranspileOptions = {}) =>
12
+ babel.transformSync(pSource, {
13
+ ...(pTranspileOptions.babelConfig || {}),
14
+ // Some babel plugins assume a piece of source to have a filename.
15
+ // See https://github.com/sverweij/dependency-cruiser/issues/410
16
+ filename: pFileName,
17
+ }).code,
18
18
  };
@@ -7,34 +7,34 @@ import meta from "#meta.cjs";
7
7
  * As long as that is happening: first try coffeescript, then coffee-script.
8
8
  */
9
9
  async function getCoffeeScriptModule() {
10
- let lReturnValue = await tryImport(
11
- "coffeescript",
12
- meta.supportedTranspilers.coffeescript,
13
- );
10
+ let lReturnValue = await tryImport(
11
+ "coffeescript",
12
+ meta.supportedTranspilers.coffeescript,
13
+ );
14
14
 
15
- /* c8 ignore start */
16
- if (lReturnValue === false) {
17
- lReturnValue = await tryImport(
18
- "coffee-script",
19
- meta.supportedTranspilers["coffee-script"],
20
- );
21
- }
22
- /* c8 ignore stop */
23
- return lReturnValue;
15
+ /* c8 ignore start */
16
+ if (lReturnValue === false) {
17
+ lReturnValue = await tryImport(
18
+ "coffee-script",
19
+ meta.supportedTranspilers["coffee-script"],
20
+ );
21
+ }
22
+ /* c8 ignore stop */
23
+ return lReturnValue;
24
24
  }
25
25
 
26
26
  const coffeeScript = await getCoffeeScriptModule();
27
27
 
28
28
  export default function coffeeScriptWrap(pLiterate) {
29
- return {
30
- isAvailable: () => coffeeScript !== false,
29
+ return {
30
+ isAvailable: () => coffeeScript !== false,
31
31
 
32
- version: () => `coffeescript@${coffeeScript.VERSION}`,
32
+ version: () => `coffeescript@${coffeeScript.VERSION}`,
33
33
 
34
- transpile: (pSource) => {
35
- const lOptions = pLiterate ? { literate: true } : {};
34
+ transpile: (pSource) => {
35
+ const lOptions = pLiterate ? { literate: true } : {};
36
36
 
37
- return coffeeScript.compile(pSource, lOptions);
38
- },
39
- };
37
+ return coffeeScript.compile(pSource, lOptions);
38
+ },
39
+ };
40
40
  }