UNPKG

angular-toaster

Version:

An Angular Toaster Notification library based on AngularJS-Toaster

61 lines (60 loc) 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const tslib_1 = require("tslib"); const schematics_1 = require("@angular-devkit/schematics"); const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils"); const utility_1 = require("@schematics/angular/utility"); const workspace_models_1 = require("@schematics/angular/utility/workspace-models"); const workspace_1 = require("@schematics/angular/utility/workspace"); const theming_1 = require("./theming"); const ast_1 = require("../utils/ast"); const project_1 = require("../utils/project"); const ng_module_imports_1 = require("../utils/ng-module-imports"); function default_1(options) { return (host, context) => tslib_1.__awaiter(this, void 0, void 0, function* () { const workspace = yield (0, workspace_1.getWorkspace)(host); const project = (0, project_1.getProjectFromWorkspace)(workspace, options.project); if (project.extensions['projectType'] !== workspace_models_1.ProjectType.Application) { context.logger.warn(`project '${options.project}' is not an angular application. it look like angular library`); return; } return (0, schematics_1.chain)([addAngularToaster(options), (0, theming_1.addThemeToAppStyles)(options)]); }); } function addAngularToaster(options) { return (host) => tslib_1.__awaiter(this, void 0, void 0, function* () { const workspace = yield (0, workspace_1.getWorkspace)(host); const project = (0, project_1.getProjectFromWorkspace)(workspace, options.project); const mainFilePath = (0, project_1.getProjectMainFile)(project); if ((0, ng_ast_utils_1.isStandaloneApp)(host, mainFilePath)) { return addAngularToasterToStandaloneApp(options.project); } else { return addAngularToasterToNoStandaloneApp(project, mainFilePath); } }); } function addAngularToasterToNoStandaloneApp(project, mainFile) { return (host, context) => { const angularToasterModulue = 'ToasterModule'; const angularToasterModulueForRoot = `${angularToasterModulue}.forRoot()`; const libName = 'angular-toaster'; const appModulePath = (0, ng_ast_utils_1.getAppModulePath)(host, mainFile); if ((0, ng_module_imports_1.hasNgModuleImport)(host, appModulePath, angularToasterModulue)) { context.logger.warn(`Could not set up "${angularToasterModulue}" ` + `because "${angularToasterModulue}" is already imported.`); } (0, ast_1.addModuleImportToRootModule)(host, angularToasterModulueForRoot, libName, project); return host; }; } function addAngularToasterToStandaloneApp(project) { return () => { const providerFn = 'provideAngularToaster'; const libName = 'angular-toaster'; return (0, utility_1.addRootProvider)(project, ({ code, external }) => { return code `${external(providerFn, libName)}()`; }); }; }