diff --git a/src/data/modules.schema.json b/src/data/modules.schema.json index dfb830d..23bf683 100644 --- a/src/data/modules.schema.json +++ b/src/data/modules.schema.json @@ -5,6 +5,215 @@ "description": "module configurations", "items": { "oneOf": [ + { + "$id": "db.mysql", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "dsn": { + "description": "the connection DSN for the MySQL database", + "minLength": 1, + "title": "Database DSN", + "type": "string" + } + }, + "required": [ + "dsn" + ], + "type": "object" + }, + "type": { + "const": "db.mysql" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "MySQL Database", + "type": "object" + }, + { + "$id": "db.postgres", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "url": { + "description": "the connection URL for the PostgreSQL database", + "minLength": 1, + "title": "Database URL", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "type": { + "const": "db.postgres" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "PostgreSQL Database", + "type": "object" + }, + { + "$id": "db.sqlite", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "dsn": { + "description": "the data source name (DSN) for the SQLite database", + "minLength": 1, + "title": "Data Source Name", + "type": "string" + } + }, + "required": [ + "dsn" + ], + "type": "object" + }, + "type": { + "const": "db.sqlite" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "SQLite Database", + "type": "object" + }, + { + "$id": "http.server", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "port": { + "description": "the port for the HTTP server to listen on", + "maximum": 65535, + "minimum": 1024, + "title": "Port", + "type": "integer" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "type": { + "const": "http.server" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "HTTP Server", + "type": "object" + }, + { + "$id": "midi.input", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "port": { + "description": "the name of the MIDI port to listen to", + "title": "Port", + "type": "string" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "type": { + "const": "midi.input" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "MIDI Input", + "type": "object" + }, + { + "$id": "midi.output", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "port": { + "description": "the name of the MIDI port to send messages to", + "title": "Port", + "type": "string" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "type": { + "const": "midi.output" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "MIDI Output", + "type": "object" + }, { "$id": "mqtt.client", "additionalProperties": false, @@ -105,6 +314,45 @@ "title": "NATS Client", "type": "object" }, + { + "$id": "nats.server", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "ip": { + "default": "0.0.0.0", + "description": "the IP address to bind the NATS server to", + "title": "IP", + "type": "string" + }, + "port": { + "default": 4222, + "description": "the port for the NATS server to listen on", + "maximum": 65535, + "minimum": 1024, + "title": "Port", + "type": "integer" + } + }, + "type": "object" + }, + "type": { + "const": "nats.server" + } + }, + "required": [ + "id", + "type" + ], + "title": "NATS Server", + "type": "object" + }, { "$id": "net.tcp.client", "additionalProperties": false, @@ -215,209 +463,6 @@ "title": "TCP Server", "type": "object" }, - { - "$id": "midi.output", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "port": { - "description": "the name of the MIDI port to send messages to", - "title": "Port", - "type": "string" - } - }, - "required": [ - "port" - ], - "type": "object" - }, - "type": { - "const": "midi.output" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "MIDI Output", - "type": "object" - }, - { - "$id": "psn.client", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "psn.client" - } - }, - "required": [ - "id", - "type" - ], - "title": "PosiStageNet Client", - "type": "object" - }, - { - "$id": "db.mysql", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "dsn": { - "description": "the connection DSN for the MySQL database", - "minLength": 1, - "title": "Database DSN", - "type": "string" - } - }, - "required": [ - "dsn" - ], - "type": "object" - }, - "type": { - "const": "db.mysql" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "MySQL Database", - "type": "object" - }, - { - "$id": "nats.server", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "ip": { - "default": "0.0.0.0", - "description": "the IP address to bind the NATS server to", - "title": "IP", - "type": "string" - }, - "port": { - "default": 4222, - "description": "the port for the NATS server to listen on", - "maximum": 65535, - "minimum": 1024, - "title": "Port", - "type": "integer" - } - }, - "type": "object" - }, - "type": { - "const": "nats.server" - } - }, - "required": [ - "id", - "type" - ], - "title": "NATS Server", - "type": "object" - }, - { - "$id": "redis.client", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "host": { - "description": "the hostname or IP address of the Redis server to connect to", - "title": "Host", - "type": "string" - }, - "port": { - "description": "the port to use when connecting to the Redis server", - "maximum": 65535, - "minimum": 1, - "title": "Port", - "type": "integer" - } - }, - "required": [ - "host", - "port" - ], - "type": "object" - }, - "type": { - "const": "redis.client" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Redis Client", - "type": "object" - }, - { - "$id": "time.timer", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "duration": { - "description": "time in milliseconds before the timer fires", - "title": "Duration", - "type": "integer" - } - }, - "required": [ - "duration" - ], - "type": "object" - }, - "type": { - "const": "time.timer" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Timer", - "type": "object" - }, { "$id": "net.udp.client", "additionalProperties": false, @@ -503,7 +548,7 @@ "type": "object" }, { - "$id": "websocket.client", + "$id": "net.udp.server", "additionalProperties": false, "properties": { "id": { @@ -513,114 +558,26 @@ "params": { "additionalProperties": false, "properties": { - "url": { - "description": "the URL of the WebSocket server to connect", - "title": "URL", + "bufferSize": { + "default": 2048, + "description": "the size of the buffer for incoming UDP messages", + "maximum": 65535, + "minimum": 1, + "title": "Buffer Size", + "type": "integer" + }, + "ip": { + "default": "0.0.0.0", + "description": "the IP address to bind the UDP server to", + "title": "IP", "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "type": { - "const": "websocket.client" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "WebSocket Client", - "type": "object" - }, - { - "$id": "db.postgres", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "url": { - "description": "the connection URL for the PostgreSQL database", - "minLength": 1, - "title": "Database URL", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "type": { - "const": "db.postgres" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "PostgreSQL Database", - "type": "object" - }, - { - "$id": "db.sqlite", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "dsn": { - "description": "the data source name (DSN) for the SQLite database", - "minLength": 1, - "title": "Data Source Name", - "type": "string" - } - }, - "required": [ - "dsn" - ], - "type": "object" - }, - "type": { - "const": "db.sqlite" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "SQLite Database", - "type": "object" - }, - { - "$id": "midi.input", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { + }, "port": { - "description": "the name of the MIDI port to listen to", + "description": "the port for the UDP server to listen on", + "maximum": 65535, + "minimum": 1024, "title": "Port", - "type": "string" + "type": "integer" } }, "required": [ @@ -629,7 +586,7 @@ "type": "object" }, "type": { - "const": "midi.input" + "const": "net.udp.server" } }, "required": [ @@ -637,7 +594,68 @@ "type", "params" ], - "title": "MIDI Input", + "title": "UDP Server", + "type": "object" + }, + { + "$id": "psn.client", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "psn.client" + } + }, + "required": [ + "id", + "type" + ], + "title": "PosiStageNet Client", + "type": "object" + }, + { + "$id": "redis.client", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "host": { + "description": "the hostname or IP address of the Redis server to connect to", + "title": "Host", + "type": "string" + }, + "port": { + "description": "the port to use when connecting to the Redis server", + "maximum": 65535, + "minimum": 1, + "title": "Port", + "type": "integer" + } + }, + "required": [ + "host", + "port" + ], + "type": "object" + }, + "type": { + "const": "redis.client" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Redis Client", "type": "object" }, { @@ -728,7 +746,7 @@ "type": "object" }, { - "$id": "net.udp.server", + "$id": "time.timer", "additionalProperties": false, "properties": { "id": { @@ -738,35 +756,19 @@ "params": { "additionalProperties": false, "properties": { - "bufferSize": { - "default": 2048, - "description": "the size of the buffer for incoming UDP messages", - "maximum": 65535, - "minimum": 1, - "title": "Buffer Size", - "type": "integer" - }, - "ip": { - "default": "0.0.0.0", - "description": "the IP address to bind the UDP server to", - "title": "IP", - "type": "string" - }, - "port": { - "description": "the port for the UDP server to listen on", - "maximum": 65535, - "minimum": 1024, - "title": "Port", + "duration": { + "description": "time in milliseconds before the timer fires", + "title": "Duration", "type": "integer" } }, "required": [ - "port" + "duration" ], "type": "object" }, "type": { - "const": "net.udp.server" + "const": "time.timer" } }, "required": [ @@ -774,11 +776,11 @@ "type", "params" ], - "title": "UDP Server", + "title": "Timer", "type": "object" }, { - "$id": "http.server", + "$id": "websocket.client", "additionalProperties": false, "properties": { "id": { @@ -788,21 +790,19 @@ "params": { "additionalProperties": false, "properties": { - "port": { - "description": "the port for the HTTP server to listen on", - "maximum": 65535, - "minimum": 1024, - "title": "Port", - "type": "integer" + "url": { + "description": "the URL of the WebSocket server to connect", + "title": "URL", + "type": "string" } }, "required": [ - "port" + "url" ], "type": "object" }, "type": { - "const": "http.server" + "const": "websocket.client" } }, "required": [ @@ -810,7 +810,7 @@ "type", "params" ], - "title": "HTTP Server", + "title": "WebSocket Client", "type": "object" } ] diff --git a/src/data/processors.schema.json b/src/data/processors.schema.json index 2eaf64e..015b131 100644 --- a/src/data/processors.schema.json +++ b/src/data/processors.schema.json @@ -5,770 +5,6 @@ "description": "processor configurations", "items": { "oneOf": [ - { - "$id": "json.decode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "json.decode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Decode JSON", - "type": "object" - }, - { - "$id": "kv.get", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "key": { - "description": "key to retrieve from the key-value module", - "title": "Key", - "type": "string" - }, - "module": { - "description": "ID of the key-value module to get the value from", - "title": "Module ID", - "type": "string" - } - }, - "required": [ - "module", - "key" - ], - "type": "object" - }, - "type": { - "const": "kv.get" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Get Key", - "type": "object" - }, - { - "$id": "midi.message.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "midi.message.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode MIDI Message", - "type": "object" - }, - { - "$id": "http.response.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "bodyTemplate": { - "description": "template for the response body", - "title": "Body Template", - "type": "string" - }, - "status": { - "description": "status code to set on the response", - "title": "Status Code", - "type": "integer" - } - }, - "required": [ - "status", - "bodyTemplate" - ], - "type": "object" - }, - "type": { - "const": "http.response.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create HTTP Response", - "type": "object" - }, - { - "$id": "midi.message.unpack", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "midi.message.unpack" - } - }, - "required": [ - "id", - "type" - ], - "title": "Unpack MIDI Message", - "type": "object" - }, - { - "$id": "pubsub.publish", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "module": { - "description": "ID of the module to publish to", - "title": "Module ID", - "type": "string" - }, - "topic": { - "description": "topic to publish to", - "title": "Topic", - "type": "string" - } - }, - "required": [ - "module", - "topic" - ], - "type": "object" - }, - "type": { - "const": "pubsub.publish" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Publish to Pub/Sub Topic", - "type": "object" - }, - { - "$id": "string.decode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "string.decode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Decode String", - "type": "object" - }, - { - "$id": "struct.method.get", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "name": { - "description": "name of the struct method to extract and call (with no arguments)", - "title": "Method Name", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": { - "const": "struct.method.get" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Get Struct Method", - "type": "object" - }, - { - "$id": "debug.log", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "debug.log" - } - }, - "required": [ - "id", - "type" - ], - "title": "Debug Log", - "type": "object" - }, - { - "$id": "int.random", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "max": { - "description": "inclusive maximum value of the random integer", - "title": "Maximum", - "type": "integer" - }, - "min": { - "description": "inclusive minimum value of the random integer", - "title": "Minimum", - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - }, - "type": { - "const": "int.random" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Random Int", - "type": "object" - }, - { - "$id": "midi.note_off.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "channel": { - "description": "channel number for the note off message", - "title": "Channel", - "type": "string" - }, - "note": { - "description": "note number for the note off message", - "title": "Note", - "type": "string" - }, - "velocity": { - "description": "velocity for the note off message", - "title": "Velocity", - "type": "string" - } - }, - "required": [ - "channel", - "note", - "velocity" - ], - "type": "object" - }, - "type": { - "const": "midi.note_off.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create MIDI Note Off Message", - "type": "object" - }, - { - "$id": "script.expr", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "expression": { - "description": "Expr expression to evaluate", - "title": "Expression", - "type": "string" - } - }, - "required": [ - "expression" - ], - "type": "object" - }, - "type": { - "const": "script.expr" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Evaluate Expr Expression", - "type": "object" - }, - { - "$id": "string.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "template": { - "description": "template to evaluate", - "title": "Template", - "type": "string" - } - }, - "required": [ - "template" - ], - "type": "object" - }, - "type": { - "const": "string.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create String", - "type": "object" - }, - { - "$id": "string.split", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "separator": { - "description": "separator to split the string on", - "title": "Separator", - "type": "string" - } - }, - "required": [ - "separator" - ], - "type": "object" - }, - "type": { - "const": "string.split" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Split String", - "type": "object" - }, - { - "$id": "time.sleep", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "duration": { - "description": "time to sleep in milliseconds", - "title": "Duration", - "type": "integer" - } - }, - "required": [ - "duration" - ], - "type": "object" - }, - "type": { - "const": "time.sleep" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Sleep", - "type": "object" - }, - { - "$id": "float.random", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "bitSize": { - "default": 32, - "description": "bit size of the resulting float", - "enum": [ - 32, - 64 - ], - "title": "Bit Size", - "type": "integer" - }, - "max": { - "description": "exclusive maximum value of the random float", - "title": "Maximum", - "type": "number" - }, - "min": { - "description": "inclusive minimum value of the random float", - "title": "Minimum", - "type": "number" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - }, - "type": { - "const": "float.random" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Random Float", - "type": "object" - }, - { - "$id": "freed.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "focus": { - "description": "focus level of the camera", - "title": "Focus", - "type": "string" - }, - "id": { - "description": "ID of the camera this FreeD position corresponds to", - "title": "Camera ID", - "type": "string" - }, - "pan": { - "description": "pan angle of the camera", - "title": "Pan", - "type": "string" - }, - "posX": { - "description": "X coordinate of the camera's position", - "title": "Position X", - "type": "string" - }, - "posY": { - "description": "Y coordinate of the camera's position", - "title": "Position Y", - "type": "string" - }, - "posZ": { - "description": "Z coordinate of the camera's position", - "title": "Position Z", - "type": "string" - }, - "roll": { - "description": "roll angle of the camera", - "title": "Roll", - "type": "string" - }, - "tilt": { - "description": "tilt angle of the camera", - "title": "Tilt", - "type": "string" - }, - "zoom": { - "description": "zoom level of the camera", - "title": "Zoom", - "type": "string" - } - }, - "required": [ - "id", - "pan", - "tilt", - "roll", - "posX", - "posY", - "posZ", - "zoom", - "focus" - ], - "type": "object" - }, - "type": { - "const": "freed.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create FreeD", - "type": "object" - }, - { - "$id": "midi.note_on.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "channel": { - "description": "channel number for the note on message", - "title": "Channel", - "type": "string" - }, - "note": { - "description": "note number for the note on message", - "title": "Note", - "type": "string" - }, - "velocity": { - "description": "velocity for the note on message", - "title": "Velocity", - "type": "string" - } - }, - "required": [ - "channel", - "note", - "velocity" - ], - "type": "object" - }, - "type": { - "const": "midi.note_on.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create MIDI Note On Message", - "type": "object" - }, - { - "$id": "osc.message.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "address": { - "description": "OSC address for the message", - "title": "Address", - "type": "string" - }, - "args": { - "description": "arguments for the OSC message", - "items": { - "type": "string" - }, - "title": "Arguments", - "type": "array" - }, - "types": { - "description": "string of OSC types corresponding to the arguments in args", - "title": "Argument Types", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "type": { - "const": "osc.message.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create OSC Message", - "type": "object" - }, - { - "$id": "router.input", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "source": { - "description": "source to report as to the router", - "title": "Source", - "type": "string" - } - }, - "required": [ - "source" - ], - "type": "object" - }, - "type": { - "const": "router.input" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Router Input", - "type": "object" - }, - { - "$id": "script.js", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "program": { - "description": "JavaScript program to run", - "title": "Program", - "type": "string" - } - }, - "required": [ - "program" - ], - "type": "object" - }, - "type": { - "const": "script.js" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Run JavaScript", - "type": "object" - }, { "$id": "artnet.packet.decode", "additionalProperties": false, @@ -788,6 +24,25 @@ "title": "Decode ArtNet Packet", "type": "object" }, + { + "$id": "artnet.packet.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "artnet.packet.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode ArtNet Packet", + "type": "object" + }, { "$id": "db.query", "additionalProperties": false, @@ -829,546 +84,22 @@ "type": "object" }, { - "$id": "http.request.do", + "$id": "debug.log", "additionalProperties": false, "properties": { "id": { "minLength": 1, "type": "string" }, - "params": { - "additionalProperties": false, - "properties": { - "method": { - "description": "method to use for the HTTP request", - "enum": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], - "title": "HTTP Method", - "type": "string" - }, - "url": { - "description": "URL to send the HTTP request to", - "title": "URL", - "type": "string" - } - }, - "required": [ - "method", - "url" - ], - "type": "object" - }, "type": { - "const": "http.request.do" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Do HTTP Request", - "type": "object" - }, - { - "$id": "int.parse", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "base": { - "default": 10, - "description": "numerical base to use for parsing the integer", - "enum": [ - 0, - 2, - 8, - 10, - 16 - ], - "title": "Base", - "type": "integer" - }, - "bitSize": { - "default": 64, - "description": "bit size of the resulting integer", - "enum": [ - 0, - 8, - 16, - 32, - 64 - ], - "title": "Bit Size", - "type": "integer" - } - }, - "type": "object" - }, - "type": { - "const": "int.parse" + "const": "debug.log" } }, "required": [ "id", "type" ], - "title": "Parse Int", - "type": "object" - }, - { - "$id": "kv.set", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "key": { - "description": "key to set in the key-value module", - "title": "Key", - "type": "string" - }, - "module": { - "description": "ID of the key-value module to set the value in", - "title": "Module ID", - "type": "string" - } - }, - "required": [ - "module", - "key" - ], - "type": "object" - }, - "type": { - "const": "kv.set" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Set Key", - "type": "object" - }, - { - "$id": "module.output", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "module": { - "description": "ID of module to send output to", - "title": "Module ID", - "type": "string" - } - }, - "required": [ - "module" - ], - "type": "object" - }, - "type": { - "const": "module.output" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Module Output", - "type": "object" - }, - { - "$id": "osc.message.decode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "osc.message.decode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Decode OSC Message", - "type": "object" - }, - { - "$id": "int.scale", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "inMax": { - "description": "maximum value of the input integer", - "title": "Input Maximum", - "type": "integer" - }, - "inMin": { - "description": "minimum value of the input integer", - "title": "Input Minimum", - "type": "integer" - }, - "outMax": { - "description": "maximum value of the output integer", - "title": "Output Maximum", - "type": "integer" - }, - "outMin": { - "description": "minimum value of the output integer", - "title": "Output Minimum", - "type": "integer" - } - }, - "required": [ - "inMin", - "inMax", - "outMin", - "outMax" - ], - "type": "object" - }, - "type": { - "const": "int.scale" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Scale Int", - "type": "object" - }, - { - "$id": "json.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "json.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode JSON", - "type": "object" - }, - { - "$id": "midi.message.decode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "midi.message.decode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Decode MIDI Message", - "type": "object" - }, - { - "$id": "midi.program_change.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "channel": { - "description": "channel number for the program change message", - "title": "Channel", - "type": "string" - }, - "program": { - "description": "program number for the program change message", - "title": "Program", - "type": "string" - } - }, - "required": [ - "type", - "channel", - "program" - ], - "type": "object" - }, - "type": { - "const": "midi.program_change.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create MIDI Prgoram Change Message", - "type": "object" - }, - { - "$id": "script.wasm", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "enableWasi": { - "default": false, - "description": "whether to enable WASI when running the WASM plugin", - "title": "Enable WASI", - "type": "boolean" - }, - "function": { - "default": "process", - "description": "exported function to call on the WASM plugin", - "title": "Function", - "type": "string" - }, - "path": { - "description": "path to the WASM plugin to load", - "title": "Path", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": { - "const": "script.wasm" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Run WASM Plugin", - "type": "object" - }, - { - "$id": "string.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "string.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode String", - "type": "object" - }, - { - "$id": "artnet.packet.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "artnet.packet.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode ArtNet Packet", - "type": "object" - }, - { - "$id": "freed.decode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "freed.decode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Decode FreeD", - "type": "object" - }, - { - "$id": "midi.control_change.create", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "channel": { - "description": "channel number for the control change message", - "title": "Channel", - "type": "string" - }, - "control": { - "description": "control number for the control change message", - "title": "Control", - "type": "string" - }, - "value": { - "description": "value for the control change message", - "title": "Value", - "type": "string" - } - }, - "required": [ - "channel", - "control", - "value" - ], - "type": "object" - }, - "type": { - "const": "midi.control_change.create" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Create MIDI Control Change Message", - "type": "object" - }, - { - "$id": "osc.message.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "osc.message.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode OSC Message", - "type": "object" - }, - { - "$id": "freed.encode", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "freed.encode" - } - }, - "required": [ - "id", - "type" - ], - "title": "Encode FreeD", - "type": "object" - }, - { - "$id": "struct.field.get", - "additionalProperties": false, - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "params": { - "additionalProperties": false, - "properties": { - "name": { - "description": "name of the struct field to extract", - "title": "Field Name", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": { - "const": "struct.field.get" - } - }, - "required": [ - "id", - "type", - "params" - ], - "title": "Get Struct Field", + "title": "Debug Log", "type": "object" }, { @@ -1525,6 +256,1317 @@ ], "title": "Parse Float", "type": "object" + }, + { + "$id": "float.random", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "bitSize": { + "default": 32, + "description": "bit size of the resulting float", + "enum": [ + 32, + 64 + ], + "title": "Bit Size", + "type": "integer" + }, + "max": { + "description": "exclusive maximum value of the random float", + "title": "Maximum", + "type": "number" + }, + "min": { + "description": "inclusive minimum value of the random float", + "title": "Minimum", + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "type": { + "const": "float.random" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Random Float", + "type": "object" + }, + { + "$id": "freed.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "focus": { + "description": "focus level of the camera", + "title": "Focus", + "type": "string" + }, + "id": { + "description": "ID of the camera this FreeD position corresponds to", + "title": "Camera ID", + "type": "string" + }, + "pan": { + "description": "pan angle of the camera", + "title": "Pan", + "type": "string" + }, + "posX": { + "description": "X coordinate of the camera's position", + "title": "Position X", + "type": "string" + }, + "posY": { + "description": "Y coordinate of the camera's position", + "title": "Position Y", + "type": "string" + }, + "posZ": { + "description": "Z coordinate of the camera's position", + "title": "Position Z", + "type": "string" + }, + "roll": { + "description": "roll angle of the camera", + "title": "Roll", + "type": "string" + }, + "tilt": { + "description": "tilt angle of the camera", + "title": "Tilt", + "type": "string" + }, + "zoom": { + "description": "zoom level of the camera", + "title": "Zoom", + "type": "string" + } + }, + "required": [ + "id", + "pan", + "tilt", + "roll", + "posX", + "posY", + "posZ", + "zoom", + "focus" + ], + "type": "object" + }, + "type": { + "const": "freed.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create FreeD", + "type": "object" + }, + { + "$id": "freed.decode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "freed.decode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Decode FreeD", + "type": "object" + }, + { + "$id": "freed.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "freed.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode FreeD", + "type": "object" + }, + { + "$id": "http.request.do", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "method": { + "description": "method to use for the HTTP request", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "title": "HTTP Method", + "type": "string" + }, + "url": { + "description": "URL to send the HTTP request to", + "title": "URL", + "type": "string" + } + }, + "required": [ + "method", + "url" + ], + "type": "object" + }, + "type": { + "const": "http.request.do" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Do HTTP Request", + "type": "object" + }, + { + "$id": "http.response.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "bodyTemplate": { + "description": "template for the response body", + "title": "Body Template", + "type": "string" + }, + "status": { + "description": "status code to set on the response", + "title": "Status Code", + "type": "integer" + } + }, + "required": [ + "status", + "bodyTemplate" + ], + "type": "object" + }, + "type": { + "const": "http.response.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create HTTP Response", + "type": "object" + }, + { + "$id": "int.parse", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "base": { + "default": 10, + "description": "numerical base to use for parsing the integer", + "enum": [ + 0, + 2, + 8, + 10, + 16 + ], + "title": "Base", + "type": "integer" + }, + "bitSize": { + "default": 64, + "description": "bit size of the resulting integer", + "enum": [ + 0, + 8, + 16, + 32, + 64 + ], + "title": "Bit Size", + "type": "integer" + } + }, + "type": "object" + }, + "type": { + "const": "int.parse" + } + }, + "required": [ + "id", + "type" + ], + "title": "Parse Int", + "type": "object" + }, + { + "$id": "int.random", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "max": { + "description": "inclusive maximum value of the random integer", + "title": "Maximum", + "type": "integer" + }, + "min": { + "description": "inclusive minimum value of the random integer", + "title": "Minimum", + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "type": { + "const": "int.random" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Random Int", + "type": "object" + }, + { + "$id": "int.scale", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "inMax": { + "description": "maximum value of the input integer", + "title": "Input Maximum", + "type": "integer" + }, + "inMin": { + "description": "minimum value of the input integer", + "title": "Input Minimum", + "type": "integer" + }, + "outMax": { + "description": "maximum value of the output integer", + "title": "Output Maximum", + "type": "integer" + }, + "outMin": { + "description": "minimum value of the output integer", + "title": "Output Minimum", + "type": "integer" + } + }, + "required": [ + "inMin", + "inMax", + "outMin", + "outMax" + ], + "type": "object" + }, + "type": { + "const": "int.scale" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Scale Int", + "type": "object" + }, + { + "$id": "json.decode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "json.decode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Decode JSON", + "type": "object" + }, + { + "$id": "json.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "json.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode JSON", + "type": "object" + }, + { + "$id": "kv.get", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "key": { + "description": "key to retrieve from the key-value module", + "title": "Key", + "type": "string" + }, + "module": { + "description": "ID of the key-value module to get the value from", + "title": "Module ID", + "type": "string" + } + }, + "required": [ + "module", + "key" + ], + "type": "object" + }, + "type": { + "const": "kv.get" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Get Key", + "type": "object" + }, + { + "$id": "kv.set", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "key": { + "description": "key to set in the key-value module", + "title": "Key", + "type": "string" + }, + "module": { + "description": "ID of the key-value module to set the value in", + "title": "Module ID", + "type": "string" + } + }, + "required": [ + "module", + "key" + ], + "type": "object" + }, + "type": { + "const": "kv.set" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Set Key", + "type": "object" + }, + { + "$id": "midi.control_change.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "channel": { + "description": "channel number for the control change message", + "title": "Channel", + "type": "string" + }, + "control": { + "description": "control number for the control change message", + "title": "Control", + "type": "string" + }, + "value": { + "description": "value for the control change message", + "title": "Value", + "type": "string" + } + }, + "required": [ + "channel", + "control", + "value" + ], + "type": "object" + }, + "type": { + "const": "midi.control_change.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create MIDI Control Change Message", + "type": "object" + }, + { + "$id": "midi.message.decode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "midi.message.decode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Decode MIDI Message", + "type": "object" + }, + { + "$id": "midi.message.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "midi.message.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode MIDI Message", + "type": "object" + }, + { + "$id": "midi.message.unpack", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "midi.message.unpack" + } + }, + "required": [ + "id", + "type" + ], + "title": "Unpack MIDI Message", + "type": "object" + }, + { + "$id": "midi.note_off.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "channel": { + "description": "channel number for the note off message", + "title": "Channel", + "type": "string" + }, + "note": { + "description": "note number for the note off message", + "title": "Note", + "type": "string" + }, + "velocity": { + "description": "velocity for the note off message", + "title": "Velocity", + "type": "string" + } + }, + "required": [ + "channel", + "note", + "velocity" + ], + "type": "object" + }, + "type": { + "const": "midi.note_off.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create MIDI Note Off Message", + "type": "object" + }, + { + "$id": "midi.note_on.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "channel": { + "description": "channel number for the note on message", + "title": "Channel", + "type": "string" + }, + "note": { + "description": "note number for the note on message", + "title": "Note", + "type": "string" + }, + "velocity": { + "description": "velocity for the note on message", + "title": "Velocity", + "type": "string" + } + }, + "required": [ + "channel", + "note", + "velocity" + ], + "type": "object" + }, + "type": { + "const": "midi.note_on.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create MIDI Note On Message", + "type": "object" + }, + { + "$id": "midi.program_change.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "channel": { + "description": "channel number for the program change message", + "title": "Channel", + "type": "string" + }, + "program": { + "description": "program number for the program change message", + "title": "Program", + "type": "string" + } + }, + "required": [ + "type", + "channel", + "program" + ], + "type": "object" + }, + "type": { + "const": "midi.program_change.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create MIDI Prgoram Change Message", + "type": "object" + }, + { + "$id": "module.output", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "module": { + "description": "ID of module to send output to", + "title": "Module ID", + "type": "string" + } + }, + "required": [ + "module" + ], + "type": "object" + }, + "type": { + "const": "module.output" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Module Output", + "type": "object" + }, + { + "$id": "os.exec", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "args": { + "description": "the arguments for the command", + "items": { + "type": "string" + }, + "title": "Args", + "type": "array" + }, + "command": { + "description": "the command to execute", + "title": "Command", + "type": "string" + } + }, + "required": [ + "command" + ], + "type": "object" + }, + "type": { + "const": "os.exec" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Exec Command", + "type": "object" + }, + { + "$id": "osc.message.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "address": { + "description": "OSC address for the message", + "title": "Address", + "type": "string" + }, + "args": { + "description": "arguments for the OSC message", + "items": { + "type": "string" + }, + "title": "Arguments", + "type": "array" + }, + "types": { + "description": "string of OSC types corresponding to the arguments in args", + "title": "Argument Types", + "type": "string" + } + }, + "required": [ + "address" + ], + "type": "object" + }, + "type": { + "const": "osc.message.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create OSC Message", + "type": "object" + }, + { + "$id": "osc.message.decode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "osc.message.decode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Decode OSC Message", + "type": "object" + }, + { + "$id": "osc.message.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "osc.message.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode OSC Message", + "type": "object" + }, + { + "$id": "pubsub.publish", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "module": { + "description": "ID of the module to publish to", + "title": "Module ID", + "type": "string" + }, + "topic": { + "description": "topic to publish to", + "title": "Topic", + "type": "string" + } + }, + "required": [ + "module", + "topic" + ], + "type": "object" + }, + "type": { + "const": "pubsub.publish" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Publish to Pub/Sub Topic", + "type": "object" + }, + { + "$id": "router.input", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "source": { + "description": "source to report as to the router", + "title": "Source", + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "type": { + "const": "router.input" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Router Input", + "type": "object" + }, + { + "$id": "script.expr", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "expression": { + "description": "Expr expression to evaluate", + "title": "Expression", + "type": "string" + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "type": { + "const": "script.expr" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Evaluate Expr Expression", + "type": "object" + }, + { + "$id": "script.js", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "program": { + "description": "JavaScript program to run", + "title": "Program", + "type": "string" + } + }, + "required": [ + "program" + ], + "type": "object" + }, + "type": { + "const": "script.js" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Run JavaScript", + "type": "object" + }, + { + "$id": "script.wasm", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "enableWasi": { + "default": false, + "description": "whether to enable WASI when running the WASM plugin", + "title": "Enable WASI", + "type": "boolean" + }, + "function": { + "default": "process", + "description": "exported function to call on the WASM plugin", + "title": "Function", + "type": "string" + }, + "path": { + "description": "path to the WASM plugin to load", + "title": "Path", + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": { + "const": "script.wasm" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Run WASM Plugin", + "type": "object" + }, + { + "$id": "string.create", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "template": { + "description": "template to evaluate", + "title": "Template", + "type": "string" + } + }, + "required": [ + "template" + ], + "type": "object" + }, + "type": { + "const": "string.create" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Create String", + "type": "object" + }, + { + "$id": "string.decode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "string.decode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Decode String", + "type": "object" + }, + { + "$id": "string.encode", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "string.encode" + } + }, + "required": [ + "id", + "type" + ], + "title": "Encode String", + "type": "object" + }, + { + "$id": "string.split", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "separator": { + "description": "separator to split the string on", + "title": "Separator", + "type": "string" + } + }, + "required": [ + "separator" + ], + "type": "object" + }, + "type": { + "const": "string.split" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Split String", + "type": "object" + }, + { + "$id": "struct.field.get", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "name": { + "description": "name of the struct field to extract", + "title": "Field Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": { + "const": "struct.field.get" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Get Struct Field", + "type": "object" + }, + { + "$id": "struct.method.get", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "name": { + "description": "name of the struct method to extract and call (with no arguments)", + "title": "Method Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": { + "const": "struct.method.get" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Get Struct Method", + "type": "object" + }, + { + "$id": "time.sleep", + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "params": { + "additionalProperties": false, + "properties": { + "duration": { + "description": "time to sleep in milliseconds", + "title": "Duration", + "type": "integer" + } + }, + "required": [ + "duration" + ], + "type": "object" + }, + "type": { + "const": "time.sleep" + } + }, + "required": [ + "id", + "type", + "params" + ], + "title": "Sleep", + "type": "object" } ] },