/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ /// import { CleanOptions, Collection, SyncOptions } from '@nocobase/database'; import net from 'net'; import Application from '../application'; import { Plugin } from '../plugin'; import { PluginManagerRepository } from './plugin-manager-repository'; import { PluginData } from './types'; import { checkAndGetCompatible } from './utils'; export declare const sleep: (timeout?: number) => Promise; export interface PluginManagerOptions { app: Application; plugins?: any[]; } export interface InstallOptions { cliArgs?: any[]; clean?: CleanOptions | boolean; force?: boolean; sync?: SyncOptions; } export declare class AddPresetError extends Error { } export declare class PluginManager { options: PluginManagerOptions; static checkAndGetCompatible: typeof checkAndGetCompatible; /** * @internal */ app: Application; /** * @internal */ collection: Collection; /** * @internal */ pluginInstances: Map>; /** * @internal */ pluginAliases: Map>; /** * @internal */ server: net.Server; /** * @internal */ constructor(options: PluginManagerOptions); /** * @internal */ _repository: PluginManagerRepository; get repository(): PluginManagerRepository; static packageExists(nameOrPkg: string): Promise; /** * @internal */ static getPackageJson(nameOrPkg: string): Promise; /** * @internal */ static getPackageName(name: string): Promise; /** * @internal */ static getPluginPkgPrefix(): string[]; /** * @internal */ static findPackage(name: string): Promise; /** * @internal */ static clearCache(packageName: string): void; /** * @internal */ static resolvePlugin(pluginName: string | typeof Plugin, isUpgrade?: boolean, isPkg?: boolean): Promise; static parsedNames: {}; static parseName(nameOrPkg: string): Promise; addPreset(plugin: string | typeof Plugin, options?: any): void; getPlugins(): Map>; getAliases(): IterableIterator; get(name: string | typeof Plugin | (new () => T)): T; has(name: string | typeof Plugin): boolean; del(name: any): void; create(pluginName: string, options?: { forceRecreate?: boolean; }): Promise; addOrThrow(plugin?: string | typeof Plugin, options?: any, insert?: boolean, isUpgrade?: boolean): Promise; add(plugin?: string | typeof Plugin, options?: any, insert?: boolean, isUpgrade?: boolean): Promise; /** * @internal */ initPlugins(): Promise; /** * @internal */ loadCommands(): Promise; load(options?: any): Promise; install(options?: InstallOptions): Promise; enable(nameOrPkg: string | string[]): Promise; disable(name: string | string[]): Promise; remove(name: string | string[], options?: { removeDir?: boolean; force?: boolean; }): Promise; pull(urlOrName: string | string[], options?: PluginData, emitStartedEvent?: boolean): Promise; /** * @internal */ addViaCLI(urlOrName: string | string[], options?: PluginData, emitStartedEvent?: boolean): Promise; /** * @internal */ addByNpm(options: { packageName: string; name?: string; registry: string; authToken?: string; }, throwError?: boolean): Promise; /** * @internal */ addByFile(options: { file: string; registry?: string; authToken?: string; type?: string; name?: string; }, throwError?: boolean): Promise; /** * @internal */ addByCompressedFileUrl(options: { compressedFileUrl: string; registry?: string; authToken?: string; type?: string; name?: string; }, throwError?: boolean): Promise; update(nameOrPkg: string | string[], options: PluginData, emitStartedEvent?: boolean): Promise; /** * @internal */ upgradeByNpm(values: PluginData): Promise; /** * @internal */ upgradeByCompressedFileUrl(options: PluginData): Promise; /** * @internal */ getNameByPackageName(packageName: string): string; list(options?: any): Promise; /** * @internal */ getNpmVersionList(name: string): Promise; /** * @internal */ loadPresetMigrations(): Promise<{ beforeLoad: { up: () => Promise; }; afterSync: { up: () => Promise; }; afterLoad: { up: () => Promise; }; }>; /** * @internal */ loadOtherMigrations(): Promise<{ beforeLoad: { up: () => Promise; }; afterSync: { up: () => Promise; }; afterLoad: { up: () => Promise; }; }>; /** * @internal */ loadPresetPlugins(): Promise; upgrade(): Promise; /** * @internal */ initOtherPlugins(): Promise; /** * @internal */ initPresetPlugins(): Promise; private sort; } export default PluginManager;