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