Provider
Intro
The Provider
is responsible for fetching package information. It's the component the packageanalyzer
uses to retrieve the package.json
for a particular package, which is essential for building the dependency tree.
There are different kinds of providers for different sources. For example, there is a provider to fetch data from the npm registry, and another one to get data from the local file system.
Core Interfaces
The provider system is built around two main interfaces:
IPackageMetaDataProvider
This interface is responsible for fetching the metadata of a package. The metadata contains information about all the available versions of a package.
export interface IPackageMetaDataProvider {
getPackageMetadata(name: string): Promise<PackageMetaData | undefined>;
}
IPackageJsonProvider
This interface is responsible for fetching the package.json
of a specific version of a package.
export interface IPackageJsonProvider {
getPackageJson: (...args: PackageVersion) => Promise<IPackageJson>;
}
where PackageVersion
is a tuple of [name: string, version?: string]
.
Most providers implement both of these interfaces.