10 Commits

Author SHA1 Message Date
Joel Wetzell 814816696c bump version 2026-08-30 19:06:58 -05:00
Joel Wetzell 966ff8240e remove SIP documentation and update schemas 2026-08-30 19:06:09 -05:00
Joel Wetzell 8c8bffeb68 Merge pull request #84 from jwetzell/renovate/astro-monorepo
Update dependency astro to v7.2.9
2026-08-30 08:33:05 -05:00
renovate[bot] ddc722ed16 Update dependency astro to v7.2.9 2026-08-28 16:25:01 +00:00
Joel Wetzell a9bf28b7c6 Merge pull request #85 from jwetzell/renovate/astrojs-starlight-0.x
Update dependency @astrojs/starlight to v0.41.10
2026-08-28 11:24:01 -05:00
renovate[bot] f678b0d376 Update dependency @astrojs/starlight to v0.41.10 2026-08-28 14:56:27 +00:00
Joel Wetzell b2f6fc02a3 Merge pull request #82 from jwetzell/renovate/astro-monorepo
Update dependency astro to v7.2.8
2026-08-27 10:00:56 -05:00
Joel Wetzell 57a51c9fff Merge pull request #83 from jwetzell/renovate/node-24.x
Update Node.js to v24.20.0
2026-08-27 10:00:30 -05:00
renovate[bot] ec6f774f3d Update Node.js to v24.20.0 2026-08-26 23:32:24 +00:00
renovate[bot] 4d9c6b2af2 Update dependency astro to v7.2.8 2026-08-26 23:32:19 +00:00
12 changed files with 1653 additions and 1326 deletions
+1 -1
View File
@@ -1 +1 @@
v24.19.0
24.20.0
-50
View File
@@ -96,22 +96,6 @@ export default defineConfig({
collapsed: true,
items: [{ autogenerate: { directory: "modules/serial" } }],
},
{
label: "SIP",
collapsed: true,
items: [
{
label: "Call",
collapsed: true,
items: [{ autogenerate: { directory: "modules/sip/call" } }],
},
{
label: "DTMF",
collapsed: true,
items: [{ autogenerate: { directory: "modules/sip/dtmf" } }],
},
],
},
{
label: "WebSocket",
collapsed: true,
@@ -264,40 +248,6 @@ export default defineConfig({
collapsed: true,
items: [{ autogenerate: { directory: "processors/script" } }],
},
{
label: "SIP",
collapsed: true,
items: [
{
label: "Response",
collapsed: true,
items: [
{
label: "Audio",
collapsed: true,
items: [
{
autogenerate: {
directory: "processors/sip/response/audio",
},
},
],
},
{
label: "DTMF",
collapsed: true,
items: [
{
autogenerate: {
directory: "processors/sip/response/dtmf",
},
},
],
},
],
},
],
},
{
label: "String",
collapsed: true,
+17 -122
View File
@@ -1,16 +1,16 @@
{
"name": "@showbridge/docs",
"version": "0.5.1",
"version": "0.6.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@showbridge/docs",
"version": "0.5.1",
"version": "0.6.0",
"devDependencies": {
"@astrojs/check": "0.9.10",
"@astrojs/starlight": "0.41.9",
"astro": "7.2.7",
"@astrojs/starlight": "0.41.10",
"astro": "7.2.9",
"sharp": "0.35.4",
"typescript": "6.0.3"
}
@@ -617,9 +617,9 @@
}
},
"node_modules/@astrojs/starlight": {
"version": "0.41.9",
"resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.41.9.tgz",
"integrity": "sha512-c76+isiSQzJRRnkT7JqUqqM/2Rg+fKhtA08zRe06EJRgqsW4WEJ+MtySIOjXc59oO1aGbVZRbxiBfYp72zsVpw==",
"version": "0.41.10",
"resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.41.10.tgz",
"integrity": "sha512-xE+OO2zzJkHPzc+giuFj+1c0sYw3//goo31PEksguNTd3XpXvV7TaJ0TzQzBUSCxYtBwWjAPkJfqR2W4aMQdhQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3033,9 +3033,9 @@
}
},
"node_modules/astro": {
"version": "7.2.7",
"resolved": "https://registry.npmjs.org/astro/-/astro-7.2.7.tgz",
"integrity": "sha512-+XW7Z1x03hq/zV8tiEnvS8E7JYKo5iyYVPJFt5RhEj3dOE+zSwhVaUabcqNsEDVJcneQX2mqxo4fPgoSO+Jc2w==",
"version": "7.2.9",
"resolved": "https://registry.npmjs.org/astro/-/astro-7.2.9.tgz",
"integrity": "sha512-o5nZFo/bieF6rp4x9sQSLhI7GO7Bahpld38Y4LvX27nFoxNiuttjI+Hea81w5ksORLHgdPUlQpU9obPz5QRa8g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3058,7 +3058,7 @@
"dset": "^3.1.4",
"es-module-lexer": "^2.0.0",
"esbuild": "^0.28.0",
"find-process": "^2.1.1",
"find-proc": "0.1.0",
"flattie": "^1.1.1",
"fontace": "~0.4.1",
"get-tsconfig": "5.0.0-beta.4",
@@ -3106,7 +3106,7 @@
"url": "https://opencollective.com/astrodotbuild"
},
"optionalDependencies": {
"sharp": "^0.34.0 || ^0.35.0"
"sharp": "^0.35.4"
},
"peerDependencies": {
"@astrojs/markdown-remark": "7.2.4"
@@ -3227,39 +3227,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chalk/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/character-entities": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
@@ -3386,26 +3353,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"license": "MIT"
},
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -4062,29 +4009,14 @@
}
}
},
"node_modules/find-process": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/find-process/-/find-process-2.1.1.tgz",
"integrity": "sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "~4.1.2",
"commander": "^14.0.3",
"loglevel": "^1.9.2"
},
"bin": {
"find-process": "dist/cjs/bin/find-process.js"
}
},
"node_modules/find-process/node_modules/commander": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"node_modules/find-proc": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.1.0.tgz",
"integrity": "sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20"
"node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/flattie": {
@@ -4198,16 +4130,6 @@
"uncrypto": "^0.1.3"
}
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/hast-util-embedded": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz",
@@ -5134,20 +5056,6 @@
"url": "https://opencollective.com/parcel"
}
},
"node_modules/loglevel": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
"integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6.0"
},
"funding": {
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/loglevel"
}
},
"node_modules/longest-streak": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
@@ -7463,19 +7371,6 @@
"inline-style-parser": "0.2.7"
}
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/svgo": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz",
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@showbridge/docs",
"type": "module",
"version": "0.5.1",
"version": "0.6.0",
"files": [
"dist"
],
@@ -15,9 +15,9 @@
},
"devDependencies": {
"@astrojs/check": "0.9.10",
"@astrojs/starlight": "0.41.9",
"astro": "7.2.7",
"@astrojs/starlight": "0.41.10",
"astro": "7.2.9",
"sharp": "0.35.4",
"typescript": "7.0.2"
"typescript": "6.0.3"
}
}
}
-41
View File
@@ -1,41 +0,0 @@
---
title: SIP > OSC
sidebar:
order: 2
---
import { Code } from "@astrojs/starlight/components";
This config starts an SIP server listening on port `5060`. Any incoming call will result in a OSC message being sent to `127.0.0.1:53000` with the address set to [fire a QLab cue](https://qlab.app/docs/v5/scripting/osc-dictionary-v5/#/cue/{cue_number}/go) with the dialed number as the cue number. This was tested with a cheap SIP gateway like [this one](https://www.grandstream.com/products/gateways-and-atas/analog-telephone-adaptors/product/ht802).
export const example = `
api:
enabled: true
port: 8080
modules:
- id: sip
type: sip.call.server
params:
port: 5060
- id: udp
type: net.udp.client
params:
host: 127.0.0.1
port: 53000
routes:
- id: sip-to-osc
input: sip
processors:
- id: create-osc-message
type: osc.message.create
params:
address: "/cue/{{.Payload.To}}/go"
- id: encode-osc-message
type: osc.message.encode
- id: send-osc
type: module.output
params:
module: udp
`;
<Code code={example} title="config.yaml" lang="yaml" />
@@ -1,24 +0,0 @@
---
title: SIP Call Server
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).
<SchemaInfo type="module" id="sip.call.server"></SchemaInfo>
### Example
Start a UDP SIP server listening on port 5060
```yaml
- id: sipCallServer
type: sip.call.server
params:
ip: 127.0.0.1
port: 5060
transport: udp
```
@@ -1,25 +0,0 @@
---
title: SIP DTMF Server
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.
<SchemaInfo type="module" id="sip.dtmf.server"></SchemaInfo>
### Example
Start a UDP SIP server listening on port 5060 that will emit events whenever the user presses the `#` key on their phone during a call
```yaml
- id: sipDTMFServer
type: sip.dtmf.server
params:
ip: 127.0.0.1
port: 5060
transport: udp
separator: "#"
```
@@ -1,24 +0,0 @@
---
title: Create SIP Audio Response
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 [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.
<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
- id: create-audio-response
type: sip.response.audio.create
params:
preWait: 1000
audioFile: "response.wav"
postWait: 1000
```
@@ -1,24 +0,0 @@
---
title: Create SIP DTMF Response
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 [module.output](/processors/module/output) processor, then the SIP module will send the response to the caller and play the DTMF tones specified.
<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
- id: create-dtmf-response
type: sip.response.dtmf.create
params:
preWait: 1000
digits: "1234"
postWait: 1000
```
-3
View File
@@ -25,9 +25,6 @@ showbridge is a kind of re-imagining of [OSCulator](https://osculator.net/) take
- server
- [PosiStageNet](https://posistage.net/)
- client
- [SIP](https://datatracker.ietf.org/doc/html/rfc3261)
- call server
- [DTMF](https://en.wikipedia.org/wiki/DTMF_signaling) server
- MIDI
- input (not included in pre-built binaries yet)
- output (not included in pre-built binaries yet)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff