@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
157 lines • 7.3 kB
TypeScript
import { ApplicationRemotePlugins, IApplication, IManifest } from '@c8y/client';
import { ApplicationService } from '@c8y/client';
import { AppStateService } from '../common/ui-state.service';
import { ApplicationPlugin, PackageType, PluginsConfig } from './plugins.model';
import { PluginsExportScopes } from '../common/ApplicationOptions';
import * as i0 from "@angular/core";
export declare class PluginsService {
private applicationService;
private appStateService;
static convertInstalledRemotesToIds(remotes: ApplicationRemotePlugins): string[];
static createPluginId(contextPath: string, plugin: ApplicationPlugin | string, version: string, useLatest?: boolean): string;
constructor(applicationService: ApplicationService, appStateService: AppStateService);
/**
* Fetches a list of available packages.
* @param params Additional query parameters.
* @returns Returns a list of packages.
*/
listPackages(params?: any): Promise<IApplication[]>;
/**
* Checks if an application is a package.
* @param application Application managed object.
* @returns Returns true if the application is a package.
*/
isPackage(application: IApplication): boolean;
/**
* Updates the remotes field in the application configuration by adding new plugins.
* Important: if the remotes object is not set on the configuration object,
* remotes will not be added. Make sure that this object exists in the application configuration.
* @param application Application managed object.
* @param plugins List of remotes to be added.
* @returns Returns updated application remotes.
*/
addRemotes(application: IApplication, plugins: ApplicationPlugin | ApplicationPlugin[]): Promise<PluginsConfig>;
/**
* Updates the remotes field in the application configuration by removing plugins.
* @param application Application managed object.
* @param plugins List of remotes to be removed.
* @returns Returns updated application remotes.
*/
removeRemotes(application: IApplication, plugins: ApplicationPlugin | ApplicationPlugin[]): Promise<PluginsConfig>;
/**
* Updates the remotes field in the application configuration.
* @param application Application managed object.
* @param plugins List of remotes to be added.
* @returns Returns updated application remotes.
*/
updateRemotesInAppConfig(application: IApplication, plugins: ApplicationRemotePlugins, excludedRemotes?: ApplicationRemotePlugins): Promise<PluginsConfig>;
/**
* Fetches the application manifest.
* @param application Application managed object.
* @returns Returns the application manifest.
*/
getCumulocityJsonFile(application: IApplication): Promise<IManifest>;
/**
* Sets the initial state of remotes in the configuration (when it's missing), based on the list of remotes being in the application manifest.
* @param application Application managed object.
* @returns Returns a list of remotes that has been assigned to the configuration object.
*/
setInitialRemotes(application: IApplication): Promise<PluginsConfig>;
resetRemotes(application: IApplication): Promise<IApplication & {
config: PluginsConfig;
}>;
/**
* Sorts versions list or list of objects by version property
* @returns list of versions as array of strings or array of objects sorted by version property
*
* @param {{ list: T[]; path: string[] } | string[]} source data to sort
* @param {'asc' | 'desc'} order ascending or descending order of sorting
*
* **Example**
* ```typescript
* const data = ['1.5.0', '2.0.0'];
* const sortedData = pluginsService.sortVersions(versions, 'desc');
* // sortedData:
* // ['2.0.0', '1.5.0']
* ```
*
* **Example**
* ```typescript
* const data = [
* {app: {appVersion: '1.5.0'}},
* {app: {appVersion: '2.0.0'}},
* ];
* const sortedData = pluginsService.sortVersions({list: data, path: ['app', 'appVersion']}, 'desc');
* // sortedData:
* // [
* // {app: {appVersion: '2.0.0'}},
* // {app: {appVersion: '1.5.0'}}
* // ]
* ```
*/
sortVersions<T>(source: {
list: T[];
path: string[];
}, order: 'asc' | 'desc'): T[];
sortVersions(source: string[], order: 'asc' | 'desc'): string[];
/**
* Extracts a list of exported plugins from the application object.
* @param application Application managed object.
* @param useLatest Set this to true, to not bind the plugin to any version.
* @returns Returns a list of exported plugins.
*/
getMFExports(application: IApplication, excludedScopes?: PluginsExportScopes[], useLatest?: boolean): ApplicationPlugin[];
/**
* Extracts a list of exports from each available package.
* @param allVersions If set to true, all and not only latest versions are included.
* @param excludedScopes Defines which scopes should not be loaded.
* @returns Returns a list of all exported plugins.
*/
getAllMFExports(allVersions?: boolean, excludedScopes?: PluginsExportScopes[]): Promise<ApplicationPlugin[]>;
/**
* Extracts a list of remotes from the application object.
* @param application Application managed object.
* @returns Returns list of remotes.
*/
getMFRemotes(application: IApplication): ApplicationRemotePlugins;
/**
* Determines the type of a package.
* A package is OFFICIAL if it comes from management tenant and has a label attached called OFFICIAL.
* A package is COMMUNITY if it has a label called COMMUNITY.
* A package is CUSTOM if it does not have any label attached.
* A package is UNKNOWN if it has a label attached but it does not match COMMUNITY or OFFICIAL.
*
* Labels can be used to identify the status of a package. Community packages always need
* a license validation. The label will be shown on the application card to tell a user
* whether they are looking into an official or community package.
*
* @param packageApplication The package application object to check.
* @returns The package type.
*/
getPackageType(packageApplication: IApplication): PackageType;
/**
* Verifies if an application is owned by management tenant.
*
* @param app The application to verify.
* @returns True if owned by management tenant.
*/
isOwnedByManagement(app: IApplication): boolean;
pluginsFromManifest(manifest: IManifest): ApplicationPlugin[];
private isSelfScopedPlugin;
private getSelfScopedPlugins;
private getAllPluginsExceptSelfScoped;
private removeDuplicates;
private isFromCurrentTenant;
/**
* Modifies the list of plugins to have additional information such as id.
* @ignore
*/
private extendPluginsDetails;
private listApplicationsByCurrentTenant;
private addPluginToRemotesConfig;
private removePluginsFromRemotesConfig;
private parsePluginId;
static ɵfac: i0.ɵɵFactoryDeclaration<PluginsService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<PluginsService>;
}
//# sourceMappingURL=plugins.service.d.ts.map