Merge remote-tracking branch 'origin/main' into feat/cert-key-parser

This commit is contained in:
ShareVB 2024-07-14 22:47:39 +02:00
commit 40d5a6a77f
24 changed files with 762 additions and 170 deletions

View File

@ -1,34 +0,0 @@
---
name: Bug report
about: Create a report to help us improve our tools
title: '[BUG] '
labels: bug
assignees: CorentinTh
---
**Which tool is impacted?**
Example: the token generator
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Configuration (please complete the following information):**
- Device: [e.g. iPhone6, ]
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

48
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@ -0,0 +1,48 @@
name: 🐞 Bug Report
description: File a bug report.
labels: ['bug', 'triage']
assignees:
- CorentinTh
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks!
placeholder: Bug description
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen? If you have a screenshot, you can paste it here.
placeholder: Tell us what you see!
value: 'A bug happened!'
validations:
required: true
- type: textarea
id: version
attributes:
label: System information
description: What is you environment? You can use the `npx envinfo --system --browsers` command to get this information.
validations:
required: true
- type: dropdown
id: app-type
attributes:
label: Where did you encounter the bug?
options:
- Public app (it-tools.tech)
- A self hosted
- Other (installations, docker, etc.)
validations:
required: true

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

View File

@ -0,0 +1,56 @@
name: 🚀 New feature proposal
description: Propose a new feature/enhancement or tool idea for IT-Tools
labels: ['enhancement', 'triage']
body:
- type: markdown
attributes:
value: |
Thanks for your interest in the project and taking the time to fill out this feature report!
- type: dropdown
id: request-type
attributes:
label: What type of request is this?
options:
- New tool idea
- New feature for an existing tool
- Deployment or CI/CD improvement
- Self-hosting improvement
- Other
validations:
required: true
- type: textarea
id: feature-description
attributes:
label: Clear and concise description of the feature you are proposing
description: A clear and concise description of what the feature is.
placeholder: 'Example: a token generator tool'
validations:
required: true
- type: textarea
id: alternative
attributes:
label: Is their example of this tool in the wild?
description: Provide link to already existing tool (like websites, apps, cli, ...) or npm packages that could be used or provide inspiration for the feature.
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Any other context or screenshots about the feature request here.
- type: checkboxes
id: checkboxes
attributes:
label: Validations
description: Before submitting the issue, please make sure you do the following
options:
- label: Check the feature is not already implemented in the project.
required: true
- label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
required: true
- label: Check that the feature can be implemented in a client side only app (IT-Tools is client side only, no server).
required: true

View File

@ -1,19 +0,0 @@
---
name: New tool request
about: Suggest a new tool idea
title: '[NEW TOOL]'
labels: new tool
assignees: CorentinTh
---
**What tool do you want?**
Example: a token generator
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Is their example of this tool in the wild?**
Provide link to already existing tool or npm packages if any exists
**Additional context**
Add any other context about the feature request here.

View File

@ -1,13 +0,0 @@
---
name: Other request
about: Any request that does not concern a tool creation, a new feature request on a tool or a bug
title: '[OTHER] '
labels:
assignees: CorentinTh
---
**Describe the solution you'd like**
A clear and concise description of what you want.
**Additional context**
Add any other context about the feature request here.

View File

@ -1,13 +0,0 @@
---
name: Tool improvement
about: Improvement on an existing tool
title: '[TOOL IMPROVEMENT]'
labels: enhancement
assignees: CorentinTh
---
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Additional context**
Add any other context about the feature request here.

View File

@ -1,69 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ dev ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ dev ]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@ -32,7 +32,7 @@ jobs:
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 16
node-version: 20
cache: 'pnpm'
- name: Install dependencies

View File

@ -61,7 +61,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version: 20
cache: 'pnpm'
- name: Install dependencies

View File

