@angular/cdk
Version:
Angular Material Component Development Kit
76 lines • 3.14 kB
JavaScript
;
/**
* @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
*/
Object.defineProperty(exports, "__esModule", { value: true });
const glob_1 = require("glob");
/**
* List of upgrade rules that will be always enabled because the upgrade data for these rules
* can be swapped out dynamically.
*
* Rules which are specific to CDK breaking changes and are not based on the upgrade data,
* shouldn't be listed here because those cannot be disabled if Angular Material runs its
* update schematic using these base rules.
*/
const baseUpgradeRules = [
// Attribute selector update rules.
'attribute-selectors-string-literal',
'attribute-selectors-stylesheet',
'attribute-selectors-template',
// Class inheritance
'class-inheritance-check',
// Class name update rules
'class-names-identifier',
// CSS selectors update rules
'css-selectors-string-literal',
'css-selectors-stylesheet',
'css-selectors-template',
// Element selector update rules
'element-selectors-string-literal',
'element-selectors-stylesheet',
'element-selectors-template',
// Input name update rules
'input-names-stylesheet',
'input-names-template',
// Output name update rules
'output-names-template',
// Property name update rules
'property-names-access',
// Signature and method call checks
'constructor-signature-check',
'method-calls-check',
];
/** List of absolute paths that refer to directories that contain the upgrade rules. */
const ruleDirectories = glob_1.sync('./**/', { cwd: __dirname, absolute: true });
/**
* Creates a TSLint configuration object that can be passed to the schematic `TSLintFixTask`.
* Each rule will have the specified target version as option which can be used to swap out
* the upgrade data based on the given target version.
*
* @param target Target version that will be used to reduce the upgrade data to the necessary
* changes that are affected by the target version.
* @param config Configuration object that can be specified to add additional rules or
* specify additional external stylesheets which are not referenced by Angular.
*/
function createTslintConfig(target, config) {
const configuredRules = baseUpgradeRules.concat(config.extraUpgradeRules || []);
const configuredRuleDirs = ruleDirectories.concat(config.extraRuleDirectories || []);
const enabledRules = configuredRules.reduce((result, data) => {
const ruleName = data instanceof Array ? data[0] : data;
const versionConstraints = data instanceof Array ? data.slice(1) : null;
if (!versionConstraints || versionConstraints.includes(target)) {
result[ruleName] = [true, target, config.upgradeData, config.extraStyleFiles];
}
return result;
}, {});
return {
rulesDirectory: configuredRuleDirs,
rules: enabledRules
};
}
exports.createTslintConfig = createTslintConfig;
//# sourceMappingURL=tslint-config.js.map