mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Created dynamic palette (markdown)
parent
cdfe0c2f91
commit
632de8732a
33
dynamic-palette.md
Normal file
33
dynamic-palette.md
Normal file
@ -0,0 +1,33 @@
|
||||
Currently, the palette of nodes is loaded when the runtime starts and does not change.
|
||||
|
||||
The runtime needs to allow nodes to be added/removed dynamically.
|
||||
|
||||
### Adding a node type
|
||||
To add a new node to the palette:
|
||||
|
||||
1. a request is POSTed to `{admin root}/nodes` to trigger the add.
|
||||
The post body is a JSON structure that identifies where the node information comes from, either a local file (`filename`) or an npm module (`npm`).
|
||||
|
||||
{
|
||||
filename: "path to local node .js file",
|
||||
npm: "npm module name"
|
||||
}
|
||||
|
||||
2. For `filename`, we require that the files already exist somewhere under `NODE_RED_HOME/nodes/`
|
||||
This reduces security concerns over exposing arbitrary files and removes the need for the runtime to 'remember' what extra nodes have been added.
|
||||
|
||||
For `npm`, we npm install the node.
|
||||
|
||||
3. The node's `.js` is then loaded using the existing node loading code.
|
||||
|
||||
4. An event is fired over the comms link telling any connected editors that a node has been added. This triggers a HTTP Get back to `{admin root}/nodes/{node-type}` to load the node definition/help/edit template.
|
||||
|
||||
### Remove node type
|
||||
To remove a node from the palette:
|
||||
|
||||
1. a DELETE http request is sent to `{admin root}/nodes/{node-type}` to trigger the remove.
|
||||
2. The runtime registry removes the node. This will stop the current flow if it uses the node.
|
||||
3. An event is fired over the comms link telling any connected editors that a node has been removed.
|
||||
|
||||
This poses some problems:
|
||||
* What to do with the node's files? If the runtime restarts, the node will come back. As a file may contain multiple nodes, we can't delete/npm-uninstall the node's files. Add node to an excludes list? That is currently based on filename not node-type.
|
Loading…
Reference in New Issue
Block a user