light_mode
dark_mode

Plug-Ins

Plug-Ins provide additional functionality to the core system of Boomack. A plug-in can provide:

See Plug-In on the concepts page for more details.

Overview ↑

This page lists all core and official plug-ins with its features and supported display options.

Text Transformations ↑

ID Plug-In Description
plain Text Default renderer for plain text
uppercase Text Like plain, but converts the text into upper case
lowercase Text Like plain, but converts the text into lower case
highlight Syntax Highlight Syntax highlightig for source code with Prism
commonmark Markdown Conversion from Common Mark to HTML
markdown Markdown Default conversion from Markdown to HTML
csv-table CSV Converts delimited text into an HTML table
vega Vega (Lite) Plot Display a Vega visualization
vega-lite Vega (Lite) Plot Display a Vega Lite visualization
mermaid Mermaid Chart Displays Mermaid graphs
leaflet Leaflet Map Displays an OpenStreetMap with markers

Renderers ↑

ID Plug-In Description
generic Generic Provide your own HTML template for rendering a resource URL
image Media Default renderer for images
audio Media Default renderer for audio
video Media Default renderer for video
pdf PDF Renders a PDF page

Action Types ↑

ID Plug-In Description
shell Shell Executes shell commands
udp UDP Sends an UDP v4 datagram
udp6 UDP Sends an UDP v6 datagram
tcp TCP Simple request and response exchange over TCP
http HTTP Calls an HTTP endpoint

Generic ↑

Plug-In ID: core-generic

Renderer generic ↑

Rendering a HTML template by replacing the string {{ url }} with the resource URL.

Display Options

Media ↑

Plug-In ID: core-media

Renderer image ↑

Render a simple <img /> tag with the URL in the src attribute.

The image renderer has no display options.

Renderer audio ↑

Render an <audio /> tag with the URL in the src attribute.

Display Options

Renderer video ↑

Rendering a <video /> tag with the URL in the src attribute.

Display Options

Media Types ↑

The plug-in does not actually provide any media types. But, it is hardcoded as fallback for the following media types:

Text ↑

Plug-In ID: core-text

Text Transformation plain ↑

Converting preformatted plain text into HTML wich preserves the whitespace.

Display Options

Text Transformation uppercase ↑

Like plain, but converting to all upper case.

Display Options

Text Transformation lowercase ↑

Like plain, but converting to all lower case.

Display Options

The following text colors are supported: red, orange, yellow, olive, green, teal, blue, violet, purple, pink, brown, grey, black. The actual color values are provided by the theme.

The following text sizes are supported: mini, tiny, small, medium, large, big, huge.

Media Types ↑

The plug-in does not actually provide any media types. But, it is hard-coded as fallback for the following media types:

Syntax Highlight ↑

Plug-In ID: core-highlight

Text Transformation highlight ↑

The default transformation for syntax highlighting source code.

Display Options

Media Types ↑

The plug-in aims to provide a media type for every language, supported by Prism.

