dependency-cruiser 16.4.2 → 16.5.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dependency-cruiser",
3
- "version": "16.4.2",
3
+ "version": "16.5.0",
4
4
  "description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
5
5
  "keywords": [
6
6
  "static analysis",
@@ -139,7 +139,7 @@
139
139
  "README.md"
140
140
  ],
141
141
  "dependencies": {
142
- "acorn": "^8.12.1",
142
+ "acorn": "^8.13.0",
143
143
  "acorn-jsx": "^5.3.2",
144
144
  "acorn-jsx-walk": "^2.0.0",
145
145
  "acorn-loose": "^8.4.0",
@@ -152,7 +152,7 @@
152
152
  "is-installed-globally": "^1.0.0",
153
153
  "json5": "^2.2.3",
154
154
  "memoize": "^10.0.0",
155
- "picocolors": "^1.1.0",
155
+ "picocolors": "^1.1.1",
156
156
  "picomatch": "^4.0.2",
157
157
  "prompts": "^2.4.2",
158
158
  "rechoir": "^0.8.0",
@@ -1,19 +1,29 @@
1
+ import { release, platform, arch } from "node:os";
1
2
  import pc from "picocolors";
2
3
 
3
4
  import { getAvailableTranspilers, allExtensions } from "#main/index.mjs";
5
+ import meta from "#meta.cjs";
4
6
 
5
7
  function bool2Symbol(pBool) {
6
8
  return pBool ? pc.green("✔") : pc.red("x");
7
9
  }
8
10
 
11
+ const MAX_VERSION_RANGE_STRING_LENGTH = 19;
12
+ const MAX_TRANSPILER_NAME_LENGTH = 22;
13
+ const MAX_VERSION_STRING_LENGTH = 24;
14
+
9
15
  function formatTranspilers() {
10
- return getAvailableTranspilers().reduce(
11
- (pAll, pThis) =>
12
- `${pAll} ${bool2Symbol(pThis.available)} ${pThis.name} (${
13
- pThis.version
14
- })\n`,
15
- ` ${bool2Symbol(true)} javascript (>es1)\n`,
16
+ let lTranspilerTableHeader = pc.bold(
17
+ ` ✔ ${"transpiler".padEnd(MAX_TRANSPILER_NAME_LENGTH)} ${"versions supported".padEnd(MAX_VERSION_RANGE_STRING_LENGTH)} version found`,
16
18
  );
19
+ let lTranspilerTableDivider = ` - ${"-".repeat(MAX_TRANSPILER_NAME_LENGTH)} ${"-".repeat(MAX_VERSION_RANGE_STRING_LENGTH)} ${"-".repeat(MAX_VERSION_STRING_LENGTH)}`;
20
+ let lTranspilerTable = getAvailableTranspilers()
21
+ .map(
22
+ (pTranspiler) =>
23
+ ` ${bool2Symbol(pTranspiler.available)} ${pTranspiler.name.padEnd(MAX_TRANSPILER_NAME_LENGTH)} ${pTranspiler.version.padEnd(MAX_VERSION_RANGE_STRING_LENGTH)} ${pTranspiler.currentVersion}`,
24
+ )
25
+ .join("\n");
26
+ return `${lTranspilerTableHeader}\n${lTranspilerTableDivider}\n${lTranspilerTable}\n`;
17
27
  }
18
28
 
19
29
  function formatExtensions(pExtensions) {
@@ -26,7 +36,11 @@ function formatExtensions(pExtensions) {
26
36
 
27
37
  export default function formatMetaInfo() {
28
38
  return `
29
- Supported:
39
+ ${pc.bold("dependency-cruiser")}@${meta.version}
40
+
41
+ node version supported : ${meta.engines.node}
42
+ node version found : ${process.version}
43
+ os version found : ${arch()} ${platform()}@${release()}
30
44
 
31
45
  If you need a supported, but not enabled transpiler ('${pc.red(
32
46
  "x",
@@ -34,11 +48,9 @@ export default function formatMetaInfo() {
34
48
  it in the same folder dependency-cruiser is installed. E.g. 'npm i livescript'
35
49
  will enable livescript support if it's installed in your project folder.
36
50
 
37
- Transpilers:
38
-
39
51
  ${formatTranspilers()}
40
- Extensions:
41
-
52
+ ${pc.bold("✔ extension")}
53
+ - ---------
42
54
  ${formatExtensions(allExtensions)}
43
55
  `;
44
56
  }
@@ -46,3 +46,5 @@ export function clearCache() {
46
46
  */
47
47
  // @ts-expect-error dfdfd
48
48
  export const isAvailable = () => swc !== false;
49
+
50
+ export const version = () => `@swc/core@${swc.version}`;
@@ -5,6 +5,9 @@ const babel = await tryImport("@babel/core", meta.supportedTranspilers.babel);
5
5
 
6
6
  export default {
7
7
  isAvailable: () => babel !== false,
8
+
9
+ version: () => `@babel/core@${babel.version}`,
10
+
8
11
  transpile: (pSource, pFileName, pTranspileOptions = {}) =>
9
12
  babel.transformSync(pSource, {
10
13
  ...(pTranspileOptions.babelConfig || {}),
@@ -28,6 +28,9 @@ const coffeeScript = await getCoffeeScriptModule();
28
28
  export default function coffeeScriptWrap(pLiterate) {
29
29
  return {
30
30
  isAvailable: () => coffeeScript !== false,
31
+
32
+ version: () => `coffeescript@${coffeeScript.VERSION}`,
33
+
31
34
  transpile: (pSource) => {
32
35
  const lOptions = pLiterate ? { literate: true } : {};
33
36
 
@@ -1,4 +1,12 @@
1
+ import { createRequire } from "node:module";
2
+
1
3
  export default {
2
4
  isAvailable: () => true,
5
+
6
+ version: () => {
7
+ const require = createRequire(import.meta.url);
8
+ return `acorn@${require("acorn").version}`;
9
+ },
10
+
3
11
  transpile: (pSource) => pSource,
4
12
  };
@@ -10,6 +10,8 @@ const livescript = await tryImport(
10
10
  export default {
11
11
  isAvailable: () => livescript !== false,
12
12
 
13
+ version: () => `livescript@${livescript.VERSION}`,
14
+
13
15
  transpile: (pSource) => livescript.compile(pSource),
14
16
  };
15
17
  /* c8 ignore stop */
@@ -1,7 +1,26 @@
1
1
  /* eslint security/detect-object-injection : 0*/
2
+ import {
3
+ isAvailable as swcIsAvailable,
4
+ version as swcVersion,
5
+ } from "../swc/parse.mjs";
2
6
  import tryAvailable from "./try-import-available.mjs";
7
+ import javascriptWrap from "./javascript-wrap.mjs";
8
+ import babelWrap from "./babel-wrap.mjs";
9
+ import coffeeScriptWrapFunction from "./coffeescript-wrap.mjs";
10
+ import livescriptWrap from "./livescript-wrap.mjs";
11
+ import svelteWrapFunction from "./svelte-wrap.mjs";
12
+ import typescriptWrapFunction from "./typescript-wrap.mjs";
13
+ import vueTemplateWrap from "./vue-template-wrap.cjs";
3
14
  import meta from "#meta.cjs";
4
15
 
16
+ const swcWrap = {
17
+ isAvailable: () => swcIsAvailable(),
18
+ version: () => swcVersion(),
19
+ };
20
+ const coffeeScriptWrap = coffeeScriptWrapFunction(false);
21
+ const svelteWrap = svelteWrapFunction(javascriptWrap);
22
+ const typescriptWrap = typescriptWrapFunction("esm");
23
+
5
24
  function gotCoffee() {
6
25
  return (
7
26
  tryAvailable("coffeescript", meta.supportedTranspilers.coffeescript) ||
@@ -28,6 +47,19 @@ const TRANSPILER2AVAILABLE = {
28
47
  ),
29
48
  };
30
49
 
50
+ const TRANSPILER2WRAPPER = {
51
+ babel: babelWrap,
52
+ javascript: javascriptWrap,
53
+ "coffee-script": coffeeScriptWrap,
54
+ coffeescript: coffeeScriptWrap,
55
+ livescript: livescriptWrap,
56
+ svelte: svelteWrap,
57
+ swc: swcWrap,
58
+ typescript: typescriptWrap,
59
+ "vue-template-compiler": vueTemplateWrap,
60
+ "@vue/compiler-sfc": vueTemplateWrap,
61
+ };
62
+
31
63
  export const EXTENSION2AVAILABLE = new Map([
32
64
  [".js", TRANSPILER2AVAILABLE.javascript],
33
65
  [".cjs", TRANSPILER2AVAILABLE.javascript],
@@ -81,6 +113,11 @@ export const allExtensions = Array.from(EXTENSION2AVAILABLE.keys()).map(
81
113
  }),
82
114
  );
83
115
 
116
+ function getCurrentVersion(pTranspiler) {
117
+ const lTranspiler = TRANSPILER2WRAPPER[pTranspiler];
118
+ return lTranspiler.isAvailable() ? lTranspiler.version() : "-";
119
+ }
120
+
84
121
  /**
85
122
  * an array of extensions that are 'scannable' (have a valid transpiler
86
123
  * available for) in the current environment.
@@ -99,9 +136,12 @@ export const scannableExtensions = Array.from(
99
136
  * @return {IAvailableTranspiler[]} an array of supported transpilers
100
137
  */
101
138
  export function getAvailableTranspilers() {
102
- return Object.keys(meta.supportedTranspilers).map((pTranspiler) => ({
103
- name: pTranspiler,
104
- version: meta.supportedTranspilers[pTranspiler],
105
- available: TRANSPILER2AVAILABLE[pTranspiler],
106
- }));
139
+ return ["javascript"]
140
+ .concat(Object.keys(meta.supportedTranspilers))
141
+ .map((pTranspiler) => ({
142
+ name: pTranspiler,
143
+ version: meta.supportedTranspilers[pTranspiler] || "*",
144
+ available: TRANSPILER2AVAILABLE[pTranspiler],
145
+ currentVersion: getCurrentVersion(pTranspiler),
146
+ }));
107
147
  }
@@ -2,7 +2,7 @@ import preProcess from "./svelte-preprocess.mjs";
2
2
  import tryImport from "#utl/try-import.mjs";
3
3
  import meta from "#meta.cjs";
4
4
 
5
- const { compile } = await tryImport(
5
+ const { compile, VERSION } = await tryImport(
6
6
  "svelte/compiler",
7
7
  meta.supportedTranspilers.svelte,
8
8
  );
@@ -21,6 +21,7 @@ function getTranspiler(pTranspilerWrapper) {
21
21
  export default function svelteWrap(pTranspilerWrapper) {
22
22
  return {
23
23
  isAvailable: () => Boolean(compile),
24
+ version: () => `svelte/compiler@${VERSION}`,
24
25
  transpile: getTranspiler(pTranspilerWrapper),
25
26
  };
26
27
  }
@@ -36,6 +36,8 @@ export default function typescriptWrap(pFlavor) {
36
36
  return {
37
37
  isAvailable: () => typescript !== false,
38
38
 
39
+ version: () => `typescript@${typescript.version}`,
40
+
39
41
  transpile: (pSource, _pFileName, pTranspileOptions = {}) =>
40
42
  typescript.transpileModule(pSource, {
41
43
  ...(pTranspileOptions.tsConfig || {}),
@@ -71,6 +71,10 @@ function vue2Transpile(pSource) {
71
71
 
72
72
  module.exports = {
73
73
  isAvailable: () => vueTemplateCompiler !== false,
74
+ version: () =>
75
+ vueTemplateCompiler.version
76
+ ? `@vue/compiler-sfc@${vueTemplateCompiler.version}`
77
+ : "vue-template-compiler",
74
78
  transpile: (pSource) =>
75
79
  isVue3 ? vue3Transpile(pSource) : vue2Transpile(pSource),
76
80
  };
package/src/meta.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /* generated - don't edit */
2
2
 
3
3
  module.exports = {
4
- version: "16.4.2",
4
+ version: "16.5.0",
5
5
  engines: {
6
6
  node: "^18.17||>=20",
7
7
  },