All files / src/app/rules app.rules.ts

100% Statements 22/22
100% Branches 1/1
100% Functions 5/5
100% Lines 21/21

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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83  2x   2x 2x 2x 2x   2x   2x 6x 6x 6x 6x 6x                                                         6x       2x 6x 6x 6x           6x 1x     19x 6x                                        
import { Rule, Tree } from '@angular-devkit/schematics';
import { createSourceFile, ScriptTarget } from 'typescript';
 
import { readFileOrThrow } from '../../utils/backbase/package-utils';
import { addImportToModule, insert, addProviderToModule } from '../../utils/nrwl/ast-utils';
import { toFileName } from '../../utils/nrwl/name-utils';
import { insertImport } from '../../utils/angular/ast-utils';
import { NormalizedSchema } from '../schema';
import { normalize } from '@angular-devkit/core';
 
export function addAppModuleImports(schema: NormalizedSchema): Rule {
  return (host: Tree) => {
    const modulePath = normalize(`apps/${toFileName(schema.name)}/src/app/app.module.ts`);
    const moduleSource = readFileOrThrow(host, modulePath);
    const sourceFile = createSourceFile(modulePath, moduleSource, ScriptTarget.Latest, true);
    insert(host, modulePath, [
      insertImport(sourceFile, modulePath, 'HttpClientModule', '@angular/common/http'),
      insertImport(sourceFile, modulePath, 'RouterModule', '@angular/router'),
      insertImport(sourceFile, modulePath, 'BackbaseCoreModule', '@backbase/foundation-ang/core'),
      insertImport(sourceFile, modulePath, 'environment', '../environments/environment'),
      insertImport(sourceFile, modulePath, 'StoreModule', '@ngrx/store'),
      insertImport(sourceFile, modulePath, 'EffectsModule', '@ngrx/effects'),
      insertImport(
        sourceFile,
        modulePath,
        `BrowserAnimationsModule, NoopAnimationsModule`,
        '@angular/platform-browser/animations',
      ),
      ...addImportToModule(sourceFile, modulePath, `StoreModule.forRoot({})`),
      ...addImportToModule(sourceFile, modulePath, `EffectsModule.forRoot([])`),
      ...addImportToModule(sourceFile, modulePath, `HttpClientModule`),
      ...addImportToModule(sourceFile, modulePath, `BackbaseCoreModule`),
      ...addImportToModule(
        sourceFile,
        modulePath,
        `RouterModule.forRoot([], { initialNavigation: "disabled", useHash: true })`,
      ),
      ...addImportToModule(
        sourceFile,
        modulePath,
        `environment.animation ? BrowserAnimationsModule : NoopAnimationsModule`,
      ),
      ...addProviderToModule(sourceFile, modulePath, `...environment.mockProviders || []`),
    ]);
    return host;
  };
}
 
export function removeUnusedFiles(schema: NormalizedSchema): Rule {
  return (tree: Tree): Tree => {
    const appFolderName = toFileName(schema.name);
    const unusedResources = [
      normalize(`apps/${appFolderName}/karma.conf.js`),
      normalize(`apps/${appFolderName}/tsconfig.spec.json`),
      normalize(`apps/${appFolderName}/src/styles.css`),
    ];
 
    if (schema.inlineTemplate) {
      unusedResources.push(normalize(`apps/${appFolderName}/src/app/app.component.html`));
    }
 
    unusedResources.forEach((filePath) => tree.delete(filePath));
    return tree;
  };
}
 
/*
  chain([
    filter(path => {
      console.log(path);
      return path != normalize(`apps/${appFolderName}/karma.conf.js`)
    }),
    filter(path => {
      console.log(path);
      return path != normalize(`apps/${appFolderName}/tsconfig.spec.json`)
    }),
    filter(path => {
      console.log(path);
      return path != normalize(`apps/${appFolderName}/src/styles.css`)
    })
  ]),
*/