@m4x_7/type-debt 1.0.12 → 1.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IAErB,UAAU,EAAE,EAAE;IAEd,iBAAiB,EAAC;QACd,mBAAmB,EAAE,CAAC;QACtB,mBAAmB,EAAE,CAAC;QACtB,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;QACrB,yBAAyB,EAAE,CAAC;KAC/B;CAEK,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IAErB,UAAU,EAAE,EAAE;IAEd,iBAAiB,EAAC;QACd,mBAAmB,EAAE,CAAC;QACtB,mBAAmB,EAAE,CAAC;QACtB,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;QACrB,yBAAyB,EAAE,CAAC;KAC/B;CAIK,CAAC"}
@@ -1,2 +1,3 @@
1
+ import { Project } from "ts-morph";
1
2
  import { FileReport } from "../types.js";
2
- export declare function processChunk(chunk: string[]): FileReport[];
3
+ export declare function processChunk(chunkPaths: string[], project: Project): FileReport[];
@@ -1,20 +1,17 @@
1
- import { Project } from "ts-morph";
2
1
  import { getTypeDebt } from "./typeDebt.js";
3
- export function processChunk(chunk) {
4
- const project = new Project({ skipAddingFilesFromTsConfig: true });
5
- project.addSourceFilesAtPaths(chunk);
2
+ export function processChunk(chunkPaths, project) {
6
3
  const chunkResults = [];
7
4
  project.forgetNodesCreatedInBlock(() => {
8
- for (const file of project.getSourceFiles()) {
9
- chunkResults.push({
10
- filePath: file.getFilePath(),
11
- typeDebtMetrics: getTypeDebt(file)
12
- });
5
+ for (const filePath of chunkPaths) {
6
+ const file = project.getSourceFile(filePath);
7
+ if (file) {
8
+ chunkResults.push({
9
+ filePath: file.getFilePath(),
10
+ typeDebtMetrics: getTypeDebt(file)
11
+ });
12
+ }
13
13
  }
14
14
  });
15
- for (const file of project.getSourceFiles()) {
16
- project.removeSourceFile(file);
17
- }
18
15
  return chunkResults;
19
16
  }
20
17
  //# sourceMappingURL=chunkProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunkProcessor.js","sourceRoot":"","sources":["../../core/chunkProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,UAAU,YAAY,CAAC,KAAe;IAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,OAAO,CAAC,yBAAyB,CAAC,GAAG,EAAE;QACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5C,YAAY,CAAC,IAAI,CAAC;gBAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC5B,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"chunkProcessor.js","sourceRoot":"","sources":["../../core/chunkProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,UAAU,YAAY,CAAC,UAAoB,EAAE,OAAgB;IAEjE,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,OAAO,CAAC,yBAAyB,CAAC,GAAG,EAAE;QACrC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAElC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC;oBAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;oBAC5B,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -8,19 +8,19 @@ export async function generateMarkdownReport(results, targetDir, outputPath = "t
8
8
  const averageScore = Math.round(totalScore / totalFiles);
9
9
  const sortedResults = [...results].sort((a, b) => a.typeDebtMetrics.score - b.typeDebtMetrics.score);
10
10
  let md = `Type Debt Report\n\n`;
11
- md += `> Generated on: ${new Date().toUTCString()}\n\n`;
11
+ md += `> Generated on: ${new Date().toLocaleString()}\n\n`;
12
12
  md += `## Summary\n`;
13
13
  md += `- Total Files Scanned: ${totalFiles}\n`;
14
14
  md += `- Average Score: ${averageScore}/100\n\n`;
15
15
  md += `## Top 10 Worst Offenders\n\n`;
16
- md += `| Score | File Path | Valid Types | Suppressions | Implicit \`any\` | Explicit \`any\` | \`as any\` | Non-Null (\`!\`) |\n`;
16
+ md += `| Score | File Path | Typed Nodes | Suppressions | Implicit \`any\` | Explicit \`any\` | \`as any\` | Non-Null (\`!\`) |\n`;
17
17
  md += `| :---: | :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n`;
18
18
  const worstOffenders = sortedResults.slice(0, 10);
19
19
  const absoluteTargetDir = path.resolve(targetDir);
20
20
  for (const result of worstOffenders) {
21
21
  const metrics = result.typeDebtMetrics;
22
22
  const cleanPath = path.relative(absoluteTargetDir, result.filePath);
23
- md += `| ${metrics.score} | \`${cleanPath}\` | ${metrics.validTypes} | ${metrics.suppressions} | ${metrics.implicitAny} | ${metrics.explicitAny} | ${metrics.asAny} | ${metrics.nonNullAssertions} |\n`;
23
+ md += `| ${metrics.score} | \`${cleanPath}\` | ${metrics.typedNodes} | ${metrics.suppressions} | ${metrics.implicitAny} | ${metrics.explicitAny} | ${metrics.asAny} | ${metrics.nonNullAssertions} |\n`;
24
24
  }
25
25
  try {
26
26
  await fs.writeFile(outputPath, md, "utf-8");
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../core/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAqB,EAAE,SAAiB,EAAE,UAAU,GAAG,qBAAqB;IACvH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/C,CAAC,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAClD,CAAC;IAEF,IAAI,EAAE,GAAG,sBAAsB,CAAC;IAChC,EAAE,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAExD,EAAE,IAAI,cAAc,CAAC;IACrB,EAAE,IAAI,0BAA0B,UAAU,IAAI,CAAC;IAC/C,EAAE,IAAI,oBAAoB,YAAY,UAAU,CAAC;IAEjD,EAAE,IAAI,+BAA+B,CAAC;IAEtC,EAAE,IAAI,4HAA4H,CAAC;IAEnI,EAAE,IAAI,mEAAmE,CAAC;IAE1E,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpE,EAAE,IAAI,KAAK,OAAO,CAAC,KAAK,QAAQ,SAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,YAAY,MAAM,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,iBAAiB,MAAM,CAAC;IAC1M,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../core/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAqB,EAAE,SAAiB,EAAE,UAAU,GAAG,qBAAqB;IACvH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/C,CAAC,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAClD,CAAC;IAEF,IAAI,EAAE,GAAG,sBAAsB,CAAC;IAChC,EAAE,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IAE3D,EAAE,IAAI,cAAc,CAAC;IACrB,EAAE,IAAI,0BAA0B,UAAU,IAAI,CAAC;IAC/C,EAAE,IAAI,oBAAoB,YAAY,UAAU,CAAC;IAEjD,EAAE,IAAI,+BAA+B,CAAC;IAEtC,EAAE,IAAI,4HAA4H,CAAC;IAEnI,EAAE,IAAI,mEAAmE,CAAC;IAE1E,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpE,EAAE,IAAI,KAAK,OAAO,CAAC,KAAK,QAAQ,SAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,YAAY,MAAM,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,iBAAiB,MAAM,CAAC;IAC1M,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { SyntaxKind } from "ts-morph";
1
+ import { SyntaxKind, Node } from "ts-morph";
2
2
  import { CONSTANTS } from "../constants.js";
3
3
  const SUPPRESSION_REGEX = /(?:\/\/|\/\*)\s*@ts-(ignore|expect-error|nocheck)/g;
4
4
  export function getTypeDebt(sourceFile) {
@@ -8,47 +8,43 @@ export function getTypeDebt(sourceFile) {
8
8
  asAny: 0,
9
9
  suppressions: 0,
10
10
  nonNullAssertions: 0,
11
- validTypes: 0,
11
+ typedNodes: 0,
12
12
  score: 0
13
13
  };
14
+ const typeChecker = sourceFile.getProject().getTypeChecker();
14
15
  sourceFile.forEachDescendant(node => {
15
16
  const kind = node.getKind();
16
- // explicit any
17
- if (kind === SyntaxKind.AnyKeyword) {
18
- const parent = node.getParent();
19
- if (parent?.getKind() !== SyntaxKind.AsExpression) {
20
- metrics.explicitAny++;
21
- }
22
- }
23
17
  // as any
24
- else if (kind === SyntaxKind.AsExpression) {
18
+ if (kind === SyntaxKind.AsExpression) {
25
19
  const asExpression = node.asKindOrThrow(SyntaxKind.AsExpression);
26
20
  if (asExpression.getTypeNode()?.getKind() === SyntaxKind.AnyKeyword) {
27
21
  metrics.asAny++;
28
22
  }
29
23
  }
30
- // implicit any
31
- if (kind === SyntaxKind.Parameter) {
32
- const parameter = node.asKindOrThrow(SyntaxKind.Parameter);
33
- if (!parameter.getTypeNode() && !parameter.getInitializer()) {
34
- const parentFunction = parameter.getParent();
35
- const grandParent = parentFunction?.getParent();
36
- // Ignore parameters in callbacks (e.g., .map(item => ...))
37
- const isCallback = (parentFunction?.getKind() === SyntaxKind.ArrowFunction ||
38
- parentFunction?.getKind() === SyntaxKind.FunctionExpression) &&
39
- grandParent?.getKind() === SyntaxKind.CallExpression;
40
- if (!isCallback) {
41
- metrics.implicitAny++;
42
- }
43
- }
44
- }
45
24
  // not null expression
46
25
  if (kind === SyntaxKind.NonNullExpression) {
47
26
  metrics.nonNullAssertions++;
48
27
  }
49
- // valid types
50
- else if (isValidType(kind)) {
51
- metrics.validTypes++;
28
+ // declarations
29
+ else if (Node.isVariableDeclaration(node) ||
30
+ Node.isParameterDeclaration(node) ||
31
+ Node.isPropertyDeclaration(node)) {
32
+ const typeNode = node.getTypeNode();
33
+ if (typeNode && typeNode.getKind() === SyntaxKind.AnyKeyword) {
34
+ metrics.explicitAny++;
35
+ }
36
+ else if (!typeNode) {
37
+ const type = node.getType();
38
+ if (type.isAny()) {
39
+ metrics.implicitAny++;
40
+ }
41
+ else {
42
+ metrics.typedNodes++;
43
+ }
44
+ }
45
+ else {
46
+ metrics.typedNodes++;
47
+ }
52
48
  }
53
49
  });
54
50
  //suppressions
@@ -59,21 +55,12 @@ export function getTypeDebt(sourceFile) {
59
55
  return metrics;
60
56
  }
61
57
  export function calculateScore(metrics) {
62
- const totalDebtInstances = metrics.explicitAny +
63
- metrics.implicitAny +
64
- metrics.asAny +
65
- metrics.suppressions +
66
- metrics.nonNullAssertions;
67
- const totalTypeNodes = metrics.validTypes + totalDebtInstances;
68
- if (totalTypeNodes == 0) {
58
+ const penalty = calculatePenalty(metrics);
59
+ if (metrics.typedNodes + penalty === 0) {
69
60
  return 100;
70
61
  }
71
- else {
72
- const baseScore = (metrics.validTypes / totalTypeNodes) * 100;
73
- const rawPenalty = calculatePenalty(metrics);
74
- const scaledPenalty = (rawPenalty / totalTypeNodes) * 100;
75
- return Math.max(0, Math.round(baseScore - scaledPenalty));
76
- }
62
+ const score = Math.round(100 * metrics.typedNodes / (metrics.typedNodes + penalty));
63
+ return Math.max(0, score);
77
64
  }
78
65
  export function calculatePenalty(metrics) {
79
66
  return metrics.explicitAny * CONSTANTS.TYPE_DEBT_METRICS.EXPLICIT_ANY_WEIGHT
@@ -82,12 +69,4 @@ export function calculatePenalty(metrics) {
82
69
  + metrics.nonNullAssertions * CONSTANTS.TYPE_DEBT_METRICS.NON_NULL_ASSERTION_WEIGHT
83
70
  + metrics.suppressions * CONSTANTS.TYPE_DEBT_METRICS.SUPPRESSION_WEIGHT;
84
71
  }
85
- function isValidType(kind) {
86
- return (kind === SyntaxKind.TypeReference ||
87
- kind === SyntaxKind.StringKeyword ||
88
- kind === SyntaxKind.NumberKeyword ||
89
- kind === SyntaxKind.BooleanKeyword ||
90
- kind === SyntaxKind.InterfaceDeclaration ||
91
- kind === SyntaxKind.TypeAliasDeclaration);
92
- }
93
72
  //# sourceMappingURL=typeDebt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeDebt.js","sourceRoot":"","sources":["../../core/typeDebt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeDebt.js","sourceRoot":"","sources":["../../core/typeDebt.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import { chunkArray, validateDirectory } from "./utils.js";
4
4
  import { processChunk } from "./core/chunkProcessor.js";
5
5
  import { CONSTANTS } from "./constants.js";
6
6
  import { generateMarkdownReport } from "./core/reporter.js";
7
+ import { Project } from "ts-morph";
7
8
  const args = process.argv.slice(2);
8
9
  if (args.includes('--help') || args.includes('-h')) {
9
10
  printHelp();
@@ -17,6 +18,10 @@ runCLI(target).catch((err) => {
17
18
  async function runCLI(targetDir) {
18
19
  await validateDirectory(targetDir);
19
20
  console.log(`\nScanning directory: ${targetDir}`);
21
+ console.log("Initializing TypeScript compiler...");
22
+ const project = new Project({
23
+ tsConfigFilePath: "tsconfig.json",
24
+ });
20
25
  const allFiles = getTargetFiles(targetDir);
21
26
  if (allFiles.length === 0) {
22
27
  throw new Error(`No TypeScript files found to process.`);
@@ -24,7 +29,7 @@ async function runCLI(targetDir) {
24
29
  const fileChunks = chunkArray(allFiles, CONSTANTS.CHUNK_SIZE);
25
30
  let allResults = [];
26
31
  for (const [index, chunk] of fileChunks.entries()) {
27
- const chunkResults = processChunk(chunk);
32
+ const chunkResults = processChunk(chunk, project);
28
33
  allResults = allResults.concat(chunkResults);
29
34
  process.stdout.write(`\rProcessed chunk ${index + 1}/${fileChunks.length}`);
30
35
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAGH,KAAK,UAAU,MAAM,CAAC,SAAiB;IAErC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAE9D,IAAI,UAAU,GAAiB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAElD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAEtD,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;GAQX,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAGH,KAAK,UAAU,MAAM,CAAC,SAAiB;IAErC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,eAAe;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAE9D,IAAI,UAAU,GAAiB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAElD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;GAQX,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -8,6 +8,6 @@ export interface TypeDebtMetrics {
8
8
  asAny: number;
9
9
  suppressions: number;
10
10
  nonNullAssertions: number;
11
- validTypes: number;
11
+ typedNodes: number;
12
12
  score: number;
13
13
  }
package/dist/utils.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { fdir } from "fdir";
2
2
  import { stat } from "fs/promises";
3
+ import { resolve } from "path";
3
4
  export function getTargetFiles(directoryPath) {
4
5
  const crawler = new fdir()
5
6
  .withFullPaths()
@@ -9,7 +10,8 @@ export function getTargetFiles(directoryPath) {
9
10
  dirName === ".git")
10
11
  .filter((path) => path.endsWith(".ts") || path.endsWith(".tsx"))
11
12
  .crawl(directoryPath);
12
- return crawler.sync();
13
+ const files = crawler.sync();
14
+ return files.map(file => resolve(file).split('\\').join('/'));
13
15
  }
14
16
  export function chunkArray(array, chunkSize) {
15
17
  const chunks = [];
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnC,MAAM,UAAU,cAAc,CAAC,aAAqB;IAClD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;SACvB,aAAa,EAAE;SACf,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,KAAK,cAAc;QAC1B,OAAO,KAAK,MAAM;QAClB,OAAO,KAAK,OAAO;QACnB,OAAO,KAAK,MAAM,CACnB;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC/D,KAAK,CAAC,aAAa,CAAC,CAAC;IAExB,OAAO,OAAO,CAAC,IAAI,EAAc,CAAC;AACpC,CAAC;AAGD,MAAM,UAAU,UAAU,CAAI,KAAU,EAAE,SAAiB;IACzD,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAElD,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAG7B,MAAM,UAAU,cAAc,CAAC,aAAqB;IAClD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;SACvB,aAAa,EAAE;SACf,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,KAAK,cAAc;QAC1B,OAAO,KAAK,MAAM;QAClB,OAAO,KAAK,OAAO;QACnB,OAAO,KAAK,MAAM,CACnB;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC/D,KAAK,CAAC,aAAa,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAc,CAAC;IACzC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAGD,MAAM,UAAU,UAAU,CAAI,KAAU,EAAE,SAAiB;IACzD,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAElD,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4x_7/type-debt",
3
- "version": "1.0.12",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "A high-performance TypeScript static analyzer that calculates Type Debt and generates reports.",
6
6
  "main": "./dist/index.js",