homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
218 lines (217 loc) • 4.71 kB
TypeScript
export interface HomebridgePlugin {
name: string;
private: boolean;
displayName?: string;
description?: string;
keywords?: string[];
verifiedPlugin?: boolean;
verifiedPlusPlugin?: boolean;
icon?: string;
publicPackage?: boolean;
installedVersion?: string;
latestVersion?: string;
lastUpdated?: string;
updateAvailable?: boolean;
updateEngines?: {
homebridge?: string;
node?: string;
};
updateTag?: string;
installPath?: string;
globalInstall?: boolean;
settingsSchema?: boolean;
disabled?: boolean;
links?: {
npm?: string;
homepage?: string;
bugs?: string;
};
author?: string;
engines?: {
homebridge?: string;
node?: string;
};
funding?: NpmFunding;
isHbScoped?: boolean;
isUnmaintained?: boolean;
newHbScope?: {
from: string;
to: string;
switch: string;
};
directories?: {
schemas?: string;
};
}
export interface HomebridgePluginUiMetadata {
devServer: null | string;
publicPath: string;
serverPath: string;
plugin: HomebridgePlugin;
}
export interface HomebridgePluginVersions {
tags: Record<string, string>;
versions: {
[key: string]: IPackageJson;
};
}
export interface INpmPerson {
name?: string;
email?: string;
homepage?: string;
username?: string;
url?: string;
}
export interface INpmRegistryModule {
'_id': string;
'_rev': string;
'name': string;
'dist-tags': {
latest: string;
[key: string]: string;
};
'versions': {
[key: string]: IPackageJson;
};
'time': {
created: string;
modified: string;
[key: string]: string;
};
'maintainers': INpmPerson[];
'description': string;
'homepage': string;
'keywords': string[];
'repository': {
type: string;
url: string;
};
'author': INpmPerson;
'bugs': {
email?: string;
url?: string;
};
'license': string;
'readme': string;
'readmeFilename': string;
}
export interface INpmSearchResultItem {
package: {
name: string;
scope: string;
version: string;
description: string;
keywords: string[];
date: string;
links: {
npm: string;
homebridge?: string;
repository?: string;
bugs?: string;
};
author: INpmPerson;
publisher: INpmPerson;
maintainers: INpmPerson[];
};
flags: {
unstable: boolean;
};
score: {
final: number;
detail: {
quality: number;
popularity: number;
maintenance: number;
};
};
searchScore: number;
}
export interface INpmSearchResults {
objects: INpmSearchResultItem[];
}
export interface IPackageJson {
name: string;
displayName?: string;
version?: string;
description?: string;
keywords?: string[];
homepage?: string;
bugs?: string | {
email?: string;
url?: string;
};
license?: string;
author?: string | INpmPerson;
maintainers?: INpmPerson[];
contributors?: string[] | INpmPerson[];
funding?: NpmFunding;
files?: string[];
main?: string;
bin?: string | {
[key: string]: string;
};
repository?: string | {
type: string;
url: string;
};
scripts?: {
[key: string]: string;
};
dependencies?: {
[key: string]: string;
};
devDependencies?: {
[key: string]: string;
};
peerDependencies?: {
[key: string]: string;
};
optionalDependencies?: {
[key: string]: string;
};
bundledDependencies?: string[];
engines?: {
[key: string]: string;
};
os?: string[];
cpu?: string[];
preferGlobal?: boolean;
private?: boolean;
publishConfig?: {
registry?: string;
};
deprecated?: string;
directories?: {
schemas?: string;
};
}
export type NpmFunding = {
type: string;
url: string;
} | string | Array<{
type: string;
url: string;
} | string>;
export interface PluginAlias {
pluginAlias: null | string;
pluginType: null | 'platform' | 'accessory';
}
export interface PluginListNewScopeItem {
from: string;
to: string;
switch: string;
}
export interface PluginListItem {
c?: string;
h?: 1;
i?: string;
a?: string;
n?: string;
s?: PluginListNewScopeItem;
v?: 1;
p?: 1;
u?: 1;
}
export interface PluginListData {
data: Record<string, PluginListItem>;
}