@foxpage/foxpage-manager
Version:
foxpage resource manager
168 lines (167 loc) • 4.94 kB
TypeScript
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;
}