@iamevan/electron-chrome-web-store
Version:
Install and update Chrome extensions from the Chrome Web Store for Electron
64 lines (63 loc) • 2.17 kB
TypeScript
export type ExtensionId = Electron.Extension['id'];
export interface ExtensionInstallDetails {
id: string;
localizedName: string;
manifest: chrome.runtime.Manifest;
icon: Electron.NativeImage;
browserWindow?: Electron.BrowserWindow;
frame: Electron.WebFrameMain;
}
export type BeforeInstall = (details: ExtensionInstallDetails) => Promise<{
action: 'allow' | 'deny';
}>;
export type AfterInstall = (details: ExtensionInstallDetails) => Promise<void>;
export type AfterUninstall = (details: {
id: ExtensionId;
}) => Promise<void>;
export type ExtensionStatusDetails = {
session: Electron.Session;
extensionsPath: string;
};
export type SetExtensionEnabled = (extensionId: ExtensionId, details: ExtensionStatusDetails, enabled: boolean) => Promise<void>;
export type GetExtensionInstallStatus = (extensionId: ExtensionId, details: ExtensionStatusDetails, manifest?: chrome.runtime.Manifest) => string | undefined;
export interface WebStoreState {
session: Electron.Session;
extensionsPath: string;
installing: Set<ExtensionId>;
allowlist?: Set<ExtensionId>;
denylist?: Set<ExtensionId>;
minimumManifestVersion: number;
beforeInstall?: BeforeInstall;
afterInstall?: AfterInstall;
afterUninstall?: AfterUninstall;
setExtensionEnabled?: SetExtensionEnabled;
getExtensionInstallStatus?: GetExtensionInstallStatus;
getAllExtensions?: () => Promise<ChromeWebStoreExtensionInfo[]>;
}
interface ChromeWebStoreExtensionIcon {
size: number;
url: string;
}
export interface ChromeWebStoreExtensionInfo {
id: string;
name: string;
shortName: string;
description: string;
version: string;
versionName?: string;
type: 'extension';
enabled: boolean;
disabledReason?: 'unknown' | 'permissions_increase' | (string & {});
installType: 'normal' | 'sideload' | 'development';
isApp: boolean;
offlineEnabled: boolean;
mayDisable: boolean;
mayEnable?: boolean;
permissions: string[];
hostPermissions: string[];
homepageUrl: string;
optionsUrl: string;
updateUrl?: string;
icons: ChromeWebStoreExtensionIcon[];
}
export {};