@ngxs/store
Version:
88 lines • 4.12 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ngAdd = ngAdd;
const schematics_1 = require("@angular-devkit/schematics");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const dependencies_1 = require("@schematics/angular/utility/dependencies");
const lib_config_1 = require("../utils/common/lib.config");
const project_1 = require("../utils/project");
const add_declaration_1 = require("./add-declaration");
const project_2 = require("../utils/project");
const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
const versions = require('./../utils/versions.json');
function ngAdd(options) {
return (host) => {
const normalizedSchema = normalizeSchema(host, options);
return (0, schematics_1.chain)([
addNgxsPackageToPackageJson(normalizedSchema),
addDeclaration(normalizedSchema),
normalizedSchema.skipInstall ? (0, schematics_1.noop)() : runNpmPackageInstall()
]);
};
}
function addNgxsPackageToPackageJson(schema) {
return (host, context) => {
const ngxsStoreVersion = versions['@ngxs/store'];
if (!ngxsStoreVersion) {
throw new schematics_1.SchematicsException('Could not resolve the version of "@ngxs/store"');
}
schema.plugins.forEach(name => {
const packageExists = (0, dependencies_1.getPackageJsonDependency)(host, name);
if (packageExists === null) {
(0, dependencies_1.addPackageJsonDependency)(host, {
type: dependencies_1.NodeDependencyType.Default,
name,
version: ngxsStoreVersion
});
context.logger.info(`✅️ Added "${name}" into ${dependencies_1.NodeDependencyType.Default}`);
}
else {
context.logger.warn(`✅️ "${name}" already exists in the ${dependencies_1.NodeDependencyType.Default}`);
}
});
return host;
};
}
function runNpmPackageInstall() {
return (_, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
context.logger.info(`🔍 Installing packages...`);
};
}
function addDeclaration(schema) {
return (host) => __awaiter(this, void 0, void 0, function* () {
const mainFile = (0, project_1.getProjectMainFile)(host, schema.project);
if (!mainFile) {
return;
}
const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, mainFile);
if (isStandalone) {
return (0, add_declaration_1.addDeclarationToStandaloneApp)(schema);
}
else {
return (0, add_declaration_1.addDeclarationToNonStandaloneApp)(schema);
}
});
}
function normalizeSchema(host, schema) {
var _a, _b;
const projectName = (_a = (0, project_2.getProject)(host, schema.project)) === null || _a === void 0 ? void 0 : _a.name;
if (!projectName) {
throw new schematics_1.SchematicsException(`Project "${schema.project}" does not exist.`);
}
return {
skipInstall: !!schema.skipInstall,
plugins: (_b = Object.values(lib_config_1.LIBRARIES).filter(lib => { var _a; return (_a = schema.plugins) === null || _a === void 0 ? void 0 : _a.includes(lib); })) !== null && _b !== void 0 ? _b : [],
project: projectName
};
}
//# sourceMappingURL=ng-add.factory.js.map