Skip to content

Commit cc6dd27

Browse files
committed
fixup! feat(core): add migration to remove moduleId references
Address feedback
1 parent 68a5c31 commit cc6dd27

File tree

4 files changed

+45
-11
lines changed

4 files changed

+45
-11
lines changed

packages/core/schematics/migrations/remove-module-id/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {Rule, SchematicsException, Tree} from '@angular-devkit/schematics';
1010
import {relative} from 'path';
1111
import ts from 'typescript';
1212

13-
import {extractDirectiveMetadata} from '../../utils/directive_extractor';
13+
import {extractAngularClassMetadata} from '../../utils/extract_metadata';
1414
import {getProjectTsConfigPaths} from '../../utils/project_tsconfig_paths';
1515
import {canMigrateFile, createMigrationProgram} from '../../utils/typescript/compiler_host';
1616
import {getPropertyNameText} from '../../utils/typescript/property_name';
@@ -53,7 +53,7 @@ function runRemoveModuleIdMigration(tree: Tree, tsconfigPath: string, basePath:
5353
function collectUpdatesForFile(typeChecker: ts.TypeChecker, file: ts.SourceFile): ts.Node[] {
5454
const removeNodes: ts.Node[] = [];
5555
const attemptMigrateClass = (node: ts.ClassDeclaration) => {
56-
const metadata = extractDirectiveMetadata(typeChecker, node);
56+
const metadata = extractAngularClassMetadata(typeChecker, node);
5757
if (metadata === null) {
5858
return;
5959
}

packages/core/schematics/test/remove_module_id_spec.ts

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ describe('Remove `moduleId` migration', () => {
6060
shx.rm('-r', tmpDirPath);
6161
});
6262

63-
6463
it('should remove `moduleId` from `@Directive`', async () => {
6564
writeFile('/index.ts', dedent`
6665
import {Directive} from '@angular/core';
@@ -86,6 +85,43 @@ describe('Remove `moduleId` migration', () => {
8685
`);
8786
});
8887

88+
it('should be able to remove `moduleId` from multiple classes in the same file', async () => {
89+
writeFile('/index.ts', dedent`
90+
import {Directive} from '@angular/core';
91+
92+
@Directive({
93+
selector: 'my-dir-a',
94+
moduleId: module.id,
95+
standalone: true,
96+
})
97+
export class MyDirA {}
98+
99+
@Directive({
100+
selector: 'my-dir-b',
101+
moduleId: module.id,
102+
standalone: true,
103+
})
104+
export class MyDirB {}
105+
`);
106+
107+
await runMigration();
108+
109+
expect(tree.readContent('/index.ts')).toEqual(dedent`
110+
import {Directive} from '@angular/core';
111+
112+
@Directive({
113+
selector: 'my-dir-a',
114+
standalone: true,
115+
})
116+
export class MyDirA {}
117+
118+
@Directive({
119+
selector: 'my-dir-b',
120+
standalone: true,
121+
})
122+
export class MyDirB {}
123+
`);
124+
});
89125

90126
it('should not fail if `moduleId` is last property of decorator', async () => {
91127
writeFile('/index.ts', dedent`

packages/core/schematics/utils/directive_extractor.ts renamed to packages/core/schematics/utils/extract_metadata.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ import ts from 'typescript';
1111
import {getAngularDecorators} from './ng_decorators';
1212
import {unwrapExpression} from './typescript/functions';
1313

14-
/** Interface describing metadata of a directive class. */
15-
export interface DirectiveMetadata {
14+
/** Interface describing metadata of an Angular class. */
15+
export interface AngularClassMetadata {
1616
type: 'component'|'directive';
1717
node: ts.ObjectLiteralExpression;
1818
}
1919

2020
/** Extracts `@Directive` or `@Component` metadata from the given class. */
21-
export function extractDirectiveMetadata(
22-
typeChecker: ts.TypeChecker, node: ts.ClassDeclaration): DirectiveMetadata|null {
21+
export function extractAngularClassMetadata(
22+
typeChecker: ts.TypeChecker, node: ts.ClassDeclaration): AngularClassMetadata|null {
2323
const decorators = ts.getDecorators(node);
2424

2525
if (!decorators || !decorators.length) {

packages/core/schematics/utils/ng_component_template.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ import {Tree} from '@angular-devkit/schematics';
1010
import {dirname, relative, resolve} from 'path';
1111
import ts from 'typescript';
1212

13-
import {extractDirectiveMetadata} from './directive_extractor';
13+
import {extractAngularClassMetadata} from './extract_metadata';
1414
import {computeLineStartsMap, getLineAndCharacterFromPosition} from './line_mappings';
15-
import {getAngularDecorators} from './ng_decorators';
16-
import {unwrapExpression} from './typescript/functions';
1715
import {getPropertyNameText} from './typescript/property_name';
1816

1917
export interface ResolvedTemplate {
@@ -55,7 +53,7 @@ export class NgComponentTemplateVisitor {
5553
}
5654

5755
private visitClassDeclaration(node: ts.ClassDeclaration) {
58-
const metadata = extractDirectiveMetadata(this.typeChecker, node);
56+
const metadata = extractAngularClassMetadata(this.typeChecker, node);
5957
if (metadata === null || metadata.type !== 'component') {
6058
return;
6159
}

0 commit comments

Comments
 (0)