Skip to content

Commit b8a3246

Browse files
authored
Merge pull request #95 from bmish/type-fest-package-json
Add real package.json types from type-fest
2 parents f6ce88f + a03058b commit b8a3246

File tree

6 files changed

+35
-12
lines changed

6 files changed

+35
-12
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module.exports = {
1111
},
1212
settings: {
1313
node: {
14-
tryExtensions: ['.js', '.json', '.node', '.ts'],
14+
tryExtensions: ['.js', '.json', '.node', '.ts', '.d.ts'],
1515
},
1616
},
1717
overrides: [

bin/check-dependency-version-consistency.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,16 @@ import {
1010
} from '../lib/dependency-versions';
1111
import { mismatchingVersionsToOutputLines } from '../lib/output';
1212
import { join } from 'path';
13+
import type { PackageJson } from 'type-fest';
1314

1415
function getCurrentPackageVersion(): string {
15-
return JSON.parse(
16+
const packageJson: PackageJson = JSON.parse(
1617
readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf-8') // Relative to compiled version of this file in dist/bin
17-
).version;
18+
);
19+
if (!packageJson.version) {
20+
throw new Error('Could not find package.json `version`');
21+
}
22+
return packageJson.version;
1823
}
1924

2025
// Used for collecting repeated CLI options into an array.

lib/dependency-versions.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { readFileSync, existsSync } from 'fs';
2+
import type { PackageJson } from 'type-fest';
23
import { getPackageJsonPaths } from './workspace';
34

45
export type DependenciesToVersionsSeen = Map<
@@ -58,28 +59,34 @@ function recordDependencyVersionsForPackageJson(
5859
}
5960

6061
const title = packageJsonPath.replace(`${root}/`, '');
61-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
62+
const packageJson: PackageJson = JSON.parse(
63+
readFileSync(packageJsonPath, 'utf-8')
64+
);
6265

6366
if (packageJson.dependencies) {
64-
Object.keys(packageJson.dependencies).forEach((dependency) => {
67+
for (const [dependency, dependencyVersion] of Object.entries(
68+
packageJson.dependencies
69+
)) {
6570
recordDependencyVersion(
6671
dependenciesToVersionsSeen,
6772
dependency,
6873
title,
69-
packageJson.dependencies[dependency]
74+
dependencyVersion
7075
);
71-
});
76+
}
7277
}
7378

7479
if (packageJson.devDependencies) {
75-
Object.keys(packageJson.devDependencies).forEach((dependency) => {
80+
for (const [dependency, dependencyVersion] of Object.entries(
81+
packageJson.devDependencies
82+
)) {
7683
recordDependencyVersion(
7784
dependenciesToVersionsSeen,
7885
dependency,
7986
title,
80-
packageJson.devDependencies[dependency]
87+
dependencyVersion
8188
);
82-
});
89+
}
8390
}
8491
}
8592

lib/workspace.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { join } from 'path';
22
import { existsSync, readFileSync } from 'fs';
33
import { getDirectoriesInPath } from './fs';
44
import { flatMap } from './js';
5+
import type { PackageJson } from 'type-fest';
56

67
export function getPackageJsonPaths(root: string): string[] {
78
return getPackages(root).map((pkg: string) =>
@@ -28,7 +29,7 @@ export function getWorkspaces(root: string): string[] {
2829
throw new Error('No package.json found at provided path.');
2930
}
3031

31-
const workspacePackageJson = JSON.parse(
32+
const workspacePackageJson: PackageJson = JSON.parse(
3233
readFileSync(join(root, 'package.json'), 'utf-8')
3334
);
3435

@@ -38,5 +39,9 @@ export function getWorkspaces(root: string): string[] {
3839
);
3940
}
4041

42+
if (!Array.isArray(workspacePackageJson.workspaces)) {
43+
throw new TypeError('package.json `workspaces` is not a string array.');
44+
}
45+
4146
return workspacePackageJson.workspaces;
4247
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
},
3838
"dependencies": {
3939
"commander": "^7.0.0",
40-
"globby": "^11.0.0"
40+
"globby": "^11.0.0",
41+
"type-fest": "^1.0.2"
4142
},
4243
"devDependencies": {
4344
"@types/mocha": "^8.2.0",

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5173,6 +5173,11 @@ type-fest@^0.8.0, type-fest@^0.8.1:
51735173
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
51745174
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
51755175

5176+
type-fest@^1.0.2:
5177+
version "1.1.1"
5178+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.1.1.tgz#210251e7f57357a1457269e6b34837fed067ac2c"
5179+
integrity sha512-RPDKc5KrIyKTP7Fk75LruUagqG6b+OTgXlCR2Z0aQDJFeIvL4/mhahSEtHmmVzXu4gmA0srkF/8FCH3WOWxTWA==
5180+
51765181
typedarray-to-buffer@^3.1.5:
51775182
version "3.1.5"
51785183
resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"

0 commit comments

Comments
 (0)