@ngneat/cmdk
Version:
<p align="center"> <img width="20%" height="20%" src="./src/assets/ngneat%20cdk.svg"> </p>
103 lines âĸ 5.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ngAdd = void 0;
const schematics_1 = require("@angular-devkit/schematics");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
const utils_1 = require("./utils");
const project_targets_1 = require("./utils/project-targets");
const ng_module_imports_1 = require("./utils/ng-module-imports");
const importModuleSet = [
{
moduleName: 'CmdkModule',
importModuleStatement: 'CmdkModule.forRoot()',
importPath: '@ngneat/cmdk',
},
];
const ngAdd = (options) => (tree) => {
const workspaceConfig = tree.read('/angular.json');
if (!workspaceConfig) {
throw new schematics_1.SchematicsException('Could not find Angular workspace configuration');
}
return (0, schematics_1.chain)([
installPackageJsonDependencies(),
injectImports(options),
addModuleToImports(options),
]);
};
exports.ngAdd = ngAdd;
const installPackageJsonDependencies = () => (host, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
context.logger.log('info', `đ Installing packages...`);
return host;
};
const injectImports = (options) => (host, context) => {
if (!options.skipImport) {
const workspace = (0, utils_1.getWorkspace)(host);
const project = (0, utils_1.getProjectFromWorkspace)(workspace, options.project ? options.project : Object.keys(workspace.projects)[0]);
if (!project || project.projectType !== 'application') {
throw new schematics_1.SchematicsException(`A client project type of "application" is required.`);
}
if (!project.architect ||
!project.architect.build ||
!project.architect.build.options ||
!project.architect.build.options.main) {
throw (0, project_targets_1.targetBuildNotFoundError)();
}
if (!(0, ng_ast_utils_1.isStandaloneApp)(host, project.architect.build.options.main)) {
const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, project.architect.build.options.main);
const moduleSource = (0, utils_1.getSourceFile)(host, modulePath);
importModuleSet.forEach((item) => {
if ((0, ast_utils_1.isImported)(moduleSource, item.moduleName, item.importPath)) {
context.logger.warn(`Could not import "${item.moduleName}" because it's already imported.`);
}
else {
const change = (0, ast_utils_1.insertImport)(moduleSource, modulePath, item.moduleName, item.importPath);
if (change) {
const recorder = host.beginUpdate(modulePath);
recorder.insertLeft(change.pos, change.toAdd);
host.commitUpdate(recorder);
context.logger.log('info', 'â
Written import statement for "' + item.moduleName + '"');
}
}
});
}
else {
context.logger.log('info', 'âšī¸ Skipped writing import statement for standalone app. Need to be imported manually.');
}
return host;
}
};
const addModuleToImports = (options) => (host, context) => {
if (!options.skipImport) {
const workspace = (0, utils_1.getWorkspace)(host);
const project = (0, utils_1.getProjectFromWorkspace)(workspace, options.project ? options.project : Object.keys(workspace.projects)[0]);
if (!project || project.projectType !== 'application') {
throw new schematics_1.SchematicsException(`A client project type of "application" is required.`);
}
if (!project.architect) {
throw new schematics_1.SchematicsException(`Architect options not present for project.`);
}
if (!project.architect.build) {
throw new schematics_1.SchematicsException(`Architect:Build options not present for project.`);
}
if (!(0, ng_ast_utils_1.isStandaloneApp)(host, project.architect.build.options.main)) {
const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, project.architect.build.options.main);
importModuleSet.forEach((item) => {
if ((0, ng_module_imports_1.hasNgModuleImport)(host, modulePath, item.moduleName)) {
context.logger.warn(`Could not set up "${item.moduleName}" in "imports[]" because it's already imported.`);
}
else {
(0, utils_1.addModuleImportToRootModule)(host, item.importModuleStatement, null, project);
context.logger.log('info', 'â
Imported "' + item.moduleName + '" in imports');
}
});
}
else {
context.logger.log('info', 'âšī¸ Skipped import for stand-alone application. Need to be imported manually.');
}
}
return host;
};
//# sourceMappingURL=index.js.map