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