Edit your library
Node Editor
The node editor allows you to manage nodes exposed by your library.
Create new custom node using the '+' button located at the bottom right corner of the screen.

For each node you can:
- Edit the label / identifier and documentation (Click on node identifier or label to open additional settings)
- Duplicate the node
- Delete the node
- Add or remove input or output
- Edit the node implementation (by clicking on the code)
- Use the Validate code button; it will check for errors in your JavaScript code.
Node settings

- Node Identifier a unique node identifier in this library
-
Label the node name displayed to the user in the data flow editor and the node menu
-
Short description add a short description that will appear in the node menu
- Documentation add additional documentation for the node, in the Markdown format
The node's identifier allows it to be identified within the data stream. Any modification to this identifier will invalidate the data stream using that node. Therefore, it is preferable to modify the label, which will only change the displayed name.
Edit node implementation
Click on the node implementation source code to open the code editor. This code corresponds to a JavaScript module that adheres to the following rules:
- The
default exportfunction will be the entry point of your node implementation - The
default exportfunction should return an object where each property corresponds to the value of one of the node's outputs. - It will trigger the output for each key found in the returned object
- If the returned object does not contain an output key, it will not trigger the connection for this output key (see below the Truthy/Falsy example).
- 'You can import code from the library's Source editor using the absolute import path prefix
src/followed by the file path in the File explorer (for example:import { randomNumber } from 'src/index.mjs'orimport { randomNumber } from 'src/lib/random-number.mjs')'
Examples
Node truthy/falsy
export default async function(inputs, context) {
const { value } = inputs;
if (value) {
return {
truthy: value
}
}
else {
return {
falsy: value
}
}
}
Note that if value is evaluated to a truthy value, only the truthy output will be triggered. Otherwise, only the falsy output will be triggered.
Node generate-random-number
// You can use shared source code from
// the Source Editor (see below)
import { randomNumber } from 'src/index';
/**
* The default export function will be the entry
* point of your node's implementation
*
* @param {Inputs} inputs
* @param {NodeExecutionContext} context
* @return {Outputs}
*/
export default async function (inputs, context) {
// inputs is an object where each property
// corresponds to the value of the node input
const { min,max } = inputs;
// output is an object where each property
// corresponds to the value of the node output
return {
output: randomNumber(min, max)
}
}
We use import { randomNumber } from 'src/index' to import a function exported from index.mjs file of library Sources
Source Editor
The source editor allows you to write JavaScript modules that you can use in your node's implementation. This allows you to share code that you can reuse in different nodes such as configuration values or shared functions.

File Explorer (left panel)
On the left side, you have a minimal file explorer.
Click on any file to open the code editor.
Open the context menu to:
- Remove a file or directory
- Rename a file
- Create a new file
- Create a new directory
Code editor (Right panel)
Once you have selected the file to edit, you can edit the content.
You can use JavaScript import or export statements to reference other files available in the file explorer (e.g., export { randomNumber } from './lib/random-number';)
Only relative import paths are accepted
See Javascript module documentation for more information on how to write a javascript module
Dependencies
You can add www.npmjs.org dependencies to the library using the Dependencies page. An app project that installs this library will also have the listed dependencies added to the generated app project.

To add a new dependency to the library:
- Click the + button at the bottom right of the page.
- Enter the package name and the desired version (
npmversion range syntax is accepted). - Click the
Addbutton. - If it's a Cordova plugin, you must check the
Cordova Plugincheckbox.
Dependencies are only available for generated applications. Running your app in simulated mode will not work if it depends on additional dependencies.
Settings
Project Import/Export
You can export the library source files as a ZIP file using the EXPORT button.
The unzipped file structure of a library is as follows:
- nodes directory contains the nodes (see
Node Editorpage). There is one subdirectory for each node:node-idsubfolder named with the node identifier- implementation.mjs text file that contains the node implementation (JavaScript code)
- meta.json
JSONfile that contains the node description (inputs, outputs, label, documentation, etc.)
- sources directory contains the JavaScript source files (see
Sourcespage) app-creator-lib.jsonfile
You can use any code editor to make modifications to the files, add nodes following the given template, and remove nodes by deleting the nodes/node-id directory.
Once done, you can zip the library again and import it using the IMPORT button or share the ZIP file with another workspace.
Release
By default, a library belongs to a Workspace, and only apps within this same workspace can install the library.
To make a library available to any app (called a public release), click the Make a new release button.
This public release is a snapshot of the library when it was created. If you continue to edit the library afterwards by adding nodes, for example, the released version will not have those modifications.
If you want to modify a public release by adding or removing nodes, for example, you can make a new release.
A public release cannot be removed. This behavior is intentional to prevent app projects that depend on this library from being affected.
