From f9a68fc63731723963ffe246a279eb15ce2c8082 Mon Sep 17 00:00:00 2001 From: Neil Enns Date: Wed, 15 May 2024 09:56:40 -0700 Subject: [PATCH] Update readme with info Fixes #24 --- .markdownlint.jsonc | 4 + DEVELOPMENT.md | 19 + README.md | 36 +- docs/images/station-status.png | Bin 0 -> 21399 bytes docs/images/streamdeck-category.png | Bin 0 -> 9025 bytes docs/images/trackAudio.png | Bin 0 -> 8673 bytes package-lock.json | 571 ++++++++++++++++++++++++++++ package.json | 6 +- 8 files changed, 624 insertions(+), 12 deletions(-) create mode 100644 .markdownlint.jsonc create mode 100644 DEVELOPMENT.md create mode 100644 docs/images/station-status.png create mode 100644 docs/images/streamdeck-category.png create mode 100644 docs/images/trackAudio.png diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc new file mode 100644 index 0000000..8690332 --- /dev/null +++ b/.markdownlint.jsonc @@ -0,0 +1,4 @@ +{ + // Disable line-length rule + "MD013": false +} \ No newline at end of file diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..d700432 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,19 @@ +# Developing with this repo + +## Building + +1. Run `npm install` +2. Run `npm run build` + +The first time you do this on any machine you also need to do `npm run link` otherwise the compiled plugin won't be available to the Stream Deck. + +For active development use `npm run watch` instead of `npm run build`, this will auto-refresh the plugin when files change. + +## Packaging + +Run `npm run package`. Make sure `npm run build` was done first. + +## Debugging + +VSCode can debug using the `Attach to Plugin` profile. Select the appropriate node.js instance. Yes, there should be a better, more automatic, +way to do this. I'll figure it out someday. diff --git a/README.md b/README.md index 8de95f9..b055543 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,33 @@ -# TrackAudio buttons for Stream Deck +# TrackAudio buttons for StreamDeck -## Building +This StreamDeck plugin provides buttons to display the current status of Tx, Rx, and Xc buttons in +[TrackAudio](https://github.com/pierr3/TrackAudio). -1. Run `npm install` -2. Run `npm run build` +After installation the plugin actions are available under the TrackAudio category: -The first time you do this on any machine you also need to do `npm run link` otherwise the compiled plugin won't be available to the Stream Deck. +![Screenshot of the StreamDeck profile UI with the categories filtered to "track"](docs/images/streamdeck-category.png) -For active development use `npm run watch` instead of `npm run build`, this will auto-refresh the plugin when files change. +## Configuring a station status button -## Packaging +The station status button displays the current status of a single station's button in TrackAudio, including +whether communication is currently active. -Run `npm run package`. Make sure `npm run build` was done first. +![Screenshot of the LMT_GND station position configured in TrackAudio for receive (Rx)](docs/images/trackAudio.png) -## Debugging +For example, to display status of the Rx button for LMT_GND, as shown in the image above, configure the +station status button like this: -VSCode can debug using the `Attach to Plugin` profile. Select the appropriate node.js instance. Yes, there should be a better, more automatic, -way to do this. I'll figure it out someday. \ No newline at end of file +![Screenshot of a station status button configuration, with callsign set to LMT_GND, RX selected, and three custom images specified for the three states](docs/images/station-status.png) + +| Setting | Description | +| - | - | +| Callsign | The callsign for the station you want to display status for. Required. | +| Listen to | What status to display on the button, either Rx, Tx, or XC. Required. | +| Not listening | The image to display when the station is not currently active. Optional, defaults to black. | +| Listening | The image to display when the station is active. Optional, defaults to green. | +| Active comms | The image to display when a transmission is actively taking place. Optional, defaults to orange. | + +## Configuring a TrackAudio status button + +The TrackAudio status button shows the status of the connection between StreamDeck and TrackAudio. Simply +add the button to your profile and, optionally, configure an image for the disconnected and connected states. diff --git a/docs/images/station-status.png b/docs/images/station-status.png new file mode 100644 index 0000000000000000000000000000000000000000..11ca486b8759322b8215f0efe5c5845b0ffdfb2f GIT binary patch literal 21399 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 literal 0 HcmV?d00001 diff --git a/docs/images/streamdeck-category.png b/docs/images/streamdeck-category.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd15ea55ec27c0f6008b97e745c1010b6cd28b8 GIT binary patch literal 9025 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 GeEttE`CPC7 literal 0 HcmV?d00001 diff --git a/docs/images/trackAudio.png b/docs/images/trackAudio.png new file mode 100644 index 0000000000000000000000000000000000000000..b0cb68c8fe66e2ac5ebb87b8b4df7383a787907d GIT binary patch literal 8673 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 HEMflzDlvH` literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 3f8c2d1..0b0f3e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,8 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "globals": "^15.2.0", + "markdownlint": "^0.34.0", + "markdownlint-cli": "^0.40.0", "rollup": "^4.0.2", "tslib": "^2.6.2", "typescript": "^5.2.2", @@ -164,6 +166,50 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -257,6 +303,16 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "25.0.7", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", @@ -1050,6 +1106,15 @@ } } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1089,6 +1154,30 @@ "node": ">=6.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -1400,6 +1489,22 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1429,6 +1534,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -1590,6 +1707,15 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -1626,6 +1752,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1677,6 +1812,24 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1707,6 +1860,21 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -1729,6 +1897,15 @@ "node": ">= 0.8.0" } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1750,6 +1927,15 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/magic-string": { "version": "0.30.10", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", @@ -1759,6 +1945,137 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdownlint": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.34.0.tgz", + "integrity": "sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==", + "dev": true, + "dependencies": { + "markdown-it": "14.1.0", + "markdownlint-micromark": "0.1.9" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.40.0.tgz", + "integrity": "sha512-JXhI3dRQcaqwiFYpPz6VJ7aKYheD53GmTz9y4D/d0F1MbZDGOp9pqKlbOfUX/pHP/iAoeiE4wYRmk8/kjLakxA==", + "dev": true, + "dependencies": { + "commander": "~12.0.0", + "get-stdin": "~9.0.0", + "glob": "~10.3.12", + "ignore": "~5.3.1", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.2.1", + "jsonpointer": "5.0.1", + "markdownlint": "~0.34.0", + "minimatch": "~9.0.4", + "run-con": "~1.3.2", + "toml": "~3.0.0" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/markdownlint-cli/node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-cli/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/markdownlint-cli/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/markdownlint-micromark": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.9.tgz", + "integrity": "sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1793,6 +2110,24 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1906,6 +2241,22 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -1945,6 +2296,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2080,6 +2440,21 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2165,6 +2540,18 @@ "node": ">=8" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2199,6 +2586,71 @@ "source-map": "^0.6.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2211,6 +2663,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -2283,6 +2748,12 @@ "node": ">=8.0" } }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -2364,6 +2835,12 @@ } } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -2403,6 +2880,100 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 98dcaed..0d5003d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "watch": "rollup -c -w --watch.onEnd=\"streamdeck restart com.neil-enns.trackaudio\"", "pack": "streamdeck pack com.neil-enns.trackaudio.sdPlugin -o .", "link": "streamdeck link com.neil-enns.trackaudio.sdPlugin", - "lint": "eslint src --report-unused-disable-directives --max-warnings 0" + "lint": "npm run eslint && npm run markdownlint", + "eslint": "eslint src --report-unused-disable-directives --max-warnings 0", + "markdownlint": " markdownlint **/*.md -i node_modules/" }, "type": "module", "devDependencies": { @@ -20,6 +22,8 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "globals": "^15.2.0", + "markdownlint": "^0.34.0", + "markdownlint-cli": "^0.40.0", "rollup": "^4.0.2", "tslib": "^2.6.2", "typescript": "^5.2.2",