homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
84 lines (83 loc) • 3.74 kB
TypeScript
import type { EventEmitter } from 'node:events';
import type { HomebridgePlugin, HomebridgePluginUiMetadata, HomebridgePluginVersions, PluginAlias } from './types';
import { HttpService } from '@nestjs/axios';
import { ConfigService } from '../../core/config/config.service';
import { Logger } from '../../core/logger/logger.service';
import { NodePtyService } from '../../core/node-pty/node-pty.service';
import { HomebridgeUpdateActionDto, PluginActionDto } from './plugins.dto';
export declare class PluginsService {
private httpService;
private nodePtyService;
private logger;
private configService;
private static readonly PLUGIN_IDENTIFIER_PATTERN;
private npm;
private paths;
private installedPlugins;
private npmPackage;
private pluginListUrl;
private pluginListFile;
private pluginListRetryTimeout;
private hiddenPlugins;
private maintainedPlugins;
private pluginIcons;
private pluginAuthors;
private pluginNames;
private newScopePlugins;
private verifiedPlugins;
private verifiedPlusPlugins;
private npmPluginCache;
private pluginAliasCache;
private pluginAliasHints;
constructor(httpService: HttpService, nodePtyService: NodePtyService, logger: Logger, configService: ConfigService);
private fixDisplayName;
getInstalledPlugins(): Promise<HomebridgePlugin[]>;
getOutOfDatePlugins(): Promise<HomebridgePlugin[]>;
lookupPlugin(pluginName: string): Promise<HomebridgePlugin>;
getAvailablePluginVersions(pluginName: string): Promise<HomebridgePluginVersions>;
searchNpmRegistry(query: string): Promise<HomebridgePlugin[]>;
searchNpmRegistrySingle(query: string): Promise<HomebridgePlugin[]>;
manageUi(action: 'install' | 'uninstall', pluginAction: PluginActionDto, client: EventEmitter): Promise<boolean>;
managePlugin(action: 'install' | 'uninstall', pluginAction: PluginActionDto, client: EventEmitter): Promise<boolean>;
getHomebridgePackage(): Promise<HomebridgePlugin>;
updateHomebridgePackage(homebridgeUpdateAction: HomebridgeUpdateActionDto, client: EventEmitter): Promise<boolean>;
getHomebridgeUiPackage(): Promise<HomebridgePlugin & {
readyForV5: {
node: boolean;
pnpm: boolean;
arch: boolean;
service: boolean;
};
}>;
getNpmPackage(): Promise<HomebridgePlugin>;
isPluginBundleAvailable(pluginAction: PluginActionDto): Promise<boolean>;
doPluginBundleUpdate(pluginAction: PluginActionDto, client: EventEmitter): Promise<boolean>;
isUiUpdateBundleAvailable(pluginAction: PluginActionDto): Promise<string>;
doUiBundleUpdate(pluginAction: PluginActionDto, client: EventEmitter, githubReleaseName: string): Promise<void>;
updateSelfOffline(client: EventEmitter): Promise<void>;
getPluginConfigSchema(pluginName: string): Promise<any>;
getPluginChangeLog(pluginName: string): Promise<{
changelog: string;
}>;
getPluginRelease(pluginName: string): Promise<{
name: any;
changelog: any;
}>;
getPluginAlias(pluginName: string): Promise<PluginAlias>;
getPluginUiMetadata(pluginName: string): Promise<HomebridgePluginUiMetadata>;
private getDisabledPlugins;
private getInstalledScopedModules;
private getInstalledModules;
private isScopedPlugin;
private getNpmPath;
private getBasePaths;
private getNpmPrefixToSearchPaths;
private parsePackageJson;
private getPluginFromNpm;
getNpmModuleLatestVersion(npmModuleName: string): Promise<string>;
private runNpmCommand;
private ensureCustomPluginDirExists;
private removeSynologyMetadata;
private cleanNpmCache;
private loadPluginList;
}