UNPKG

@jorgeucanorg/init

Version:

Add scully to your angular app

87 lines 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const schematics_1 = require("@angular-devkit/schematics"); const package_config_1 = require("./package-config"); const version_names_1 = require("./version-names"); const schematics_utilities_1 = require("schematics-utilities"); const tasks_1 = require("@angular-devkit/schematics/tasks"); function default_1(options) { return (host, context) => { package_config_1.addPackageToPackageJson(host, '@scullyio/scully', `${version_names_1.scullyVersion}`); package_config_1.addPackageToPackageJson(host, '@scullyio/ng-lib', `${version_names_1.scullyComponentVersion}`); context.logger.info('✅️ Added dependency'); // @ts-ignore try { // @ts-ignore const workspace = schematics_utilities_1.getWorkspace(host); // @ts-ignore const project = schematics_utilities_1.getProjectFromWorkspace(workspace, options.project); // import the httpClient we need for the plugins schematics_utilities_1.addModuleImportToRootModule(host, 'HttpClientModule', '@angular/common/http', project); context.logger.info('✅️ Import HttpClientModule into root module'); } catch (e) { } // add new polyfills // @ts-ignore let polyfills = (host.read('./src/polyfills.ts')).toString(); polyfills = polyfills + `\n/*************************************************************************************************** \n* SCULLY IMPORTS \n*/ \n// tslint:disable-next-line: align \nimport 'zone.js/dist/task-tracking';`; host.overwrite('./src/polyfills.ts', polyfills); try { // inject iddleService const appComponent = (host.read('./src/app/app.component.ts')).toString(); const iddleImport = 'import {IdleMonitorService} from \'@scullyio/ng-lib\';'; // add const idImport = `${iddleImport} \n ${appComponent}`; const iddle = 'private idle: IdleMonitorService'; let output = ''; // check if exist if (idImport.search(/constructor/).toString() === '-1') { // add if no exist the constructor const add = ` \n constructor (${iddle}) { } \n`; const position = idImport.search(/export class AppComponent {/g) + 'export class AppComponent {'.length; output = [idImport.slice(0, position), add, idImport.slice(position)].join(''); } else { const coma = haveMoreInjects(idImport); const add = `${iddle}${coma}`; if (idImport.search(/constructor \(/).toString() === '-1') { const position = idImport.search(/constructor\(/g) + 'constructor('.length; output = [idImport.slice(0, position), add, idImport.slice(position)].join(''); } else { const position = idImport.search(/constructor \(/g) + 'constructor ('.length; output = [idImport.slice(0, position), add, idImport.slice(position)].join(''); } } host.overwrite('./src/app/app.component.ts', output); function haveMoreInjects(fullComponent) { const match = '\(([^()]*(private|public)[^()]*)\)'; // @ts-ignore if (fullComponent.search(match).toString !== '-1') { return ','; } return ''; } } catch (e) { console.log('error in iddle service'); } const nextRules = []; // tslint:disable-next-line:triple-equals if (options.blog === true) { // @ts-ignore nextRules.push(context.addTask(new tasks_1.RunSchematicTask('blog', options), [])); } // tslint:disable-next-line:no-shadowed-variable nextRules.push((tree, context) => { const installTaskId = context.addTask(new tasks_1.NodePackageInstallTask()); context.addTask(new tasks_1.RunSchematicTask('scully', options), [installTaskId]); }); return schematics_1.chain(nextRules); }; } exports.default = default_1; //# sourceMappingURL=index.js.map