/** * Refer to the angular shematics library to let the dependency validator * know it is used.. * * require('@schematics/angular') */ import { schema } from '@angular-devkit/core'; import { Collection, Engine, Schematic, SchematicEngine, formats, } from '@angular-devkit/schematics'; import { FileSystemCollectionDesc, FileSystemSchematicDesc, NodeModulesEngineHost, validateOptionsWithSchema } from '@angular-devkit/schematics/tools'; const SilentError = require('silent-error'); const engineHost = new NodeModulesEngineHost(); const engine: Engine = new SchematicEngine(engineHost); // Add support for schemaJson. const registry = new schema.CoreSchemaRegistry(formats.standardFormats); engineHost.registerOptionsTransform(validateOptionsWithSchema(registry)); export function getEngineHost() { return engineHost; } export function getEngine(): Engine { return engine; } export function getCollection(collectionName: string): Collection { const engine = getEngine(); const collection = engine.createCollection(collectionName); if (collection === null) { throw new SilentError(`Invalid collection (${collectionName}).`); } return collection; } export function getSchematic(collection: Collection, schematicName: string, allowPrivate?: boolean): Schematic { return collection.createSchematic(schematicName, allowPrivate); }