Compare commits

..
Author SHA1 Message Date
Björn Dalfors 7617430a3f fix regex 2024-05-18 21:42:25 +02:00
Björn Dalfors a346c48d3e refine sparkplug detection 2024-05-17 09:08:34 +02:00
Björn Dalfors 8a2c39ba8e fix: use sparkplugb decoder only for spBv1.0 topic 2024-05-15 15:24:30 +02:00
Thomas Nordquist 65b86ac5f6 chore: remove precondition 2024-05-11 21:55:11 +02:00
Thomas Nordquist 4ead740982 chore: allow manual update of website 2024-05-11 21:54:20 +02:00
Thomas Nordquist ddaf06b682 chore: remove precondition 2024-05-11 21:51:38 +02:00
Thomas Nordquist 9e18c4db4e chore: prevent new builds being uploaded without a release 2024-05-11 21:49:27 +02:00
Thomas Nordquist ee783f15c0 chore: move website update to separate release action 2024-05-11 21:44:28 +02:00
Thomas Nordquist 0c31843ed5 chore: reduce builds 2024-05-11 21:29:53 +02:00
Thomas Nordquist ffc93d20d8 chore: retry release beta 5 2024-05-11 21:17:47 +02:00
Thomas Nordquist 3c62da7e19 chore: only build macos dmg 2024-05-11 21:12:27 +02:00
Thomas Nordquist 6846dbbb28 chore: update website with new version 2024-05-11 21:10:57 +02:00
semantic-release-bot 270e3e3ead chore(release): 0.4.0-beta.5 [skip ci] 2024-05-11 15:47:26 +00:00
Thomas Nordquist 0d73b0f519 feat: test to trigger beta release 5 2024-05-11 17:46:23 +02:00
semantic-release-bot ee83022d19 chore(release): 0.4.0-beta.4 [skip ci] 2024-05-11 15:35:58 +00:00
Thomas Nordquist f27467ed97 fix: add macos 2024-05-11 17:34:48 +02:00
semantic-release-bot ddbf3d9f1f chore(release): 0.4.0-beta.3 [skip ci] 2024-05-11 14:19:25 +00:00
Thomas Nordquist 60bbbc54d7 chore: use GithubApp to bypass branch protection 2024-05-11 16:07:16 +02:00
Thomas Nordquist 538aa7dc29 chore: use custom token fo releases 2024-05-11 15:31:08 +02:00
Thomas Nordquist b37af291cc feat: skip package release until github and semantic-release are in sync 2024-05-11 14:42:17 +02:00
Thomas Nordquist 333a1bcabe fix: fix repository 2024-05-11 14:39:34 +02:00
10 changed files with 109 additions and 69 deletions
-42
View File
@@ -1,42 +0,0 @@
name: Build
on:
push:
branches:
- release
- beta
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
jobs:
platform_matrix:
strategy:
matrix:
build:
- os: ubuntu-latest
task: linux
- os: windows-latest
task: win
# - os: macos-latest
# task: mac
runs-on: ${{ matrix.build.os }}
steps:
- if: matrix.build.os == 'ubuntu-latest'
run: sudo snap install snapcraft --classic
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g yarn
- run: yarn
- run: npx semantic-release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: yarn build
- run: yarn prepare-release
# - run: yarn package ${{ matrix.build.task }}
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
+53
View File
@@ -0,0 +1,53 @@
name: Build
on:
push:
branches:
- release
- beta
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
jobs:
build:
strategy:
matrix:
build:
- os: ubuntu-latest
task: linux
- os: windows-latest
task: win
- os: macos-latest
task: mac
runs-on: ${{ matrix.build.os }}
steps:
- if: matrix.build.os == 'ubuntu-latest'
run: sudo snap install snapcraft --classic
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g yarn
- run: yarn
- id: create_token # get ReleaseBot access token
uses: tibdex/github-app-token@v2
with:
app_id: ${{ secrets.RELEASE_BOT_APP_ID }}
private_key: ${{ secrets.RELEASE_BOT_PRIVATE_KEY }}
- name: Semantic Release
uses: cycjimmy/semantic-release-action@v4
id: semantic # Need an `id` for output variables
env:
GITHUB_TOKEN: ${{ steps.create_token.outputs.token }}
- run: yarn build
if: steps.semantic.outputs.new_release_published == 'true'
- run: yarn prepare-release
if: steps.semantic.outputs.new_release_published == 'true'
- run: yarn package ${{ matrix.build.task }}
if: steps.semantic.outputs.new_release_published == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
+17
View File
@@ -0,0 +1,17 @@
name: Update Website
on: [release, workflow_dispatch]
jobs:
update-website:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: gh-pages
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run readme
- uses: stefanzweifel/git-auto-commit-action@v5
+1
View File
@@ -6,6 +6,7 @@
"prerelease": true "prerelease": true
} }
], ],
repositoryUrl: "git@github.com:thomasnordquist/MQTT-Explorer.git",
"plugins": [ "plugins": [
"@semantic-release/commit-analyzer", "@semantic-release/commit-analyzer",
"semantic-release-export-data", "semantic-release-export-data",
+4 -3
View File
@@ -9,7 +9,7 @@ const root = protobuf.parse(protocol).root
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload') export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
export const SparkplugDecoder = { export const SparkplugDecoder = {
decode(input: Buffer): Base64Message | undefined { decode(input: Buffer): Base64Message {
try { try {
const message = Base64Message.fromString( const message = Base64Message.fromString(
JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input)))) JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input))))
@@ -17,8 +17,9 @@ export const SparkplugDecoder = {
message.decoder = Decoder.SPARKPLUG message.decoder = Decoder.SPARKPLUG
return message return message
} catch { } catch {
// ignore const message = Base64Message.fromString("Failed to decode sparkplugb payload")
message.decoder = Decoder.NONE
return message
} }
return undefined
}, },
} }
+9 -1
View File
@@ -47,9 +47,17 @@ export class ConnectionManager {
buffer = buffer.slice(0, 20000) buffer = buffer.slice(0, 20000)
} }
let decoded_payload = null
// spell-checker: disable-next-line
if (topic.match(/^spBv1\.0\/[^/]+\/[ND](DATA|CMD|DEATH|BIRTH)\/[^/]+(\/[^/]+)?$/u)) {
decoded_payload = SparkplugDecoder.decode(buffer)
} else {
decoded_payload = Base64Message.fromBuffer(buffer)
}
backendEvents.emit(messageEvent, { backendEvents.emit(messageEvent, {
topic, topic,
payload: SparkplugDecoder.decode(buffer) ?? Base64Message.fromBuffer(buffer), payload: decoded_payload,
qos: packet.qos, qos: packet.qos,
retain: packet.retain, retain: packet.retain,
messageId: packet.messageId, messageId: packet.messageId,
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "MQTT-Explorer", "name": "MQTT-Explorer",
"version": "0.4.0-beta.2", "version": "0.4.0-beta.5",
"description": "Explore your message queues", "description": "Explore your message queues",
"main": "dist/src/electron.js", "main": "dist/src/electron.js",
"engines": { "engines": {
+24 -14
View File
@@ -7,12 +7,30 @@ const linuxAppImage: builder.CliOptions = {
x64: true, x64: true,
ia32: false, ia32: false,
armv7l: true, armv7l: true,
arm64: false, arm64: true,
projectDir: './build/clean', projectDir: './build/clean',
publish: 'always', publish: 'always',
} }
const linuxSnap: builder.CliOptions = { const linuxSnap: builder.CliOptions = {
x64: true,
ia32: false,
armv7l: false, // not supported to build on x64
arm64: false, // not supported to build on x64
projectDir: './build/clean',
publish: 'always',
}
const linuxDeb: builder.CliOptions = {
x64: true,
ia32: false,
armv7l: true,
arm64: true,
projectDir: './build/clean',
publish: 'always',
}
const winPortable: builder.CliOptions = {
x64: true, x64: true,
ia32: false, ia32: false,
armv7l: false, armv7l: false,
@@ -21,18 +39,9 @@ const linuxSnap: builder.CliOptions = {
publish: 'always', publish: 'always',
} }
const winPortable: builder.CliOptions = {
x64: true,
ia32: true,
armv7l: false,
arm64: false,
projectDir: './build/clean',
publish: 'always',
}
const winNsis: builder.CliOptions = { const winNsis: builder.CliOptions = {
x64: true, x64: true,
ia32: true, ia32: false,
armv7l: false, armv7l: false,
arm64: false, arm64: false,
projectDir: './build/clean', projectDir: './build/clean',
@@ -41,7 +50,7 @@ const winNsis: builder.CliOptions = {
const winAppx: builder.CliOptions = { const winAppx: builder.CliOptions = {
x64: true, x64: true,
ia32: true, ia32: false,
armv7l: false, armv7l: false,
arm64: false, arm64: false,
projectDir: './build/clean', projectDir: './build/clean',
@@ -69,11 +78,12 @@ async function executeBuild() {
case 'linux': case 'linux':
await buildWithOptions(linuxAppImage, { platform: 'linux', package: 'AppImage' }) await buildWithOptions(linuxAppImage, { platform: 'linux', package: 'AppImage' })
await buildWithOptions(linuxSnap, { platform: 'linux', package: 'snap' }) await buildWithOptions(linuxSnap, { platform: 'linux', package: 'snap' })
await buildWithOptions(linuxDeb, { platform: 'linux', package: 'deb' })
break break
case 'mac': case 'mac':
await buildWithOptions(mac, { platform: 'mac', package: 'dmg' }) await buildWithOptions(mac, { platform: 'mac', package: 'dmg' })
await buildWithOptions(mac, { platform: 'mac', package: 'mas' }) // await buildWithOptions(mac, { platform: 'mac', package: 'mas' })
await buildWithOptions(mac, { platform: 'mac', package: 'zip' }) // await buildWithOptions(mac, { platform: 'mac', package: 'zip' })
break break
default: default:
await buildWithOptions({ ...mac, projectDir: '' }, { platform: 'mac', package: 'mas-dev' }) await buildWithOptions({ ...mac, projectDir: '' }, { platform: 'mac', package: 'mas-dev' })
-8
View File
@@ -21,14 +21,6 @@ export function sleep(ms: number, required = false) {
export async function writeText(text: string, element: Locator, delay = 0) { export async function writeText(text: string, element: Locator, delay = 0) {
return element.fill(text) return element.fill(text)
if (fast) {
return element.fill(text)
}
for (const c of text.split('')) {
await element.press(c)
await sleep(delay)
}
} }
export async function deleteTextWithBackspaces(element: Locator, delay = 0, count = 0) { export async function deleteTextWithBackspaces(element: Locator, delay = 0, count = 0) {