Skip to content

Commit 9183f81

Browse files
committed
feat: added filePath to FileUsage report
1 parent cde289f commit 9183f81

File tree

6 files changed

+53
-39
lines changed

6 files changed

+53
-39
lines changed

__tests__/pkg-usage.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ describe('getPackagesUsages()', () => {
6060
files: [
6161
{
6262
defaultImport: undefined,
63+
filePath: `${MOCKS_DIR_CWD}/${fileName}.ts`,
6364
name: `${fileName}.ts`,
6465
namedImports: imports,
6566
},

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,16 @@
4545
"lint": "eslint . --cache --fix --ext .ts,.tsx",
4646
"format": "prettier --loglevel warn --write \"**/*.{ts,tsx,css,md}\"",
4747
"test:ci": "CI=true yarn test:coverage",
48-
"test:jest": "jest",
49-
"test:watch": "jest --watch",
50-
"test:coverage": "jest --coverage",
48+
"test:jest": "NODE_OPTIONS=--max_old_space_size=4096 jest -w=2",
49+
"test:watch": "yarn test --watch",
50+
"test:coverage": "yarn test --coverage",
5151
"test": "yarn test:jest",
5252
"prebuild": "rm -Rf dist",
5353
"build": "tsc"
5454
},
5555
"jest": {
5656
"testPathIgnorePatterns": [
57+
"/dist/",
5758
"/node_modules/",
5859
"/__tests__/utils.ts"
5960
],

src/core.ts

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { Project, SourceFile } from 'ts-morph';
2-
import pkgup from 'pkg-up';
32

3+
import { getPackageVersion, nonNullish } from './helpers';
44
import { FileUsage, PackageUsage, Options } from './types';
5-
import { readFileSync } from 'fs';
65

76
function getPackageUsage(
87
pkg: string,
@@ -27,42 +26,12 @@ function getPackageUsage(
2726

2827
return {
2928
name: sourceFile.getBaseName(),
29+
filePath: sourceFile.getFilePath(),
3030
defaultImport: defaultImport?.getText(),
3131
namedImports: namedImports.map((a) => a.getName()),
3232
};
3333
}
3434

35-
function getPackageJson(packageJsonCWD?: string) {
36-
const pkgJsonPath = pkgup.sync({ cwd: packageJsonCWD });
37-
38-
const { dependencies, peerDependencies, devDependencies } = JSON.parse(
39-
readFileSync(pkgJsonPath!, 'utf8')
40-
);
41-
42-
return {
43-
dependencies: new Map<string, string>(
44-
dependencies ? Object.entries(dependencies) : undefined
45-
),
46-
peerDependencies: new Map<string, string>(
47-
peerDependencies ? Object.entries(peerDependencies) : undefined
48-
),
49-
devDependencies: new Map<string, string>(
50-
devDependencies ? Object.entries(devDependencies) : undefined
51-
),
52-
};
53-
}
54-
55-
function getPackageVersion(pkg: string, packageJsonCWD?: string) {
56-
const { dependencies, peerDependencies, devDependencies } =
57-
getPackageJson(packageJsonCWD);
58-
59-
return (
60-
dependencies.get(pkg) ||
61-
devDependencies.get(pkg) ||
62-
peerDependencies.get(pkg)
63-
);
64-
}
65-
6635
export function getPackagesUsages({
6736
packages,
6837
fileGlobs,
@@ -78,7 +47,7 @@ export function getPackagesUsages({
7847
const result = packages.map((pkg) => {
7948
const fileUsages = sourceFiles
8049
.map((sourceFile) => getPackageUsage(pkg, sourceFile))
81-
.filter(Boolean);
50+
.filter(nonNullish);
8251

8352
return {
8453
name: pkg,

src/helpers.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import pkgup from 'pkg-up';
2+
3+
import { readFileSync } from 'fs';
4+
5+
// istanbul ignore next
6+
function getPackageJson(packageJsonCWD?: string) {
7+
const pkgJsonPath = pkgup.sync({ cwd: packageJsonCWD });
8+
9+
const { dependencies, peerDependencies, devDependencies } = JSON.parse(
10+
readFileSync(pkgJsonPath!, 'utf8')
11+
);
12+
13+
return {
14+
dependencies: new Map<string, string>(
15+
dependencies ? Object.entries(dependencies) : undefined
16+
),
17+
peerDependencies: new Map<string, string>(
18+
peerDependencies ? Object.entries(peerDependencies) : undefined
19+
),
20+
devDependencies: new Map<string, string>(
21+
devDependencies ? Object.entries(devDependencies) : undefined
22+
),
23+
};
24+
}
25+
26+
// istanbul ignore next
27+
export function getPackageVersion(pkg: string, packageJsonCWD?: string) {
28+
const { dependencies, peerDependencies, devDependencies } =
29+
getPackageJson(packageJsonCWD);
30+
31+
return (
32+
dependencies.get(pkg) ||
33+
devDependencies.get(pkg) ||
34+
peerDependencies.get(pkg)
35+
);
36+
}
37+
38+
export function nonNullish<Value>(v: Value): v is NonNullable<Value> {
39+
return v !== undefined && v !== null;
40+
}

src/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ export type Options = {
66

77
export type FileUsage = {
88
name: string;
9+
filePath: string;
910
defaultImport: string | undefined;
1011
namedImports: string[];
1112
};
1213

1314
export type PackageUsage = {
1415
name: string;
1516
count: number;
16-
files?: (FileUsage | undefined)[];
17+
files?: FileUsage[];
1718
version?: string;
1819
};

tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
"compilerOptions": {
44
"preserveConstEnums": true,
55
"declaration": true,
6-
"outDir": "dist"
6+
"outDir": "dist",
7+
"allowJs": true
78
},
89
"include": [
910
"src/**/*",
11+
"scripts/*",
1012
"__tests__/*",
1113
"node_modules/@tsconfig/node14/tsconfig.json"
1214
],

0 commit comments

Comments
 (0)