'text/x-arduino': 'arduino', // .ino
'text/x-apache-config': 'apacheconf', // .conf
'text/x-applescript': 'applescript', // .appelscript
'text/x-asciidoc': 'asciidoc', // .adoc, .asciidoc
'text/x-aspnet': 'aspnet', // .aspx
'text/x-autohotkey': 'autohotkey', // .ahk
'text/x-autoit': 'autoit', // .au3
'application/x-sh': 'sh', // .sh
'text/x-basic': 'basic', // .bas
'application/x-bat': 'batch', // .bat, .cmd
'text/x-csharp': 'csharp', // .cs
'text/x-edn': 'clojure', // .edn
'text/x-c': 'c', // .c, .h
'text/x-cpp': 'cpp', // .cpp, .hpp
'text/x-cxx': 'clike', // .cc, .cxx, .hxx, .hh
'text/x-clojure': 'clojure', // .clj, .cljc, .cljx, .cljs
'text/x-cmake': 'cmake', // CMakeLists.txt
'text/x-cobol': 'cobol', // .cob, .cbl
'text/x-coffeescript': 'coffeescript', // .coffee, .litcoffee
'text/css': 'css', // .css
'text/x-d': 'd', // .d
'text/x-dart': 'dart', // .dart
'text/x-diff': 'diff', // .diff
'text/dns': 'dns-zone-file', // .zone
'text/x-dockerfile': 'dockerfile', // Dockerfile
'text/x-graphviz': 'gv', // .dot
'text/x-editorconfig': 'editorconfig', // ^.editorconfig
'text/x-ejs': 'ejs', // .ejs
'text/x-elixir': 'elixir', // .exs
'text/x-elm': 'elm', // .elm
'text/x-erb': 'erb', // .erb
'text/x-erlang': 'erlang', // .erl
'text/x-fsharp': 'fsharp', // .fs
'text/x-fortran': 'fortran', // .f90, .f95, .f03
'text/x-gcode': 'gcode', // .gcode
'text/x-gettext': 'gettext', // .po
'text/x-glsl': 'glsl', // .glsl
'text/x-go': 'go', // .go
'text/x-go-module': 'go-module', // go.mod
'text/x-gradle': 'gradle', // .gradle
'text/x-groovy': 'groovy', // .groovy
'text/x-haml': 'haml', // .haml
'text/x-handlebars': 'handlebars', // .hbs, .handlebars, .mustache
'text/x-haskell': 'haskell', // .hs
'text/x-hlsl': 'hlsl', // .hlsl
'text/x-ignorefile': 'ignore', // ^.gitignore, ^.npmignore, ^.hignore, ^.dockerignore
'text/x-ini': 'ini', // .ini
'text/x-j': 'j', // .j
'text/x-java': 'java', // .java
'text/javascript': 'js', // .js
'application/javascript': 'js',
'text/x-jinja2': 'jinja2', // .jinja2, .j2
'text/json': 'json',
'application/json': 'json', // .json
'text/json5': 'json5',
'text/x-json5': 'json5', // .json5
'application/json5': 'json5',
'application/x-json5': 'json5',
'text/jsonp': 'jsonp',
'text/x-jsonp': 'jsonp', // .jsonp
'application/jsonp': 'jsonp',
'application/x-jsonp': 'jsonp',
'text/x-julia': 'julia', // .jl
'text/x-kotlin': 'kotlin', // .kt, .kts
'text/x-tex': 'tex', // .tex
'text/x-less': 'less', // .less
'text/x-lisp': 'lisp', // .lsp
'text/x-lua': 'lua', // .lua
'text/x-makefile': 'makefile', // makefile
'application/x-makefile': 'makefile',
'text/x-matlab': 'matlab', // .m
'text/x-objectivec': 'objectivec', // .m
'text/x-pascal': 'pascal', // .pas
'text/x-perl': 'perl', // .pl
'text/x-php': 'php', // .php, .php4, .php5, .php7
'text/x-plantuml': 'plantuml', // .plantuml, .puml
'text/x-powershell': 'powershell', // .ps1, .ps1m
'text/x-prolog': 'prolog',
'text/x-java-properties': 'properties', // .properties
'text/x-proto': 'protobuf', // .proto
'text/x-python': 'python', // .py
'text/x-qsharp': 'qsharp', // .qs
'text/x-qml': 'qml', // .qml
'text/x-r': 'r', // .r
'text/x-racket': 'rkt', // .rkt
'text/x-razor': 'razor', // .cshtml
'text/x-jsx': 'jsx', // .jsx
'text/x-tsx': 'tsx', // .tsx
'text/x-restuctured-text': 'rest', // .rst
'text/x-ruby': 'ruby', // .rb
'text/x-rust': 'rust', // .rs
'text/x-sass': 'sass', // .sass
'text/x-scss': 'scss', // .scss
'text/x-scala': 'scala', // .scala
'text/x-scheme': 'scheme', // .scm
'text/x-smalltalk': 'smalltalk', // .st
'text/x-ms-vs-solution-file': 'solution-file', // .sln
'text/x-sparql': 'sparql', // .rq
'text/x-sql': 'sql', // .sql
'text/x-swift': 'swift', // .swift
'text/x-t4': 't4', // .t4
'text/x-tcl': 'tcl', // .tcl
'text/toml': 'toml',
'text/x-toml': 'toml', // .toml
'application/toml': 'toml',
'application/x-toml': 'toml',
'text/typescript': 'typescript',
'text/x-typescript': 'typescript', // .ts
'application/typescript': 'typescript',
'application/x-typescript': 'typescript',
'text/x-verilog': 'verilog', // .v, .sv, .svh
'text/x-vhdl': 'vhdl', // .vhdl
'text/x-visual-basic': 'vb', // .vb, .vba
'text/x-wasm': 'wasm', // .wasm
'text/xml': 'xml',  // .xml
'application/xml': 'xml',
'text/yaml': 'yaml',
'text/x-yaml': 'yaml', // .yaml, .yml
'application/yaml': 'yaml',
'application/x-yaml': 'yaml',

