All files / src/migrations 2.5.0.ts

100% Statements 16/16
100% Branches 0/0
100% Functions 7/7
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44  1x 1x   1x                         1x                 1x 1x     1x 3x 2x 1x 1x 1x 1x   1x 1x        
import { Rule, Tree } from '@angular-devkit/schematics';
import { getWorkspace } from '../utils/backbase/package-utils';
import { tryRule } from './utils/rules';
 
const libraryRules = `{
  "extends": "../../tslint.json",
  "rules": {
    "import-blacklist": [
      true,
      "rxjs/Rx",
      {"@angular/platform-browser": ["BrowserModule"]},
      {"@angular/platform-browser/animations": ["BrowserAnimationsModule"]},
      {"@angular/common/http": ["HttpClientModule"]}
    ]
  }
}`;
 
const manualProcess = `
## Add tslint file inside each library folder
 
In each library folder add "tslint.json" file next to "public_api.ts" file with the following content:
 
${libraryRules}
`;
 
function addLibraryLintRules(host: Tree, libraryPath: string): Tree {
  host.create(`${libraryPath}/tslint.json`, libraryRules);
  return host;
}
 
export default function (): Rule {
  return tryRule(async (tree: Tree) => {
    const workSpace = await getWorkspace(tree);
    const libraryPaths = [...workSpace.projects.values()]
      .filter((project) => project.extensions.projectType === 'library')
      .filter((project) => project.targets.has('lint'))
      .map((project) => project.root);
 
    for (const path of libraryPaths) {
      addLibraryLintRules(tree, path);
    }
  }, manualProcess);
}