@ -2,9 +2,51 @@
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.
## Version 2024.05.13-a0bc346
### Features
- **i18n**: added German translation (#1038) (2c2fb21)
- **new tool**: Outlook Safelink Decoder (#911) (d3b32cc)
- **new tool**: ascii art generator (#886) (fe349ad)
- **i18n**: get locales on build (#880) (dc04615)
- **i18n**: added vi tools translations (#876) (079aa21)
- **i18n**: added zh tools translations (#874) (9c6b122)
- **i18n**: added missing locale files in tools (#863) (7f5fa00)
- **i18n**: added vietnamese language (#859) (1334bff)
- **i18n**: added spanish language (#854) (85b50bb)
- **i18n**: added portuguese language (#813) (c65ffb6)
- **i18n**: added ukrainian language (#827) (693f362)
- **new-tool**: yaml formater (#779) (fc06f01)
- **new-tool**: added unicode conversion utilities (#858) (c46207f)
### Bug fixes
- **language**: English language cleanup (#1036) (221ddfa)
- **url-encoder, validation**: typo in validation of url-encoder.vue #1024 (cb5b462)
- **integer base converter**: support bigint (#872) (9eac9cb)
- **bcrypt tool**: allow salt rounds up to 100 (#987) (23f82d9)
### Refactoring
- **lint**: removed extra semi (33e5294)
- **auto-imports**: regen auto imports (1242842)
- **home**: lightened tool cards (#882) (a07806c)
- **home**: removed n-grid to prevent layout shift (#881) (10e56b3)
- **i18n**: added locales per tool (#861) (95698cb)
### Chores
- **issues**: prevent empty issues (#1078) (a0bc346)
- **issues**: removed old issue templates (#1077) (5a7b0f9)
- **node**: upgraded node version in CI workflows (b59942a)
- **version**: release 2024.05.10-33e5294 (38d5687)
- **issues**: improved issues template (2852c30)
- **issues**: improved bug issue template (#1046) (a799234)
### Documentation
- **changelog**: update changelog for 2024.05.10-33e5294 (9dfd347)
## Version 2023.12.21-5ed3693
### Features
- **i18n**: improve chinese i18n (#757) (2e56641)
- **i18n**: add tooltip and favoriteButton i18n (#756) (a1037cf)
- **i18n**: add Chinese translation base (#718) (8f99eb6)
@ -12,6 +54,7 @@ All notable changes to this project will be documented in this file. See [standa
- **new tool**: numeronym generator (#729) (e07e2ae)
### Bug fixes
- **jwt-parser**: jwt claim array support (#799) (5ed3693)
- **camera-recorder**: stop camera on navigation (#782) (80e46c9)
- **doc**: updated create new tool command in readme (#762) (7a70dbb)
@ -20,6 +63,7 @@ All notable changes to this project will be documented in this file. See [standa
- **eta**: corrected example (#737) (821cbea)
### Refactoring
- **about, i18n**: improved i18n dx with markdown (#753) (bd3edcb)
- **token, i18n**: complete fr translation (#752) (de1ee69)
- **uuid generator**: uuid version picker (#751) (38586ca)
@ -29,6 +73,7 @@ All notable changes to this project will be documented in this file. See [standa
- **bcrypt**: fix input label align (#721) (093ff31)
### Chores
- **deps**: switched from oui to oui-data for mac address lookup (#693) (0fe9a20)
- **deps**: update unocss monorepo to ^0.57.0 (#638) (2e396d8)
- **docker**: added armv7 plateform for docker releases (#722) (fe1de8c)
@ -36,19 +81,23 @@ All notable changes to this project will be documented in this file. See [standa
## Version 2023.11.02-7d94e11
### Features
- **i18n**: language selector (#710) (e86fd96)
### Bug fixes
- **dockerfile**: revert replacement of nginx image with non-privileged one (#716) (7d94e11)
- **encryption**: alert on decryption error (#711) (02b0d0d)
### Refactoring
- **math-evaluator**: improved description (e87f4b1)
- **math-evaluator**: improved search and UX (#713) (58de897)
## Version 2023.11.01-e164afb
### Features
- **command-palette**: clear prompt on palette close (#708) (d013696)
- **command-palette**: added about page in command palette (99b1eb9)
- **new tool**: random MAC address generator (#657) (cc3425d)
@ -67,11 +116,13 @@ All notable changes to this project will be documented in this file. See [standa
- **new tool**: text diff and comparator (#588) (81bfe57)
### Bug fixes
- **deps**: fix issue on slugify (#593) (#673) (720201a)
- **deps**: update dependency monaco-editor to ^0.43.0 (#620) (e371ef7)
- **deps**: update dependency sql-formatter to v13 (#606) (c7d4562)
### Refactoring
- **ui**: better ui demo preview menu (#664) (015c673)
- **color-converter**: improved color-converter UX (#701) (abb8335)
- **docker**: improved docker config (#700) (020e9cb)
@ -88,6 +139,7 @@ All notable changes to this project will be documented in this file. See [standa
- **bcrypt**: fix typo (#604) (e18bae1)
### Chores
- **deps**: clean unused dependencies (#709) (e164afb)
- **deps**: update docker/setup-qemu-action action to v3 (#627) (4365226)
- **deps**: update docker/setup-buildx-action action to v3 (#626) (57ecda1)
@ -102,19 +154,23 @@ All notable changes to this project will be documented in this file. See [standa
- **deps**: update dependency typescript to ~5.2.0 (#587) (f3e14fc)
### Doc
- **readme**: added contributors list (#622) (557b304)
- **hosting**: added cloudron in the other hosting solutions section (#589) (06c3547)
## Version 2023.08.21-6f93cba
### Features
- **copy**: support legacy copy to clipboard for older browser (#581) (6f93cba)
- **new tool**: string obfuscator (#575) (c58d6e3)
### Bug fixes
- **deps**: update dependency sql-formatter to v12 (#520) (2bcb77a)
### Chores
- **deps**: switched to fucking typescript v5 (#501) (76b2761)
- **deps**: update dependency @antfu/eslint-config to ^0.40.0 (#552) (6ff9a01)
- **deps**: update dependency prettier to v3 (#564) (a2b9b15)
@ -124,6 +180,7 @@ All notable changes to this project will be documented in this file. See [standa
## Version 2023.08.16-9bd4ad4
### Features
- **Case Converter**: Add lowercase and uppercase (#534) (7b6232a)
- **new tool**: emoji picker (#551) (93f7cf0)
- **ui**: added c-select in the ui lib (#550) (dfa1ba8)
@ -144,6 +201,7 @@ All notable changes to this project will be documented in this file. See [standa
- **base64-string-converter**: switch to encode and decode url safe base64 strings (#392) (0b20f1c)
### Bug fixes
- **deps**: update dependency uuid to v9 (#566) (5e12991)
- **deps**: update dependency mathjs to v11 (#519) (7924456)
- **deps**: update dependency @vueuse/router to v10 (#516) (ea0f27c)
@ -163,6 +221,7 @@ All notable changes to this project will be documented in this file. See [standa
- **ipv4-converter**: removed readonly on input (7aed9c5)
### Refactoring
- **navbar**: consistent spacing in navbar buttons (#507) (30f88fc)
- **ui**: remove n-text (#506) (72c98a3)
- **ui**: replaced some n-input to c-input (#505) (05ea545)
@ -175,6 +234,7 @@ All notable changes to this project will be documented in this file. See [standa
- **ui**: replaced some n-input with c-input-text (f7fc779)
### Chores
- **deps**: update dependency vitest to ^0.34.0 (#562) (9bd4ad4)
- **deps**: update dependency node to v18.17.1 (#560) (65a9474)
- **deps**: update dependency unocss to ^0.55.0 (#561) (85cc7a8)
@ -215,47 +275,58 @@ All notable changes to this project will be documented in this file. See [standa
- **lint**: switched to a better lint config (33c9b66)
### Refacor
- **transformers**: use monospace font for JSON and SQL text areas (#476) (ba4876d)
### Documentation
- **ide**: updated vscode extensions settings (#472) (847323c)
### Chors
- **deps**: updated vueuse dependency version (8515c24)
## Version 2023.05.14-77f2efc
### Features
- **list-converter**: a small converter who deals with column based data and do some stuff with it (#387) (83a7b3b)
- **new tool**: phone parser and normalizer (ce3150c)
### Bug fixes
- **phone-parser**: use default country code (a43c546)
- **home**: prevent weird blue border on card (3f6c8f0)
### Refactoring
- **ui**: replaced some n-input with c-input-text (77f2efc)
### Chores
- **issues**: updated new tool request issue template (edae4c6)
### Ui-lib
- **new-component**: added text input component in the c-lib (aad8d84)
- **button**: size variants (401f13f)
## Version 2023.04.23-92bd835
### Features
- **ui-lib**: demo pages for c-lib components (92bd835)
- **new-tool**: diff of two json objects (362f2fa)
- **ipv4-range-expander**: expands a given IPv4 start and end address to a valid IPv4 subnet (#366) (df989e2)
- **date converter**: auto focus main input (6d22025)
### Bug fixes
- **ts**: cleaned legacy typechecking warning (e88c1d5)
- **mac-address-lookup**: added copy handler on button click (c311e38)
### Refactoring
- **ui-lib**: prevent c-button to shrink (61ece23)
- **ui**: replaced naive ui cards with custom ones (f080933)
- **clean**: removed unused lodash import (bb32513)
@ -265,48 +336,60 @@ All notable changes to this project will be documented in this file. See [standa
## Version 2023.04.14-dbad773
### Features
- **new-tool**: http status codes (8355bd2)
### Refactoring
- **uuid-generator**: prevent NaN in quantity (6fb4994)
### Chores
- **release**: create a github release on new version (dbad773)
- **version**: reset CHANGELOG content to support new format (85cb0ff)
## Version 2023.04.14-f9b77b7
### Features
- **new-tool**: http status codes (8355bd2)
### Refactoring
- **uuid-generator**: prevent NaN in quantity (6fb4994)
### Chores
- **release**: create a github release on new version (f9b77b7)
- **version**: reset CHANGELOG content to support new format (85cb0ff)
## Version 2023.04.14-2f0d239
### Features
- **new-tool**: http status codes (8355bd2)
### Refactoring
- **uuid-generator**: prevent NaN in quantity (6fb4994)
### Chores
- **release**: create a github release on new version (2f0d239)
- **version**: reset CHANGELOG content to support new format (85cb0ff)
## Version 2023.04.14-474cae4
### Features
- **new-tool**: http status codes (8355bd2)
### Refactoring
- **uuid-generator**: prevent NaN in quantity (6fb4994)
### Chores
- **release**: create a github release on new version (474cae4)
- **version**: reset CHANGELOG content to support new format (85cb0ff)

1
components.d.ts vendored
View File

@ -160,6 +160,7 @@ declare module '@vue/runtime-core' {
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
RsaKeyPairGenerator: typeof import('./src/tools/rsa-key-pair-generator/rsa-key-pair-generator.vue')['default']
SafelinkDecoder: typeof import('./src/tools/safelink-decoder/safelink-decoder.vue')['default']
SlugifyString: typeof import('./src/tools/slugify-string/slugify-string.vue')['default']
SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default']
SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default']

455
locales/de.yml Normal file
View File

@ -0,0 +1,455 @@
'404':
notFound: 404 Nicht gefunden
sorry: Entschuldigung, diese Seite scheint nicht zu existieren
maybe: >-
Vielleicht macht der Cache etwas Seltsames. Mit einem erzwungenen Neuladen
versuchen?
backHome: Zurück zur Startseite
home:
categories:
newestTools: Neueste Tools
favoriteTools: Deine Lieblingstools
allTools: Alle Tools
subtitle: Praktische Tools für Entwickler
toggleMenu: Menü umschalten
home: Startseite
uiLib: UI-Bibliothek
support: Unterstütze die Entwicklung von IT-Tools
buyMeACoffee: Kauf mir einen Kaffee
follow:
title: Magst du IT-Tools?
p1: Gib uns einen Stern auf
githubRepository: IT-Tools GitHub-Repository
p2: oder folge uns auf
twitterAccount: IT-Tools Twitter-Konto
thankYou: Vielen Dank!
nav:
github: GitHub-Repository
githubRepository: IT-Tools GitHub-Repository
twitter: Twitter-Konto
twitterAccount: IT-Tools Twitter-Konto
about: Über IT-Tools
aboutLabel: Über
darkMode: Dunkelmodus
lightMode: Hellmodus
mode: Wechseln zwischen dunklem/hellem Modus
about:
content: >
# Über IT-Tools
Diese wunderbare Website, erstellt mit ❤ von [Corentin
Thomasset](https://github.com/CorentinTh), sammelt nützliche Tools für
Entwickler und Menschen, die in der IT arbeiten. Wenn du sie nützlich
findest, teile sie gerne mit Personen, von denen du denkst, dass sie sie
ebenfalls nützlich finden könnten, und vergiss nicht, sie in deiner
Lesezeichenleiste zu speichern!
IT-Tools ist Open Source (unter der MIT-Lizenz) und kostenlos und wird es
immer sein, aber es kostet mich Geld, die Website zu hosten und den
Domainnamen zu erneuern. Wenn du meine Arbeit unterstützen möchtest und mich
ermutigen möchtest, mehr Tools hinzuzufügen, überlege bitte, mich durch
[Sponsoring](https://www.buymeacoffee.com/cthmsst) zu unterstützen.
## Technologien
IT-Tools wurde mit Vue.js (Vue 3) und der Naive UI-Komponentenbibliothek
erstellt und wird von Vercel gehostet und kontinuierlich bereitgestellt. In
einigen Tools werden Drittanbieter-Open-Source-Bibliotheken verwendet. Du
findest die vollständige Liste in der
[package.json](https://github.com/CorentinTh/it-tools/blob/main/package.json)-Datei
des Repositorys.
## Einen Fehler gefunden? Ein Tool fehlt?
Wenn du ein Tool benötigst, das hier noch nicht vorhanden ist, und du
denkst, dass es nützlich sein könnte, bist du herzlich eingeladen, einen
Feature-Request im
[Issues-Bereich](https://github.com/CorentinTh/it-tools/issues/new/choose)
im GitHub-Repository einzureichen.
Und wenn du einen Fehler gefunden hast oder etwas nicht wie erwartet
funktioniert, melde bitte einen Fehler im
[Issues-Bereich](https://github.com/CorentinTh/it-tools/issues/new/choose)
im GitHub-Repository.
favoriteButton:
remove: Aus Favoriten entfernen
add: Zu Favoriten hinzufügen
toolCard:
new: Neu
search:
label: Suche
tools:
categories:
favorite-tools: Deine Lieblingstools
crypto: Krypto
converter: Konverter
web: Web
images and videos: Bilder & Videos
development: Entwicklung
network: Netzwerk
math: Mathematik
measurement: Messung
text: Text
data: Daten
password-strength-analyser:
title: Passwortstärken-Analysator
description: >-
Ermittle die Stärke deines Passworts mit diesem Client-seitigen
Passwortstärken-Analysator und Tool zur Schätzung der Knackzeit.
chronometer:
title: Chronometer
description: >-
Überwache die Dauer einer Sache. Im Grunde ein Chronometer mit einfachen
Chronometerfunktionen.
token-generator:
title: Token-Generator
description: >-
Generiere eine zufällige Zeichenfolge mit den von dir gewünschten Zeichen,
Groß- oder Kleinbuchstaben, Zahlen und/oder Symbolen.
uppercase: Großbuchstaben (ABC...)
lowercase: Kleinbuchstaben (abc...)
numbers: Zahlen (123...)
symbols: Symbole (!-;...)
length: Länge
tokenPlaceholder: Der Token ...
copied: Token in die Zwischenablage kopiert
button:
copy: Kopieren
refresh: Aktualisieren
percentage-calculator:
title: Prozentrechner
description: >-
Berechne einfach Prozentsätze von einem Wert zu einem anderen Wert oder
von einem Prozentsatz zu einem Wert.
svg-placeholder-generator:
title: SVG-Platzhalter-Generator
description: >-
Generiere SVG-Bilder, die als Platzhalter in deinen Anwendungen verwendet
werden können.
json-to-csv:
title: JSON zu CSV
description: Konvertiere JSON mit automatischer Headererkennung in CSV.
camera-recorder:
title: Kamera-Rekorder
description: Mache ein Foto oder nimm ein Video von deiner Webcam oder Kamera auf.
keycode-info:
title: Keycode-Info
description: >-
Finde den JavaScript-Keycode, den Code, den Standort und die Modifikatoren
einer beliebigen gedrückten Taste.
emoji-picker:
title: Emoji-Picker
description: >-
Einfaches Kopieren und Einfügen von Emojis. Erhalte außerdem den Unicode-
und Codepunkt-Wert jedes Emojis.
color-converter:
title: Farbkonverter
description: >-
Konvertiere Farben zwischen den verschiedenen Formaten (Hex, RGB, HSL und
CSS-Name).
bcrypt:
title: Bcrypt
description: >-
Hashen und Vergleichen von Strings mit bcrypt. Bcrypt ist eine auf der
Blowfish-Chiffre basierende Hash-Funktion.
crontab-generator:
title: Crontab-Generator
description: >-
Überprüfe und generiere Crontab und erhalte die menschenlesbare
Beschreibung des Cron-Zeitplans.
http-status-codes:
title: HTTP-Statuscodes
description: Liste aller HTTP-Statuscodes, ihrer Namen und ihrer Bedeutung.
sql-prettify:
title: SQL verschönern und formatieren
description: >-
Formatiere und verschönere deine SQL-Abfragen online (unterstützt
verschiedene SQL-Dialekte).
benchmark-builder:
title: Benchmark-Builder
description: >-
Vergleiche ganz einfach die Ausführungszeit von Aufgaben mit diesem sehr
einfachen Online-Benchmark-Builder.
git-memo:
title: Git-Spickzettel
description: >-
Git ist eine dezentrale Versionsverwaltungssoftware. Mit diesem
Spickzettel hast du schnellen Zugriff auf die gängigsten Git-Befehle.
slugify-string:
title: Slugify String
description: Mache einen String URL-, Dateinamen- und ID-sicher.
encryption:
title: Text verschlüsseln / entschlüsseln
description: >-
Verschlüssele und entschlüssele Klartext mithilfe von Kryptoalgorithmen
wie AES, TripleDES, Rabbit oder RC4.
random-port-generator:
title: Zufälliger Port-Generator
description: >-
Generiere zufällige Portnummern außerhalb des Bereichs der "bekannten"
Ports (0-1023).
yaml-prettify:
title: YAML verschönern und formatieren
description: Verschönere deinen YAML-String in ein menschenlesbares Format.
eta-calculator:
title: ETA-Rechner
description: >-
Ein ETA (Estimated Time of Arrival)-Rechner, um die ungefähre Endzeit
einer Aufgabe zu erfahren, z. B. den Zeitpunkt des Endes eines Downloads.
roman-numeral-converter:
title: Römische Zahlen Konverter
description: >-
Konvertiere römische Zahlen in Dezimalzahlen und Dezimalzahlen in römische
Zahlen.
hmac-generator:
title: HMAC-Generator
description: >-
Berechnet einen hashbasierten Nachrichtenauthentifizierungscode (HMAC)
unter Verwendung eines geheimen Schlüssels und deiner bevorzugten
Hash-Funktion.
bip39-generator:
title: BIP39-Passphrasengenerator
description: >-
Generiere BIP39-Passphrasen aus vorhandener oder zufälliger Mnemonik oder
erhalte die Mnemonik aus der Passphrase.
base64-file-converter:
title: Base64-Dateikonverter
description: Konvertiere Strings, Dateien oder Bilder in ihre Base64-Repräsentation.
list-converter:
title: Listenkonverter
description: >-
Dieses Tool kann spaltenbasierte Daten verarbeiten und verschiedene
Änderungen (transponieren, Präfix und Suffix hinzufügen, Liste umkehren,
Liste sortieren, Werte in Kleinbuchstaben umwandeln, Werte abschneiden)
auf jede Zeile anwenden.
base64-string-converter:
title: Base64-String-Encoder/Decoder
description: Codiere und decodiere Strings einfach in ihre Base64-Repräsentation.
toml-to-yaml:
title: TOML zu YAML
description: Parse und konvertiere TOML zu YAML.
math-evaluator:
title: Mathematischer Auswerter
description: >-
Ein Taschenrechner zum Auswerten mathematischer Ausdrücke. Du kannst
Funktionen wie sqrt, cos, sin, abs usw. verwenden.
json-to-yaml-converter:
title: JSON zu YAML
description: Konvertiere JSON einfach in YAML mit diesem Live-Online-Konverter.
url-parser:
title: URL-Parser
description: >-
Parse eine URL-Zeichenfolge, um alle verschiedenen Teile (Protokoll,
Ursprung, Parameter, Port, Benutzername-Passwort usw.) zu erhalten.
iban-validator-and-parser:
title: IBAN-Validator und -Parser
description: >-
Validiere und parse IBAN-Nummern. Überprüfe, ob die IBAN gültig ist, und
erhalte das Land, BBAN, ob es sich um eine QR-IBAN handelt und das
IBAN-freundliche Format.
user-agent-parser:
title: User-Agent-Parser
description: >-
Erkenne und parse Browser, Engine, Betriebssystem, CPU und
Gerätetyp/-modell aus einer User-Agent-Zeichenfolge.
numeronym-generator:
title: Numeronym-Generator
description: >-
Ein Numeronym ist ein Wort, bei dem eine Zahl verwendet wird, um eine
Abkürzung zu bilden. Zum Beispiel ist "i18n" ein Numeronym für
"internationalization", wobei 18 für die Anzahl der Buchstaben zwischen
dem ersten "i" und dem letzten "n" im Wort steht.
case-converter:
title: Fall-Konverter
description: >-
Ändere den Fall eines Strings und wähle zwischen verschiedenen Formaten
aus.
html-entities:
title: HTML-Entity-Escape
description: >-
Escape oder unescape HTML-Entitäten (ersetze <, >, &, " und ' durch ihre
HTML-Version).
json-prettify:
title: JSON verschönern und formatieren
description: Verschönere deinen JSON-String in ein menschenlesbares Format.
docker-run-to-docker-compose-converter:
title: Docker run zu Docker compose Konverter
description: Wandle docker run-Befehle in docker-compose-Dateien um!
mac-address-lookup:
title: MAC-Adressensuche
description: Finde den Anbieter und Hersteller eines Geräts anhand seiner MAC-Adresse.
mime-types:
title: MIME-Typen
description: Konvertiere MIME-Typen in Erweiterungen und umgekehrt.
toml-to-json:
title: TOML zu JSON
description: Parse und konvertiere TOML zu JSON.
lorem-ipsum-generator:
title: Lorem Ipsum Generator
description: >-
Lorem Ipsum ist ein Platzhaltertext, der häufig verwendet wird, um die
visuelle Form eines Dokuments oder einer Schriftart ohne Verwendung von
bedeutendem Inhalt zu demonstrieren.
qrcode-generator:
title: QR-Code-Generator
description: >-
Generiere und downloade QR-Codes für eine URL oder einfach einen Text und
passe die Hintergrund- und Vordergrundfarben an.
wifi-qrcode-generator:
title: WLAN-QR-Code-Generator
description: >-
Generiere und lade QR-Codes für schnelle Verbindungen zu WLAN-Netzwerken
herunter.
xml-formatter:
title: XML-Formatter
description: Verschönere deinen XML-String in ein menschenlesbares Format.
temperature-converter:
title: Temperaturkonverter
description: >-
Temperaturgradumrechnungen für Kelvin, Celsius, Fahrenheit, Rankine,
Delisle, Newton, Réaumur und Rømer.
chmod-calculator:
title: Chmod-Rechner
description: >-
Berechne deine Chmod-Berechtigungen und -Befehle mit diesem
Online-Chmod-Rechner.
rsa-key-pair-generator:
title: RSA-Schlüsselpaar-Generator
description: Generiere neue zufällige RSA-Private- und Public-Key-PEM-Zertifikate.
html-wysiwyg-editor:
title: HTML-WYSIWYG-Editor
description: >-
Online-HTML-Editor mit funktionsreichem WYSIWYG-Editor, erhalte sofort den
Quellcode des Inhalts.
yaml-to-toml:
title: YAML zu TOML
description: Parse und konvertiere YAML zu TOML.
mac-address-generator:
title: MAC-Adressen-Generator
description: >-
Gebe die Menge und das Präfix ein. MAC-Adressen werden in deiner gewählten
Schreibweise (Groß- oder Kleinbuchstaben) generiert.
json-diff:
title: JSON-Unterschied
description: Vergleiche zwei JSON-Objekte und erhalte die Unterschiede zwischen ihnen.
jwt-parser:
title: JWT-Parser
description: >-
Parse und decodiere deinen JSON-Web-Token (JWT) und zeige dessen Inhalt
an.
date-converter:
title: Datum-Uhrzeit-Konverter
description: Konvertiere Datum und Uhrzeit in verschiedene Formate.
phone-parser-and-formatter:
title: Telefonnummer-Parser und -Formatter
description: >-
Parse, validiere und formatiere Telefonnummern. Erhalte Informationen zur
Telefonnummer, wie z. B. die Landesvorwahl, den Typ usw.
ipv4-subnet-calculator:
title: IPv4-Subnetzrechner
description: >-
Parse deine IPv4-CIDR-Blöcke und erhalte alle Informationen, die du über
dein Subnetz benötigst.
og-meta-generator:
title: Open Graph Meta-Generator
description: Generiere Open Graph- und Social-HTML-Metatags für deine Website.
ipv6-ula-generator:
title: IPv6-ULA-Generator
description: >-
Generiere deine eigenen lokalen, nicht routbaren IP-Adressen in deinem
Netzwerk gemäß RFC4193.
hash-text:
title: Text hashen
description: >-
Hashe einen Text-String mit der von dir benötigten Funktion: MD5, SHA1,
SHA256, SHA224, SHA512, SHA384, SHA3 oder RIPEMD160
json-to-toml:
title: JSON zu TOML
description: Parse und konvertiere JSON zu TOML.
device-information:
title: Geräteinformationen
description: >-
Informationen zu deinem aktuellen Gerät (Bildschirmgröße, Pixelverhältnis,
Benutzeragent, ...) erhalten.
pdf-signature-checker:
title: PDF-Signaturprüfer
description: >-
Überprüfe die Signaturen einer PDF-Datei. Eine signierte PDF-Datei enthält
eine oder mehrere Signaturen, die verwendet werden können, um
festzustellen, ob der Inhalt der Datei seit dem Zeitpunkt der Signierung
geändert wurde.
json-minify:
title: JSON minifizieren
description: >-
Minifiziere und komprimiere dein JSON, indem unnötige Leerzeichen entfernt
werden.
ulid-generator:
title: ULID-Generator
description: >-
Generiere zufällige Universally Unique Lexicographically Sortable
Identifier (ULID).
string-obfuscator:
title: String-Verschleierer
description: >-
Verschleiere einen String (wie ein Secret, eine IBAN oder ein Token), um
ihn weitergeben zu können und identifizierbar zu machen, ohne seinen
Inhalt preiszugeben.
base-converter:
title: Ganzzahl-Basiskonverter
description: >-
Konvertiere Zahlen zwischen verschiedenen Basen (Dezimal, Hexadezimal,
Binär, Oktal, Base64, ...).
yaml-to-json-converter:
title: YAML zu JSON
description: Konvertiere YAML einfach in JSON mit diesem Live-Online-Konverter.
uuid-generator:
title: UUID-Generator
description: >-
Ein Universally Unique Identifier (UUID) ist eine 128-Bit-Nummer, die zur
Identifizierung von Informationen in Computersystemen verwendet wird. Die
Anzahl der möglichen UUIDs beträgt 16^32, was 2^128 oder etwa 3,4x10^38
entspricht (was ziemlich viel ist!).
ipv4-address-converter:
title: IPv4-Adresskonverter
description: >-
Konvertiere eine IP-Adresse in Dezimal, Binär, Hexadezimal oder sogar in
IPv6.
text-statistics:
title: Textstatistiken
description: >-
Informationen zu einem Text erhalten, wie die Anzahl der Zeichen, die
Anzahl der Wörter, die Größe usw.
text-to-nato-alphabet:
title: Text zu NATO-Alphabet
description: >-
Wandle Text in das NATO-Phonetik-Alphabet für die mündliche Übermittlung
um.
basic-auth-generator:
title: Basic-Auth-Generator
description: >-
Generiere einen Base64-Basic-Auth-Header aus einem Benutzernamen und einem
Passwort.
text-to-unicode:
title: Text zu Unicode
description: Parse und konvertiere Text in Unicode und umgekehrt.
ipv4-range-expander:
title: IPv4-Bereichserweiterer
description: >-
Bei Angabe einer Start- und End-IPv4-Adresse berechnet dieses Tool ein
gültiges IPv4-Netzwerk mit seiner CIDR-Notation.
text-diff:
title: Textunterschied
description: Vergleiche zwei Texte und sieh die Unterschiede zwischen ihnen.
otp-generator:
title: OTP-Code-Generator
description: >-
Generiere und validiere zeitbasierte OTPs (Einmalpasswörter) für
Multi-Faktor-Authentifizierung.
url-encoder:
title: Kodieren/Decodieren von URL-formatierten Zeichenfolgen
description: >-
Kodiere zum URL-kodierten Format (auch als "prozentkodiert" bekannt) oder
decodiere es.
text-to-binary:
title: Text zu ASCII-Binär
description: Konvertiere Text in seine ASCII-Binärrepräsentation und umgekehrt.

View File

@ -1,6 +1,6 @@
{
"name": "it-tools",
"version": "2023.12.21-5ed3693",
"version": "2024.5.13-a0bc346",
"description": "Collection of handy online tools for developers, with great UX. ",
"keywords": [
"productivity",
@ -142,5 +142,6 @@
"vitest": "^0.34.0",
"workbox-window": "^7.0.0",
"zx": "^7.2.1"
}
},
"packageManager": "pnpm@8.15.3"
}

View File

@ -4040,6 +4040,7 @@ packages:
resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
dependencies:
vue-demi: 0.14.7(vue@3.3.4)
vue-demi: 0.14.7(vue@3.3.4)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -6819,6 +6820,10 @@ packages:
resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==}
dev: false
/js-base64@3.7.7:
resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==}
dev: false
/js-beautify@1.14.6:
resolution: {integrity: sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==}
engines: {node: '>=10'}
@ -9782,6 +9787,8 @@ packages:
vue: 3.3.4
dev: false
/vue-demi@0.14.7(vue@3.3.4):
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
/vue-demi@0.14.7(vue@3.3.4):
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
engines: {node: '>=12'}

View File

@ -48,7 +48,7 @@ const output = computed(() => transformer.value(input.value));
monospace
/>
<div>
<div overflow-auto>
<div mb-5px>
{{ outputLabel }}
</div>

View File

@ -0,0 +1,21 @@
import _ from 'lodash';
function useDebouncedRef<T>(initialValue: T, delay: number, immediate: boolean = false) {
const state = ref(initialValue);
const debouncedRef = customRef((track, trigger) => ({
get() {
track();
return state.value;
},
set: _.debounce(
(value) => {
state.value = value;
trigger();
},
delay,
{ leading: immediate },
),
}));
return debouncedRef;
}
export default useDebouncedRef;

View File

@ -3,6 +3,7 @@ const { availableLocales, locale } = useI18n();
const localesLong: Record<string, string> = {
en: 'English',
de: 'Deutsch',
es: 'Español',
fr: 'Français',
pt: 'Português',

View File

@ -2,12 +2,19 @@
import { useBase64 } from '@vueuse/core';
import type { Ref } from 'vue';
import { useCopy } from '@/composable/copy';
import { useDownloadFileFromBase64 } from '@/composable/downloadBase64';
import { getExtensionFromMimeType, getMimeTypeFromBase64, previewImageFromBase64, useDownloadFileFromBase64Refs } from '@/composable/downloadBase64';
import { useValidation } from '@/composable/validation';
import { isValidBase64 } from '@/utils/base64';
const fileName = ref('file');
const fileExtension = ref('');
const base64Input = ref('');
const { download } = useDownloadFileFromBase64({ source: base64Input });
const { download } = useDownloadFileFromBase64Refs(
{
source: base64Input,
filename: fileName,
extension: fileExtension,
});
const base64InputValidation = useValidation({
source: base64Input,
rules: [
@ -18,6 +25,35 @@ const base64InputValidation = useValidation({
],
});
watch(
base64Input,
(newValue, _) => {
const { mimeType } = getMimeTypeFromBase64({ base64String: newValue });
if (mimeType) {
fileExtension.value = getExtensionFromMimeType(mimeType) || fileExtension.value;
}
},
);
function previewImage() {
if (!base64InputValidation.isValid) {
return;
}
try {
const image = previewImageFromBase64(base64Input.value);
image.style.maxWidth = '100%';
image.style.maxHeight = '400px';
const previewContainer = document.getElementById('previewContainer');
if (previewContainer) {
previewContainer.innerHTML = '';
previewContainer.appendChild(image);
}
}
catch (_) {
//
}
}
function downloadFile() {
if (!base64InputValidation.isValid) {
return;
@ -44,6 +80,24 @@ async function onUpload(file: File) {
<template>
<c-card title="Base64 to file">
<n-grid cols="3" x-gap="12">
<n-gi span="2">
<c-input-text
v-model:value="fileName"
label="File Name"
placeholder="Download filename"
mb-2
/>
</n-gi>
<n-gi>
<c-input-text
v-model:value="fileExtension"
label="Extension"
placeholder="Extension"
mb-2
/>
</n-gi>
</n-grid>
<c-input-text
v-model:value="base64Input"
multiline
@ -53,7 +107,14 @@ async function onUpload(file: File) {
mb-2
/>
<div flex justify-center>
<div flex justify-center py-2>
<div id="previewContainer" />
</div>
<div flex justify-center gap-3>
<c-button :disabled="base64Input === '' || !base64InputValidation.isValid" @click="previewImage()">
Preview image
</c-button>
<c-button :disabled="base64Input === '' || !base64InputValidation.isValid" @click="downloadFile()">
Download file
</c-button>

View File

@ -4,6 +4,7 @@ import emojiKeywords from 'emojilib';
import _ from 'lodash';
import type { EmojiInfo } from './emoji.types';
import { useFuzzySearch } from '@/composable/fuzzySearch';
import useDebouncedRef from '@/composable/debouncedref';
const escapeUnicode = ({ emoji }: { emoji: string }) => emoji.split('').map(unit => `\\u${unit.charCodeAt(0).toString(16).padStart(4, '0')}`).join('');
const getEmojiCodePoints = ({ emoji }: { emoji: string }) => emoji.codePointAt(0) ? `0x${emoji.codePointAt(0)?.toString(16)}` : undefined;
@ -23,7 +24,7 @@ const emojisGroups: { emojiInfos: EmojiInfo[]; group: string }[] = _
.map((emojiInfos, group) => ({ group, emojiInfos }))
.value();
const searchQuery = ref('');
const searchQuery = useDebouncedRef('', 500);
const { searchResult } = useFuzzySearch({
search: searchQuery,

View File

@ -39,7 +39,7 @@ const validation = useValidation({
{{ section.title }}
</th>
<tr v-for="{ claim, claimDescription, friendlyValue, value } in decodedJWT[section.key]" :key="claim + value">
<td class="claims">
<td class="claims" style="vertical-align: top;">
<span font-bold>
{{ claim }}
</span>
@ -47,7 +47,7 @@ const validation = useValidation({
({{ claimDescription }})
</span>
</td>
<td>
<td style="word-wrap: break-word;word-break: break-all;">
<span>{{ value }}</span>
<span v-if="friendlyValue" ml-2 op-70>
({{ friendlyValue }})

View File

@ -20,7 +20,7 @@ export function createToken({
withLowercase ? 'abcdefghijklmopqrstuvwxyz' : '',
withNumbers ? '0123456789' : '',
withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : '',
].join(''); ;
].join('');
return shuffleString(allAlphabet.repeat(length)).substring(0, length);
}

View File

@ -38,7 +38,8 @@ describe('base64 utils', () => {
it('should throw for incorrect base64 string', () => {
expect(() => base64ToText('a')).to.throw('Incorrect base64 string');
expect(() => base64ToText(' ')).to.throw('Incorrect base64 string');
// should not really be false because trimming of space is now implied
// expect(() => base64ToText(' ')).to.throw('Incorrect base64 string');
expect(() => base64ToText('é')).to.throw('Incorrect base64 string');
// missing final '='
expect(() => base64ToText('bG9yZW0gaXBzdW0')).to.throw('Incorrect base64 string');
@ -56,17 +57,17 @@ describe('base64 utils', () => {
it('should return false for incorrect base64 string', () => {
expect(isValidBase64('a')).to.eql(false);
expect(isValidBase64(' ')).to.eql(false);
expect(isValidBase64('é')).to.eql(false);
expect(isValidBase64('data:text/plain;notbase64,YQ==')).to.eql(false);
// missing final '='
expect(isValidBase64('bG9yZW0gaXBzdW0')).to.eql(false);
});
it('should return false for untrimmed correct base64 string', () => {
expect(isValidBase64('bG9yZW0gaXBzdW0= ')).to.eql(false);
expect(isValidBase64(' LTE=')).to.eql(false);
expect(isValidBase64(' YQ== ')).to.eql(false);
it('should return true for untrimmed correct base64 string', () => {
expect(isValidBase64('bG9yZW0gaXBzdW0= ')).to.eql(true);
expect(isValidBase64(' LTE=')).to.eql(true);
expect(isValidBase64(' YQ== ')).to.eql(true);
expect(isValidBase64(' ')).to.eql(true);
});
});

View File

@ -1,7 +1,9 @@
import { Base64 } from 'js-base64';
export { textToBase64, base64ToText, isValidBase64, removePotentialDataAndMimePrefix };
function textToBase64(str: string, { makeUrlSafe = false }: { makeUrlSafe?: boolean } = {}) {
const encoded = window.btoa(str);
const encoded = Base64.encode(str);
return makeUrlSafe ? makeUriSafe(encoded) : encoded;
}
@ -16,7 +18,7 @@ function base64ToText(str: string, { makeUrlSafe = false }: { makeUrlSafe?: bool
}
try {
return window.atob(cleanStr);
return Base64.decode(cleanStr);
}
catch (_) {
throw new Error('Incorrect base64 string');
@ -34,10 +36,11 @@ function isValidBase64(str: string, { makeUrlSafe = false }: { makeUrlSafe?: boo
}
try {
const reEncodedBase64 = Base64.fromUint8Array(Base64.toUint8Array(cleanStr));
if (makeUrlSafe) {
return removePotentialPadding(window.btoa(window.atob(cleanStr))) === cleanStr;
return removePotentialPadding(reEncodedBase64) === cleanStr;
}
return window.btoa(window.atob(cleanStr)) === cleanStr;
return reEncodedBase64 === cleanStr.replace(/\s/g, '');
}
catch (err) {
return false;