@syncfusion/ej2-angular-base
Version:
A common package of Essential JS 2 base Angular libraries, methods and class definitions
92 lines (91 loc) • 3.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@angular-devkit/core");
const schematics_1 = require("@angular-devkit/schematics");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const helpers_1 = require("../utils/helpers/helpers");
const ast_1 = require("../utils/ast");
const get_project_1 = require("../utils/get-project");
const theme_1 = require("./theme");
const package_1 = require("./../utils/package");
function addEJ2ToPackageJson(libOptions) {
return (host) => {
package_1.addEJ2PackageToPackageJson(host, 'dependencies', libOptions.pkgName, libOptions.pkgVer);
return host;
};
}
/*
* Install the packages
*/
function installNodePackages() {
return (host, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
return host;
};
}
/*
* Install function to accept the schema, package name and version
*/
function install(options, libOptions) {
const theme = options.theme || 'material';
return schematics_1.chain([
options && options.skipPackageJson ? schematics_1.noop() : addEJ2ToPackageJson(libOptions),
theme_1.addEJ2ThemeToPackageJson(options, libOptions),
(options && !options.skipPackageJson) ? installNodePackages() : schematics_1.noop(),
addEJ2PackageRootConfig(options, libOptions),
theme_1.addEJ2Theme(options, theme)
]);
}
exports.install = install;
function validateEJ2Modules(moduleName, libOptions) {
return libOptions.moduleName.split(',').filter((module) => {
return ((module.trim().split('Module'))[0].toLowerCase() === moduleName.toLowerCase());
});
}
function addModuleImportToCustomModule(host, options, validModules, libOptions) {
if (host.exists(options.modulePath.toString())) {
ast_1.addModuleImportToModule(host, core_1.normalize(options.modulePath.toString()), validModules, libOptions.pkgName);
}
else {
throw new schematics_1.SchematicsException(`Could not find the module file. The given path \'${options.modulePath}\' is invalid. ` +
`Please provide a valid relative path to the module file.\n` +
`For example: src/app/app.module.ts`);
}
}
/*
* Add browser animation module to app.module
*/
function addEJ2PackageRootConfig(options, libOptions) {
return (host) => {
const workspace = helpers_1.getWorkspace(host);
const project = get_project_1.getProjectFromWorkspace(workspace, options.project);
let validModules;
let availableModules = libOptions.moduleName.replace(/Module/g, '').trim();
if (options.modules !== '') {
let preferredModule = [];
options.modules.split(',').forEach((module) => {
let validatedModule = (validateEJ2Modules(module.trim(), libOptions)).toString().trim();
if (validatedModule === '') {
console.log('\x1b[31m%s\x1b[0m', 'The ' + module + 'module is not part of the' +
' package, ' + libOptions.pkgName + '. The available modules are ' + availableModules + '.');
}
else {
preferredModule.push(validatedModule);
}
});
validModules = preferredModule.toString().replace(/,/g, ', ');
}
else {
validModules = libOptions.moduleName;
}
if (project.architect.build.options.main) {
(options.modulePath !== undefined && options.modulePath !== "") ? addModuleImportToCustomModule(host, options, validModules, libOptions) :
ast_1.addModuleImportToRootModule(host, validModules, libOptions.pkgName, project);
}
else {
const modulePath = '/src/app/app.component.ts';
ast_1.addModuleImportToModule(host, modulePath, validModules, libOptions.pkgName);
}
return host;
};
}