Skip to content

Commit fee339e

Browse files
committed
fix: update JSON.parse usages to cast the result as a type
Update JSON.parse usages to be better typed rather than resulting in an any type.
1 parent 7bcf956 commit fee339e

File tree

7 files changed

+32
-17
lines changed

7 files changed

+32
-17
lines changed

src/cdk/schematics/ng-add/index.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ describe('CDK ng-add', () => {
1515

1616
it('should update the package.json', async () => {
1717
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
18-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
18+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as any; // todo
1919
const dependencies = packageJson.dependencies;
2020

2121
expect(dependencies['@angular/cdk']).toBe('~0.0.0-PLACEHOLDER');
@@ -33,7 +33,7 @@ describe('CDK ng-add', () => {
3333
addPackageToPackageJson(appTree, '@angular/cdk', '^9.0.0');
3434

3535
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
36-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
36+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as any; // todo
3737
const dependencies = packageJson.dependencies;
3838

3939
expect(dependencies['@angular/cdk']).toBe('^9.0.0');

src/cdk/schematics/ng-add/package-config.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99
import {Tree} from '@angular-devkit/schematics';
1010

11+
interface PackageJson {
12+
dependencies: {[key: string]: string};
13+
}
14+
1115
/**
1216
* Sorts the keys of the given object.
1317
* @returns A new object instance with sorted keys
@@ -21,7 +25,7 @@ export function addPackageToPackageJson(host: Tree, pkg: string, version: string
2125

2226
if (host.exists('package.json')) {
2327
const sourceText = host.read('package.json')!.toString('utf-8');
24-
const json = JSON.parse(sourceText);
28+
const json = JSON.parse(sourceText) as PackageJson;
2529

2630
if (!json.dependencies) {
2731
json.dependencies = {};
@@ -44,7 +48,7 @@ export function getPackageVersionFromPackageJson(tree: Tree, name: string): stri
4448
return null;
4549
}
4650

47-
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8'));
51+
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8')) as PackageJson;
4852

4953
if (packageJson.dependencies && packageJson.dependencies[name]) {
5054
return packageJson.dependencies[name];

src/material/schematics/ng-add/index.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ describe('ng-add schematic', () => {
4343

4444
/** Removes the specified dependency from the /package.json in the given tree. */
4545
function removePackageJsonDependency(tree: Tree, dependencyName: string) {
46-
const packageContent = JSON.parse(getFileContent(tree, '/package.json'));
46+
const packageContent = JSON.parse(getFileContent(tree, '/package.json')) as any; // TODO
4747
delete packageContent.dependencies[dependencyName];
4848
tree.overwrite('/package.json', JSON.stringify(packageContent, null, 2));
4949
}
@@ -55,7 +55,7 @@ describe('ng-add schematic', () => {
5555
removePackageJsonDependency(appTree, '@angular/animations');
5656

5757
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
58-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
58+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as any; // TODO - any fix
5959
const dependencies = packageJson.dependencies;
6060
const angularCoreVersion = dependencies['@angular/core'];
6161

@@ -87,7 +87,7 @@ describe('ng-add schematic', () => {
8787
addPackageToPackageJson(appTree, '@angular/material', '^9.0.0');
8888

8989
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
90-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
90+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as any; // TODO - any fix
9191
const dependencies = packageJson.dependencies;
9292

9393
expect(dependencies['@angular/material']).toBe('^9.0.0');

src/material/schematics/ng-add/package-config.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99
import {Tree} from '@angular-devkit/schematics';
1010

11+
interface PackageJson {
12+
dependencies: {[key: string]: string};
13+
}
14+
1115
/**
1216
* Sorts the keys of the given object.
1317
* @returns A new object instance with sorted keys
@@ -21,7 +25,7 @@ export function addPackageToPackageJson(host: Tree, pkg: string, version: string
2125

2226
if (host.exists('package.json')) {
2327
const sourceText = host.read('package.json')!.toString('utf-8');
24-
const json = JSON.parse(sourceText);
28+
const json = JSON.parse(sourceText) as PackageJson;
2529

2630
if (!json.dependencies) {
2731
json.dependencies = {};
@@ -44,7 +48,7 @@ export function getPackageVersionFromPackageJson(tree: Tree, name: string): stri
4448
return null;
4549
}
4650

47-
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8'));
51+
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8')) as PackageJson;
4852

4953
if (packageJson.dependencies && packageJson.dependencies[name]) {
5054
return packageJson.dependencies[name];

src/material/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ interface IdentifierReference {
5959
isImport: boolean;
6060
}
6161

62+
63+
interface PackageJson {
64+
dependencies: {[key: string]: string};
65+
}
66+
67+
6268
export class HammerGesturesMigration extends DevkitMigration<null> {
6369
// Only enable this rule if the migration targets v9 or v10 and is running for a non-test
6470
// target. We cannot migrate test targets since they have a limited scope
@@ -853,7 +859,7 @@ export class HammerGesturesMigration extends DevkitMigration<null> {
853859
return false;
854860
}
855861

856-
const packageJson = JSON.parse(tree.read('/package.json')!.toString('utf8'));
862+
const packageJson = JSON.parse(tree.read('/package.json')!.toString('utf8')) as PackageJson;
857863

858864
// We do not handle the case where someone manually added "hammerjs" to the dev dependencies.
859865
if (packageJson.dependencies && packageJson.dependencies[HAMMER_MODULE_SPECIFIER]) {

src/material/schematics/ng-update/test-cases/v9/misc/hammer-migration-v9.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ describe('v9 HammerJS removal', () => {
5555
it('should remove hammerjs from "package.json" file', async () => {
5656
addPackageToPackageJson(tree, 'hammerjs', '0.0.0');
5757

58-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs']).toBe('0.0.0');
58+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs']).toBe('0.0.0');
5959

6060
await runMigration();
6161

62-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs'])
62+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs'])
6363
.toBe(undefined);
6464

6565
// expect that there is a "node-package" install task. The task is
@@ -803,7 +803,7 @@ describe('v9 HammerJS removal', () => {
803803
it('should not remove hammerjs if test target compilation scope does not contain hammerjs usage',
804804
async () => {
805805
addPackageToPackageJson(tree, 'hammerjs', '0.0.0');
806-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs']).toBe('0.0.0');
806+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs']).toBe('0.0.0');
807807

808808
// we simulate a case where a component does not have any tests for. In that case,
809809
// the test target compilation scope does not include "test.component.ts" and the
@@ -820,14 +820,14 @@ describe('v9 HammerJS removal', () => {
820820

821821
await runMigration();
822822

823-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs']).toBe('0.0.0');
823+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs']).toBe('0.0.0');
824824
});
825825

826826
it('should not remove hammerjs from "package.json" file if used in one project while ' +
827827
'unused in other project', async () => {
828828
addPackageToPackageJson(tree, 'hammerjs', '0.0.0');
829829

830-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs']).toBe('0.0.0');
830+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs']).toBe('0.0.0');
831831

832832
await runner.runExternalSchematicAsync('@schematics/angular', 'application',
833833
{name: 'second-project'}, tree).toPromise();
@@ -840,7 +840,7 @@ describe('v9 HammerJS removal', () => {
840840
await runMigration();
841841

842842
expect(runner.tasks.some(t => t.name === 'node-package')).toBe(false);
843-
expect(JSON.parse(tree.readContent('/package.json')).dependencies['hammerjs'])
843+
expect((JSON.parse(tree.readContent('/package.json')) as any).dependencies['hammerjs'])
844844
.toBe('0.0.0');
845845
});
846846

tools/markdown-to-html/docs-marked-renderer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ export class DocsMarkdownRenderer extends Renderer {
8181
html = html.replace(exampleCommentRegex, (_match: string, content: string) => {
8282
// using [\s\S]* because .* does not match line breaks
8383
if (content.match(/\{[\s\S]*\}/g)) {
84-
const {example, file, region} = JSON.parse(content);
84+
const {example, file, region} = JSON.parse(content) as {
85+
example: string, file: string, region: string};
8586
return `<div material-docs-example="${example}"
8687
${file ? `file="${file}"` : ''}
8788
${region ? `region="${region}"` : ''}></div>`;

0 commit comments

Comments
 (0)