49 Commits

Author SHA1 Message Date
Joel Wetzell b38fbdaab4 bump version 2026-08-19 10:16:28 -05:00
Joel Wetzell 8d680aa922 sync package-lock 2026-08-19 10:16:05 -05:00
Joel Wetzell eba857b324 bump version 2026-08-19 10:13:47 -05:00
Joel Wetzell a33c05373f add new ID property for processors and routes 2026-08-19 10:12:58 -05:00
Joel Wetzell a90a74650c Merge pull request #78 from jwetzell/renovate/astro-monorepo
Update dependency astro to v7.2.3
2026-08-18 12:50:26 -05:00
renovate[bot] 212259fc4d Update dependency astro to v7.2.3 2026-08-18 16:59:27 +00:00
Joel Wetzell 3a35b7241d Merge pull request #75 from jwetzell/renovate/astro-monorepo
Update dependency astro to v7.2.2
2026-08-17 12:53:07 -05:00
Joel Wetzell c08561a58f remove dependabot config 2026-08-17 12:42:36 -05:00
renovate[bot] 402f14ca27 Update dependency astro to v7.2.2 2026-08-17 17:42:27 +00:00
Joel Wetzell 88b455d86b Merge pull request #74 from jwetzell/renovate/configure
Configure Renovate
2026-08-17 12:41:57 -05:00
renovate[bot] 181b3c75d8 Add renovate.json 2026-08-17 17:38:08 +00:00
Joel Wetzell 0146750efa bump node version 2026-08-06 10:49:06 -05:00
Joel Wetzell f1ed9c0600 0.4.1 2026-08-06 10:46:06 -05:00
Joel Wetzell d6d8353709 sync package-lock 2026-08-06 10:44:13 -05:00
Joel Wetzell 1e02bfc4da update astro dependencies 2026-08-06 10:34:05 -05:00
Joel Wetzell 477862e73c Merge pull request #72 from jwetzell/dependabot/npm_and_yarn/astro-7.1.6
Bump astro from 6.4.4 to 7.1.6
2026-08-06 10:31:30 -05:00
dependabot[bot] c98ed11bae Bump astro from 6.4.4 to 7.1.6
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.4.4 to 7.1.6.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@7.1.6/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 7.1.6
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-06 14:05:19 +00:00
Joel Wetzell 6a9a418bf5 Merge pull request #62 from jwetzell/dependabot/npm_and_yarn/sharp-0.35.3
Bump sharp from 0.34.5 to 0.35.3
2026-08-06 09:02:50 -05:00
dependabot[bot] 69cf0949d2 Bump sharp from 0.34.5 to 0.35.3
Bumps [sharp](https://github.com/lovell/sharp) from 0.34.5 to 0.35.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.5...v0.35.3)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.35.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-06 14:01:50 +00:00
Joel Wetzell dc7bbc6c93 Merge pull request #66 from jwetzell/dependabot/github_actions/actions/setup-node-7.0.0
Bump actions/setup-node from 6.4.0 to 7.0.0
2026-08-06 08:52:21 -05:00
Joel Wetzell ea0b05bbdc Merge pull request #68 from jwetzell/dependabot/github_actions/actions/checkout-7.0.1
Bump actions/checkout from 6.0.3 to 7.0.1
2026-08-06 08:51:58 -05:00
Joel Wetzell 5bd3c68fc2 Merge pull request #71 from jwetzell/dependabot/npm_and_yarn/astrojs/check-0.9.10
Bump @astrojs/check from 0.9.9 to 0.9.10
2026-08-06 08:50:58 -05:00
dependabot[bot] b17e00bdb3 Bump @astrojs/check from 0.9.9 to 0.9.10
Bumps [@astrojs/check](https://github.com/withastro/astro/tree/HEAD/packages/language-tools/astro-check) from 0.9.9 to 0.9.10.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/language-tools/astro-check/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/check@0.9.10/packages/language-tools/astro-check)

---
updated-dependencies:
- dependency-name: "@astrojs/check"
  dependency-version: 0.9.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-29 16:43:21 +00:00
dependabot[bot] ea6370644f Bump actions/checkout from 6.0.3 to 7.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...3d3c42e5aac5ba805825da76410c181273ba90b1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 16:43:18 +00:00
dependabot[bot] d6d8e7b532 Bump actions/setup-node from 6.4.0 to 7.0.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 16:43:11 +00:00
Joel Wetzell bb1517ca73 Merge pull request #48 from jwetzell/dependabot/github_actions/actions/checkout-6.0.3
Bump actions/checkout from 6.0.2 to 6.0.3
2026-06-07 21:19:58 -05:00
Joel Wetzell 6935a7d969 Merge pull request #49 from jwetzell/dependabot/npm_and_yarn/astrojs/starlight-0.39.3
Bump @astrojs/starlight from 0.39.2 to 0.39.3
2026-06-07 21:19:46 -05:00
dependabot[bot] 98f36a9a46 Bump @astrojs/starlight from 0.39.2 to 0.39.3
Bumps [@astrojs/starlight](https://github.com/withastro/starlight/tree/HEAD/packages/starlight) from 0.39.2 to 0.39.3.
- [Release notes](https://github.com/withastro/starlight/releases)
- [Changelog](https://github.com/withastro/starlight/blob/main/packages/starlight/CHANGELOG.md)
- [Commits](https://github.com/withastro/starlight/commits/@astrojs/starlight@0.39.3/packages/starlight)

---
updated-dependencies:
- dependency-name: "@astrojs/starlight"
  dependency-version: 0.39.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 02:19:33 +00:00
Joel Wetzell 6d191eaa1d Merge pull request #50 from jwetzell/dependabot/npm_and_yarn/astro-6.4.4
Bump astro from 6.3.8 to 6.4.4
2026-06-07 21:17:30 -05:00
dependabot[bot] e614f31478 Bump astro from 6.3.8 to 6.4.4
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.3.8 to 6.4.4.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@6.4.4/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 6.4.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 02:30:59 +00:00
dependabot[bot] 7371ac9f8f Bump actions/checkout from 6.0.2 to 6.0.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 02:28:02 +00:00
Joel Wetzell 273e08be7d 0.4.0 2026-06-01 18:44:56 -05:00
Joel Wetzell c07d3f8d1a Merge pull request #47 from jwetzell/feat/auto-generate-schema-docs
auto components to auto generate docs from JSON Schema
2026-06-01 18:44:32 -05:00
Joel Wetzell f8efe286f2 sync schema with v0.23.1 2026-06-01 18:42:43 -05:00
Joel Wetzell f82b55963b work on auto-generating parts of docs from JSONSchema 2026-06-01 18:03:47 -05:00
Joel Wetzell e22e25afe2 bump version 2026-05-30 22:22:02 -05:00
Joel Wetzell dc28e1585c Merge pull request #46 from jwetzell/dependabot/npm_and_yarn/astro-6.3.8
Bump astro from 6.3.6 to 6.3.8
2026-05-30 22:13:33 -05:00
Joel Wetzell 6d7bceb536 fix params layout for http.response.create 2026-05-27 21:01:28 -05:00
dependabot[bot] 795ce1ab55 Bump astro from 6.3.6 to 6.3.8
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.3.6 to 6.3.8.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@6.3.8/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 6.3.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-27 19:11:20 +00:00
Joel Wetzell e83c095d97 Merge pull request #45 from jwetzell/dependabot/npm_and_yarn/astro-6.3.6
Bump astro from 6.3.3 to 6.3.6
2026-05-26 16:40:08 -05:00
dependabot[bot] b5ddb3ecc2 Bump astro from 6.3.3 to 6.3.6
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.3.3 to 6.3.6.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@6.3.6/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 6.3.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-20 21:25:32 +00:00
Joel Wetzell e10ae19992 add notes about module interface implementations 2026-05-19 22:27:46 -05:00
Joel Wetzell 4a873a32d4 Merge pull request #44 from jwetzell/dependabot/npm_and_yarn/astro-6.3.3
Bump astro from 6.3.1 to 6.3.3
2026-05-19 22:16:19 -05:00
Joel Wetzell 1c8b6f91b1 bump version 2026-05-19 22:16:02 -05:00
Joel Wetzell 2ec22b1f9b switch docs to publish on tag 2026-05-19 22:14:53 -05:00
Joel Wetzell 79892d1372 remove trace flag from CLI help 2026-05-19 22:13:17 -05:00
Joel Wetzell d49fa50eb7 add pubsub.publish docs and cleanout nats/mqtt specific 2026-05-19 22:13:05 -05:00
Joel Wetzell e76a6f1d06 rename router.output processor 2026-05-19 22:12:35 -05:00
dependabot[bot] c1cad438ba Bump astro from 6.3.1 to 6.3.3
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.3.1 to 6.3.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@6.3.3/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 6.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 02:19:44 +00:00
83 changed files with 3779 additions and 1413 deletions
-10
View File
@@ -1,10 +0,0 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+2 -2
View File
@@ -8,10 +8,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: ".nvmrc"
cache: "npm"
+4 -4
View File
@@ -2,16 +2,16 @@ name: Publish to docs site
on:
workflow_dispatch:
push:
branches:
- main
tags:
- "v*"
jobs:
build-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: ".nvmrc"
cache: "npm"
+1 -1
View File
@@ -1 +1 @@
v24.11.1
v24.19.0
+4 -25
View File
@@ -237,30 +237,9 @@ export default defineConfig({
],
},
{
label: "MQTT",
label: "Module",
collapsed: true,
items: [
{
label: "Message",
collapsed: true,
items: [
{ autogenerate: { directory: "processors/mqtt/message" } },
],
},
],
},
{
label: "NATS",
collapsed: true,
items: [
{
label: "Message",
collapsed: true,
items: [
{ autogenerate: { directory: "processors/nats/message" } },
],
},
],
items: [{ autogenerate: { directory: "processors/module" } }],
},
{
label: "OSC",
@@ -276,9 +255,9 @@ export default defineConfig({
],
},
{
label: "Router",
label: "Pub/Sub",
collapsed: true,
items: [{ autogenerate: { directory: "processors/router" } }],
items: [{ autogenerate: { directory: "processors/pubsub" } }],
},
{
label: "Script",
+1741 -997
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@showbridge/docs",
"type": "module",
"version": "0.1.2",
"version": "0.5.1",
"files": [
"dist"
],
@@ -14,10 +14,10 @@
"astro": "astro"
},
"devDependencies": {
"@astrojs/check": "0.9.9",
"@astrojs/starlight": "^0.39.2",
"astro": "^6.3.1",
"sharp": "0.34.5",
"@astrojs/check": "0.9.10",
"@astrojs/starlight": "0.41.7",
"astro": "7.2.3",
"sharp": "0.35.3",
"typescript": "6.0.3"
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
+28
View File
@@ -0,0 +1,28 @@
---
const {schema} = Astro.props
---
<ul>
{Object.keys(schema.properties).map((key)=>{
const propertySchema = schema.properties[key]
const isRequired = schema.required ? schema.required.includes(key) : false
var description = ""
if (!isRequired) {
if (propertySchema.default !== undefined) {
description += `(optional, default <code>${JSON.stringify(propertySchema.default)}</code>)`
} else {
description += "(optional)"
}
}
if (propertySchema.description) {
description += ` ${propertySchema.description}`
}
if (description !== "") {
description = ": " + description
}
return <li><strong>{key}</strong><Fragment set:html={description}/></li>
})}
</ul>
+23
View File
@@ -0,0 +1,23 @@
---
import moduleSchema from '../data/modules.schema.json';
import processorSchema from '../data/processors.schema.json';
import Params from './Params.astro';
const {type, id} = Astro.props;
var schema;
switch(type) {
case 'module':
schema = moduleSchema.items?.oneOf?.find(schema=>schema["$id"] === id);
break;
case 'processor':
schema = processorSchema.items?.oneOf?.find(schema=>schema["$id"] === id);
break;
}
---
{
schema !== undefined &&
<ul>
{schema.properties.type !== undefined && <li><strong>type</strong>:&nbsp;<code>{schema.properties.type.const}</code></li>}
{schema.properties.params !== undefined && <li><strong>params</strong>:<Params schema={schema.properties.params}/></li>}
</ul>
}
+1
View File
@@ -10,5 +10,6 @@ Processors are anything that create or manipulate messages. They are configured
A processor YAML block has the following properties
- **id**: a unique identifier for the processor (auto generated when using the web interface)
- **type**: the processor type
- **params**: optional map for processor configuration values. The valid values will depend on the processor type
+1
View File
@@ -8,6 +8,7 @@ Routes take the messages coming from a module and push them through a list of [p
## YAML Definition
- **id**: a unique identifier for the route (auto generated when using the web interface)
- **input**: the id of the [module](/concepts/modules) that will provide messages to this route
- **processors**: (optional) array of [processors](/concepts/processors) that will be called in order and the result of the previous will be fed to the next processor.
- an error in a processor step will result in the individual route being terminated
+8 -4
View File
@@ -23,13 +23,17 @@ modules:
host: 127.0.0.1
port: 53000
routes:
- input: sip
- id: sip-to-osc
input: sip
processors:
- type: osc.message.create
- id: create-osc-message
type: osc.message.create
params:
address: "/cue/{{.Payload.To}}/go"
- type: osc.message.encode
- type: router.output
- id: encode-osc-message
type: osc.message.encode
- id: send-osc
type: module.output
params:
module: udp
`;
+8 -4
View File
@@ -23,13 +23,17 @@ modules:
host: 127.0.0.1
port: 8000
routes:
- input: http
- id: http-to-osc
input: http
processors:
- type: osc.message.create # create OSC message
- id: create-osc-message
type: osc.message.create # create OSC message
params:
address: "{{.Payload.URL.Path}}" # template the address from the incoming message
- type: osc.message.encode # turn OSC message into bytes
- type: router.output # output to the udp module
- id: encode-osc-message
type: osc.message.encode # turn OSC message into bytes
- id: send-osc
type: module.output # output to the udp module
params:
module: udp
`;
+8 -8
View File
@@ -3,22 +3,22 @@ title: SQLite
sidebar:
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `db.sqlite` module can open/create SQLite databases
- **type**: `db.sqlite`
- **params**:
- **dsn**: the data source name, this can be a file path or the special `:memory:` name for an in-memory DB
<SchemaInfo type="module" id="db.sqlite"></SchemaInfo>
## Cap
This module implements the `DatabaseModule` interface.
### Example snippet
### Example
Opens an in-memory SQLite database
```yaml
- id: db
- id: myDatabase
type: db.sqlite
params:
dsn: ":memory:"
params:
dsn: ":memory:"
```
@@ -4,12 +4,11 @@ sidebar:
label: Server
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `http.server` module emits a message for every HTTP request that is made to the server.
- **type**: `http.server`
- **params**:
- **port**: TCP port to listen for HTTP requests on
<SchemaInfo type="module" id="http.server"></SchemaInfo>
### Example
+2 -3
View File
@@ -6,6 +6,7 @@ sidebar:
---
import { Aside } from "@astrojs/starlight/components";
import SchemaInfo from '../../../../components/SchemaInfo.astro';
<Aside type="caution">
This module is not currently included in the docker builds of
@@ -14,9 +15,7 @@ import { Aside } from "@astrojs/starlight/components";
The `midi.input` module connects to a midi device (or virtual device) and emits MIDI messages that come in on that port. This module does not support output.
- **type**: `midi.input`
- **params**:
- **port**: name of the MIDI port to connect to
<SchemaInfo type="module" id="midi.input"></SchemaInfo>
### Example
+2 -3
View File
@@ -6,6 +6,7 @@ sidebar:
---
import { Aside } from "@astrojs/starlight/components";
import SchemaInfo from '../../../../components/SchemaInfo.astro';
<Aside type="caution">
This module is not currently included in the docker builds of
@@ -14,9 +15,7 @@ import { Aside } from "@astrojs/starlight/components";
The `midi.output` module connects to a midi device (or virtual device) and allows sending MIDI messages out to that device. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `midi.output`
- **params**:
- **port**: name of the MIDI port to connect to
<SchemaInfo type="module" id="midi.output"></SchemaInfo>
### Example
+4 -5
View File
@@ -4,14 +4,13 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `mqtt.client` module connects to a MQTT broker and emits a message messages based on the subscribed topic it receives from the port. This module is also capable of publishing MQTT messages to the connected broker.
- **type**: `mqtt.client`
- **params**:
- **broker**: connection string for the mqtt broker (`mqtt://test.mosquitto.org:1833`)
- **topic** mqtt topic to subscribe to
- **clientId** client ID for this connection to the broker
<SchemaInfo type="module" id="mqtt.client"></SchemaInfo>
This module implements the `PubSubModule` interface.
### Example
+4 -4
View File
@@ -4,13 +4,13 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This module connects to a [NATS](https://nats.io/) server and subscribes to a subject.
- **type**: `nats.client`
- **params**:
- **url**: the URL of the NATS server to connect to (e.g. `nats://localhost:4222`)
- **subject**: the subject to subscribe to
<SchemaInfo type="module" id="nats.client"></SchemaInfo>
This module implements the `PubSubModule` interface.
### Example
+5 -7
View File
@@ -4,22 +4,20 @@ sidebar:
label: Server
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This module starts a NATS server that listens for incoming connections.
- **type**: `nats.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `4222`
<SchemaInfo type="module" id="nats.server"></SchemaInfo>
### Example
Start a local NATS server listening on port 5555
```yaml
- id: httpServer
type: http.server
- id: natsServer
type: nats.server
params:
ip: 127.0.0.1
port: 5555
port: 4222
```
+2 -10
View File
@@ -4,19 +4,11 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `net.tcp.client` module connects to TCP server and emits messages based on the data it receives from the server that it connects to. Messages are determined by "framing" techniques as TCP is a stream based protocol. The module will attempt to reconnect anytime the connection is closed.
- **type**: `net.tcp.client`
- **params**:
- **host**: IP or FQDN to connect to
- **port**: TCP port to connect to
- **framing**: how to chunk the TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
<SchemaInfo type="module" id="net.tcp.client"></SchemaInfo>
### Example
+2 -10
View File
@@ -4,19 +4,11 @@ sidebar:
label: Server
order: 2
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `net.tcp.server` module emits a message messages based on the data it receives from clients that connect to it. Messages are determined by "framing" techniques as TCP is a stream based protocol.
- **type**: `net.tcp.server`
- **params**:
- **ip**: (optional) IP address to bind the TCP server to, if left out it will listen on all interfaces
- **port**: TCP port to listen on
- **framing**: how to chunk of the incoming TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
<SchemaInfo type="module" id="net.tcp.server"></SchemaInfo>
### Example
+2 -4
View File
@@ -4,13 +4,11 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `net.udp.client` module sends messages to a the configured `host` and `port`. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `net.udp.client`
- **params**:
- **host**: IP or FQDN to send message to
- **port**: UDP port to send messages to
<SchemaInfo type="module" id="net.udp.client"></SchemaInfo>
### Example
@@ -4,11 +4,9 @@ sidebar:
label: Multicast
order: 3
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
- **type**: `net.udp.multicast`
- **params**:
- **ip**: the multicast IP address to listen to
- **port**: the port to listen on
<SchemaInfo type="module" id="net.udp.multicast"></SchemaInfo>
### Example
+2 -5
View File
@@ -4,14 +4,11 @@ sidebar:
label: Server
order: 2
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `net.udp.server` module emits a message for every incoming UDP datagram.
- **type**: `net.udp.server`
- **params**:
- **ip**: (optional) IP address to bind the UDP server to, if left out it will listen on all interfaces
- **port**: UDP port to listen on
- **bufferSize**: (optional) Size of the read buffer for incoming UDP datagrams, defaults to `2048`
<SchemaInfo type="module" id="net.udp.server"></SchemaInfo>
### Example
+3 -2
View File
@@ -4,11 +4,12 @@ sidebar:
label: Client
order: 1
---
- **type**: `psn.client`
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This module listens on the [PosiStageNet](http://posistage.net/) multicast address and emits tracker states anytime a new PSN message is received.
<SchemaInfo type="module" id="psn.client"></SchemaInfo>
### Example
```yaml
+4 -4
View File
@@ -4,13 +4,13 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `redis.client` module connects to a Redis server. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `redis.client`
- **params**:
- **host**: the Redis server host
- **port**: the Redis server port
<SchemaInfo type="module" id="redis.client"></SchemaInfo>
This module implements the `KeyValueModule` interface.
### Example
+2 -11
View File
@@ -4,7 +4,7 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
import { Aside } from "@astrojs/starlight/components";
<Aside type="caution">
@@ -14,16 +14,7 @@ import { Aside } from "@astrojs/starlight/components";
The `serial.client` module connects to a serial device and emits a message messages based on the data it receives from the port. Messages are determined by "framing" techniques as serial is a stream based protocol.
- **type**: `serial.client`
- **params**:
- **port**: serial port to connect to i.e `/dev/ttyS0`
- **baudRate** baud rate to use when connecting to serial port
- **framing**: how to chunk the serial stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
<SchemaInfo type="module" id="serial.client"></SchemaInfo>
### Example
+2 -6
View File
@@ -4,15 +4,11 @@ sidebar:
label: Server
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections and emits call events when a new call is received. This can be used with cheap SIP gateway devices to connect an analog phone line and do interesting things like [firing QLab cues with phone calls](/examples/dial-a-cue).
- **type**: `sip.call.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
<SchemaInfo type="module" id="sip.call.server"></SchemaInfo>
### Example
+2 -7
View File
@@ -4,16 +4,11 @@ sidebar:
label: Server
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections. When a call is received this module will emit events based on the touch tones (DTMF) received during the call. The event is sent out whenever the use presses the separator key defined in the params.
- **type**: `sip.dtmf.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
- **separator**: the DTMF separator key to know when to emit events
<SchemaInfo type="module" id="sip.dtmf.server"></SchemaInfo>
### Example
+2 -3
View File
@@ -3,12 +3,11 @@ title: Interval
sidebar:
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `time.interval` module emits a message at a specified duration. Sending any message to this module will reset the interval timer.
- **type**: `time.interval`
- **params**:
- **duration**: time in milliseconds between messsages
<SchemaInfo type="module" id="time.interval"/>
### Example snippet
+2 -3
View File
@@ -3,12 +3,11 @@ title: Timer
sidebar:
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `time.timer` module emits only one message after a specified duration. Sending any message to this module will reset the timer.
- **type**: `time.timer`
- **params**:
- **duration**: time in milliseconds to wait before emitting message
<SchemaInfo type="module" id="time.timer"></SchemaInfo>
### Example snippet
@@ -4,12 +4,11 @@ sidebar:
label: Client
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `websocket.client` module opens a websocket connection to the specified URL. This module supports both text and binary websocket messages.
- **type**: `websocket.client`
- **params**:
- **url**: the full url to connect to (`wss://echo.websocket.org`)
<SchemaInfo type="module" id="websocket.client"></SchemaInfo>
### Example
@@ -4,13 +4,16 @@ sidebar:
label: Decode
order: 1
---
- **type**: `artnet.packet.decode`
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will decode incoming bytes into an ArtNet packet. This processor will return an error if the message being processed is not an array of bytes.
<SchemaInfo type="processor" id="artnet.packet.decode"/>
### Example
```yaml
- type: artnet.packet.decode
- id: decode
type: artnet.packet.decode
```
@@ -4,12 +4,16 @@ sidebar:
label: Encode
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will encode an ArtNet packet into an array of bytes. This processor will return an error if the message being processed is not an ArtNet packet.
<SchemaInfo type="processor" id="artnet.packet.encode"/>
- **type**: `artnet.packet.encode`
This processor will encode an ArtNet packet into an array of bytes. This processor will return an error if the message being processed is not an ArtNet packet.
### Example
```yaml
- type: artnet.packet.encode
- id: encode
type: artnet.packet.encode
```
+6 -5
View File
@@ -4,20 +4,21 @@ sidebar:
label: Query
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `db.query` processor will issue a query to the specified module and return the result to the next processor in line.
The module must implement the `DatabaseModule` interface for this processor to work.
This processor will return an error if any of the required parameters are missing/invalid or if the module does not implement the `DatabaseModule` interface.
- **type**: `db.query`
- **params**:
- **module**: the id of the [module](/concepts/modules) to issue query to.
- **query**: the query to execute.
<SchemaInfo type="processor" id="db.query"/>
### Example
Issue a `SELECT` statement to a module with id `sqlite`.
```yaml
- type: db.query
- id: query
type: db.query
params:
module: sqlite
query: "SELECT * from users;"
+6 -3
View File
@@ -4,12 +4,15 @@ sidebar:
label: Log
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
- **type**: `debug.log`
This processor will log information about the message being processed to the console. This processor does not modify the message in any way and will pass the message through to the next processor in the chain.
This processor will log information about the message being processed to the console. This processor does not modify the message in any way and will pass the message through to the next processor in the chain.
<SchemaInfo type="processor" id="debug.log"/>
### Example
```yaml
- type: debug.log
- id: log
type: debug.log
```
@@ -4,13 +4,15 @@ sidebar:
label: On Change
order: 3
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will only pass messages through if the value of the message has changed since the last time a message was processed. This processor is useful for filtering out duplicate messages that may be emitted by a module or processor.
- **type**: `filter.change`
<SchemaInfo type="processor" id="filter.change"/>
### Example
```yaml
- type: filter.change
- id: filter
type: filter.change
```
+5 -5
View File
@@ -4,19 +4,19 @@ sidebar:
label: Expr
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `filter.expr` processor evaluates an [Expr expression](https://expr-lang.org/playground). If the expression evaluates to true then the payload is sent through. This processor will return an error if the expression fails to evaluate.
- **type**: `filter.expr`
- **params**:
- **expression**: [Expr expression](https://expr-lang.org/playground) to evaluate. The expression has access to the [wrapped payload](/concepts/payload).
<SchemaInfo type="processor" id="filter.expr"/>
### Example
Match a payload great than or equal to 0
```yaml
- type: filter.expr
- id: filter
type: filter.expr
params:
pattern: "Payload >= 0"
expression: "Payload >= 0"
```
+4 -4
View File
@@ -4,19 +4,19 @@ sidebar:
label: Regex
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `filter.regex` processor matches incoming string payload against a regular expression. If there is a match then the payload is sent through. This processor will return an error if the message being processed is not a string.
- **type**: `filter.regex`
- **params**:
- **pattern**: regex pattern to match against the incoming string
<SchemaInfo type="processor" id="filter.regex"/>
### Example
Match strings starting with `hello`
```yaml
- type: filter.regex
- id: filter
type: filter.regex
params:
pattern: "^hello.*"
```
+4 -4
View File
@@ -4,19 +4,19 @@ sidebar:
label: Parse
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `float.parse` processor takes a string and parses it as a float with the specified `base` and `bitSize`. This processor will return an error if the message being processed is not a string or if the string cannot be parsed into a float.
- **type**: `float.parse`
- **params**:
- **bitSize**: (optional) the bit size of the float to parse, defaults to 64
<SchemaInfo type="processor" id="float.parse"/>
### Example
This would parse the string payload as a 32 bit float and set the payload to that value.
```yaml
- type: float.parse
- id: parse
type: float.parse
params:
bitSize: 32
```
+4 -6
View File
@@ -4,21 +4,19 @@ sidebar:
label: Random
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `float.random` processor will set the payload to a random float between the specified `min` and `max` value.
- **type**: `float.random`
- **params**:
- **bitSize**: (optional) the bit size of the float to generate, defaults to 32
- **min**: the minimum value for the random float (inclusive).
- **max**: the maximum value for the random float (exclusive).
<SchemaInfo type="processor" id="float.random"/>
### Example
This would generate a random 64-bit float between 1.1 and 1.5 and set the payload to that value.
```yaml
- type: float.random
- id: random
type: float.random
params:
bitSize: 64
min: 1.0
+4 -12
View File
@@ -4,25 +4,17 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will create a new FreeD message with the specified parameters.
- **type**: `free.d.create`
- **params**:
- **id**: the ID to set for the FreeD message
- **pan**: the pan value to set for the FreeD message
- **tilt**: the tilt value to set for the FreeD message
- **roll**: the roll value to set for the FreeD message
- **posX**: the X position value to set for the FreeD message
- **posY**: the Y position value to set for the FreeD message
- **posZ**: the Z position value to set for the FreeD message
- **zoom**: the zoom value to set for the FreeD message
- **focus**: the focus value to set for the FreeD message
<SchemaInfo type="processor" id="freed.create"/>
### Example
```yaml
- type: free.d.create
- id: freed-message
type: freed.create
params:
id: "1"
pan: "45"
@@ -4,13 +4,15 @@ sidebar:
label: Decode
order: 3
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will decode incoming bytes into a FreeD message. This processor will return an error if the message being processed is not an array of bytes.
- **type**: `free.d.decode`
<SchemaInfo type="processor" id="freed.decode"/>
### Example
```yaml
- type: free.d.decode
- id: decode
type: freed.decode
```
@@ -4,13 +4,15 @@ sidebar:
label: Encode
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will encode a FreeD message into an array of bytes. This processor will return an error if the message being processed is not a FreeD message.
- **type**: `free.d.encode`
<SchemaInfo type="processor" id="freed.encode"/>
### Example
```yaml
- type: free.d.encode
- id: encode
type: freed.encode
```
@@ -4,20 +4,19 @@ sidebar:
label: Make Request
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This process will make an HTTP request to the specified URL using the specified method. The response will be passed through to the next processor in the chain. This processor will return an error if the request fails for any reason (e.g. network error, invalid URL, etc.).
- **type**: `http.request.do`
- **params**:
- **method**: the HTTP method to use for the request (e.g. `GET`, `POST`, `PUT`, etc.)
- **url**: the URL to send the request to
<SchemaInfo type="processor" id="http.request.do"/>
### Example
Make a GET request to `https://example.com`
```yaml
- type: http.request.do
- id: make-request
type: http.request.do
params:
method: GET
url: https://example.com
@@ -4,21 +4,20 @@ sidebar:
label: Create
order: 2
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create a new HTTP response with the specified status code and body template. The created response will be passed through to the next processor in the chain. If the response is subsequently sent to an HTTP server module using the [router.output](../router/output.md) processor, the status code and body template set by this processor will be used for the response sent to the client. This processor will return an error if there is an issue executing the body template.
This processor will create a new HTTP response with the specified status code and body template. The created response will be passed through to the next processor in the chain. If the response is subsequently sent to an HTTP server module using the [module.output](../module/output.md) processor, the status code and body template set by this processor will be used for the response sent to the client. This processor will return an error if there is an issue executing the body template.
- **type**: `http.response.create`
- **params**:
- **status**: the HTTP status code to set for the response (e.g. `200`, `404`, etc.)
- **body**: the body template to set for the response
<SchemaInfo type="processor" id="http.response.create"/>
### Example
This would create an HTTP response with a status code of `200` and a body of `OK`
```yaml
- type: http.response.create
- id: create-response
type: http.response.create
params:
status: 200
body: "OK"
bodyTemplate: "OK"
```
+4 -5
View File
@@ -4,20 +4,19 @@ sidebar:
label: Parse
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `int.parse` processor takes a string and parses it as an integer with the specified `base` and `bitSize`. This processor will return an error if the message being processed is not a string or if the string cannot be parsed into an integer.
- **type**: `int.parse`
- **params**:
- **base**: (optional) the base to use for parsing the integer, defaults to 10
- **bitSize**: (optional) the bit size of the integer to parse, defaults to 64
<SchemaInfo type="processor" id="int.parse"/>
### Example
This would parse the string payload as a 32 bit, base 10 integer and set the payload to that value.
```yaml
- type: int.parse
- id: parse
type: int.parse
params:
bitSize: 32
```
+4 -5
View File
@@ -3,20 +3,19 @@ title: Create Random Int
sidebar:
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `int.random` processor will set the payload to a random integer between the specified `min` and `max` value.
- **type**: `int.random`
- **params**:
- **min**: the minimum value for the random integer (inclusive).
- **max**: the maximum value for the random integer (inclusive).
<SchemaInfo type="processor" id="int.random"/>
### Example
This would generate a random integer between -127 and 127 and set the payload to that value.
```yaml
- type: int.random
- id: random
type: int.random
params:
min: -127
max: 127
+4 -7
View File
@@ -4,22 +4,19 @@ sidebar:
label: Scale
order: 3
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will scale an integer value from one range to another. This processor will return an error if the message being processed is not an integer or if the parameters are not valid (e.g. if `inMin` is greater than or equal to `inMax`, etc.).
- **type**: `int.scale`
- **params**:
- **inMin**: the minimum value of the input range
- **inMax**: the maximum value of the input range
- **outMin**: the minimum value of the output range
- **outMax**: the maximum value of the output range
<SchemaInfo type="processor" id="int.scale"/>
### Example
Scale an integer value from the range 0-255 to the range 0-100
```yaml
- type: int.scale
- id: scale
type: int.scale
params:
inMin: 0
inMax: 255
+4 -2
View File
@@ -4,13 +4,15 @@ sidebar:
label: Decode
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
Convert an incoming byte array or raw string into a JSON object. This processor will return an error if the message being processed is not an array of bytes or a raw string, or if the bytes/string cannot be parsed as JSON.
- **type**: `json.decode`
<SchemaInfo type="processor" id="json.decode"/>
### Example
```yaml
- type: json.decode
- id: decode
type: json.decode
```
+4 -2
View File
@@ -4,13 +4,15 @@ sidebar:
label: Encode
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will encode an incoming object into a JSON byte array. This processor will return an error if the message being processed is not able to be serialized as JSON.
- **type**: `json.encode`
<SchemaInfo type="processor" id="json.encode"/>
### Example
```yaml
- type: json.encode
- id: encode
type: json.encode
```
+6 -6
View File
@@ -4,20 +4,20 @@ sidebar:
label: Get
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `kv.get` processor gets the value associated with a key from a compatible module. The output payload is the value if the key is found.
The `kv.get` processor gets the value associated with a key from a module that implements the `KeyValueModule` interface.
The output payload is the value if the key is found.
- **type**: `kv.get`
- **params**:
- **module**: id of the module
- **key**: the key to look up
<SchemaInfo type="processor" id="kv.get"/>
### Example
This will attempt to get the value for the `counter` key from the module with an id of `redis`
```yaml
- type: kv.get
- id: get
type: kv.get
params:
module: redis
key: counter
+6 -9
View File
@@ -4,23 +4,20 @@ sidebar:
label: Set
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `kv.set` processor sets the value associated with a key from a compatible module. The payload is unchanged so whatever is received by this payload is output unless any errors are encountered.
The `kv.set` processor sets the value of the configured key to the incoming payload using a module that implements the `KeyValueModule` interface. The payload is unchanged so whatever is received by this processor is output unless any errors are encountered.
- **type**: `kv.set`
- **params**:
- **module**: id of the module
- **key**: the key to look up
- **value**: the value to set
<SchemaInfo type="processor" id="kv.set"/>
### Example
This will attempt to set the key `hello` to `world` using the module with an id of `redis`
This will attempt to set the key `hello` using the module with an id of `redis`
```yaml
- type: kv.set
- id: set
type: kv.set
params:
module: redis
key: hello
value: world
```
@@ -4,19 +4,17 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create a MIDI Control Change message with the specified channel, control number, and control value.
- **type**: `midi.control_change.create`
- **params**:
- **channel**: the MIDI channel
- **control**: the control number
- **value**: the control value
<SchemaInfo type="processor" id="midi.control_change.create"/>
### Example
```yaml
- type: midi.control_change.create
- id: create
type: midi.control_change.create
params:
channel: "1"
control: "64"
@@ -4,13 +4,15 @@ sidebar:
label: Decode
order: 3
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will decode incoming bytes into a MIDI message. This processor will return an error if the message being processed is not an array of bytes.
- **type**: `midi.message.decode`
<SchemaInfo type="processor" id="midi.message.decode"/>
### Example
```yaml
- type: midi.message.decode
- id: decode
type: midi.message.decode
```
@@ -4,13 +4,15 @@ sidebar:
label: Encode
order: 2
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will encode a MIDI message into an array of bytes. This processor will return an error if the message being processed is not a MIDI message.
- **type**: `midi.message.encode`
<SchemaInfo type="processor" id="midi.message.encode"/>
### Example
```yaml
- type: midi.message.encode
- id: encode
type: midi.message.encode
```
@@ -4,13 +4,15 @@ sidebar:
label: Unpack
order: 4
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will unpack a MIDI message into its individual components. This processor will return an error if the message being processed is not a MIDI message.
- **type**: `midi.message.unpack`
<SchemaInfo type="processor" id="midi.message.unpack"/>
### Example
```yaml
- type: midi.message.unpack
- id: unpack
type: midi.message.unpack
```
@@ -1,22 +1,20 @@
---
title: Create MIDI Note On
title: Create MIDI Note Off
sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create a MIDI Note On message with the specified channel, note, and velocity.
This processor will create a MIDI Note Off message with the specified channel, note, and velocity.
- **type**: `midi.note_on.create`
- **params**:
- **channel**: the MIDI channel
- **note**: the note number
- **velocity**: the velocity
<SchemaInfo type="processor" id="midi.note_off.create"/>
### Example
```yaml
- type: midi.note_on.create
- id: create
type: midi.note_off.create
params:
channel: "1"
note: "60"
@@ -1,22 +1,20 @@
---
title: Create MIDI Note Off
title: Create MIDI Note On
sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create a MIDI Note Off message with the specified channel, note, and velocity.
This processor will create a MIDI Note On message with the specified channel, note, and velocity.
- **type**: `midi.note_off.create`
- **params**:
- **channel**: the MIDI channel
- **note**: the note number
- **velocity**: the velocity
<SchemaInfo type="processor" id="midi.note_on.create"/>
### Example
```yaml
- type: midi.note_off.create
- id: create
type: midi.note_on.create
params:
channel: "1"
note: "60"
@@ -4,18 +4,17 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create a MIDI Program Change message with the specified channel and program number.
- **type**: `midi.program_change.create`
- **params**:
- **channel**: the MIDI channel
- **program**: the program number
<SchemaInfo type="processor" id="midi.program_change.create"/>
### Example
```yaml
- type: midi.program_change.create
- id: create
type: midi.program_change.create
params:
channel: "1"
program: "10"
@@ -0,0 +1,22 @@
---
title: Output to module
sidebar:
label: Output
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `module.output` processor takes any payload and outputs to the specified module.
<SchemaInfo type="processor" id="module.output"/>
### Example
Output whatever payload comes through this processor to the `osc-out` module.
```yaml
- id: output
type: module.output
params:
module: osc-out
```
@@ -1,25 +0,0 @@
---
title: Create MQTT Message
sidebar:
order: 1
---
This processor will create an MQTT message from the provided parameters. This processor will return an error if any of the required parameters are missing or if the parameters are of the wrong type.
- **type**: `mqtt.message.create`
- **params**:
- **topic**: the topic to publish the message to.
- **qos**: the QoS level of the message.
- **retained**: whether the message should be retained by the broker.
- **payload**: the payload of the message. This can be a string or a byte array.
### Example
```yaml
- type: mqtt.message.create
params:
topic: "test/topic"
qos: 1
retained: false
payload: "Hello, World!"
```
@@ -1,22 +0,0 @@
---
title: Create NATS Message
sidebar:
label: Create
order: 1
---
This processor will create a NATS message from the provided parameters. This processor will return an error if any of the required parameters are missing or if the parameters are of the wrong type.
- **type**: `nats.message.create`
- **params**:
- **subject**: the subject to publish the message to.
- **payload**: the payload of the message.
### Example
```yaml
- type: nats.message.create
params:
subject: "events"
payload: "Hello, World!"
```
@@ -4,21 +4,19 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
This processor will create an OSC message from the provided parameters. This processor will return an error if any of the required parameters are missing or if the parameters are of the wrong type. The address parameter is required, while the args and types parameters are optional. However, if args are provided, then types must also be provided and must match the amount of args provided.
- **type**: `osc.message.create`
- **params**:
- **address**: the address of the OSC message.
- **args**: (optional) array of string templates for each argument.
- **types**: (optional) a single string with the of each arg in order. This is required if args are provided.
<SchemaInfo type="processor" id="osc.message.create"/>
### Example
Create an OSC message with the address `/test/message` and two integer arguments from the payload of the message being processed.
```yaml
- type: osc.message.create
- id: create
type: osc.message.create
params:
address: "/test/message"
args: ["{{.Payload[0]}}", "{{.Payload[1]}}"]
@@ -4,13 +4,15 @@ sidebar:
label: Decode
order: 3
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `osc.message.decode` processor takes a array of bytes and turn it into OSC message if it can be. This processor will return an error if the bytes cannot be parsed as an OSC message
- **type**: `osc.message.decode`
<SchemaInfo type="processor" id="osc.message.decode"/>
### Example
```yaml
- type: osc.message.encode
- id: decode
type: osc.message.decode
```
@@ -4,13 +4,15 @@ sidebar:
label: Encode
order: 2
---
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
The `osc.message.encode` processor takes an OSC message and turns it into an array of bytes. This processor will return an error if the OSC message cannot be turned into bytes.
- **type**: `osc.message.encode`
<SchemaInfo type="processor" id="osc.message.encode"/>
### Example
```yaml
- type: osc.message.encode
- id: encode
type: osc.message.encode
```
@@ -0,0 +1,23 @@
---
title: Publish to Pub/Sub
sidebar:
label: Publish
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will publish the incoming payload to a module that implements the `PubSubModule` interface.
This processor will return an error if any of the required parameters are missing or if the parameters are of the wrong type.
The payload is unchanged so whatever is received by this payload is output unless any errors are encountered.
<SchemaInfo type="processor" id="pubsub.publish"/>
### Example
```yaml
- id: publish
type: pubsub.publish
params:
module: mqtt-out
topic: "test"
```
@@ -1,22 +0,0 @@
---
title: Output from Router
sidebar:
label: Output
order: 1
---
The `router.output` processor takes any payload and outputs to the specified module.
- **type**: `router.output`
- **params**:
- **module**: the id of the [module](/concepts/modules) to output to.
### Example
Output to the `osc-out` module.
```yaml
- type: router.output
params:
module: osc-out
```
+4 -4
View File
@@ -4,19 +4,19 @@ sidebar:
label: Expr
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The processor will execute the provided Expr expression and return the result as the new payload. This processor will return an error if the expression cannot be executed or if there is an error during execution. The expression will have access to the [wrapped payload](/concepts/payloads).
- **type**: `script.expr`
- **params**:
- **expression**: the Expr expressiont to execute.
<SchemaInfo type="processor" id="script.expr"/>
### Example
This example will add 1 to the wrapped payload.
```yaml
- type: script.expr
- id: expr
type: script.expr
params:
expression: "Payload + 1"
```
+4 -4
View File
@@ -4,6 +4,7 @@ sidebar:
label: JavaScript
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `script.js` processor takes in any payload type and executes a JavaScript function that is able to process the payload. The end value of `payload` will be returned as the output of the processor.
@@ -11,16 +12,15 @@ Ending with a `payload` value of `undefined` is treated the same as any other pr
This run your JavaScript program in a [sandboxed environment](https://gitlab.com/cznic/quickjs). It currently support the [ES2023](https://tc39.es/ecma262/2023/) specification.
- **type**: `script.js`
- **params**:
- **program**: The JavaScript program to run. The payload is available as a global variable called `payload`.
<SchemaInfo type="processor" id="script.js"/>
### Example
Replace all occurrences of `|` with `,` in the payload
```yaml
- type: script.js
- id: javascript
type: script.js
params:
program: |
payload = payload.replaceAll('|',',');
+4 -6
View File
@@ -4,21 +4,19 @@ sidebar:
label: WASM
order: 3
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
This processor will load and execute a WASM plugin using the [Extism](https://extism.org/) runtime. The processor will execute the specified function in the WASM plugin and return the result as the new payload. This processor will return an error if the plugin cannot be loaded, if the function cannot be executed, or if there is an error during execution. The incoming payload will be passed as the argument to the WASM function. If the plugin is successfully executed, the result of the function will be returned as the new payload.
- **type**: `script.wasm`
- **params**:
- **path**: the path to the WASM plugin to load.
- **function**: (optional) the function to execute in the WASM plugin defaults to `process`
- **enableWasi**: (optional) whether to enable WASI for the plugin defaults to `false`
<SchemaInfo type="processor" id="script.wasm"/>
### Example
This example will load the plugin at `./test.wasm` and execute the `test` function
```yaml
- type: script.wasm
- id: wasm
type: script.wasm
params:
path: "./test.wasm"
function: "test"
@@ -4,21 +4,19 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../../components/SchemaInfo.astro';
This processor will create a SIP response message with an audio file as the payload. If this message is output to a SIP module using the [router.output](/processors/router/output) processor, then the SIP module will send the response to the caller and play the audio file included in the response.
This processor will create a SIP response message with an audio file as the payload. If this message is output to a SIP module using the [module.output](/processors/module/output) processor, then the SIP module will send the response to the caller and play the audio file included in the response.
- **type**: `sip.response.audio.create`
- **params**:
- **preWait**: the amount of time in milliseconds to wait before sending the response
- **audioFile**: the path to the audio file to include in the response
- **postWait**: the amount of time in milliseconds to wait after sending the response
<SchemaInfo type="processor" id="sip.response.audio.create"/>
### Example
This example will create a SIP response that will wait 1 second then play `response.wav` then wait another second before completing the response.
```yaml
- type: sip.response.audio.create
- id: create-audio-response
type: sip.response.audio.create
params:
preWait: 1000
audioFile: "response.wav"
@@ -4,21 +4,19 @@ sidebar:
label: Create
order: 1
---
import SchemaInfo from '../../../../../../components/SchemaInfo.astro';
This processor will create a SIP DTMF response from the provided parameters. If this message is output to a SIP module using the [router.output](/processors/router/output) processor, then the SIP module will send the response to the caller and play the DTMF tones specified.
This processor will create a SIP DTMF response from the provided parameters. If this message is output to a SIP module using the [module.output](/processors/module/output) processor, then the SIP module will send the response to the caller and play the DTMF tones specified.
- **type**: `sip.response.dtmf.create`
- **params**:
- **preWait**: the amount of time in milliseconds to wait before sending the response
- **digits**: the DTMF digits to include in the response
- **postWait**: the amount of time in milliseconds to wait after sending the response
<SchemaInfo type="processor" id="sip.response.dtmf.create"/>
### Example
This example will create a SIP response that will wait 1 second then play the DTMF digits "1234" then wait another second before completing the response.
```yaml
- type: sip.response.dtmf.create
- id: create-dtmf-response
type: sip.response.dtmf.create
params:
preWait: 1000
digits: "1234"
@@ -4,19 +4,19 @@ sidebar:
label: Create
order: 3
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `string.create` processor creates a string based on the provided template. This processor will return an error if there is an issue executing the template. The template property is just a [Go template](https://pkg.go.dev/text/template) that will be evaluated with the incoming message provided as an environment.
- **type**: `string.create`
- **params**:
- **template**: string template that will have the incoming message as the context
<SchemaInfo type="processor" id="string.create"/>
### Example
This would create a string using the `Address` property of the incoming message like and OSC message
```yaml
- type: string.create
- id: create
type: string.create
params:
template: "{{.Address}}
```
@@ -4,13 +4,15 @@ sidebar:
label: Decode
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `string.decode` processor takes a array of bytes and turn it into string. This processor will return an error if the message being processed is not an array of bytes.
- **type**: `string.decode`
<SchemaInfo type="processor" id="string.decode"/>
### Example
```yaml
- type: string.decode
- id: decode
type: string.decode
```
@@ -4,13 +4,15 @@ sidebar:
label: Encode
order: 2
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `string.encode` processor takes a string and turns it into an array of bytes. This processor will return an error if the message being processed is not a string.
- **type**: `string.encode`
<SchemaInfo type="processor" id="string.encode"/>
### Example
```yaml
- type: string.encode
- id: encode
type: string.encode
```
+4 -4
View File
@@ -4,19 +4,19 @@ sidebar:
label: Split
order: 5
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `string.split` processor takes a string and turns it into an array of strings by splitting on `params.separator`. This processor will return an error if the message being processed is not a string.
- **type**: `string.split`
- **params**:
- **pattern**: string to split incoming string on
<SchemaInfo type="processor" id="string.split"/>
### Example
Split incoming string on `,` i.e `"one,two,three"` -> `["one","two","three"]`
```yaml
- type: string.split
- id: split
type: string.split
params:
separator: ","
```
+4 -4
View File
@@ -4,19 +4,19 @@ sidebar:
label: Sleep
order: 1
---
import SchemaInfo from '../../../../components/SchemaInfo.astro';
The `time.sleep` processor will sleep for the specified `duration` in milliseconds before passing the message to the next processor.
- **type**: `time.sleep`
- **params**:
- **duration**: the duration to sleep in milliseconds
<SchemaInfo type="processor" id="time.sleep"/>
### Example
This would sleep for 5 seconds before passing the message to the next processor.
```yaml
- type: time.sleep
- id: sleep
type: time.sleep
params:
duration: 5000
```
-1
View File
@@ -40,7 +40,6 @@ GLOBAL OPTIONS:
--config string path to config file (default: "./config.yaml") [$SHOWBRIDGE_CONFIG]
--log-level string set log level (default: "info") [$SHOWBRIDGE_LOG_LEVEL]
--log-format string log format to use (default: "text") [$SHOWBRIDGE_LOG_FORMAT]
--trace enable OpenTelemetry tracing [$SHOWBRIDGE_TRACE]
--help, -h show help
--version, -v print the version
```
+625
View File
@@ -0,0 +1,625 @@
{
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"port": {
"type": "string",
"title": "Port",
"description": "the name of the MIDI port to send messages to"
}
},
"required": ["port"],
"additionalProperties": false
},
"type": { "const": "midi.output" }
},
"$id": "midi.output",
"title": "MIDI Output",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"broker": {
"type": "string",
"title": "Broker URL",
"description": "the URL of the MQTT broker to connect to"
},
"clientId": {
"type": "string",
"title": "Client ID",
"description": "the client ID to use when connecting to the MQTT broker"
},
"qos": {
"type": "integer",
"title": "QoS",
"description": "the QoS level to use when publishing messages",
"default": 0,
"minimum": 0,
"maximum": 2
},
"retained": {
"type": "boolean",
"title": "Retained",
"description": "whether to set the retained flag when publishing messages",
"default": false
},
"topic": {
"type": "string",
"title": "Topic",
"description": "an MQTT topic to subscribe to"
}
},
"required": ["broker", "topic", "clientId"],
"additionalProperties": false
},
"type": { "const": "mqtt.client" }
},
"$id": "mqtt.client",
"title": "MQTT Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"title": "IP",
"description": "the IP address to bind the NATS server to",
"default": "0.0.0.0"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the NATS server to listen on",
"default": 4222,
"minimum": 1024,
"maximum": 65535
}
},
"additionalProperties": false
},
"type": { "const": "nats.server" }
},
"$id": "nats.server",
"title": "NATS Server",
"required": ["id", "type"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"framing": {
"type": "string",
"title": "Framing Method",
"description": "the method used to frame messages over the TCP connection",
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
},
"host": {
"type": "string",
"title": "Host",
"description": "the hostname or IP address of the TCP server to connect to"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port of the TCP server to connect to",
"minimum": 1,
"maximum": 65535
}
},
"required": ["host", "port", "framing"],
"additionalProperties": false
},
"type": { "const": "net.tcp.client" }
},
"$id": "net.tcp.client",
"title": "TCP Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"duration": {
"type": "integer",
"title": "Duration",
"description": "time in milliseconds between emitted events"
}
},
"required": ["duration"],
"additionalProperties": false
},
"type": { "const": "time.interval" }
},
"$id": "time.interval",
"title": "Interval",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"host": {
"type": "string",
"title": "Host",
"description": "the hostname or IP address of the UDP server to connect to"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port of the UDP server to connect to",
"minimum": 1,
"maximum": 65535
}
},
"required": ["host", "port"],
"additionalProperties": false
},
"type": { "const": "net.udp.client" }
},
"$id": "net.udp.client",
"title": "UDP Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"bufferSize": {
"type": "integer",
"title": "Buffer Size",
"description": "the size of the buffer for incoming UDP messages",
"default": 2048,
"minimum": 1,
"maximum": 65535
},
"ip": {
"type": "string",
"title": "IP",
"description": "the IP address to bind the UDP server to",
"default": "0.0.0.0"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the UDP server to listen on",
"minimum": 1024,
"maximum": 65535
}
},
"required": ["port"],
"additionalProperties": false
},
"type": { "const": "net.udp.server" }
},
"$id": "net.udp.server",
"title": "UDP Server",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"title": "Subject",
"description": "the subject to subscribe to"
},
"url": {
"type": "string",
"title": "NATS Server URL",
"description": "the URL of the NATS server to connect to"
}
},
"required": ["url", "subject"],
"additionalProperties": false
},
"type": { "const": "nats.client" }
},
"$id": "nats.client",
"title": "NATS Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"host": {
"type": "string",
"title": "Host",
"description": "the hostname or IP address of the Redis server to connect to"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port to use when connecting to the Redis server",
"minimum": 1,
"maximum": 65535
}
},
"required": ["host", "port"],
"additionalProperties": false
},
"type": { "const": "redis.client" }
},
"$id": "redis.client",
"title": "Redis Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"title": "IP",
"description": "the IP address to bind the SIP server to",
"default": "0.0.0.0"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the SIP server to listen on",
"default": 5060,
"minimum": 1024,
"maximum": 65535
},
"transport": {
"type": "string",
"title": "Transport",
"description": "the transport protocol to use for the SIP server",
"default": "udp",
"enum": ["udp", "tcp", "ws", "udp4", "tcp4"]
},
"userAgent": {
"type": "string",
"title": "User Agent",
"description": "the user agent string to use",
"default": "showbridge"
}
},
"additionalProperties": false
},
"type": { "const": "sip.call.server" }
},
"$id": "sip.call.server",
"title": "SIP Call Server",
"required": ["id", "type"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"framing": {
"type": "string",
"title": "Framing Method",
"description": "the method used to frame messages over the TCP connection",
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
},
"ip": {
"type": "string",
"title": "IP",
"description": "the IP address to bind the TCP server to",
"default": "0.0.0.0"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the TCP server to listen on",
"minimum": 1024,
"maximum": 65535
}
},
"required": ["port", "framing"],
"additionalProperties": false
},
"type": { "const": "net.tcp.server" }
},
"$id": "net.tcp.server",
"title": "TCP Server",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"url": {
"type": "string",
"title": "URL",
"description": "the URL of the WebSocket server to connect"
}
},
"required": ["url"],
"additionalProperties": false
},
"type": { "const": "websocket.client" }
},
"$id": "websocket.client",
"title": "WebSocket Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"port": {
"type": "string",
"title": "Port",
"description": "the name of the MIDI port to listen to"
}
},
"required": ["port"],
"additionalProperties": false
},
"type": { "const": "midi.input" }
},
"$id": "midi.input",
"title": "MIDI Input",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"type": { "const": "psn.client" }
},
"$id": "psn.client",
"title": "PosiStageNet Client",
"required": ["id", "type"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"baudRate": {
"type": "integer",
"title": "Baud Rate",
"description": "the baud rate to use when connecting to the serial port"
},
"framing": {
"type": "string",
"title": "Framing Method",
"description": "the method to use for framing messages on the serial port",
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
},
"port": {
"type": "string",
"title": "Port",
"description": "the name of the serial port to connect to"
}
},
"required": ["port", "baudRate", "framing"],
"additionalProperties": false
},
"type": { "const": "serial.client" }
},
"$id": "serial.client",
"title": "Serial Client",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"duration": {
"type": "integer",
"title": "Duration",
"description": "time in milliseconds before the timer fires"
}
},
"required": ["duration"],
"additionalProperties": false
},
"type": { "const": "time.timer" }
},
"$id": "time.timer",
"title": "Timer",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the HTTP server to listen on",
"minimum": 1024,
"maximum": 65535
}
},
"required": ["port"],
"additionalProperties": false
},
"type": { "const": "http.server" }
},
"$id": "http.server",
"title": "HTTP Server",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"title": "IP",
"description": "the IP address to bind the SIP server to",
"default": "0.0.0.0"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port for the SIP server to listen on",
"default": 5060,
"minimum": 1024,
"maximum": 65535
},
"separator": {
"type": "string",
"title": "DTMF Separator",
"description": "the DTMF character to use as a separator between DTMF digit groups",
"minLength": 1,
"maxLength": 1
},
"transport": {
"type": "string",
"title": "Transport",
"description": "the transport protocol to use for the SIP server",
"default": "udp",
"enum": ["udp", "tcp", "ws", "udp4", "tcp4"]
},
"userAgent": {
"type": "string",
"title": "User Agent",
"description": "the user agent string to use",
"default": "showbridge"
}
},
"required": ["separator"],
"additionalProperties": false
},
"type": { "const": "sip.dtmf.server" }
},
"$id": "sip.dtmf.server",
"title": "SIP DTMF Server",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"title": "IP",
"description": "the multicast address to listen on"
},
"port": {
"type": "integer",
"title": "Port",
"description": "the port to listen on",
"minimum": 1024,
"maximum": 65535
}
},
"required": ["ip", "port"],
"additionalProperties": false
},
"type": { "const": "net.udp.multicast" }
},
"$id": "net.udp.multicast",
"title": "UDP Multicast",
"required": ["id", "type", "params"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"id": { "type": "string", "minLength": 1 },
"params": {
"type": "object",
"properties": {
"dsn": {
"type": "string",
"title": "Data Source Name",
"description": "the data source name (DSN) for the SQLite database",
"minLength": 1
}
},
"required": ["dsn"],
"additionalProperties": false
},
"type": { "const": "db.sqlite" }
},
"$id": "db.sqlite",
"title": "SQLite Database",
"required": ["id", "type", "params"],
"additionalProperties": false
}
]
},
"$id": "https://showbridge.io/modules.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Modules",
"description": "module configurations",
"default": []
}
File diff suppressed because it is too large Load Diff