@jorgeucanorg/init
Version:
Add scully to your angular app
87 lines • 4.43 kB
JavaScript
;
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