@o3r/schematics
Version:
Schematics module of the Otter framework
83 lines • 4.51 kB
TypeScript
import { logging } from '@angular-devkit/core';
import { NodeDependency, NodeDependencyType } from '@schematics/angular/utility/dependencies';
import type { PackageJson } from 'type-fest';
import { DependencyInManifest, DependencyToAdd } from '../interfaces/dependencies';
/**
* Method to extract the provided package version range from a package.json file
* Look for the range based on this order of priority:
* - generatorDependencies
* - peerDependencies
* - dependencies
* - devDependencies
* @param packageNames list of package we want to retrieve the version
* @param packageJsonPath Path to the package.json to refer to
* @param logger logger
* @returns The version range value retrieved from the provided package.json file
*/
export declare function getExternalDependenciesVersionRange<T extends string>(packageNames: T[], packageJsonPath: string, logger: logging.LoggerApi): Record<T, string>;
/**
* Replace the caret ranges by tilde ranges
* @param range Range to replace
*/
export declare const enforceTildeRange: (range?: string) => string | undefined;
/**
* Return true if B is a subset of A or if minVersion of A is greater than minVersion of B
* @param rangeA
* @param rangeB
*/
export declare function isRangeGreater(rangeA: string, rangeB: string): boolean;
/**
* Compute the version range for a package based on the less restrictive version declared in the package.json.
* If the versions declared in the package.json do not intersect, take the highest version.
* @param packageName
* @param packageJsonContent
* @param isTildeEnforced
*/
export declare function getDependencyMaximumVersionRange(packageName: string, packageJsonContent: PackageJson, isTildeEnforced?: boolean): string;
/**
* Find the range for this package based on the generatorDependency object of the package.json
* If there are no specified generator dependency, look for the range with the highest minimum or the widest range
* @param packageName
* @param packageJsonPath
* @param isTildeEnforced
*/
export declare function getVersionToInstallFromPackageJson(packageName: string, packageJsonPath: string, isTildeEnforced?: boolean): string | undefined;
/**
* Check if a dependency has already been installed for the requested range
* @param depName
* @param packageJson
* @param root0
* @param root0.range
* @param root0.types
*/
export declare function isDependencyAlreadyInstalled(depName: string, packageJson: PackageJson, { range, types }: Required<DependencyInManifest>): boolean;
/**
* Method used to build the list of node dependencies to be installed
* @param dependenciesVersions map of dependency and its associated required version
* @param type node type of the dependency
* @returns the list of node dependencies to be installed
*/
export declare function getNodeDependencyList<T extends string>(dependenciesVersions: Record<T, string>, type: NodeDependencyType): NodeDependency[];
/**
* Retrieves information about external dependencies (peer and dev) for a given project.
* @template T - Type of the dependency names.
* @template U - Type of the dev dependency names.
* @param params - The parameters object.
* @param params.dependenciesToInstall - Array of external peer dependency names.
* @param params.devDependenciesToInstall - Array of external dev dependency names.
* @param params.o3rPackageJsonPath - The path to the o3r `package.json` file.
* @param params.projectPackageJson - The path to the package json of the project where the dependencies will be installed.
* @param params.projectType - The angular type of the project, either 'application' or 'library'.
* @param params.rootPackageJsonPath - Path to the root of the repository where the dependency will be installed
* @param logger - The logger instance for logging information.
* @param isInstallRequired - Whether the package should be installed or not. By default, return true.
*/
export declare function getExternalDependenciesInfo<T extends string, U extends string>({ dependenciesToInstall, devDependenciesToInstall, o3rPackageJsonPath, projectPackageJson, projectType, rootPackageJsonPath }: {
dependenciesToInstall: T[];
devDependenciesToInstall: U[];
o3rPackageJsonPath: string;
projectPackageJson: PackageJson;
projectType?: 'application' | 'library';
rootPackageJsonPath?: string;
}, logger?: logging.LoggerApi, isInstallRequired?: (_: string) => undefined | boolean): Record<T | U, DependencyToAdd>;
//# sourceMappingURL=dependencies.d.ts.map