Charles Lyding 9a5251cff9 refactor(@angular-devkit/schematics): provide schematic collection description to FileSystemEngineHost resolver
The `_resolveReferenceString` abstract method of the `FileSystemEngineHostBase` class now has a third parameter
that provides the collection description of the schematic currently being resolved. This allows the resolver to
use any fields/options present within the collection description to adjust the resolution of the schematic. The
`encapsulation` optional field is also added to the `FileSystemCollectionDescription` type which will in the future
allow control of the `@angular/cli` VM context wrapping on an individual schematic collection basis.
2022-04-11 11:45:43 -07:00

77 lines
2.2 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { JsonObject } from '@angular-devkit/core';
import {
Collection,
CollectionDescription,
Engine,
EngineHost,
RuleFactory,
Schematic,
SchematicDescription,
TypedSchematicContext,
} from '../src';
export interface FileSystemCollectionDescription {
readonly name: string;
readonly path: string;
readonly version?: string;
readonly schematics: { [name: string]: FileSystemSchematicDesc };
readonly encapsulation?: boolean;
}
export interface FileSystemSchematicJsonDescription {
readonly aliases?: string[];
readonly factory: string;
readonly name: string;
readonly collection: FileSystemCollectionDescription;
readonly description: string;
readonly schema?: string;
readonly extends?: string;
}
export interface FileSystemSchematicDescription extends FileSystemSchematicJsonDescription {
// Processed by the EngineHost.
readonly path: string;
readonly schemaJson?: JsonObject;
// Using `any` here is okay because the type isn't resolved when we read this value,
// but rather when the Engine asks for it.
readonly factoryFn: RuleFactory<{}>;
}
/**
* Used to simplify typings.
*/
export declare type FileSystemEngine = Engine<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;
export declare type FileSystemEngineHost = EngineHost<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;
export declare type FileSystemCollection = Collection<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;
export declare type FileSystemSchematic = Schematic<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;
export declare type FileSystemCollectionDesc =
CollectionDescription<FileSystemCollectionDescription>;
export declare type FileSystemSchematicDesc = SchematicDescription<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;
export declare type FileSystemSchematicContext = TypedSchematicContext<
FileSystemCollectionDescription,
FileSystemSchematicDescription
>;