Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sentialx/electron-extensions
Implementation of Chrome extension APIs for Electron
https://github.com/sentialx/electron-extensions
api chrome electron extensions typescript
Last synced: 3 months ago
JSON representation
Implementation of Chrome extension APIs for Electron
- Host: GitHub
- URL: https://github.com/sentialx/electron-extensions
- Owner: sentialx
- License: gpl-3.0
- Archived: true
- Created: 2019-05-14T20:13:46.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-23T13:55:46.000Z (over 3 years ago)
- Last Synced: 2024-07-20T03:53:46.303Z (4 months ago)
- Topics: api, chrome, electron, extensions, typescript
- Language: TypeScript
- Size: 487 KB
- Stars: 182
- Watchers: 9
- Forks: 26
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# electron-extensions
`electron-extensions` will allow you to use Chrome extensions APIs with Electron.
# Installation
```bash
$ npm install electron-extensions
```# Usage
The library is really easy-to-use. All you have to do is to put the following code in your main process:
```typescript
import { ExtensibleSession } from 'electron-extensions/main';
import { app } from 'electron';const extensions = new ExtensibleSession();
(async () => {
await app.whenReady();
extensions.loadExtension('C:/.../abcdefghijklmnoprstuwxyz'); // Path to the extension to load
})();
```# Documentation
## Class `ExtensibleSession` `main`
### `new ExtensibleSession(options: IOptions)`
- `options` object
- `partition` string - By default `null`. It's used for injecting preloads to
load `content_scripts` in all webContents within a given Electron `session`. Must be called in `app` `ready` event.
- `preloadPath` string - Path to content preload script. The option can be useful for bundlers like `webpack` if you're using `CopyWebpackPlugin`.
- `blacklist` string[] - List of URLs or glob patterns preventing from injecting `content_scripts` to. For example `[wexond://*/*]`.It's only for the main process. It's used to load extensions and handle their events.
### Instance methods
#### `loadExtension(path: string)`
Loads an extension from a given path.
#### `addWindow(window: Electron.BrowserWindow)`
Adds a BrowserWindow to send and observe UI related events such as
- `chrome.browserAction.onClicked`
### Instance properties
#### `blacklist` string[]
List of URLs or glob patterns preventing from injecting `content_scripts` to. For example `[wexond://*]`.
### Events
#### `set-badge-text`
Emitted when `chrome.browserAction.setBadgeText` has been called in an extension.
Returns:
- `extensionId` string
- `details` chrome.browserAction.BadgeTextDetails#### `create-tab`
Emitted when `chrome.tabs.create` has been called in an extension.
##### Example:
```typescript
import { extensionsRenderer } from 'electron-extensions';extensionsRenderer.on('create-tab', (details, callback) => {
const tab = createTab(details); // Some create tab method...
callback(tab.id);
});
```Returns:
- `details` chrome.tabs.CreateProperties
- `callback` (tabId: number) => void - Must be called with the created tab id as an argument. Also, the `tabId` must be the same as any attached `webContents` id## Object `extensionsRenderer`
### Usage in `renderer`
```typescript
import { extensionsRenderer } from 'electron-extensions/renderer';
```### Instance methods
#### `browserAction.onClicked(extensionId: string, tabId: number)`
Emits `chrome.browserAction.onClicked` event in a given extension.