All files / src/migrations 4.6.0.ts

100% Statements 18/18
100% Branches 1/1
100% Functions 6/6
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 45 46 47 48 49 50 51 521x   1x         1x 1x   1x                           1x 1x 1x 2x   1x 2x 1x       1x     1x 1x                        
import { join, normalize } from '@angular-devkit/core';
import { Rule, Tree } from '@angular-devkit/schematics';
import {
  addPackageJsonDependency,
  NodeDependencyType,
  removePackageJsonDependency,
} from '@schematics/angular/utility/dependencies';
import { getLibProjects, getWorkspace } from '../utils/backbase/package-utils';
import { tryRule } from './utils/rules';
 
const manualProcess = `
## Please update libs and widgets package.json files to include tslib version ^2.0.0 as dependancy
 
So your file should look like this:
{
  ...
  "dependencies": {
    ...
    "tslib": "^2.0.0"
  }
  ...
}
`;
 
export default function (): Rule {
  return tryRule(async (tree: Tree) => {
    const workspace = await getWorkspace(tree);
    const packageJsonPaths = getLibProjects(workspace).map((project) => join(normalize(project.root), 'package.json'));
 
    for (const packageJsonPath of packageJsonPaths) {
      if (tree.exists(packageJsonPath)) {
        updatePackageJson(packageJsonPath);
      }
    }
 
    return () => tree;
 
    function updatePackageJson(packageJsonPath) {
      removePackageJsonDependency(tree, 'tslib', packageJsonPath);
      addPackageJsonDependency(
        tree,
        {
          name: 'tslib',
          version: '^2.0.0',
          type: NodeDependencyType.Default,
        },
        packageJsonPath,
      );
    }
  }, manualProcess);
}