UNPKG

@angular/cdk

Version:

Angular Material Component Development Kit

98 lines 11.5 kB
/** * @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 */ (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define("@angular/cdk/schematics/update-tool/migration-rule", ["require", "exports", "typescript"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts = require("typescript"); class MigrationRule { constructor( /** TypeScript program for the migration. */ program, /** TypeChecker instance for the analysis program. */ typeChecker, /** Version for which the migration rule should run. */ targetVersion, /** Upgrade data passed to the migration. */ upgradeData, /** Devkit tree for the current migration. Can be used to insert/remove files. */ tree, /** Gets the update recorder for a given source file or resolved template. */ getUpdateRecorder, /** Base directory of the virtual file system tree. */ basePath, /** Logger that can be used to print messages as part of the migration. */ logger, /** Whether the migration runs for a test target. */ isTestTarget, /** Path to the tsconfig that is migrated. */ tsconfigPath) { this.program = program; this.typeChecker = typeChecker; this.targetVersion = targetVersion; this.upgradeData = upgradeData; this.tree = tree; this.getUpdateRecorder = getUpdateRecorder; this.basePath = basePath; this.logger = logger; this.isTestTarget = isTestTarget; this.tsconfigPath = tsconfigPath; /** List of migration failures that need to be reported. */ this.failures = []; /** Whether the migration rule is enabled or not. */ this.ruleEnabled = true; } /** Method can be used to perform global analysis of the program. */ init() { } /** * Method that will be called once all nodes, templates and stylesheets * have been visited. */ postAnalysis() { } /** * Method that will be called for each node in a given source file. Unlike tslint, this * function will only retrieve TypeScript nodes that need to be casted manually. This * allows us to only walk the program source files once per program and not per * migration rule (significant performance boost). */ visitNode(node) { } /** Method that will be called for each Angular template in the program. */ visitTemplate(template) { } /** Method that will be called for each stylesheet in the program. */ visitStylesheet(stylesheet) { } /** Creates a failure with a specified message at the given node location. */ createFailureAtNode(node, message) { const sourceFile = node.getSourceFile(); this.failures.push({ filePath: sourceFile.fileName, position: ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()), message: message, }); } /** Prints the specified message with "info" loglevel. */ printInfo(text) { this.logger.info(`- ${this.tsconfigPath}: ${text}`); } /** * Static method that will be called once the migration of all project targets * has been performed. This method can be used to make changes respecting the * migration result of all individual targets. e.g. removing HammerJS if it * is not needed in any project target. */ static globalPostMigration(tree, context) { } } exports.MigrationRule = MigrationRule; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXBkYXRlLXRvb2wvbWlncmF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFJSCxpQ0FBaUM7SUFnQmpDLE1BQWEsYUFBYTtRQU94QjtRQUNJLDRDQUE0QztRQUNyQyxPQUFtQjtRQUMxQixxREFBcUQ7UUFDOUMsV0FBMkI7UUFDbEMsdURBQXVEO1FBQ2hELGFBQTRCO1FBQ25DLDRDQUE0QztRQUNyQyxXQUFjO1FBQ3JCLGlGQUFpRjtRQUMxRSxJQUFVO1FBQ2pCLDZFQUE2RTtRQUN0RSxpQkFBdUQ7UUFDOUQsc0RBQXNEO1FBQy9DLFFBQWdCO1FBQ3ZCLDBFQUEwRTtRQUNuRSxNQUF5QjtRQUNoQyxvREFBb0Q7UUFDN0MsWUFBcUI7UUFDNUIsNkNBQTZDO1FBQ3RDLFlBQW9CO1lBbEJwQixZQUFPLEdBQVAsT0FBTyxDQUFZO1lBRW5CLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtZQUUzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtZQUU1QixnQkFBVyxHQUFYLFdBQVcsQ0FBRztZQUVkLFNBQUksR0FBSixJQUFJLENBQU07WUFFVixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNDO1lBRXZELGFBQVEsR0FBUixRQUFRLENBQVE7WUFFaEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7WUFFekIsaUJBQVksR0FBWixZQUFZLENBQVM7WUFFckIsaUJBQVksR0FBWixZQUFZLENBQVE7WUExQi9CLDJEQUEyRDtZQUMzRCxhQUFRLEdBQXVCLEVBQUUsQ0FBQztZQUVsQyxvREFBb0Q7WUFDcEQsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFzQmUsQ0FBQztRQUVuQyxvRUFBb0U7UUFDcEUsSUFBSSxLQUFVLENBQUM7UUFFZjs7O1dBR0c7UUFDSCxZQUFZLEtBQVUsQ0FBQztRQUV2Qjs7Ozs7V0FLRztRQUNILFNBQVMsQ0FBQyxJQUFhLElBQVMsQ0FBQztRQUVqQywyRUFBMkU7UUFDM0UsYUFBYSxDQUFDLFFBQTBCLElBQVMsQ0FBQztRQUVsRCxxRUFBcUU7UUFDckUsZUFBZSxDQUFDLFVBQTRCLElBQVMsQ0FBQztRQUV0RCw2RUFBNkU7UUFDN0UsbUJBQW1CLENBQUMsSUFBYSxFQUFFLE9BQWU7WUFDaEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNqQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQzdCLFFBQVEsRUFBRSxFQUFFLENBQUMsNkJBQTZCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdkUsT0FBTyxFQUFFLE9BQU87YUFDakIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxTQUFTLENBQUMsSUFBWTtZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSCxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBVSxFQUFFLE9BQXlCLElBQXdCLENBQUM7S0FDMUY7SUExRUQsc0NBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7bG9nZ2luZ30gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHtTY2hlbWF0aWNDb250ZXh0LCBUcmVlLCBVcGRhdGVSZWNvcmRlcn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1Jlc29sdmVkUmVzb3VyY2V9IGZyb20gJy4vY29tcG9uZW50LXJlc291cmNlLWNvbGxlY3Rvcic7XG5pbXBvcnQge1RhcmdldFZlcnNpb259IGZyb20gJy4vdGFyZ2V0LXZlcnNpb24nO1xuaW1wb3J0IHtMaW5lQW5kQ2hhcmFjdGVyfSBmcm9tICcuL3V0aWxzL2xpbmUtbWFwcGluZ3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbkZhaWx1cmUge1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogTGluZUFuZENoYXJhY3Rlcjtcbn1cblxuZXhwb3J0IHR5cGUgUG9zdE1pZ3JhdGlvbkFjdGlvbiA9IHZvaWQgfCB7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYWNrYWdlIG1hbmFnZXIgc2hvdWxkIHJ1biB1cG9uIG1pZ3JhdGlvbiBjb21wbGV0aW9uLiAqL1xuICBydW5QYWNrYWdlTWFuYWdlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb25SdWxlPFQ+IHtcbiAgLyoqIExpc3Qgb2YgbWlncmF0aW9uIGZhaWx1cmVzIHRoYXQgbmVlZCB0byBiZSByZXBvcnRlZC4gKi9cbiAgZmFpbHVyZXM6IE1pZ3JhdGlvbkZhaWx1cmVbXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtaWdyYXRpb24gcnVsZSBpcyBlbmFibGVkIG9yIG5vdC4gKi9cbiAgcnVsZUVuYWJsZWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgLyoqIFR5cGVTY3JpcHQgcHJvZ3JhbSBmb3IgdGhlIG1pZ3JhdGlvbi4gKi9cbiAgICAgIHB1YmxpYyBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICAgICAgLyoqIFR5cGVDaGVja2VyIGluc3RhbmNlIGZvciB0aGUgYW5hbHlzaXMgcHJvZ3JhbS4gKi9cbiAgICAgIHB1YmxpYyB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICAvKiogVmVyc2lvbiBmb3Igd2hpY2ggdGhlIG1pZ3JhdGlvbiBydWxlIHNob3VsZCBydW4uICovXG4gICAgICBwdWJsaWMgdGFyZ2V0VmVyc2lvbjogVGFyZ2V0VmVyc2lvbixcbiAgICAgIC8qKiBVcGdyYWRlIGRhdGEgcGFzc2VkIHRvIHRoZSBtaWdyYXRpb24uICovXG4gICAgICBwdWJsaWMgdXBncmFkZURhdGE6IFQsXG4gICAgICAvKiogRGV2a2l0IHRyZWUgZm9yIHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4gQ2FuIGJlIHVzZWQgdG8gaW5zZXJ0L3JlbW92ZSBmaWxlcy4gKi9cbiAgICAgIHB1YmxpYyB0cmVlOiBUcmVlLFxuICAgICAgLyoqIEdldHMgdGhlIHVwZGF0ZSByZWNvcmRlciBmb3IgYSBnaXZlbiBzb3VyY2UgZmlsZSBvciByZXNvbHZlZCB0ZW1wbGF0ZS4gKi9cbiAgICAgIHB1YmxpYyBnZXRVcGRhdGVSZWNvcmRlcjogKGZpbGVQYXRoOiBzdHJpbmcpID0+IFVwZGF0ZVJlY29yZGVyLFxuICAgICAgLyoqIEJhc2UgZGlyZWN0b3J5IG9mIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtIHRyZWUuICovXG4gICAgICBwdWJsaWMgYmFzZVBhdGg6IHN0cmluZyxcbiAgICAgIC8qKiBMb2dnZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBwcmludCBtZXNzYWdlcyBhcyBwYXJ0IG9mIHRoZSBtaWdyYXRpb24uICovXG4gICAgICBwdWJsaWMgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlckFwaSxcbiAgICAgIC8qKiBXaGV0aGVyIHRoZSBtaWdyYXRpb24gcnVucyBmb3IgYSB0ZXN0IHRhcmdldC4gKi9cbiAgICAgIHB1YmxpYyBpc1Rlc3RUYXJnZXQ6IGJvb2xlYW4sXG4gICAgICAvKiogUGF0aCB0byB0aGUgdHNjb25maWcgdGhhdCBpcyBtaWdyYXRlZC4gKi9cbiAgICAgIHB1YmxpYyB0c2NvbmZpZ1BhdGg6IHN0cmluZykge31cblxuICAvKiogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gZ2xvYmFsIGFuYWx5c2lzIG9mIHRoZSBwcm9ncmFtLiAqL1xuICBpbml0KCk6IHZvaWQge31cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBhbGwgbm9kZXMsIHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHNcbiAgICogaGF2ZSBiZWVuIHZpc2l0ZWQuXG4gICAqL1xuICBwb3N0QW5hbHlzaXMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBub2RlIGluIGEgZ2l2ZW4gc291cmNlIGZpbGUuIFVubGlrZSB0c2xpbnQsIHRoaXNcbiAgICogZnVuY3Rpb24gd2lsbCBvbmx5IHJldHJpZXZlIFR5cGVTY3JpcHQgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIGNhc3RlZCBtYW51YWxseS4gVGhpc1xuICAgKiBhbGxvd3MgdXMgdG8gb25seSB3YWxrIHRoZSBwcm9ncmFtIHNvdXJjZSBmaWxlcyBvbmNlIHBlciBwcm9ncmFtIGFuZCBub3QgcGVyXG4gICAqIG1pZ3JhdGlvbiBydWxlIChzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBib29zdCkuXG4gICAqL1xuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggQW5ndWxhciB0ZW1wbGF0ZSBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggc3R5bGVzaGVldCBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRTdHlsZXNoZWV0KHN0eWxlc2hlZXQ6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHt9XG5cbiAgLyoqIENyZWF0ZXMgYSBmYWlsdXJlIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZSBhdCB0aGUgZ2l2ZW4gbm9kZSBsb2NhdGlvbi4gKi9cbiAgY3JlYXRlRmFpbHVyZUF0Tm9kZShub2RlOiB0cy5Ob2RlLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgdGhpcy5mYWlsdXJlcy5wdXNoKHtcbiAgICAgIGZpbGVQYXRoOiBzb3VyY2VGaWxlLmZpbGVOYW1lLFxuICAgICAgcG9zaXRpb246IHRzLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHNvdXJjZUZpbGUsIG5vZGUuZ2V0U3RhcnQoKSksXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFByaW50cyB0aGUgc3BlY2lmaWVkIG1lc3NhZ2Ugd2l0aCBcImluZm9cIiBsb2dsZXZlbC4gKi9cbiAgcHJpbnRJbmZvKHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oYC0gJHt0aGlzLnRzY29uZmlnUGF0aH06ICR7dGV4dH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSB0aGUgbWlncmF0aW9uIG9mIGFsbCBwcm9qZWN0IHRhcmdldHNcbiAgICogaGFzIGJlZW4gcGVyZm9ybWVkLiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBtYWtlIGNoYW5nZXMgcmVzcGVjdGluZyB0aGVcbiAgICogbWlncmF0aW9uIHJlc3VsdCBvZiBhbGwgaW5kaXZpZHVhbCB0YXJnZXRzLiBlLmcuIHJlbW92aW5nIEhhbW1lckpTIGlmIGl0XG4gICAqIGlzIG5vdCBuZWVkZWQgaW4gYW55IHByb2plY3QgdGFyZ2V0LlxuICAgKi9cbiAgc3RhdGljIGdsb2JhbFBvc3RNaWdyYXRpb24odHJlZTogVHJlZSwgY29udGV4dDogU2NoZW1hdGljQ29udGV4dCk6IFBvc3RNaWdyYXRpb25BY3Rpb24ge31cbn1cbiJdfQ==