Compare commits

...

26 Commits

Author SHA1 Message Date
Fabio Di Stasio 593173ddc7 chore(release): 1.3.0 2024-02-07 21:45:45 +01:00
Fabio Di Stasio b18d02f89d refactor: minor change 2024-02-07 21:45:24 +01:00
Fabio Di Stasio 489d3905bc
Merge pull request #25 from SebastianRuecker/master
feat: de-DE translation
2024-02-07 11:29:16 +01:00
Sebastian Rücker 38d0c8f2b5 feat: de-DE translation 2024-02-07 11:21:12 +01:00
Fabio Di Stasio e1ea91a7a2
Merge pull request #24 from alissonsantos50/master
New Translation: Português (Brasil)
2024-02-01 00:02:59 +01:00
Alisson Santos bb995317cc chore: remove trailing comma 2024-01-31 17:35:17 -03:00
Alisson Santos 6cb7452306 feat: pt-br translation 2024-01-31 17:32:15 -03:00
Fabio Di Stasio 1ac0d00080
Merge pull request #4 from Fabio286/dependabot/npm_and_yarn/electron/remote-2.0.9
chore(deps): bump @electron/remote from 2.0.8 to 2.0.9
2023-06-12 11:42:20 +02:00
Fabio Di Stasio 682e40aca8
Merge pull request #11 from Fabio286/dependabot/npm_and_yarn/vue-3.3.4
chore(deps): bump vue from 3.2.45 to 3.3.4
2023-06-12 11:40:30 +02:00
dependabot[bot] e1406278c1
chore(deps): bump vue from 3.2.45 to 3.3.4
Bumps [vue](https://github.com/vuejs/core) from 3.2.45 to 3.3.4.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.2.45...v3.3.4)

---
updated-dependencies:
- dependency-name: vue
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 17:59:35 +00:00
Fabio Di Stasio 57350571eb chore(release): 1.2.0 2023-05-26 09:09:28 +02:00
Fabio Di Stasio faf88a45a4 refactor: Github link 2023-05-26 09:06:00 +02:00
Fabio Di Stasio c1b3658482 refactor: minor translations change 2023-05-09 17:56:04 +02:00
Fabio Di Stasio 54818a1995 feat: italian translation 2023-04-18 17:59:11 +02:00
Fabio Di Stasio 991412cc84 chore: update README.md 2023-04-18 17:58:59 +02:00
Fabio Di Stasio 939f7212c2 chore(release): 1.1.0 2023-04-18 09:17:17 +02:00
Fabio Di Stasio ec320c79c0 feat: icons for message formats 2023-04-18 09:16:28 +02:00
dependabot[bot] 2f23f99ed5
chore(deps): bump @electron/remote from 2.0.8 to 2.0.9
Bumps [@electron/remote](https://github.com/electron/remote) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/electron/remote/releases)
- [Changelog](https://github.com/electron/remote/blob/main/.releaserc.json)
- [Commits](https://github.com/electron/remote/compare/v2.0.8...v2.0.9)

---
updated-dependencies:
- dependency-name: "@electron/remote"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 16:08:05 +00:00
Fabio Di Stasio 3f1ea87194 refactor: move to new material icons library 2023-04-17 18:02:15 +02:00
Fabio Di Stasio 8d5fbf600f ci: minor change in build scripts 2023-04-17 00:25:31 +02:00
Fabio Di Stasio c3c90d4cf9 ci: minor change in build scripts 2023-04-16 22:06:46 +02:00
Fabio Di Stasio b729f9e844 ci: minor change in build scripts 2023-04-16 12:48:11 +02:00
Fabio Di Stasio a61350ddec ci: minor change in build scripts 2023-04-16 12:47:26 +02:00
Fabio Di Stasio 7a43fc9639 chore(release): 1.0.1 2023-04-16 11:54:34 +02:00
Fabio Di Stasio e2b64c61a1 chore: minor changes in package.json 2023-04-16 11:53:59 +02:00
Fabio Di Stasio 55f29e6190 ci: snap ci config 2023-04-16 11:40:21 +02:00
27 changed files with 946 additions and 222 deletions

View File

@ -0,0 +1,32 @@
name: Create artifact [WINDOWS]
on:
workflow_dispatch: {}
jobs:
build:
runs-on: windows-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm i
- name: "Build"
run: npm run build
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: win-build
retention-days: 3
path: |
build
!build/*-unpacked
!build/.icon-ico

View File

@ -2,6 +2,30 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [1.3.0](https://github.com/Fabio286/mizar/compare/v1.2.0...v1.3.0) (2024-02-07)
### Features
* de-DE translation ([38d0c8f](https://github.com/Fabio286/mizar/commit/38d0c8f2b543a6a716fe7a707bd57aafaa99f5cf))
* pt-br translation ([6cb7452](https://github.com/Fabio286/mizar/commit/6cb74523062b7b115b093dc14768343109824ffb))
## [1.2.0](https://github.com/Fabio286/mizar/compare/v1.1.0...v1.2.0) (2023-05-26)
### Features
* italian translation ([54818a1](https://github.com/Fabio286/mizar/commit/54818a1995d5151401671e2ba8db57c8eee22782))
## [1.1.0](https://github.com/Fabio286/mizar/compare/v1.0.1...v1.1.0) (2023-04-18)
### Features
* icons for message formats ([ec320c7](https://github.com/Fabio286/mizar/commit/ec320c79c0caacad7b35bbfcf3d5f53a028ac347))
### [1.0.1](https://github.com/Fabio286/mizar/compare/v1.0.0...v1.0.1) (2023-04-16)
## 1.0.0 (2023-04-16)

View File

@ -6,7 +6,7 @@
# Mizar TCP Tester
![GitHub package.json version](https://img.shields.io/github/package-json/v/fabio286/mizar) ![GitHub](https://img.shields.io/github/license/fabio286/mizar) [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ffabio286%2Fmizar%2Fbadge&style=flat)](https://actions-badge.atrox.dev/fabio286/mizar/goto) <!--[![mizar](https://snapcraft.io/mizar/badge.svg)](https://snapcraft.io/mizar) [![mizar](https://snapcraft.io/mizar/trending.svg?name=0)](https://snapcraft.io/mizar)--> [![Plant a Tree](https://raw.githubusercontent.com/Fabio286/treedom-badge/master/svg/plant-a-tree.svg)](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet)
![GitHub package.json version](https://img.shields.io/github/package-json/v/fabio286/mizar) ![GitHub](https://img.shields.io/github/license/fabio286/mizar) [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ffabio286%2Fmizar%2Fbadge&style=flat)](https://actions-badge.atrox.dev/fabio286/mizar/goto) [![mizar](https://snapcraft.io/mizar/badge.svg)](https://snapcraft.io/mizar) [![mizar](https://snapcraft.io/mizar/trending.svg?name=0)](https://snapcraft.io/mizar)[![Plant a Tree](https://raw.githubusercontent.com/Fabio286/treedom-badge/master/svg/plant-a-tree.svg)](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet)
Mizar is a TCP tester/debugger designed to be immediately useful and intuitive to use right out of the box.
The purpose of Mizar is to help developers working on software that communicates over TCP protocol by speeding up debugging and testing from the earliest stages of development.
@ -42,4 +42,8 @@ On Linux you can simply download and run the `.AppImage` distribution or install
### Windows
On Windows you can choose between downloading the app from Microsoft Store or downloading the `.exe` from [this github repo](https://github.com/Fabio286/mizar/releases/latest).
Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt.
Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt.
### How to contribute
- 🌍 [Translate Mizar](https://github.com/Fabio286/mizar/wiki/Translate-Mizar)

422
package-lock.json generated
View File

@ -1,16 +1,17 @@
{
"name": "mizar",
"version": "1.0.0",
"version": "1.3.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mizar",
"version": "1.0.0",
"version": "1.3.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@electron/remote": "~2.0.1",
"@electron/remote": "~2.0.9",
"@mdi/font": "~7.2.96",
"@vueuse/core": "~8.7.5",
"electron-log": "~4.4.1",
"electron-store": "~8.1.0",
@ -20,7 +21,7 @@
"moment": "~2.29.4",
"pinia": "~2.0.28",
"source-map-support": "~0.5.20",
"vue": "~3.2.45",
"vue": "~3.3.4",
"vue-i18n": "~9.2.2"
},
"devDependencies": {
@ -568,8 +569,9 @@
}
},
"node_modules/@babel/parser": {
"version": "7.20.5",
"license": "MIT",
"version": "7.22.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz",
"integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==",
"bin": {
"parser": "bin/babel-parser.js"
},
@ -1875,8 +1877,9 @@
}
},
"node_modules/@electron/remote": {
"version": "2.0.8",
"license": "MIT",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.9.tgz",
"integrity": "sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==",
"peerDependencies": {
"electron": ">= 13.0.0"
}
@ -2089,7 +2092,6 @@
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"dev": true,
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
@ -2106,6 +2108,11 @@
"dev": true,
"license": "MIT"
},
"node_modules/@mdi/font": {
"version": "7.2.96",
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz",
"integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w=="
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"dev": true,
@ -2637,6 +2644,7 @@
},
"node_modules/@vue/compiler-core": {
"version": "3.2.45",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.16.4",
@ -2647,6 +2655,7 @@
},
"node_modules/@vue/compiler-dom": {
"version": "3.2.45",
"dev": true,
"license": "MIT",
"dependencies": {
"@vue/compiler-core": "3.2.45",
@ -2655,6 +2664,7 @@
},
"node_modules/@vue/compiler-sfc": {
"version": "3.2.45",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.16.4",
@ -2671,6 +2681,7 @@
},
"node_modules/@vue/compiler-ssr": {
"version": "3.2.45",
"dev": true,
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.2.45",
@ -2682,14 +2693,16 @@
"license": "MIT"
},
"node_modules/@vue/reactivity": {
"version": "3.2.45",
"license": "MIT",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
"integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
"dependencies": {
"@vue/shared": "3.2.45"
"@vue/shared": "3.3.4"
}
},
"node_modules/@vue/reactivity-transform": {
"version": "3.2.45",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.16.4",
@ -2699,36 +2712,89 @@
"magic-string": "^0.25.7"
}
},
"node_modules/@vue/reactivity/node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/@vue/runtime-core": {
"version": "3.2.45",
"license": "MIT",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
"integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
"dependencies": {
"@vue/reactivity": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/reactivity": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/@vue/runtime-core/node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/@vue/runtime-dom": {
"version": "3.2.45",
"license": "MIT",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
"integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
"dependencies": {
"@vue/runtime-core": "3.2.45",
"@vue/shared": "3.2.45",
"csstype": "^2.6.8"
"@vue/runtime-core": "3.3.4",
"@vue/shared": "3.3.4",
"csstype": "^3.1.1"
}
},
"node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/@vue/server-renderer": {
"version": "3.2.45",
"license": "MIT",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
"integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
"dependencies": {
"@vue/compiler-ssr": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/compiler-ssr": "3.3.4",
"@vue/shared": "3.3.4"
},
"peerDependencies": {
"vue": "3.2.45"
"vue": "3.3.4"
}
},
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
"integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"dependencies": {
"@babel/parser": "^7.21.3",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
"integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"dependencies": {
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
"integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"dependencies": {
"@vue/compiler-dom": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/@vue/server-renderer/node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/@vue/shared": {
"version": "3.2.45",
"dev": true,
"license": "MIT"
},
"node_modules/@vueuse/core": {
@ -4894,8 +4960,9 @@
}
},
"node_modules/csstype": {
"version": "2.6.21",
"license": "MIT"
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/dargs": {
"version": "7.0.0",
@ -8615,6 +8682,7 @@
},
"node_modules/magic-string": {
"version": "0.25.9",
"dev": true,
"license": "MIT",
"dependencies": {
"sourcemap-codec": "^1.4.8"
@ -11207,6 +11275,7 @@
},
"node_modules/sourcemap-codec": {
"version": "1.4.8",
"dev": true,
"license": "MIT"
},
"node_modules/spdx-correct": {
@ -12824,14 +12893,15 @@
}
},
"node_modules/vue": {
"version": "3.2.45",
"license": "MIT",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
"integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
"dependencies": {
"@vue/compiler-dom": "3.2.45",
"@vue/compiler-sfc": "3.2.45",
"@vue/runtime-dom": "3.2.45",
"@vue/server-renderer": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/compiler-dom": "3.3.4",
"@vue/compiler-sfc": "3.3.4",
"@vue/runtime-dom": "3.3.4",
"@vue/server-renderer": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/vue-eslint-parser": {
@ -12955,6 +13025,80 @@
"webpack": "^4.1.0 || ^5.0.0-0"
}
},
"node_modules/vue/node_modules/@vue/compiler-core": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
"integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"dependencies": {
"@babel/parser": "^7.21.3",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"node_modules/vue/node_modules/@vue/compiler-dom": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
"integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"dependencies": {
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/vue/node_modules/@vue/compiler-sfc": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
"integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
"dependencies": {
"@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.3.4",
"@vue/compiler-dom": "3.3.4",
"@vue/compiler-ssr": "3.3.4",
"@vue/reactivity-transform": "3.3.4",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.0",
"postcss": "^8.1.10",
"source-map-js": "^1.0.2"
}
},
"node_modules/vue/node_modules/@vue/compiler-ssr": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
"integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"dependencies": {
"@vue/compiler-dom": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"node_modules/vue/node_modules/@vue/reactivity-transform": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
"integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
"dependencies": {
"@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.0"
}
},
"node_modules/vue/node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/vue/node_modules/magic-string": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
"integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
"engines": {
"node": ">=12"
}
},
"node_modules/watchpack": {
"version": "2.4.0",
"dev": true,
@ -14023,7 +14167,9 @@
}
},
"@babel/parser": {
"version": "7.20.5"
"version": "7.22.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz",
"integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA=="
},
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.18.9",
@ -14779,7 +14925,9 @@
}
},
"@electron/remote": {
"version": "2.0.8",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.9.tgz",
"integrity": "sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==",
"requires": {}
},
"@eslint/eslintrc": {
@ -14919,8 +15067,7 @@
}
},
"@jridgewell/sourcemap-codec": {
"version": "1.4.14",
"dev": true
"version": "1.4.14"
},
"@jridgewell/trace-mapping": {
"version": "0.3.17",
@ -14934,6 +15081,11 @@
"version": "2.0.4",
"dev": true
},
"@mdi/font": {
"version": "7.2.96",
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz",
"integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w=="
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
"dev": true,
@ -15292,6 +15444,7 @@
},
"@vue/compiler-core": {
"version": "3.2.45",
"dev": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.45",
@ -15301,6 +15454,7 @@
},
"@vue/compiler-dom": {
"version": "3.2.45",
"dev": true,
"requires": {
"@vue/compiler-core": "3.2.45",
"@vue/shared": "3.2.45"
@ -15308,6 +15462,7 @@
},
"@vue/compiler-sfc": {
"version": "3.2.45",
"dev": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@ -15323,6 +15478,7 @@
},
"@vue/compiler-ssr": {
"version": "3.2.45",
"dev": true,
"requires": {
"@vue/compiler-dom": "3.2.45",
"@vue/shared": "3.2.45"
@ -15332,13 +15488,23 @@
"version": "6.4.5"
},
"@vue/reactivity": {
"version": "3.2.45",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
"integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
"requires": {
"@vue/shared": "3.2.45"
"@vue/shared": "3.3.4"
},
"dependencies": {
"@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
}
}
},
"@vue/reactivity-transform": {
"version": "3.2.45",
"dev": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@ -15348,29 +15514,86 @@
}
},
"@vue/runtime-core": {
"version": "3.2.45",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
"integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
"requires": {
"@vue/reactivity": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/reactivity": "3.3.4",
"@vue/shared": "3.3.4"
},
"dependencies": {
"@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
}
}
},
"@vue/runtime-dom": {
"version": "3.2.45",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
"integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
"requires": {
"@vue/runtime-core": "3.2.45",
"@vue/shared": "3.2.45",
"csstype": "^2.6.8"
"@vue/runtime-core": "3.3.4",
"@vue/shared": "3.3.4",
"csstype": "^3.1.1"
},
"dependencies": {
"@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
}
}
},
"@vue/server-renderer": {
"version": "3.2.45",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
"integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
"requires": {
"@vue/compiler-ssr": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/compiler-ssr": "3.3.4",
"@vue/shared": "3.3.4"
},
"dependencies": {
"@vue/compiler-core": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
"integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"requires": {
"@babel/parser": "^7.21.3",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"@vue/compiler-dom": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
"integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"requires": {
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"@vue/compiler-ssr": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
"integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"requires": {
"@vue/compiler-dom": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
}
}
},
"@vue/shared": {
"version": "3.2.45"
"version": "3.2.45",
"dev": true
},
"@vueuse/core": {
"version": "8.7.5",
@ -16794,7 +17017,9 @@
"dev": true
},
"csstype": {
"version": "2.6.21"
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"dargs": {
"version": "7.0.0",
@ -19162,6 +19387,7 @@
},
"magic-string": {
"version": "0.25.9",
"dev": true,
"requires": {
"sourcemap-codec": "^1.4.8"
}
@ -20746,7 +20972,8 @@
}
},
"sourcemap-codec": {
"version": "1.4.8"
"version": "1.4.8",
"dev": true
},
"spdx-correct": {
"version": "3.1.1",
@ -21781,13 +22008,88 @@
"dev": true
},
"vue": {
"version": "3.2.45",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
"integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
"requires": {
"@vue/compiler-dom": "3.2.45",
"@vue/compiler-sfc": "3.2.45",
"@vue/runtime-dom": "3.2.45",
"@vue/server-renderer": "3.2.45",
"@vue/shared": "3.2.45"
"@vue/compiler-dom": "3.3.4",
"@vue/compiler-sfc": "3.3.4",
"@vue/runtime-dom": "3.3.4",
"@vue/server-renderer": "3.3.4",
"@vue/shared": "3.3.4"
},
"dependencies": {
"@vue/compiler-core": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
"integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"requires": {
"@babel/parser": "^7.21.3",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"@vue/compiler-dom": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
"integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"requires": {
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"@vue/compiler-sfc": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
"integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
"requires": {
"@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.3.4",
"@vue/compiler-dom": "3.3.4",
"@vue/compiler-ssr": "3.3.4",
"@vue/reactivity-transform": "3.3.4",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.0",
"postcss": "^8.1.10",
"source-map-js": "^1.0.2"
}
},
"@vue/compiler-ssr": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
"integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"requires": {
"@vue/compiler-dom": "3.3.4",
"@vue/shared": "3.3.4"
}
},
"@vue/reactivity-transform": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
"integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
"requires": {
"@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.3.4",
"@vue/shared": "3.3.4",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.0"
}
},
"@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"magic-string": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
"integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
"requires": {
"@jridgewell/sourcemap-codec": "^1.4.13"
}
}
}
},
"vue-eslint-parser": {

View File

@ -1,7 +1,7 @@
{
"name": "mizar",
"productName": "Mizar TCP Tester",
"version": "1.0.0",
"productName": "Mizar",
"version": "1.3.0",
"description": "A TCP client/server test/debug tool",
"license": "MIT",
"scripts": {
@ -90,13 +90,14 @@
"displayName": "Mizar TCP Tester",
"backgroundColor": "transparent",
"showNameOnTiles": true,
"identityName": "62514FabioDiStasio.AntaresSQLClient",
"identityName": "62514FabioDiStasio.MizarTCPtester",
"publisher": "CN=1A2729ED-865C-41D2-9038-39AE2A63AA52",
"applicationId": "FabioDiStasio.AntaresSQLClient"
"applicationId": "FabioDiStasio.MizarTCPtester"
}
},
"dependencies": {
"@electron/remote": "~2.0.1",
"@electron/remote": "~2.0.9",
"@mdi/font": "~7.2.96",
"@vueuse/core": "~8.7.5",
"electron-log": "~4.4.1",
"electron-store": "~8.1.0",
@ -106,7 +107,7 @@
"moment": "~2.29.4",
"pinia": "~2.0.28",
"source-map-support": "~0.5.20",
"vue": "~3.2.45",
"vue": "~3.3.4",
"vue-i18n": "~9.2.2"
},
"devDependencies": {

161
snap/snapcraft.yaml Normal file
View File

@ -0,0 +1,161 @@
name: mizar
adopt-info: mizar
summary: A TCP testing tool, useful and intuitive to use right out of the box.
description: |
Mizar is a TCP tester/debugger designed to be immediately useful and intuitive to use right out of the box.
The purpose of Mizar is to help developers working on software that communicates over TCP protocol by speeding up debugging and testing from the earliest stages of development.
base: core20
grade: stable
confinement: strict
architectures:
- build-on: amd64
compression: lzo
layout:
/etc/nsswitch.conf:
bind-file: $SNAP/etc/nsswitch.conf
parts:
mizar:
plugin: dump
source: .
override-build: |
snapcraftctl build
ARCHITECTURE=$(dpkg --print-architecture)
if [ "${ARCHITECTURE}" = "amd64" ]; then
FILTER="amd64.deb"
else
echo "ERROR! Mizar only produces debs for amd64. Failing the build here."
exit 1
fi
# Get the latest releases json
echo "Get GitHub releases..."
wget --quiet https://api.github.com/repos/fabio286/mizar/releases/latest -O releases.json
# Get the version from the tag_name and the download URL.
VERSION=$(jq . releases.json | grep tag_name | cut -d'"' -f4 | sed s'/release-//')
DEB_URL=$(cat releases.json | jq -r ".assets[] | select(.name | test(\"${FILTER}\")) | .browser_download_url")
DEB=$(basename "${DEB_URL}")
echo "Downloading ${DEB_URL}..."
wget --quiet "${DEB_URL}" -O "${SNAPCRAFT_PART_INSTALL}/${DEB}"
echo "Unpacking ${DEB}..."
dpkg -x "${SNAPCRAFT_PART_INSTALL}/${DEB}" ${SNAPCRAFT_PART_INSTALL}
rm -f releases.json 2>/dev/null
rm -f "${SNAPCRAFT_PART_INSTALL}/${DEB}" 2>/dev/null
echo $VERSION > $SNAPCRAFT_STAGE/version
# Correct path to icon.
sed -i 's|Icon=mizar|Icon=/usr/share/icons/hicolor/256x256/apps/mizar\.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/mizar.desktop
# Delete usr/bin/mizar, it's a broken symlink pointing outside the snap.
rm -f ${SNAPCRAFT_PART_INSTALL}/usr/bin/mizar
chmod -s ${SNAPCRAFT_PART_INSTALL}/opt/Mizar/chrome-sandbox
snapcraftctl set-version "$(echo $VERSION)"
build-packages:
- dpkg
- jq
- sed
- wget
stage-packages:
- fcitx-frontend-gtk3
- libappindicator3-1
- libasound2
- libcurl4
- libgconf-2-4
- libgtk-3-0
- libnotify4
- libnspr4
- libnss3
- libpcre3
- libpulse0
- libxss1
- libsecret-1-0
- libxtst6
- libxkbfile1
- gcc-10-base
- libapparmor1
- libblkid1
- libbsd0
- libcom-err2
- libcrypt1
- libdb5.3
- libdbus-1-3
- libexpat1
- libffi7
- libgcc-s1
- libgcrypt20
- libglib2.0-0
- libgmp10
- libgnutls30
- libgpg-error0
- libgssapi-krb5-2
- libhogweed5
- libidn2-0
- libjson-c4
- libk5crypto3
- libkeyutils1
- libkrb5-3
- libkrb5support0
- liblz4-1
- liblzma5
- libmount1
- libnettle7
- libp11-kit0
- libpcre2-8-0
- libselinux1
- libsqlite3-0
- libssl1.1
- libstdc++6
- libsystemd0
- libtasn1-6
- libudev1
- libunistring2
- libuuid1
- libwrap0
- libzstd1
- zlib1g
- libx11-xcb1
- libdrm2
- libgbm1
- libxcb-dri3-0
cleanup:
after: [mizar]
plugin: nil
build-snaps: [gnome-3-38-2004]
override-prime: |
set -eux
cd /snap/gnome-3-38-2004/current
find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \;
mdns-lookup:
# Make resolution of ".local" host names (Zero-Conf/mDNS/DNS-SD)
# working: Take the original nsswitch.conf file from the base
# Snap and add "mdns4_minimal [NOTFOUND=return]" to its "hosts:" line
# Also install corresponding mdns4_minimal plug-in
# See: https://forum.snapcraft.io/t/no-mdns-support-in-snaps-should-core-have-a-modified-nsswitch-conf/
plugin: nil
stage-packages:
- libnss-mdns
override-prime: |
set -eux
sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core20/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf
snapcraftctl prime
prime:
- lib/$SNAPCRAFT_ARCH_TRIPLET/libnss_mdns4_minimal*
- etc/nsswitch.conf
apps:
mizar:
command: opt/Mizar/mizar --no-sandbox
desktop: usr/share/applications/mizar.desktop
extensions: [gnome-3-38]
environment:
# Fallback to XWayland if running in a Wayland session.
DISABLE_WAYLAND: 1
plugs:
- browser-support
- cups-control
- home
- network
- opengl
- pulseaudio
- removable-media
- unity7

View File

@ -10,9 +10,9 @@
<transition name="fade">
<i
v-if="clientStatus === 1"
class="material-icons running"
class="mdi mdi-play running"
:title="t('message.running')"
>play_arrow</i>
/>
</transition>
</div>
<div
@ -24,18 +24,27 @@
<transition name="fade">
<i
v-if="serverStatus === 1"
class="material-icons running"
class="mdi mdi-play running"
:title="t('message.running')"
>play_arrow</i>
/>
</transition>
</div>
</nav>
<div
class="navSettings"
:title="t('word.settings')"
@click="isSettingModal=true"
>
<i class="material-icons">settings</i>
<div class="settings-block">
<div
class="navSettings"
:title="t('word.source')"
@click="openOutside('https://github.com/Fabio286/mizar')"
>
<i class="mdi mdi-github" />
</div>
<div
class="navSettings"
:title="t('word.settings')"
@click="isSettingModal=true"
>
<i class="mdi mdi-cog" />
</div>
</div>
<ModalSettings v-if="isSettingModal" @hide-settings="isSettingModal=false" />
</header>
@ -45,6 +54,7 @@
import { ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ModalSettings from './ModalSettings.vue';
import { shell } from 'electron';
defineProps({
selTab: Number,
@ -61,4 +71,14 @@ const { t } = useI18n();
const selectTab = (value: number) => {
emit('selectTab', value);
};
const openOutside = (link: string) => {
shell.openExternal(link);
};
</script>
<style scoped lang="scss">
.settings-block {
display: flex;
gap: 10px;
}
</style>

View File

@ -144,13 +144,13 @@
</fieldset>
<div class="buttons">
<div v-if="running === 0" class="button-wrap">
<i class="material-icons white">play_arrow</i>
<i class="mdi mdi-play white" />
<button class="confirm" type="submit">
{{ t('word.start') }}
</button>
</div>
<div v-if="running !== 0 && params.stepTest" class="button-wrap">
<i class="material-icons white">message</i>
<i class="mdi mdi-message white" />
<button
class="confirm"
:title="t('message.sendMessages')"
@ -160,7 +160,7 @@
</button>
</div>
<div v-if="running !== 0" class="button-wrap">
<i class="material-icons white">stop</i>
<i class="mdi mdi-stop white" />
<button class="stop" @click.prevent="stopTest">
{{ t('word.stop') }}
</button>
@ -187,7 +187,7 @@ import { ref, computed, Ref, onBeforeUnmount } from 'vue';
import { storeToRefs } from 'pinia';
import Console from './BaseConsole.vue';
import Hosts from './ClientTabHosts.vue';
import Messages from './ClientMessages.vue';
import Messages from './ClientTabMessages.vue';
import NewHost from './ModalNewHost.vue';
import NewMessage from './ModalNewMessage.vue';
import EditMessage from './ModalEditMessage.vue';

View File

@ -5,14 +5,17 @@
class="box-100"
>
<h3>
<span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus)
}}</i></span><span>
<span class="toggle-select"><i
class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>
{{ t('word.host', 2) }}</span>
</h3>
<div class="tools-box">
<div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addHost') }}</span>
<i class="material-icons">add</i>
<i class="mdi mdi-plus" />
</div>
</div>
<ul id="hostList">
@ -27,10 +30,10 @@
<span>{{ host.host }}:{{ host.port }}</span>
</label>
<i
class="material-icons deleteHost"
class="mdi mdi-close deleteHost"
:title="t('message.deleteHost', {host: `${host.host}:${host.port}`})"
@click="deleteHost(index)"
>clear</i>
/>
</li>
</ul>
</div>
@ -83,11 +86,11 @@ const deleteHost = (value: number) => {
const checkIcon = (status: number) => {
switch (status) {
case 0:
return 'check_box_outline_blank';
return 'mdi-checkbox-blank-outline';
case 1:
return 'indeterminate_check_box';
return 'mdi-minus-box';
case 2:
return 'check_box';
return 'mdi-checkbox-marked';
}
};

View File

@ -4,11 +4,17 @@
ref="root"
class="box-100"
>
<h3><span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus) }}</i></span><span>{{ t('word.message', 2) }}</span></h3>
<h3>
<span class="toggle-select"><i
class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>{{ t('word.message', 2) }}</span>
</h3>
<div class="tools-box">
<div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addMessage') }}</span>
<i class="material-icons">add</i>
<i class="mdi mdi-plus" />
</div>
</div>
<ul id="messageList">
@ -20,19 +26,23 @@
@change="updateMessages"
>
<div class="checkbox-block" />
<span class="format">({{ message.format }})</span>
<span
class="mdi"
:class="[message.format === 'hex' ? 'mdi-hexadecimal' : 'mdi-format-text']"
:title="message.format"
/>
<span>{{ truncate(message.name, 25, '...') }}</span>
</label>
<i
class="material-icons editMessage"
class="mdi mdi-pencil editMessage"
:title="t('message.editMessage', { message: message.name })"
@click="showEdit(index)"
>edit</i>
/>
<i
class="material-icons deleteMessage"
class="mdi mdi-close deleteMessage"
:title="t('message.deleteMessage', { message: message.name })"
@click="deleteMessage(index)"
>clear</i>
/>
</li>
</ul>
</div>
@ -99,11 +109,11 @@ const deleteMessage = (index: number) => {
const checkIcon = (status: number) => {
switch (status) {
case 0:
return 'check_box_outline_blank';
return 'mdi-checkbox-blank-outline';
case 1:
return 'indeterminate_check_box';
return 'mdi-minus-box';
case 2:
return 'check_box';
return 'mdi-checkbox-marked';
}
};

View File

@ -14,7 +14,7 @@
<tr v-for="(report, index) in reports" :key="index">
<td>{{ report.host }}</td>
<td>{{ report.sockets }}</td>
<td><span :title="t('word.sent', 2)">{{ report.messages.toLocaleString() }}</span> <i class="material-icons">import_export</i><span :title="t('word.received', 2)">{{ report.received }}</span></td>
<td><span :title="t('word.sent', 2)">{{ report.messages.toLocaleString() }}</span><i class="mdi mdi-swap-vertical" /><span :title="t('word.received', 2)">{{ report.received }}</span></td>
<td><span :title="t('word.sent', 2)">{{ report.data.toLocaleString() }} B</span></td>
</tr>
</tbody>
@ -22,7 +22,7 @@
<tr>
<td>{{ t('word.total', 2) }}</td>
<td>{{ totSockets }}</td>
<td><span :title="t('word.sent', 2)">{{ totMessages.toLocaleString() }}</span> <i class="material-icons">import_export</i><span :title="t('word.received', 2)">{{ totReceived.toLocaleString() }}</span></td>
<td><span :title="t('word.sent', 2)">{{ totMessages.toLocaleString() }}</span><i class="mdi mdi-swap-vertical" /><span :title="t('word.received', 2)">{{ totReceived.toLocaleString() }}</span></td>
<td><span :title="t('word.sent', 2)">{{ totData.toLocaleString() }} B</span></td>
</tr>
</tfoot>

View File

@ -52,13 +52,13 @@
</fieldset>
<div class="buttons">
<div v-if="running === 0" class="button-wrap">
<i class="material-icons white">play_arrow</i>
<i class="mdi mdi-play white" />
<button class="confirm" type="submit">
{{ t('word.start') }}
</button>
</div>
<div v-if="running === 1" class="button-wrap">
<i class="material-icons white">stop</i>
<i class="mdi mdi-stop white" />
<button class="stop" @click="stopServer">
{{ t('word.stop') }}
</button>

View File

@ -4,11 +4,17 @@
ref="root"
class="box-100"
>
<h3><span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus) }}</i></span><span>{{ t('word.port', 2) }}</span></h3>
<h3>
<span class="toggle-select"><i
class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>{{ t('word.port', 2) }}</span>
</h3>
<div class="tools-box">
<div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addPort') }}</span>
<i class="material-icons">add</i>
<i class="mdi mdi-plus" />
</div>
</div>
<ul id="portList">
@ -23,10 +29,10 @@
<span>{{ port.port }}</span>
</label>
<i
class="material-icons deletePort"
class="mdi mdi-close deletePort"
:title="`Elimina porta ${port.port}`"
@click="deletePort(index)"
>clear</i>
/>
</li>
</ul>
</div>
@ -79,11 +85,11 @@ const deletePort = (value: number) => {
const checkIcon = (status: number) => {
switch (status) {
case 0:
return 'check_box_outline_blank';
return 'mdi-checkbox-blank-outline';
case 1:
return 'indeterminate_check_box';
return 'mdi-minus-box';
case 2:
return 'check_box';
return 'mdi-checkbox-marked';
}
};

View File

@ -29,7 +29,7 @@
</table>
<div class="buttons">
<div class="button-wrap">
<i class="material-icons">replay</i>
<i class="mdi mdi-replay" />
<button
class="save"
:title="t('message.resetReceivedData')"

View File

@ -0,0 +1,80 @@
export const deDE = {
word: {
client: 'Client | Clients',
server: 'Server | Server',
host: 'Host | Hosts',
message: 'Nachricht | Nachrichten',
port: 'Port | Ports',
data: 'Daten | Daten',
name: 'Name | Namen',
start: 'Starten',
stop: 'Stoppen',
send: 'Senden',
total: 'Gesamt | Gesamt',
received: 'Erhalten | Erhalten',
sent: 'Sent | Sent',
socket: 'Socket | Sockets',
format: 'Codierung',
select: 'Auswählen',
cancel: 'Abbrechen',
edit: 'Bearbeiten',
create: 'Erstellen',
reset: 'Zurücksetzen',
settings: 'Einstellungen',
close: 'Schließen',
locale: 'Sprache',
author: 'Author',
source: 'Quelle'
},
message: {
running: 'Läuft',
numberOfMessages: 'Anzahl von Nachrichten',
numberOfClients: 'Anzahl von Clients',
minInterval: 'Min. Interval (ms)',
maxInterval: 'Max. Interval (ms)',
closeOnReply: 'Verbindung nach Antwort schließen',
persistentConnection: 'Dauerhafte Verbindung',
steptest: 'Stufentest',
enableTrace: 'Traces aktivieren',
alertEconnreset: 'Benachrichtigung bei ECONNRESET',
loopMode: 'Schleifenmodus',
loopModeEsplaination: 'Test wiederholen nach dessen Abschluss',
sendMessages: 'Nachrichten senden',
addHost: 'Host hinzufügen',
deleteHost: 'Host "{host}" löschen',
addMessage: 'Nachricht hinzufügen',
editMessage: 'Nachricht "{message}" bearbeiten',
deleteMessage: 'Nachricht "{message}" löschen',
hostAddress: 'Host address',
addPort: 'Port hinzufügen',
echoServer: 'Server antwortet',
resetReceivedData: 'Empfangene Daten zurücksetzen',
serverStatus: 'Server-Status',
testReport: 'Test-Bericht',
testStarted: 'Test gestartet',
testAborted: 'Test abgebrochen',
testEnded: 'Test abgeschlossen',
clientsConnected: 'Clients verbunden',
messagesSent: 'Nachrichten gesendet',
testDuration: 'Dauer des Tests: {ms}ms',
noMessageSpecified: 'Keine Nachrichten eingestellt',
socketOpen: 'Socket #{number} über {host}:{port} Verbindung hergestellt',
socketClosed: 'Socket #{number} über {host}:{port} Verbindung geschlossen',
socketMessage: 'Socket #{number} über {host}:{port} Sende Nachricht: #{mNumber}',
socketReply: 'Socket #{number} über {host}:{port} Server antwortet: {reply}',
logOnSocket: 'Socket #{number} über {host}:{port}: {message}',
loadingMessages: 'Lade Nachrichten',
messagesLoaded: 'Anzahl von geladenen Nachrichten: {mNumber}',
sendingMessages: 'Nachrichten werden gesendet',
tracesDisabledMessage: 'Traces deaktiviert, Interval zu gering',
clientConnectedOnPort: 'Nutzer verbunden mit Port {port}',
clientDisonnectedOnPort: 'Nutzer vom Port {port} getrennt',
messageReceivedOnPort: 'Empfangene Nachricht über Port {port}: {message}',
serverStart: 'Server wird gestartet',
serverStop: 'Server wird gestoppt',
listenindOnPort: 'Überwachen des Ports {port}',
clientErrorOnPort: 'Client-Fehler vom Port {port}: {error}',
serverErrorOnPort: 'Server-Fehler vom Port {port}: {error}',
reportError: 'Fehler: {error}'
}
};

View File

@ -23,7 +23,8 @@ export const enUS = {
settings: 'Settings',
close: 'Close',
locale: 'Locale',
author: 'Author'
author: 'Author',
source: 'Source'
},
message: {
running: 'Running',
@ -32,20 +33,20 @@ export const enUS = {
minInterval: 'Min. Interval (ms)',
maxInterval: 'Max Interval (ms)',
closeOnReply: 'Close on reply',
persistentConnection: 'Persistent Connection',
steptest: ' Step test',
persistentConnection: 'Persistent connection',
steptest: 'Step test',
enableTrace: 'Enable traces',
alertEconnreset: 'Alert ECONNRESET',
loopMode: 'Loop mode',
loopModeEsplaination: 'Repeat the test after its completion',
sendMessages: 'Send messages',
addHost: 'Add host',
deleteHost: 'Delete host {host}',
deleteHost: 'Delete host "{host}"',
addMessage: 'Add message',
editMessage: 'Edit message {message}',
deleteMessage: 'Delete message {message}',
editMessage: 'Edit message',
deleteMessage: 'Delete message "{message}"',
hostAddress: 'Host address',
addPort: 'Add port {port}',
addPort: 'Add port',
echoServer: 'Echo server',
resetReceivedData: 'Reset received data',
serverStatus: 'Server status',

View File

@ -1,10 +1,14 @@
import { createI18n } from 'vue-i18n';
import { enUS } from './en-US';
import { itIT } from './it-IT';
import { ptBR } from './pt-BR';
import { deDE } from './de-DE';
const messages = {
'en-US': enUS,
'it-IT': itIT
'it-IT': itIT,
'pt-BR': ptBR,
'de-DE': deDE
};
type NestedPartial<T> = {

View File

@ -1,6 +1,80 @@
export const itIT = {
word: {
client: 'Client | Client',
server: 'Server | Server',
host: 'Host | Host',
message: 'Messaggio | Messaggi',
port: 'Porta | Porte',
data: 'Dato | Dati',
name: 'Nome | Nomi',
start: 'Start',
stop: 'Stop',
send: 'Invia',
total: 'Totale | Totali',
received: 'Ricevuto | Ricevuti',
sent: 'Inviato | Inviati',
socket: 'Socket | Socket',
format: 'Formato',
select: 'Seleziona',
cancel: 'Annulla',
edit: 'Modifica',
create: 'Crea',
reset: 'Reset',
settings: 'Impostazioni',
close: 'Chiudi',
locale: 'Lingua',
author: 'Autore',
source: 'Sorgenti'
},
message: {
running: 'In esecuzione',
numberOfMessages: 'Numero di messaggi',
numberOfClients: 'Numero di client',
minInterval: 'Intervallo min. (ms)',
maxInterval: 'Intervallo max (ms)',
closeOnReply: 'Chiudi alla risposta',
persistentConnection: 'Connessione persistente',
steptest: 'Test a step',
enableTrace: 'Abilita trace',
alertEconnreset: 'Allerta ECONNRESET',
loopMode: 'Modalità loop',
loopModeEsplaination: 'Ripete il test dopo il suo completamento',
sendMessages: 'Invia messaggi',
addHost: 'Aggiungi host',
deleteHost: 'Cancella host "{host}"',
addMessage: 'Aggiungi messaggio',
editMessage: 'Modifica messaggio',
deleteMessage: 'Cancella messaggio "{message}"',
hostAddress: 'Host address',
addPort: 'Aggiungi porta',
echoServer: 'Echo server',
resetReceivedData: 'Resetta dati ricevuti',
serverStatus: 'Stato server',
testReport: 'Report del test',
testStarted: 'Test avviato',
testAborted: 'Test annullato',
testEnded: 'Test concluso',
clientsConnected: 'Client connessi',
messagesSent: 'Messaggi inviati',
testDuration: 'Durata test: {ms}ms',
noMessageSpecified: 'Nessun messaggio specificato',
socketOpen: 'Socket #{number} su {host}:{port} aperto',
socketClosed: 'Socket #{number} su {host}:{port} chiuso',
socketMessage: 'Socket #{number} su {host}:{port} messaggio #{mNumber}',
socketReply: 'Socket #{number} su {host}:{port} risposta: {reply}',
logOnSocket: 'Socket #{number} su {host}:{port}: {message}',
loadingMessages: 'Caricamento messaggi',
messagesLoaded: 'Messaggi caricati: {mNumber}',
sendingMessages: 'Invio messaggi',
tracesDisabledMessage: 'Trace disabilitati, intervalli troppo brevi',
clientConnectedOnPort: 'Client connesso sulla porta {port}',
clientDisonnectedOnPort: 'Client disconnesso sulla porta {port}',
messageReceivedOnPort: 'Messaggio ricevuto sulla porta {port}: {message}',
serverStart: 'Server avviato',
serverStop: 'Server interrotto',
listenindOnPort: 'In ascolto sulla porta {port}',
clientErrorOnPort: 'Errore client sulla porta {port}: {error}',
serverErrorOnPort: 'Errore server sulla porta {port}: {error}',
reportError: 'Errore report: {error}'
}
};

View File

@ -0,0 +1,80 @@
export const ptBR = {
word: {
client: 'Cliente | Clientes',
server: 'Servidor | Servidores',
host: 'Host | Hosts',
message: 'Mensagem | Mensagens',
port: 'Porta | Portas',
data: 'Dados | Dados',
name: 'Nome | Nomes',
start: 'Iniciar',
stop: 'Parar',
send: 'Enviar',
total: 'Total | Totais',
received: 'Recebido | Recebido',
sent: 'Enviado | Enviado',
socket: 'Socket | Sockets',
format: 'Formato',
select: 'Selecione',
cancel: 'Cancelar',
edit: 'Editar',
create: 'Criar',
reset: 'Reiniciar',
settings: 'Configurações',
close: 'Fechar',
locale: 'Localização',
author: 'Autor',
source: 'Fonte'
},
message: {
running: 'Executando',
numberOfMessages: 'Quantidade de mensagens',
numberOfClients: 'Quantidade de clientes',
minInterval: 'Intervalo Mín. (ms)',
maxInterval: 'Intervalo Máx. (ms)',
closeOnReply: 'Fechar ao receber resposta',
persistentConnection: 'Conexão persistente',
steptest: 'Teste por etapa',
enableTrace: 'Habilitar rastreamento',
alertEconnreset: 'Alertar ECONNRESET',
loopMode: 'Modo loop',
loopModeEsplaination: 'Repetir o teste após finalizar',
sendMessages: 'Enviar mensagens',
addHost: 'Adicionar host',
deleteHost: 'Excluir host "{host}"',
addMessage: 'Adicionar mensagem',
editMessage: 'Editar mensagem "{message}"',
deleteMessage: 'Deletar mensagem "{message}"',
hostAddress: 'Endereço do host',
addPort: 'Adicionar porta',
echoServer: 'Propagar servidor',
resetReceivedData: 'Reiniciar dados recebidos',
serverStatus: 'Status do servidor',
testReport: 'Relatório do teste',
testStarted: 'Teste Iniciou',
testAborted: 'Teste abortado',
testEnded: 'Teste finalizado',
clientsConnected: 'Clientes conectados',
messagesSent: 'Mensagens enviadas',
testDuration: 'Duração do teste: {ms}ms',
noMessageSpecified: 'Nenhuma mensagem especificada',
socketOpen: 'Socket #{number} aberto em {host}:{port}',
socketClosed: 'Socket #{number} fechado em {host}:{port}',
socketMessage: 'Socket #{number} em {host}:{port} mensagem #{mNumber}',
socketReply: 'Socket #{number} em {host}:{port} resposta: {reply}',
logOnSocket: 'Socket #{number} em {host}:{port}: {message}',
loadingMessages: 'Carregando mensagens',
messagesLoaded: 'Mensagens carregadas: {mNumber}',
sendingMessages: 'Enviando mensagens',
tracesDisabledMessage: 'Rastreamento desabilitado, intervalos muito curtos',
clientConnectedOnPort: 'Cliente conectou na porta {port}',
clientDisonnectedOnPort: 'Cliente desconectou na porta {port}',
messageReceivedOnPort: 'Mensagem recebida na porta {port}: {message}',
serverStart: 'Servidor iniciou',
serverStop: 'Servidor parou',
listenindOnPort: 'Escutando na porta {port}',
clientErrorOnPort: 'Erro do cliente na porta {port}: {error}',
serverErrorOnPort: 'Erro do servidor na porta {port}: {error}',
reportError: 'Erro no relatório: {error}'
}
};

View File

@ -1,4 +1,6 @@
export const localesNames: {[key: string]: string} = {
'en-US': 'English',
'it-IT': 'Italiano'
'it-IT': 'Italiano',
'pt-BR': 'Português (Brasil)',
'de-DE': 'Deutsch'
};

View File

@ -2,6 +2,7 @@
import { ipcRenderer } from 'electron';
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import '@mdi/font/css/materialdesignicons.css';
import '@/css/reset.css';
import '@/scss/main.scss';

View File

@ -1,57 +1,18 @@
/* stylelint-disable block-no-empty */
/* stylelint-disable selector-class-pattern */
/* stylelint-disable selector-id-pattern */
@font-face {
font-family: "Material Icons";
font-style: normal;
font-weight: 400;
src: url("../fonts/MaterialIcons-Regular.eot"); /* For IE6-8 */
src:
local("Material Icons"),
local("MaterialIcons-Regular"),
url("../fonts/MaterialIcons-Regular.woff2") format("woff2"),
url("../fonts/MaterialIcons-Regular.woff") format("woff"),
url("../fonts/MaterialIcons-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Roboto Regular";
font-style: normal;
font-weight: 400;
src: url("../fonts/Roboto-Regular.ttf") format("truetype");
src: url("@/fonts/Roboto-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Roboto Mono";
font-style: normal;
font-weight: 400;
src: url("../fonts/RobotoMono-Regular.ttf") format("truetype");
}
.material-icons {
font-family: "Material Icons";
font-style: normal;
font-weight: normal;
font-size: 14px;
display: inline-flex;
vertical-align: middle;
text-decoration: inherit;
margin-right: 2px;
text-align: center;
line-height: 1;
text-transform: initial;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizelegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
src: url("@/fonts/RobotoMono-Regular.ttf") format("truetype");
}
/* Generale */
@ -174,7 +135,7 @@ label {
margin-bottom: 10px;
}
#header .material-icons {
#header .mdi {
font-size: 24px;
margin-top: -2px;
}
@ -374,9 +335,9 @@ label {
transition: opacity 0.2s;
}
#hostBox .round-button .material-icons,
#portBox .round-button .material-icons,
#messageBox .round-button .material-icons {
#hostBox .round-button .mdi,
#portBox .round-button .mdi,
#messageBox .round-button .mdi {
font-size: 16px;
height: 16px;
margin: 0;
@ -398,7 +359,7 @@ label {
}
#messageBox .format {
font-family: "Roboto Mono";
font-family: "Roboto Mono", "Courier New", monospace;
font-size: 10px;
}
@ -628,7 +589,7 @@ fieldset:not(:disabled) #messageList li:hover .editMessage {
margin: 20px 5px;
}
.button-wrap .material-icons {
.button-wrap .mdi {
position: absolute;
top: 11px;
left: 8px;
@ -701,7 +662,7 @@ input[type="submit"] {
width: max-content;
}
.button-wrap .material-icons.white {
.button-wrap .mdi.white {
color: #fff;
}
@ -768,7 +729,7 @@ fieldset:disabled .checkbox {
position: relative;
}
.toggle-select .material-icons {
.toggle-select .mdi {
font-size: 18px;
color: #1565c0;
z-index: 1;
@ -796,7 +757,7 @@ fieldset:disabled .checkbox {
min-width: 14px;
background: #ebebeb;
margin-right: 5px;
border: 2px solid #1565c0;
border: 2px solid #1565c0cc;
border-radius: 2px;
justify-content: center;
align-items: center;
@ -808,50 +769,16 @@ fieldset:disabled .checkbox {
}
.checkbox input:checked + .checkbox-block {
background: #1565c0;
background: transparent;
}
.checkbox input:checked + .checkbox-block::before {
content: "done";
display: block;
font-family: "Material Icons";
color: #fcfcfc;
font-size: 14px;
/* Support for all WebKit browsers. */
content: "\F0132";
display: inline-block;
color: #1565c0;
font: normal normal normal 18px/1 "Material Design Icons";
text-rendering: auto;
line-height: inherit;
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizelegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
}
/* TABLET PORTRAIT */
@media only screen and (min-width: 768px) {
/* 768px-HEADER */
/* 768px-MAIN */
/* 768px-FOOTER */
}
/* TABLET LANDSCAPE & NETBOOK */
@media only screen and (min-width: 1024px) {
/* 1024px-HEADER */
/* 1024px-MAIN */
/* SIDEBAR */
/* 1024px-FOOTER */
}
/* DESKTOP */
@media only screen and (min-width: 1200px) {
border: 2px solid transparent;
}

View File

@ -146,15 +146,7 @@ const config = {
},
{
test: /\.(woff|woff2|ttf|eot)$/,
type: 'asset',
parser: {
dataUrlCondition: {
maxSize: 8 * 1024
}
},
generator: {
filename: 'fonts/[hash][ext][query]'
}
type: 'asset/resource'
}
]
}