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.