Design Hub resolver plugins load molecules into the editor by fetching the source for a given corporate or database ID. These plugins are NodeJS modules, stored in a folder set by Design Hub's configuration file.
{info} NodeJS introduction material: https://www.youtube.com/watch?v=_l96hPlqzcI (78m), https://www.youtube.com/watch?v=hKQr2DGJjUQ (19m), https://www.youtube.com/watch?v=cJVXP1bU68Y (48m) NodeJS module description: https://nodejs.org/api/modules.html Promise introduction: https://www.html5rocks.com/en/tutorials/es6/promises/#toc-async, https://github.com/kriskowal/q#readme
This plugin type is intended to fetch the MRV or SDF formatted chemical structure corresponding to a company specific ID or an alias, by making asynchronous network requests to RESTful JSON services.
Design Hub scans the services directory to find the resolver plugins and generates a GUI element where chemists can type IDs. There may be only 1 resolver plugin active in a meeting room.
Resolver plugins are NodeJS modules, denoted by their filename: *.resolve.js
and their location in the services directory as configured during installation.
A resolver plugin exports the following required properties:
Name | Type | Description |
---|---|---|
resolve |
async function | The main function of the plugin, called when the chemist types an ID and hits enter. The function should resolve the given ID or alias to a chemical structure and must return a Promise of the results / be declared as an async function. The results are broadcasted by the application.Arguments: id (string) ID or alias this includes domain and roomName for the current callReturn value: Promise The fulfillment value of the promise must be a chemical structure in SDF or MRV format. A rejected promise will display an error to the chemist. |
name |
string | Unique identifier of the plugin, used by Design Hub for identification and internal communication. If multiple plugins use the same identifier, the last one to be loaded overrides the others. |
label |
string | Human readable name of the plugin, used by Design Hub to display GUI elements related to this plugin. |
domains |
array of strings | List of domains where this plugin may be used, when authentication is enabled in Design Hub. Use * to allow any domain. If no authentication is setup, this option has no effect. To query the configured domains, send a GET request to /domains or open /domains in your browser. |
You can find a brief selection of plugins in our Github repository: custom dictionaries in Name to Structure and Compound Registration.