Skip to content

Commit 3a14856

Browse files
hanslfilipesilva
authored andcommitted
refactor: the schematics engine is really a singleton
Using different engines in Schematics is dangerous.
1 parent e328e51 commit 3a14856

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

packages/@angular/cli/utilities/schematics.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77

88
import {
99
Collection,
10+
Engine,
1011
Schematic,
1112
SchematicEngine,
1213
} from '@angular-devkit/schematics';
1314
import {
15+
FileSystemCollectionDesc,
1416
FileSystemSchematicDesc,
1517
NodeModulesEngineHost
1618
} from '@angular-devkit/schematics/tools';
@@ -20,14 +22,22 @@ import 'rxjs/add/operator/map';
2022

2123
const SilentError = require('silent-error');
2224

25+
const engineHost = new NodeModulesEngineHost();
26+
const engine: Engine<FileSystemCollectionDesc, FileSystemSchematicDesc>
27+
= new SchematicEngine(engineHost);
28+
29+
2330
export function getEngineHost() {
24-
const engineHost = new NodeModulesEngineHost();
2531
return engineHost;
2632
}
33+
export function getEngine(): Engine<FileSystemCollectionDesc, FileSystemSchematicDesc> {
34+
return engine;
35+
}
36+
2737

2838
export function getCollection(collectionName: string): Collection<any, any> {
2939
const engineHost = getEngineHost();
30-
const engine = new SchematicEngine(engineHost);
40+
const engine = getEngine();
3141

3242
// Add support for schemaJson.
3343
engineHost.registerOptionsTransform((schematic: FileSystemSchematicDesc, options: any) => {

0 commit comments

Comments
 (0)