Skip to content

Commit 34faea2

Browse files
committed
feat(angular): add the removeMetadataProperty function
1 parent 77799d5 commit 34faea2

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2+
3+
exports[`removeMetadataProperty > should remove the providers property 1`] = `
4+
"
5+
@Component({}) class AppComponent {}
6+
"
7+
`;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { Tree } from '@angular-devkit/schematics';
2+
3+
import { createSourceFile, readFileSync, saveProject } from '@mutates/core';
4+
5+
import { createTestingTree } from '../../testing';
6+
import { getComponents } from '../component';
7+
import { createAngularProject } from '../create-angular-project';
8+
import { removeMetadataProperty } from './remove-metadata-property';
9+
10+
describe('removeMetadataProperty', () => {
11+
let host: Tree;
12+
beforeEach(() => {
13+
host = createTestingTree();
14+
15+
createAngularProject(host);
16+
});
17+
18+
it('should remove the providers property', () => {
19+
createSourceFile(
20+
'src/main.ts',
21+
`
22+
@Component({providers: [Set, Map]}) class AppComponent {}
23+
`,
24+
);
25+
26+
removeMetadataProperty(getComponents('src/main.ts').at(0)!, 'providers');
27+
28+
saveProject();
29+
30+
expect(readFileSync('src/main.ts')).matchSnapshot();
31+
});
32+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { ClassDeclaration } from 'ts-morph';
2+
3+
import { getObjectProperties } from '@mutates/core';
4+
5+
import { MetadataProperty } from '../types/metadata-property';
6+
import { getMetadata } from './get-metadata';
7+
8+
export function removeMetadataProperty<T extends MetadataProperty>(
9+
klass: ClassDeclaration,
10+
property: T,
11+
): void {
12+
const [metadata] = getMetadata(klass);
13+
14+
const prop = getObjectProperties(metadata, {
15+
name: property as string,
16+
}).at(0);
17+
18+
prop?.remove();
19+
}

0 commit comments

Comments
 (0)