UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

168 lines (167 loc) 4.94 kB
import { Application, FPPackage, FPPackageResponse, Package, PackageFetchOption, PackageFreshOption, PackageManager, PackageNamedVersion, ResourceUpdateInfo } from '@foxpage/foxpage-types'; import { ManagerBaseImpl } from '../common'; import { PackageInstance } from './package'; /** * package manager * component * * @export * @class PackageManager */ export declare class PackageManagerImpl extends ManagerBaseImpl<Package> implements PackageManager { /** * cache package name & versions * key: package name, value: version list * @private */ private packageVersionsMap; /** * package id map * key: package id, value: package name * * @private */ private packageIdMap; /** * component resource config */ private resourceConfig; /** * package config */ private config; constructor(app: Application); /** * add package to manager * * @param {Package} pkg */ addPackage(pkg: FPPackage): PackageInstance | null; /** * remove package from manager via package names * * @param {string[]} names package names */ removePackages(names: string[]): void; /** * get package by package name * will return the live versions * @param {string} type * @return {*} {Package | undefined} */ getPackage(name: string): Promise<Package | undefined>; /** * get package count * @returns count */ getPackageCount(): number; /** * get all packages by package names * will return the live versions * @param {string[]} names * @return {*} {Promise<Package[]>} */ getPackages(names: string[]): Promise<Package[]>; /** * select one version * * @param {string} name package name * @return {*} */ getPackageLiveVersion(name: string): string | undefined; /** * update package live version * * @param {string} pkg package content */ updatePackageLiveVersion(pkg: FPPackage): void; /** * get package sync from hot * @param name package name * @param version package version * @returns pkg */ getPackageSync(name: string, version?: string): Package | null; /** * get local package * * @param {string} name package name * @param {string} version package version * @return {*} {(Package | null)} */ getLocalPackage(name: string, version?: string): Promise<Package | null>; /** * fetch packages, instance packages and install packages then add to local * note: return contains package dependencies contents * @param {PackageFreshOption} [params] * @return {*} */ freshPackages(params?: PackageFreshOption): Promise<PackageInstance[]>; /** * install packages * * @param {FPPackage[]} packages * @param {{ cache: boolean; ignoreLocal:boolean }} [opt] {cache: will add package instance to manager} * @return {*} */ install(packages: FPPackage[], opt?: { cache: boolean; ignoreLocal?: boolean; reInstall?: boolean; }): Promise<PackageInstance[]>; /** * fetch packages from server * * @param {string[]} [packageIds] * @return {*} */ fetchPackages(packageIds?: string[], opt?: Pick<PackageFreshOption, 'strategy' | 'semver'>): Promise<FPPackage[]>; /** * fetch packages with name and version from server * * @param {PackageNamedVersion[]} nameVersions * @param {PackageFreshOption} opt {isCanary,...} * @return {Promise<FPPackageResponse[]>} */ fetchPackagesByNamedVersions(nameVersions: PackageNamedVersion[], opt?: PackageFetchOption): Promise<FPPackageResponse[]>; /** * listen the "ON_PULL" event * updates & removes is the package content id list * @protected * @param {ResourceUpdateInfo} data * @return {*} {Promise<void>} */ protected onPull(data: ResourceUpdateInfo): Promise<void>; /** * on fetch * list: the manager keys * @protected * @param {string[]} list * @return {*} {Promise<PackageImpl[]>} */ protected onFetch(list: string[]): Promise<PackageInstance[]>; protected createInstance(data: FPPackage): Promise<PackageInstance>; private newPackage; private resolvePackage; /** * init need install package instances * * @private * @param {FPPackage[]} packages * @param {{ cache: boolean, ignoreLocal:boolean }} [opt] * @return {*} */ private initInstalls; /** * get package versions * * @private * @param {string[]} names package names * @return {*} {[key]: package name, [value]: versions} */ private getPackageVersionsByNames; private updatePackageVersionsMap; private generateKey; private splitKey; destroy(): void; }