Markdown ↑

Plug-In ID: core-markdown

Text Transformation commonmark ↑

Converting Markdown (Commonmark dialect), into HTML — Using Commonmark, the reference implementation, for rendering the HTML.

The text transformation commonmark has no display options.

Text Transformation markdown ↑

Transforming Markdown with some extras, into HTML.

Using the Markdown it! library for rendering the HTML, and the Prism library for syntax highlighting in fenced code blocks.

Display Options

Media Types ↑

The plug-in provides the following media types:

CSV ↑

Plug-In ID: core-csv

Text Transformation csv-table ↑

Transform delimited text — CSV, TSV, etc. — into an HTML table.

Display Options

Media Types ↑

The plug-in provides the following media types:

Shell ↑

Plug-In ID: core-shell

Action Type shell ↑

Run a shell command or executable on the server.

Configuration

If the payload property is set to “args”, the payload of the action call is expected to be an array. If it is not an array but null or undefined, it is treated as an empty array. If it is neither an array nor null or undefined, it is wrapped inside an array with one cell.

Then, empty cells in the args array are completed with items from payload. Meaning, every null or undefined cell from the args array will be filled with the next value from the payload. If the payload has more items, then the args array empty cells, the remaining items from the payload are appended to the args array. If the args array has more empty cells, then the payload has items, they are filled with empty strings.

If the payload property is set to “stdin”, the payload is written to the STDIN of the child process.

If the payload property is set to “command”, the payload is used as command with whitespace-separated arguments, and executed in a shell. In this case the command property is ignored, and shell=false is ignored too.

If the payload property is set to anything else, the payload is discarded.

Result

A JSON map with the following properties:

Example

Given an action with the following definition:

YAML
JSON
type: shell
command: magick
args: ['my-image.png', '-resize', null, '-quality', null, 'result.jpg']
payload: args
{
  "type": "shell",
  "command": "magick",
  "args": [ "my-image.png", "-resize", null, "-quality", null, "result.jpg" ],
  "payload": "args"
}

And the following action input:

["720x480", "92"]

The executed command will look like:

magick my-image.png -resize 720x480 -quality 92 result.jpg

UDP ↑

Plug-In ID: core-udp

Action Type udp ↑

Sends an UDP v4 datagram.

Configuration

Action Type udp6 ↑

Sends an UDP v6 datagram.

Configuration

For both UDP action types, the following rules apply to the properties:

TCP ↑

Plug-In ID: core-tcp

Action Type tcp ↑

Opens a TCP connection, sends a request, receives a response, and closes the connection.

Configuration

The following rules apply to the properties:

Result

An UInt8Array with the response data.

HTTP ↑

Plug-In ID: core-http

Action Type http ↑

Calls an HTTP endpoint.

Configuration

Input

As payload of an action call, a map with the following properties is expected:

Output

The response to an action call is a map with the following properties:

Vega (Lite) Plot ↑

PlugIn ID: vega

Installation ↑

If your using the Windows MSI installer for Boomack, this plug-in is installed by default. You can however, deselect it in the setup dialog during the installation.

The Docker image also contains this plug-in.

If you are using npm for installation, you can install this plug-in with:

Shell / Command Line
npm i -g boomack-plugin-vega

Text Transformation vega ↑

Generate HTML with a Vega visualization.

Input

The input is expected to be valid JSON or YAML. It is interpreted as a Vega specification to render.

Display Options

Text Transformation vega-lite ↑

Generate HTML with a Vega Lite visualization.

Input

The input is expected to be valid JSON or YAML. It is interpreted as a Vega Lite specification to render.

Display Options

Renderer vega ↑

Generate HTML with a Vega visualization. Takes the Vega specification from display option vega.spec and inserts the resource URL in every data.[*].url with is null.

Input

The input is expected to be a data format, supported by Vega. In Vega 5 json, csv, tsv, dsv, and topojson are supported. The data format must be specified in the Vega specification in data.[*].format.type.

Display Options

Renderer vega-lite ↑

Generate HTML with a Vega Lite visualization. Taking the Vega Lite specification from display option vega.spec and inserting the resource URL in data.url.

Input

The input is expected to be a data format, supported by Vega Lite. In Vega Lite 5 json, csv, tsv, and dsv are supported. The data format must be specified in the Vega Lite specification in data.format.type.

Display Options

