UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

173 lines (172 loc) 5.1 kB
import { Application, FPPackage, FPPackageResponse, LibraryManager, PackageFetchOption, PackageFreshOption, PackageNamedVersion, PrePackage, Relations, ResourceUpdateInfo } from '@foxpage/foxpage-types'; import { ManagerBaseImpl } from '../common'; import { LibraryInstance } from './library'; /** * library manager * library * * @export * @class PackageManager */ export declare class LibraryManagerImpl extends ManagerBaseImpl<PrePackage> implements LibraryManager { /** * cache library name & versions * key: library name, value: version list * @private */ private libraryVersionsMap; /** * library id map * key: library id, value: library name * * @private */ private libraryIdMap; /** * component resource config */ private resourceConfig; /** * package config */ private config; constructor(app: Application); /** * add library to manager * * @param {PrePackage} pkg */ addLibrary(pkg: FPPackage): LibraryInstance | null; /** * remove library from manager via library names * * @param {string[]} names library names */ removeLibraries(names: string[]): void; /** * get library by library name * will return the live versions * @param {string} type * @return {*} {PrePackage | undefined} */ getLibrary(name: string): Promise<PrePackage | undefined>; /** * get all libraries by library names * will return the live versions * @param {string[]} names * @return {*} {Promise<PrePackage[]>} */ getLibraries(names: string[]): Promise<PrePackage[]>; /** * get libraries by id * @param ids library ids * @returns */ getLibrariesById(ids: string[]): Promise<PrePackage[]>; /** * select one version * * @param {string} name library name * @return {*} */ getLibraryLiveVersion(name: string): string | undefined; /** * update library live version * * @param {string} pkg library content */ updateLibraryLiveVersion(pkg: FPPackage): void; /** * get library sync from hot * @param name library name * @param version library version * @returns pkg */ getLibrarySync(name: string, version?: string): PrePackage | null; /** * get local library * * @param {string} name library name * @param {string} version library version * @return {*} {(PrePackage | null)} */ getLocalLibrary(name: string, version?: string): Promise<PrePackage | null>; /** * fetch libraries, instance libraries and install libraries then add to local * note: return contains library dependencies contents * @param {PackageFreshOption} [params] * @return {*} */ freshLibraries(params?: PackageFreshOption): Promise<LibraryInstance[]>; /** * install libraries * * @param {FPPackage[]} libraries * @param {{ cache: boolean; ignoreLocal:boolean }} [opt] {cache: will add libraries instance to manager} * @return {*} */ install(libraries: FPPackage[], opt?: { cache: boolean; ignoreLocal?: boolean; }): Promise<LibraryInstance[]>; /** * fetch libraries from server * * @param {string[]} [libraryIds] * @return {*} */ fetchLibraries(packageIds?: string[], opt?: Pick<PackageFreshOption, 'strategy'>): Promise<FPPackage[]>; /** * fetch libraries with name and version from server * * @param {PackageNamedVersion[]} nameVersions * @param {PackageFreshOption} opt {isCanary,...} * @return {Promise<FPPackageResponse[]>} */ fetchLibrariesByNamedVersions(nameVersions: PackageNamedVersion[], opt?: PackageFetchOption): Promise<FPPackageResponse[]>; /** * listen the "ON_PULL" event * updates & removes is the library content id list * @protected * @param {ResourceUpdateInfo} data * @return {*} {Promise<void>} */ protected onPull(data: ResourceUpdateInfo): Promise<void>; /** * on stash * @param data */ protected onStash(data: Relations): void; /** * on fetch * list: the manager keys * @protected * @param {string[]} list * @return {*} {Promise<PackageImpl[]>} */ protected onFetch(list: string[]): Promise<PrePackage[]>; protected createInstance(data: FPPackage): Promise<LibraryInstance>; private newLibrary; private resolveLibrary; /** * init need install libraries instances * * @private * @param {FPPackage[]} libraries * @param {{ cache: boolean, ignoreLocal:boolean }} [opt] * @return {*} */ private initInstalls; /** * get library versions * * @private * @param {string[]} names library names * @return {*} {[key]: library name, [value]: versions} */ private getLibraryVersionsByNames; private updateLibraryVersionsMap; private generateKey; private splitKey; destroy(): void; }