UNPKG

@o3r/components

Version:

This module contains component-related features (Component replacement, CMS compatibility, helpers, pipes, debugging developer tools...) It comes with an integrated ng builder to help you generate components compatible with Otter features (CMS integration

79 lines 4.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ngAdd = void 0; const tslib_1 = require("tslib"); const fs = tslib_1.__importStar(require("node:fs")); const path = tslib_1.__importStar(require("node:path")); const schematics_1 = require("@angular-devkit/schematics"); const cms_adapter_1 = require("../cms-adapter"); const devtools_registration_1 = require("./helpers/devtools-registration"); const reportMissingSchematicsDep = (logger) => (reason) => { logger.error(`[ERROR]: Adding @o3r/components has failed. If the error is related to missing @o3r dependencies you need to install '@o3r/core' to be able to use the components package. Please run 'ng add @o3r/core' . Otherwise, use the error message as guidance.`); throw reason; }; /** * Add Otter components to an Angular Project * @param options */ function ngAddFn(options) { /* ng add rules */ return async (tree, context) => { const { getDefaultOptionsForSchematic, getO3rPeerDeps, getProjectNewDependenciesTypes, getWorkspaceConfig, setupDependencies, removePackages, registerPackageCollectionSchematics, getPackageInstallConfig } = await Promise.resolve().then(() => tslib_1.__importStar(require('@o3r/schematics'))); const { NodeDependencyType } = await Promise.resolve().then(() => tslib_1.__importStar(require('@schematics/angular/utility/dependencies'))).catch(() => ({ NodeDependencyType: { Dev: 'devDependencies' } })); options = { ...getDefaultOptionsForSchematic(getWorkspaceConfig(tree), '@o3r/components', 'ng-add', options), ...options }; const packageJsonPath = path.resolve(__dirname, '..', '..', 'package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, { encoding: 'utf8' })); const depsInfo = getO3rPeerDeps(packageJsonPath); if (options.enableMetadataExtract) { depsInfo.o3rPeerDeps = [...depsInfo.o3rPeerDeps, '@o3r/extractors']; } const workspaceProject = options.projectName ? getWorkspaceConfig(tree)?.projects[options.projectName] : undefined; const dependencies = depsInfo.o3rPeerDeps.reduce((acc, dep) => { acc[dep] = { inManifest: [{ range: `${options.exactO3rVersion ? '' : '~'}${depsInfo.packageVersion}`, types: getProjectNewDependenciesTypes(workspaceProject) }], ngAddOptions: { exactO3rVersion: options.exactO3rVersion } }; return acc; }, getPackageInstallConfig(packageJsonPath, tree, options.projectName, false, !!options.exactO3rVersion)); const devDependencies = { chokidar: { inManifest: [{ range: packageJson.peerDependencies.chokidar, types: [NodeDependencyType.Dev] }] } }; const rule = (0, schematics_1.chain)([ removePackages(['@otter/components']), setupDependencies({ projectName: options.projectName, dependencies: { ...dependencies, ...devDependencies }, ngAddToRun: depsInfo.o3rPeerDeps }), registerPackageCollectionSchematics(packageJson), ...(options.enableMetadataExtract ? [(0, cms_adapter_1.updateCmsAdapter)(options)] : []), await (0, devtools_registration_1.registerDevtools)(options) ]); context.logger.info(`The package ${depsInfo.packageName} comes with a debug mechanism`); context.logger.info('Get more information on the following page: https://github.com/AmadeusITGroup/otter/tree/main/docs/components/INTRODUCTION.md#Runtime-debugging'); return () => rule(tree, context); }; } /** * Add Otter components to an Angular Project * @param options */ const ngAdd = (options) => async (_, { logger }) => { const { createOtterSchematic } = await Promise.resolve().then(() => tslib_1.__importStar(require('@o3r/schematics'))).catch(reportMissingSchematicsDep(logger)); return createOtterSchematic(ngAddFn)(options); }; exports.ngAdd = ngAdd; //# sourceMappingURL=index.js.map