Media Types ↑

The plug-in provides the following media types:

Mermaid Chart ↑

Plug-In ID: mermaid

Installation ↑

If your using the Windows MSI installer for Boomack, this plug-in is installed by default. You can however, deselect it in the setup dialog during the installation.

The Docker image also contains this plug-in.

If you are using npm for installation, you can install this plug-in with:

Shell / Command Line
npm i -g boomack-plugin-mermaid

Text Transformation mermaid ↑

Generates HTML with a Mermaid diagram or chart.

Input

The input is expected to be the code for a Mermaid diagram.

Display Options

The text transformation mermaid has no display options.

Media Types ↑

Leaflet Map ↑

Plug-In ID: leaflet

Installation ↑

If your using the Windows MSI installer for Boomack, this plug-in is installed by default. You can however, deselect it in the setup dialog during the installation.

The Docker image also contains this plug-in.

If you are using npm for installation, you can install this plug-in with:

Shell / Command Line
npm i -g boomack-plugin-leaflet

Text Transformation leaflet ↑

Render a geographic map with markers, using the JavaScript library Leaflet. The default map source is OpenStreetMap.

Input

The input is expected to be a valid JSON or YAML map. The input map is merged with the map from the display options and interpreted in the way described below.

The properties from the input take precedence over the properties from the display options.

Display Options

Specification

The merged map from the input and the display options supports the following properties:

You can use either bounds, or center in combination with zoom.

Geo Position

A geo position is encoded with one of the following structures:

Point Marker

A point marker is a geo position, optionally with the following additional properties:

If type is set to "circle" all options of a Leaflet Circle are supported. If type is set to "rectangle" all properties of a Leaflet Polyline are supported.

Line Marker

A line marker is either an array of geo positions, or a map with the following properties:

Additionally all properties of a Leaflet Polyline are supported.

Area Marker

An area marker is either an array of geo positions, or a map with the following properties:

Additionally all properties of a Leaflet Polygon are supported.

Minimal Example

To display just a map with a marker at a certain location, you can use the following Boomack CLI command:

Example

To prepare a view with a marked area and then display an additional point marker, you can use the following recipe.

display-options.yaml

leaflet:
  areas:
    - vertices:
        - [51.509921, -0.118124]
        - [51.511095, -0.112621]
        - [51.510988, -0.104382]
        - [51.50709, -0.104382]
        - [51.507196, -0.107219]
        - [51.504952, -0.113659]
      stroke: false
      color: white
      fillOpacity: 0.75
      popup: A section of the Thames

my-marker.yaml

marker:
  - lat: 51.50549
    lon: -0.07537
    title: The Tower Bridge
    popup:
      content: <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Tower_Bridge_dawn.jpg/450px-Tower_Bridge_dawn.jpg"/>
      minWidth: 320

With these two files in current working directory, you can run the following Boomack CLI command:

Shell / Command Line
boom -t application/x-leaflet -f my-marker.yaml -o display-options.yaml

The result is a map with a part of the thames and the two markers in view.

Leaflet Example

Media Types ↑

The plug-in provides the following media types:

PDF ↑

Plug-In ID: pdf

Installation ↑

If your using the Windows MSI installer for Boomack, this plug-in is installed by default. You can however, deselect it in the setup dialog during the installation.

The Docker image also contains this plug-in.

If you are using npm for installation, you can install this plug-in with:

Shell / Command Line
npm i -g boomack-plugin-pdf

Renderer pdf ↑

Render a single PDF page from a PDF document, using the JavaScript library PDF.js.

Display Options

Hint: A PDF page has a numeric number, always starting with 1. But it can have an additionally string as label: E. g. a roman number for a page of the forword, like “IIX”. To distinguish these two alternatives of identifying a page, the properties pageNo and pageLabel are supported.

Media Types ↑

The plug-in provides the following media types:

MQTT ↑

Plug-In ID: mqtt

Installation ↑

If your using the Windows MSI installer for Boomack, this plug-in is installed by default. You can however, deselect it in the setup dialog during the installation.

The Docker image also contains this plug-in.

If you are using npm for installation, you can install this plug-in with:

Shell / Command Line
npm i -g boomack-plugin-mqtt

Action Type mqtt ↑

Sends an MQTT message.

Configuration

Input

The payload of an action call is expected to be either an object with the following properties, a string, or a Buffer / UInt8Array.

If no topic is specified, neither by the action configuration, nor by the action call, the topic boomack-plugin-mqtt is used.