UNPKG

@o3r/rules-engine

Version:

This module provides a rule engine that can be executed on your Otter application to customize your application (translations, placeholders and configs) based on a json file generated by your CMS.

76 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateCmsAdapter = void 0; const tslib_1 = require("tslib"); const path = tslib_1.__importStar(require("node:path")); const schematics_1 = require("@angular-devkit/schematics"); const schematics_2 = require("@o3r/schematics"); /** * Update CMS adapter tools * @param options @see RuleFactory.options * @param options.projectName */ function updateCmsAdapterFn(options) { if (!options.projectName) { return schematics_1.noop; } /** * Add cms extractors builder into the angular.json * @param tree * @param context */ const editAngularJson = (tree, context) => { const workspace = (0, schematics_2.getWorkspaceConfig)(tree); const workspaceProject = options.projectName ? workspace?.projects[options.projectName] : undefined; if (!workspace || !workspaceProject) { context.logger.error('No project detected, the extractors will not be added'); return tree; } if (!workspaceProject.architect) { workspaceProject.architect = {}; } workspaceProject.architect['extract-rules-engine'] ||= { builder: '@o3r/rules-engine:extractor', options: { tsConfig: path.join(workspaceProject?.root || '', 'tsconfig.cms.json'), libraries: [] } }; workspace.projects[options.projectName] = workspaceProject; tree.overwrite('/angular.json', JSON.stringify(workspace, null, 2)); return tree; }; /** * Add cms extractors scripts into the package.json * @param tree * @param context */ const addExtractorsScripts = (tree, context) => { const workspaceProject = options.projectName ? (0, schematics_2.getWorkspaceConfig)(tree)?.projects[options.projectName] : undefined; if (!workspaceProject) { context.logger.error('No package detected, the extractor scripts will not be added'); return tree; } const packageJson = (0, schematics_2.readPackageJson)(tree, workspaceProject); const packageManagerRunner = (0, schematics_2.getPackageManagerRunner)((0, schematics_2.getWorkspaceConfig)(tree)); packageJson.scripts ||= {}; packageJson.scripts['cms-adapters:rules-engine'] ||= `ng run ${options.projectName}:extract-rules-engine`; packageJson.scripts['cms-adapters:metadata'] = Object.keys(packageJson.scripts) .filter((s) => /^cms-adapters:(?!metadata$)/.test(s)) .map((s) => `${packageManagerRunner} ${s}`) .join(' && '); tree.overwrite(`${workspaceProject.root}/package.json`, JSON.stringify(packageJson, null, 2)); return tree; }; return (0, schematics_1.chain)([ addExtractorsScripts, editAngularJson ]); } /** * Update CMS adapter tools * @param options @see RuleFactory.options * @param options.projectName */ exports.updateCmsAdapter = (0, schematics_2.createOtterSchematic)(updateCmsAdapterFn); //# sourceMappingURL=index.js.map