UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

175 lines (174 loc) 5.09 kB
import { Application, CSRPluginManager, FPPackage, FPPackageResponse, Logger, PackageFetchOption, PackageFreshOption, PackageNamedVersion, PrePackage, Relations, ResourceUpdateInfo } from '@foxpage/foxpage-types'; import { ManagerBaseImpl } from '../common'; import { PluginInstance } from './plugin'; /** * plugin manager for csr * * @export * @class CSRPluginManagerImpl * @implements {CSRPluginManager} */ export declare class CSRPluginManagerImpl extends ManagerBaseImpl<PrePackage> implements CSRPluginManager { /** * cache plugin name & versions * key: plugin name, value: version list * @private */ private pluginVersionsMap; /** * plugin id map * key: plugin id, value: plugin name * * @private */ private pluginIdMap; /** * component resource config */ private resourceConfig; /** * package config */ private config; /** * logger */ logger: Logger; constructor(app: Application); /** * add plugin to manager * * @param {PrePackage} pkg */ addPlugin(pkg: FPPackage): PluginInstance | null; /** * remove plugin from manager via plugin names * * @param {string[]} names plugin names */ removePlugins(names: string[]): void; /** * get plugin by plugin name * will return the live versions * @param {string} type * @return {*} {PrePackage | undefined} */ getPlugin(name: string): Promise<PrePackage | undefined>; /** * get all libraries by plugin names * will return the live versions * @param {string[]} names * @return {*} {Promise<PrePackage[]>} */ getPlugins(names: string[]): Promise<PrePackage[]>; getPluginsById(ids: string[]): Promise<PrePackage[]>; /** * select one version * * @param {string} name plugin name * @return {*} */ getPluginLiveVersion(name: string): string | undefined; /** * update plugin live version * * @param {string} pkg plugin content */ updatePluginLiveVersion(pkg: FPPackage): void; /** * get plugin sync from hot * @param name plugin name * @param version plugin version * @returns pkg */ getPluginSync(name: string, version?: string): PrePackage | null; /** * get local plugin * * @param {string} name plugin name * @param {string} version plugin version * @return {*} {(PrePackage | null)} */ getLocalPlugin(name: string, version?: string): Promise<PrePackage | null>; /** * fetch libraries, instance libraries and install libraries then add to local * note: return contains plugin dependencies contents * @param {PackageFreshOption} [params] * @return {*} */ freshPlugins(params?: PackageFreshOption): Promise<PluginInstance[]>; /** * 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<PluginInstance[]>; /** * fetch libraries from server * * @param {string[]} [pluginIds] * @return {*} */ fetchPlugins(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[]>} */ fetchPluginsByNamedVersions(nameVersions: PackageNamedVersion[], opt?: PackageFetchOption): Promise<FPPackageResponse[]>; /** * listen the "ON_PULL" event * updates & removes is the plugin 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<PluginInstance>; private newPlugin; private resolvePlugin; /** * init need install libraries instances * * @private * @param {FPPackage[]} libraries * @param {{ cache: boolean, ignoreLocal:boolean }} [opt] * @return {*} */ private initInstalls; /** * get plugin versions * * @private * @param {string[]} names plugin names * @return {*} {[key]: plugin name, [value]: versions} */ private getPluginVersionsByNames; private updatePluginVersionsMap; private generateKey; private splitKey; /** * destroy */ destroy(): void; }