open-index/open-npm huggingface dataset:
npm package: @remix-nx/remix
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# remix

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test remix` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @remix-project/engine-node
Description: This library was generated with [Nx](https://nx.dev).
Author: GrandSchtroumpf
Latest version: 0.3.44

# engine-node

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `ng test engine-node` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @remix-project/engine-web
Description: The web engine provides a connector for Iframe & Websocket. `npm install @remix-project/engine-web`
Author: GrandSchtroumpf
Latest version: 0.3.44

# Engine Web
The web engine provides a connector for Iframe & Websocket.
`npm install @remix-project/engine-web`

## Iframe
The iframe connector is used to load & connect a plugin inside an iframe.
Iframe based plugin are webview using an `index.html` as entry point & need to use `@remix-project/plugin-iframe`.

```typescript
const myPlugin = new IframePlugin({
  name: 'my-plugin',
  url: 'https://my-plugin-path.com',
  methods: ['getData']
})
engine.register(myPlugin);
// This will create the iframe with src="https://my-plugin-path.com"
await manager.activatePlugin('my-plugin');
const data = manager.call('my-plugin', 'getData');
```

> Communication between the plugin & the engine uses the `window.postMessage()` API.

## Websocket
The websocket connector wraps the native [Websocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) object from the Web API.
Websocket based plugin are usually server with a Websocket connection open. Any library can be used, remix-project provide a wrapper around the `ws` library : `@remix-project/plugin-ws`.

```typescript
const myPlugin = new WebsocketOptions({
  name: 'my-plugin',
  url: 'https://my-server.com',
  methods: ['getData']
}, {
  reconnectDelay: 5000 // Time in ms to wait to reconnect after a disconnection 
});
engine.register(myPlugin);
// This will open a connection with the server. The server must be running first.
await manager.activatePlugin('my-plugin');
const data = manager.call('my-plugin', 'getData');
```
npm package: @remix-project/plugin-api
Description: This library host all the API of the common plugins.
Author: GrandSchtroumpf
Latest version: 0.3.44

# plugin-api

This library host all the API of the common plugins.

Here is the list of native plugins exposed by Remix IDE

_Click on the name of the api to get the full documentation._


|API            |Name                                 |Description |
|---------------|-------------------------------------|------------|
|File System    |[fileManager](./doc/file-system.md)  |Manages the File System
|Compiler       |[solidity](./doc/solidity.md)        |The solidity Compiler
|Editor         |[editor](./doc/editor.md)            |Enables highlighting in the code Editor
|Network        |[network](./doc/network.md)          |Defines the network (mainnet, ropsten, ...) and provider (web3, vm, injected) used
|Udapp          |[udapp](./doc/udapp.md)              |Transaction listener
|Unit Testing   |[solidityUnitTesting](./doc/unit-testing.md) |Unit testing library in solidity
|Settings       |[settings](./doc/settings.md)        |Global settings of the IDE
|Content Import |[contentImport](./doc/content-import.md) |Import files from  github, swarm, ipfs, http or https.
|Terminal       |[terminal](./doc/terminal.md)        |Log to the terminal
npm package: @remix-project/plugin-child-process
Description: This library was generated with [Nx](https://nx.dev).
Author: GrandSchtroumpf
Latest version: 0.3.44

# plugin-child-process

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `ng test plugin-child-process` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @remix-project/plugin-iframe
Description: **Except if you want your plugin to ONLY work on the web, prefer [@remix-project/plugin-webview](../webview)**
Author: GrandSchtroumpf
Latest version: 0.3.44

# Plugin frame

**Except if you want your plugin to ONLY work on the web, prefer [@remix-project/plugin-webview](../webview)**

This library provides connectors to connect a plugin to an engine running in a web environment.
```
npm install @remix-project/plugin-iframe
```

If you do not expose any API you can create an instance like this :
```typescript
import { createClient } from '@remix-project/plugin-iframe'

const client = createClient()
client.onload(async () => {
  const data = client.call('filemanager', 'readFile', 'ballot.sol')
})
```

If you need to expose an API to other plugin you need to extends the class: 
```typescript
import { createClient } from '@remix-project/plugin-iframe'
import { PluginClient } from '@rexmixproject/plugin'

class MyPlugin extends PluginClient {
  methods = ['hello']
  hello() {
    console.log('Hello World')
  }
}
const client = createClient()
client.onload(async () => {
  const data = client.call('filemanager', 'readFile', 'ballot.sol')
})
```
npm package: @remix-project/plugin-vscode
Description: This library provides connectors to run plugin in a vscode environment. Use this connector if you have a web based plugin that needs to run inside vscode.
Author: GrandSchtroumpf
Latest version: 0.3.44

# Plugin vscode
This library provides connectors to run plugin in a vscode environment. Use this connector if you have a web based plugin that needs to run inside vscode.

**Except if you want your plugin to ONLY work on vscode, prefer [@remix-project/plugin-webview](../webview/readme.md)**

```
npm install @remix-project/plugin-vscode
```

## Webview
Similar to `@remix-project/plugin-iframe`, the webview connector will connect to an engine running inside vscode.

If you do not expose any API you can create an instance like this :
```html
<script>
  const client = createClient(ws)
  client.onload(async () => {
    const data = client.call('filemanager', 'readFile', 'ballot.sol')
  })
</script>
```

If you need to expose an API to other plugin you need to extends the class: 
```html
<script>
  class MyPlugin extends PluginClient {
    methods = ['hello']
    hello() {
      console.log('Hello World')
    }
  }
  const client = createClient(ws)
  client.onload(async () => {
    const data = client.call('filemanager', 'readFile', 'ballot.sol')
  })
</script>
```